@tonkite/highload-wallet-v3
Version:
The wrapper for highload-wallet-v3.
126 lines (91 loc) • 3.66 kB
Markdown
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/tonkite/tonkite/main/assets/logo-dark.svg">
<img alt="tonkite logo" src="https://raw.githubusercontent.com/tonkite/tonkite/main/assets/logo-light.svg" width="384" height="auto">
</picture>
</p>
<p align="center">
<a href="https://ton.org"><img alt="Based on TON" src="https://img.shields.io/badge/Based%20on-TON-blue"></a>
<a href="https://www.npmjs.com/package/@tonkite/highload-wallet-v3"><img alt="NPM Version" src="https://img.shields.io/npm/v/%40tonkite%2Fhighload-wallet-v3"></a>
<a href="https://www.npmjs.com/package/wagmi"><img alt="NPM Downloads" src="https://img.shields.io/npm/dm/%40tonkite%2Fhighload-wallet-v3"></a>
<a href="https://github.com/tonkite/tonkite"><img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/tonkite/tonkite"></a>
<a href="https://t.me/tonkite"><img alt="Telegram Channel" src="https://img.shields.io/badge/Telegram%20-@tonkite-24A1DE"></a>
<a href="https://opensource.org/licenses/Apache-2.0"><img alt="License" src="https://img.shields.io/badge/License-Apache_2.0-green.svg"></a>
</p>
---
Wrapper for interacting with the `highload-wallet-v3` contract.
Using npm:
```shell
npm install --save @tonkite/highload-wallet-v3
```
Using Yarn:
```shell
yarn add @tonkite/highload-wallet-v3
```
Using pnpm:
```shell
pnpm add @tonkite/highload-wallet-v3
```
Initialize `TonClient`, `HighloadWalletV3`, `HighloadWalletV3QueryIdSequnce`:
```typescript
import { TonClient } from '@ton/ton';
import { HighloadWalletV3 } from '@tonkite/highload-wallet-v3';
/* ... */
// NOTE: You may also use `TonClient4` from `@ton/ton` package.
const tonClient = new TonClient({
endpoint: 'https://toncenter.com/api/v2/jsonRPC',
apiKey: 'YOUR API KEY',
});
const queryIdSequence = HighloadWalletV3.newSequence(); // or `HighloadWalletV3.restoreSequence(xxx)`
const wallet = tonClient.open(new HighloadWalletV3(queryIdSequence, keyPair.publicKey));
```
Send a batch of messages:
```typescript
import { Address, SendMode, internal, toNano, comment } from '@ton/core';
/* ... */
await wallet.sendBatch(keyPair.secretKey, {
messages: [
{
mode: SendMode.PAY_GAS_SEPARATELY,
message: internal({
to: Address.parse('UQDz0wQL6EEdgbPkFgS7nNmywzr468AvgLyhH7PIMALxPEND'),
value: toNano('0.005'),
body: comment('Hello Tonkite!'),
}),
},
/* ... */
],
/*
* NOTE: This it subtotal for all messages + fees.
* This value can be omitted, but it's recommended to specify it.
* Otherwise, batches will be sent in different blocks (e.a. time-consuming).
*/
valuePerBatch: toNano('0.015'),
/*
* NOTE: Time-shift because time may be out of sync.
* The contract accepts older messages, but not those ahead of time.
*/
createdAt: Math.floor(Date.now() / 1000) - 60,
});
this.sequence.next();
```
Store a final sequence state during a `timeout` time-window:
```typescript
// Store it somewhere after all the operations:
const lastValue = queryIdSequence.current();
/* ... */
// Restore it next time:
const queryIdSequence = HighloadWalletV3.restoreSequence(lastValue);
```
For emergency cases, the wrapper supports emergency mode.
A special request identifier is reserved for this, which is not generated in normal mode.
To use emergency mode:
```typescript
const queryIdSequence = HighloadWalletV3.emergencySequence();
```
Tonkite is [Apache 2.0](https://opensource.org/licenses/Apache-2.0) licensed.