# Provider API

### getAccounts(连接钱包)

```javascript
const res = await NaboxWallet.bitcoin.getAccounts();

// 返回当前连接的账户
['bc1pqw2apzlwqdx5cyp.........a5fupu5l0hsl9n7uw'];
```

### requestAccounts(获取当前连接的账户) <a href="#requestaccounts" id="requestaccounts"></a>

```javascript
const res = await NaboxWallet.bitcoin.requestAccounts();

// 返回当前连接的账户
['bc1pqw2apzlwqdx5cyp.........a5fupu5l0hsl9n7uw'];
```

### getNetwork(获取当前的网络，Nabox钱包只支持主网) <a href="#getnetwork" id="getnetwork"></a>

```javascript
const network = await NaboxWallet.bitcoin.getNetwork();

// 返回当前连接的账户
livenet
```

### getPublicKey(获取当前连接账户的公钥) <a href="#getpublickey" id="getpublickey"></a>

```
const pubKey = await NaboxWallet.bitcoin.getPublicKey();

// 037c92dfbdafb4de8f1249c.........6f95146c8233e107879ad
```

### getBalance(获取当前连接账户的余额) <a href="#getbalance" id="getbalance"></a>

```javascript
const balance = await NaboxWallet.getBalance();

{
  "confirmed":0,
  "unconfirmed":1000,
  "total":1000
}
```

### getInscriptions(获取当前连接账户的铭文) <a href="#getinscriptions" id="getinscriptions"></a>

```javascript
const cursor = 0 // 可选，默认0
const size = 10 // 可选，默认20

const res = await NaboxWallet.getBalance(cursor, size);

// 返回当前地址拥有的铭文信息
```

### sendBitcoin(发送BTC)

```javascript
const toAddress = '目标地址';
const satoshis = '1000'; // 聪
const options ={}; // 可选

const txId = await NaboxWallet.bitcoin.sendBitcoin(toAddress, satoshis, options);

// 返回交易后的txId
```

```javascript
const message= 'message'; // 需要签名的message
const type = 'ecdsa'; // 可选， "ecdsa" | "bip322-simple" 默认 ecdsa

const res = await NaboxWallet.bitcoin.signMessage(message, type);

// 返回签名结果
```

### pushTx(推送交易) <a href="#pushtx" id="pushtx"></a>

```javascript
const rawTx = '0200000000000.....';

const txId = await NaboxWalllet.bitcoin.pushTx(rawTx);

// 返回txId
```

### signPsbt(签名psbt) <a href="#signpsbt" id="signpsbt"></a>

<pre class="language-javascript"><code class="lang-javascript"><strong>const psbtHex = '078282720000...';
</strong><strong>const options = {};
</strong><strong>
</strong><strong>const res = await NaboxWalllet.bitcoin.signPsbt(psbtHex, options);
</strong><strong>
</strong><strong>// 返回已签名的hex字符串
</strong></code></pre>

### signPsbt(签名psbts) <a href="#signpsbt" id="signpsbt"></a>

<pre class="language-javascript"><code class="lang-javascript"><strong>const psbtHexs = ['078282720000...', '078282720001...'];
</strong><strong>const options = {};
</strong><strong>
</strong><strong>const res = await NaboxWalllet.bitcoin.signPsbt(psbtHexs, options);
</strong><strong>
</strong><strong>// 返回已签名的[hex string, hex string1]
</strong></code></pre>

### pushPsbt(广播psbt交易) <a href="#signpsbt" id="signpsbt"></a>

```javascript
const psbtHex = '727592090282902....';

const txId = await NaboxWalllet.bitcoin.pushPsbt(psbtHex);

// 返回广播后的txId
```

### on

账户改变监听事件

```javascript
NaboxWallet.bitcoin.on('accountsChanged', (accounts) => {
  console.log(accounts);
  // ['bc1pqw2apzlwqdx5cyp.........a5fupu5l0hsl9n7uw']
});
```
