# Provider API

### 连接账户

```javascript
NaboxWallet.tronLink.request({ method: 'tron_requestAccounts' });
```

### tronWeb

[具体api方法参考tronWeb官方文档](https://tronweb.network/docu/docs/intro/)

### 签名交易和广播交易

```javascript
const tronProvider = NaboxWallet.tronLink.tronWeb;
const transaction = await tronProvider.transactionBuilder.triggerSmartContract('toAddress', 'functionName', options, parameter, 'fromAddress');
// 签名交易
const signedTx = await tronProvider.trx.sign(transaction.transaction);
// 广播交易
const res = await tronProvider.trx.sendRawTransaction(signedTransaction);

```

### signMessage(消息签名)

```javascript
const tronProvider = NaboxWallet.tronLink.tronWeb;
const message = 'message'; // 签名的消息
const result = await tronProvider.trx.sign(message);
```

### 事件

TRON链的事件监听和其他链不同，通过监听message实现

```javascript
// 连接事件
window.addEventListener('message', function (e) {
  if (e.data.message && e.data.message.action == "connect") {
    console.log('connect: ', e.data)
  }
});

// 断开连接事件
window.addEventListener('message', function (e) {
  if (e.data.message && e.data.message.action == "disconnect") {
    console.log('disconnect: ', e.data)
  }
});

// 账户改变
window.addEventListener('message', function (e) {
  if (e.data.message && e.data.message.action === "accountsChanged") {
    console.log('accountsChanged: ', e.data)
  }
})
```
