# Provider API

### connect(连接到钱包)

```javascript
const pubKey = await NaboxWalllet.solana.connect();

// 返回一个solana PublicKey对象
```

### signTransaction(签名solana交易，不广播)

```javascript
const provider = NaboxWallet.solana;
const network = "";
const connection = new Connection(network);
const transaction = new Transaction();
const res = await provider.signTransaction(transaction);

// 返回值示例
{
    tx: '签名后的交易'
}
```

### signAndSendTransaction(签名solana交易并广播)

```javascript
const provider = window.NaboxWallet.solana;
const network = "<NETWORK_URL>";
const connection = new Connection(network);
const transaction = new Transaction();
const res = await provider.signAndSendTransaction(transaction);

// 返回值示例
{
    signature: '广播后的交易signature',
    publicKey: '当前签名使用的账户地址'
}
```

### signAllTransactions(批量签名交易)

```javascript
const provider = NaboxWallet.solana;
const network = "";
const connection = new Connection(network);
const transaction1 = new Transaction();
const transaction2 = new Transaction();
const res = await provider.signTransaction([transaction1, transaction2]);

// 返回值示例
{
   tx: '签名后的交易数组'
}
```

signMessage(消息签名)

```javascript
const message = `message`;
const encodedMessage = new TextEncoder().encode(message);
const signedMessage = await NaboxWallet.solana.signMessage(encodedMessage, "utf8");
```

### on(监听事件)

```javascript
// 监听是否已连接
NaboxWallet.solana.on("connect", () => console.log("connected!"));

// 监听断开连接
NaboxWallet.solana.on("disconnect", () => console.log("disconnected!"));

// 监听账户改变
NaboxWallet.solana.on("accountChanged", (publicKey) => console.log("publicKey"));
```
