@bronlabs/intents-sdk 1.0.84 → 1.0.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  import { EvmNetwork } from './evm.js';
2
2
  import { TrxNetwork } from './trx.js';
3
3
  import { SolNetwork } from './sol.js';
4
+ import { TonNetwork } from './ton.js';
4
5
  import { CantonNetwork } from './canton.js';
5
6
  import { BtcNetwork } from './btc.js';
6
7
  import { CosmosNetwork } from "./cosmos.js";
@@ -21,6 +22,7 @@ const networkBuilders = {
21
22
  "HYPE": (cf) => new EvmNetwork(cf.rpcUrl, 15),
22
23
  "TRX": (cf) => new TrxNetwork(cf.rpcUrl, 20),
23
24
  "SOL": (cf) => new SolNetwork(cf.rpcUrl, 20),
25
+ "TON": (cf) => new TonNetwork(cf.rpcUrl, 20),
24
26
  "CC": (cf) => new CantonNetwork(cf.rpcUrl, cf.ledgerApiUrl, cf.scanApiUrl, cf.authUrl, cf.clientId, cf.clientSecret, cf.walletAddress, cf.daUtilitiesApiUrl),
25
27
  "GNK": (cf) => new CosmosNetwork(cf.rpcUrl, 'ngonka', 'gonka', 0, 1),
26
28
  "testGNK": (cf) => new CosmosNetwork(cf.rpcUrl, 'ngonka', 'gonka', 0, 1)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/networks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/networks/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Network, TransactionData } from "./index.js";
2
+ export declare class TonNetwork implements Network {
3
+ private readonly client;
4
+ private readonly rpcUrl;
5
+ private readonly confirmations;
6
+ private readonly nativeAssetDecimals;
7
+ readonly retryDelay: number;
8
+ constructor(rpcUrl: string, confirmations?: number);
9
+ getDecimals(tokenAddress: string): Promise<number>;
10
+ getTxData(txHash: string, tokenAddress: string, recipientAddress: string): Promise<TransactionData | undefined>;
11
+ transfer(privateKey: string, to: string, value: bigint, tokenAddress: string): Promise<string>;
12
+ private parsePrivateKey;
13
+ private parseNativeTransfer;
14
+ private parseJettonTransfer;
15
+ private getJettonWalletAddress;
16
+ private normalizeAddress;
17
+ private addressesMatch;
18
+ private request;
19
+ private sleep;
20
+ }
@@ -0,0 +1,242 @@
1
+ import { Address, beginCell, internal, SendMode, toNano, TonClient, WalletContractV5R1 } from "@ton/ton";
2
+ import { keyPairFromSecretKey } from "@ton/crypto";
3
+ import { log, memoize } from "../utils.js";
4
+ export class TonNetwork {
5
+ constructor(rpcUrl, confirmations = 20) {
6
+ this.nativeAssetDecimals = 9;
7
+ this.retryDelay = 5000;
8
+ this.rpcUrl = rpcUrl;
9
+ this.confirmations = confirmations;
10
+ this.client = new TonClient({
11
+ endpoint: rpcUrl
12
+ });
13
+ }
14
+ async getDecimals(tokenAddress) {
15
+ if (tokenAddress === "0x0") {
16
+ return this.nativeAssetDecimals;
17
+ }
18
+ return memoize(`decimals-ton-${tokenAddress}`, 86400 * 1000, async () => {
19
+ const response = await this.request(`/api/v3/jetton/masters?address=${encodeURIComponent(tokenAddress)}`);
20
+ if (response.jetton_masters?.length > 0) {
21
+ const master = response.jetton_masters[0];
22
+ const decimals = master.jetton_content?.decimals;
23
+ if (decimals !== undefined && decimals !== null) {
24
+ return typeof decimals === "string" ? parseInt(decimals, 10) : Number(decimals);
25
+ }
26
+ }
27
+ return 9;
28
+ });
29
+ }
30
+ async getTxData(txHash, tokenAddress, recipientAddress) {
31
+ const masterchainInfo = await this.request("/api/v3/masterchainInfo");
32
+ const currentSeqno = masterchainInfo.last?.seqno ?? 0;
33
+ const txResponse = await this.request(`/api/v3/transactions?hash=${encodeURIComponent(txHash)}&limit=1`);
34
+ if (!txResponse.transactions?.length) {
35
+ return;
36
+ }
37
+ const tx = txResponse.transactions[0];
38
+ const txSeqno = tx.mc_block_seqno ?? currentSeqno;
39
+ const confirmed = currentSeqno - txSeqno >= this.confirmations;
40
+ // exit_code is in description.compute_ph.exit_code for transactionsByMessage API
41
+ // exit_code 0 = success, 1 = alternative success
42
+ // skipped compute phase (no compute_ph) is ok for simple transfers
43
+ const computePh = tx.description?.compute_ph;
44
+ const exitCode = computePh?.exit_code;
45
+ const computeSuccess = computePh?.success;
46
+ if (computePh && computeSuccess === false) {
47
+ log.warn(`Transaction ${txHash} failed: exit_code=${exitCode}`);
48
+ return {
49
+ to: "",
50
+ token: "",
51
+ amount: 0n,
52
+ confirmed
53
+ };
54
+ }
55
+ log.info(`Confirmations ${txHash}: ${currentSeqno - txSeqno}`);
56
+ if (tokenAddress === "0x0") {
57
+ return this.parseNativeTransfer(tx, recipientAddress, confirmed);
58
+ }
59
+ return this.parseJettonTransfer(txHash, tokenAddress, recipientAddress, confirmed);
60
+ }
61
+ async transfer(privateKey, to, value, tokenAddress) {
62
+ const keyPair = this.parsePrivateKey(privateKey);
63
+ const wallet = WalletContractV5R1.create({
64
+ workchain: 0,
65
+ publicKey: keyPair.publicKey
66
+ });
67
+ const contract = this.client.open(wallet);
68
+ const seqno = await contract.getSeqno();
69
+ if (tokenAddress === "0x0") {
70
+ await contract.sendTransfer({
71
+ seqno,
72
+ secretKey: keyPair.secretKey,
73
+ sendMode: SendMode.PAY_GAS_SEPARATELY + SendMode.IGNORE_ERRORS,
74
+ messages: [
75
+ internal({
76
+ to: Address.parse(to),
77
+ value,
78
+ bounce: false
79
+ })
80
+ ]
81
+ });
82
+ }
83
+ else {
84
+ const jettonWalletAddress = await this.getJettonWalletAddress(tokenAddress, wallet.address.toString());
85
+ const jettonTransferBody = beginCell()
86
+ .storeUint(0xf8a7ea5, 32)
87
+ .storeUint(Date.now(), 64)
88
+ .storeCoins(value)
89
+ .storeAddress(Address.parse(to))
90
+ .storeAddress(wallet.address)
91
+ .storeBit(false)
92
+ .storeCoins(toNano("0.01"))
93
+ .storeBit(false)
94
+ .endCell();
95
+ await contract.sendTransfer({
96
+ seqno,
97
+ secretKey: keyPair.secretKey,
98
+ sendMode: SendMode.PAY_GAS_SEPARATELY + SendMode.IGNORE_ERRORS,
99
+ messages: [
100
+ internal({
101
+ to: Address.parse(jettonWalletAddress),
102
+ value: toNano("0.05"),
103
+ bounce: true,
104
+ body: jettonTransferBody
105
+ })
106
+ ]
107
+ });
108
+ }
109
+ // Wait for seqno to change (transaction confirmed)
110
+ for (let attempt = 0; attempt < 30; attempt++) {
111
+ await this.sleep(2000);
112
+ const currentSeqno = await contract.getSeqno();
113
+ if (currentSeqno > seqno)
114
+ break;
115
+ }
116
+ // Get the latest transaction hash
117
+ const transactions = await this.client.getTransactions(wallet.address, { limit: 1 });
118
+ if (transactions.length === 0) {
119
+ throw new Error("Transaction not found after confirmation");
120
+ }
121
+ return transactions[0].hash().toString("hex");
122
+ }
123
+ parsePrivateKey(privateKey) {
124
+ const cleanKey = privateKey.startsWith("0x") ? privateKey.slice(2) : privateKey;
125
+ const secretKeyBytes = Buffer.from(cleanKey, "hex");
126
+ if (secretKeyBytes.length === 64) {
127
+ return keyPairFromSecretKey(secretKeyBytes);
128
+ }
129
+ if (secretKeyBytes.length === 32) {
130
+ const publicKey = secretKeyBytes;
131
+ return {
132
+ publicKey,
133
+ secretKey: Buffer.concat([secretKeyBytes, publicKey])
134
+ };
135
+ }
136
+ throw new Error(`Invalid private key length: ${secretKeyBytes.length}`);
137
+ }
138
+ parseNativeTransfer(tx, recipientAddress, confirmed) {
139
+ const outMsgs = tx.out_msgs || [];
140
+ for (const msg of outMsgs) {
141
+ if (msg.destination) {
142
+ const destAddress = this.normalizeAddress(msg.destination);
143
+ if (this.addressesMatch(destAddress, recipientAddress)) {
144
+ return {
145
+ to: destAddress,
146
+ token: "0x0",
147
+ amount: BigInt(msg.value || 0),
148
+ confirmed
149
+ };
150
+ }
151
+ }
152
+ }
153
+ if (tx.in_msg?.value) {
154
+ return {
155
+ to: this.normalizeAddress(tx.account),
156
+ token: "0x0",
157
+ amount: BigInt(tx.in_msg.value),
158
+ confirmed
159
+ };
160
+ }
161
+ return;
162
+ }
163
+ async parseJettonTransfer(txHash, tokenAddress, _recipientAddress, confirmed) {
164
+ const transfers = await this.request(`/api/v3/jetton/transfers?transaction_hash=${encodeURIComponent(txHash)}&limit=10`);
165
+ if (transfers.jetton_transfers?.length > 0) {
166
+ const transfer = transfers.jetton_transfers[0];
167
+ const destAddress = this.normalizeAddress(transfer.destination?.address || transfer.destination);
168
+ return {
169
+ to: destAddress,
170
+ token: tokenAddress,
171
+ amount: BigInt(transfer.amount || 0),
172
+ confirmed
173
+ };
174
+ }
175
+ const transfersByMaster = await this.request(`/api/v3/jetton/transfers?jetton_master=${encodeURIComponent(tokenAddress)}&limit=100`);
176
+ if (!transfersByMaster.jetton_transfers?.length) {
177
+ return;
178
+ }
179
+ for (const transfer of transfersByMaster.jetton_transfers) {
180
+ if (transfer.transaction_hash === txHash) {
181
+ const destAddress = this.normalizeAddress(transfer.destination?.address || transfer.destination);
182
+ return {
183
+ to: destAddress,
184
+ token: tokenAddress,
185
+ amount: BigInt(transfer.amount || 0),
186
+ confirmed
187
+ };
188
+ }
189
+ }
190
+ return;
191
+ }
192
+ async getJettonWalletAddress(jettonMaster, ownerAddress) {
193
+ const response = await this.request(`/api/v3/jetton/wallets?owner_address=${encodeURIComponent(ownerAddress)}&jetton_address=${encodeURIComponent(jettonMaster)}&limit=1`);
194
+ if (response.jetton_wallets?.length > 0) {
195
+ return response.jetton_wallets[0].address;
196
+ }
197
+ throw new Error(`Jetton wallet not found for ${ownerAddress}`);
198
+ }
199
+ normalizeAddress(address, bounceable = false) {
200
+ if (!address)
201
+ return "";
202
+ let rawAddress;
203
+ if (typeof address === "string") {
204
+ rawAddress = address;
205
+ }
206
+ else if (typeof address === "object" && address.address) {
207
+ rawAddress = address.address;
208
+ }
209
+ else {
210
+ rawAddress = String(address);
211
+ }
212
+ try {
213
+ return Address.parse(rawAddress).toString({ bounceable });
214
+ }
215
+ catch {
216
+ return rawAddress;
217
+ }
218
+ }
219
+ addressesMatch(a, b) {
220
+ try {
221
+ const addrA = Address.parse(a);
222
+ const addrB = Address.parse(b);
223
+ return addrA.equals(addrB);
224
+ }
225
+ catch {
226
+ const normalize = (addr) => addr.toLowerCase().replace(/[^a-z0-9]/g, "");
227
+ return normalize(a) === normalize(b);
228
+ }
229
+ }
230
+ async request(path, options) {
231
+ const response = await fetch(this.rpcUrl + path, options);
232
+ if (!response.ok) {
233
+ const text = await response.text();
234
+ throw new Error(`Request failed ${response.status}: ${text.substring(0, 1024)}`);
235
+ }
236
+ return response.json();
237
+ }
238
+ sleep(ms) {
239
+ return new Promise((resolve) => setTimeout(resolve, ms));
240
+ }
241
+ }
242
+ //# sourceMappingURL=ton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ton.js","sourceRoot":"","sources":["../../src/networks/ton.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bronlabs/intents-sdk",
3
- "version": "1.0.84",
3
+ "version": "1.0.86",
4
4
  "description": "SDK for Intents DeFi smart contracts",
5
5
  "keywords": [
6
6
  "defi",
@@ -38,6 +38,9 @@
38
38
  "@noble/ed25519": "^3.0.0",
39
39
  "@solana/spl-token": "^0.3.11",
40
40
  "@solana/web3.js": "^1.87.6",
41
+ "@ton/core": "^0.63.0",
42
+ "@ton/crypto": "^3.3.0",
43
+ "@ton/ton": "^16.2.2",
41
44
  "big.js": "^7.0.1",
42
45
  "bitcoinjs-lib": "^6.1.7",
43
46
  "bs58": "^6.0.0",