@dynamic-labs-sdk/ton 0.22.1 → 0.23.0

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.
Files changed (70) hide show
  1. package/dist/addTonConnectExtension-BeGiqIBX.cjs.js +497 -0
  2. package/dist/addTonConnectExtension-BeGiqIBX.cjs.js.map +1 -0
  3. package/dist/addTonConnectExtension-uZJgB9RA.esm.js +492 -0
  4. package/dist/addTonConnectExtension-uZJgB9RA.esm.js.map +1 -0
  5. package/dist/addTonExtension/addTonExtension.d.ts +4 -4
  6. package/dist/addTonExtension/addTonExtension.d.ts.map +1 -1
  7. package/dist/{addWaasTonExtension-Dzrb4rja.cjs.js → addWaasTonExtension-BE89SiWy.cjs.js} +15 -251
  8. package/dist/addWaasTonExtension-BE89SiWy.cjs.js.map +1 -0
  9. package/dist/{addWaasTonExtension-B8tYiMfm.esm.js → addWaasTonExtension-BTZ2uDgB.esm.js} +8 -202
  10. package/dist/addWaasTonExtension-BTZ2uDgB.esm.js.map +1 -0
  11. package/dist/errors/StateInitMissingError.d.ts +5 -0
  12. package/dist/errors/StateInitMissingError.d.ts.map +1 -0
  13. package/dist/errors/TonConnectProofNotAvailableError.d.ts +5 -0
  14. package/dist/errors/TonConnectProofNotAvailableError.d.ts.map +1 -0
  15. package/dist/errors/TonConnectReconnectedError.d.ts +7 -0
  16. package/dist/errors/TonConnectReconnectedError.d.ts.map +1 -0
  17. package/dist/errors/TonConnectRejectedError.d.ts +5 -0
  18. package/dist/errors/TonConnectRejectedError.d.ts.map +1 -0
  19. package/dist/errors/TonConnectTimeoutError.d.ts +5 -0
  20. package/dist/errors/TonConnectTimeoutError.d.ts.map +1 -0
  21. package/dist/exports/index.d.ts +2 -0
  22. package/dist/exports/index.d.ts.map +1 -1
  23. package/dist/exports/tonConnect.d.ts +2 -0
  24. package/dist/exports/tonConnect.d.ts.map +1 -0
  25. package/dist/generateTonConnectProof/generateTonConnectProof.d.ts +20 -0
  26. package/dist/generateTonConnectProof/generateTonConnectProof.d.ts.map +1 -0
  27. package/dist/generateTonConnectProof/index.d.ts +2 -0
  28. package/dist/generateTonConnectProof/index.d.ts.map +1 -0
  29. package/dist/index.cjs.js +60 -11
  30. package/dist/index.cjs.js.map +1 -1
  31. package/dist/index.esm.js +54 -7
  32. package/dist/index.esm.js.map +1 -1
  33. package/dist/sendTransaction/index.d.ts +2 -0
  34. package/dist/sendTransaction/index.d.ts.map +1 -0
  35. package/dist/sendTransaction/sendTransaction.d.ts +19 -0
  36. package/dist/sendTransaction/sendTransaction.d.ts.map +1 -0
  37. package/dist/tonConnect/addTonConnectExtension/addTonConnectExtension.d.ts +13 -0
  38. package/dist/tonConnect/addTonConnectExtension/addTonConnectExtension.d.ts.map +1 -0
  39. package/dist/tonConnect/addTonConnectExtension/index.d.ts +2 -0
  40. package/dist/tonConnect/addTonConnectExtension/index.d.ts.map +1 -0
  41. package/dist/tonConnect/supportedTonConnectWallets.d.ts +14 -0
  42. package/dist/tonConnect/supportedTonConnectWallets.d.ts.map +1 -0
  43. package/dist/tonConnect/utils/createWalletProviderFromTonConnect/createWalletProviderFromTonConnect.d.ts +24 -0
  44. package/dist/tonConnect/utils/createWalletProviderFromTonConnect/createWalletProviderFromTonConnect.d.ts.map +1 -0
  45. package/dist/tonConnect/utils/createWalletProviderFromTonConnect/index.d.ts +2 -0
  46. package/dist/tonConnect/utils/createWalletProviderFromTonConnect/index.d.ts.map +1 -0
  47. package/dist/tonConnect/utils/discoverAndRegisterWallets/discoverAndRegisterWallets.d.ts +17 -0
  48. package/dist/tonConnect/utils/discoverAndRegisterWallets/discoverAndRegisterWallets.d.ts.map +1 -0
  49. package/dist/tonConnect/utils/discoverAndRegisterWallets/index.d.ts +2 -0
  50. package/dist/tonConnect/utils/discoverAndRegisterWallets/index.d.ts.map +1 -0
  51. package/dist/tonConnect/utils/extractPublicKeyFromStateInit/extractPublicKeyFromStateInit.d.ts +14 -0
  52. package/dist/tonConnect/utils/extractPublicKeyFromStateInit/extractPublicKeyFromStateInit.d.ts.map +1 -0
  53. package/dist/tonConnect/utils/extractPublicKeyFromStateInit/index.d.ts +2 -0
  54. package/dist/tonConnect/utils/extractPublicKeyFromStateInit/index.d.ts.map +1 -0
  55. package/dist/tonConnect.cjs.js +10 -0
  56. package/dist/tonConnect.cjs.js.map +1 -0
  57. package/dist/tonConnect.esm.js +10 -0
  58. package/dist/tonConnect.esm.js.map +1 -0
  59. package/dist/tonTransferAmount-DJKzyOt4.esm.js +202 -0
  60. package/dist/tonTransferAmount-DJKzyOt4.esm.js.map +1 -0
  61. package/dist/tonTransferAmount-OsgouTJK.cjs.js +285 -0
  62. package/dist/tonTransferAmount-OsgouTJK.cjs.js.map +1 -0
  63. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  64. package/dist/waas.cjs.js +5 -4
  65. package/dist/waas.cjs.js.map +1 -1
  66. package/dist/waas.esm.js +2 -1
  67. package/dist/waas.esm.js.map +1 -1
  68. package/package.json +9 -3
  69. package/dist/addWaasTonExtension-B8tYiMfm.esm.js.map +0 -1
  70. package/dist/addWaasTonExtension-Dzrb4rja.cjs.js.map +0 -1
@@ -1,56 +1,13 @@
1
+ const require_tonTransferAmount = require('./tonTransferAmount-OsgouTJK.cjs.js');
1
2
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
2
3
  let _ton_ton = require("@ton/ton");
3
- let _dynamic_labs_sdk_client_waas_core = require("@dynamic-labs-sdk/client/waas/core");
4
4
  let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
5
- let _tonconnect_sdk = require("@tonconnect/sdk");
6
- let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
7
5
  let _ton_core = require("@ton/core");
6
+ let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
7
+ let _tonconnect_sdk = require("@tonconnect/sdk");
8
+ let _dynamic_labs_sdk_client_waas_core = require("@dynamic-labs-sdk/client/waas/core");
8
9
  let _ton_crypto = require("@ton/crypto");
9
10
 
10
- //#region package.json
11
- var name = "@dynamic-labs-sdk/ton";
12
- var version = "0.22.1";
13
-
14
- //#endregion
15
- //#region src/utils/createTonClient/createTonClient.ts
16
- /** @not-instrumented */
17
- const createTonClient = ({ rpcUrl }) => new _ton_ton.TonClient({ endpoint: rpcUrl });
18
-
19
- //#endregion
20
- //#region src/utils/fetchTonBalance/fetchTonBalance.ts
21
- /** @not-instrumented */
22
- const fetchTonBalance = async ({ address, client }) => {
23
- try {
24
- return (0, _ton_ton.fromNano)(await client.getBalance(_ton_ton.Address.parse(address)));
25
- } catch {
26
- return null;
27
- }
28
- };
29
-
30
- //#endregion
31
- //#region src/utils/createTonNetworkProvider/createTonNetworkProvider.ts
32
- /** @not-instrumented */
33
- const createTonNetworkProvider = (networkData) => ({
34
- ...(0, _dynamic_labs_sdk_client_core.createBaseNetworkProvider)("TON", networkData),
35
- getBalance: async ({ address }) => ({ balance: await fetchTonBalance({
36
- address,
37
- client: createTonClient({ rpcUrl: networkData.rpcUrls.http[0] })
38
- }) })
39
- });
40
-
41
- //#endregion
42
- //#region src/registerTonNetworkProviderBuilder/registerTonNetworkProviderBuilder.ts
43
- /** @not-instrumented */
44
- const registerTonNetworkProviderBuilder = (client) => {
45
- const networkProviderBuilderRegistry = (0, _dynamic_labs_sdk_client_core.getNetworkProviderBuilderRegistry)(client);
46
- if (networkProviderBuilderRegistry.get().get("TON")) return;
47
- networkProviderBuilderRegistry.register({
48
- builder: createTonNetworkProvider,
49
- chain: "TON"
50
- });
51
- };
52
-
53
- //#endregion
54
11
  //#region src/errors/TransactionExecutionFailedError.ts
55
12
  var TransactionExecutionFailedError = class extends _dynamic_labs_sdk_client.BaseError {
56
13
  constructor(message) {
@@ -65,14 +22,6 @@ var TransactionExecutionFailedError = class extends _dynamic_labs_sdk_client.Bas
65
22
  }
66
23
  };
67
24
 
68
- //#endregion
69
- //#region src/utils/constants.ts
70
- const DEFAULT_TIMEOUT = 60;
71
- const DEFAULT_JETTON_GAS = BigInt(5e7);
72
- const NANOTON_PER_TON = BigInt(1e9);
73
- const TON_PROOF_PREFIX = "ton-proof-item-v2/";
74
- const TON_CONNECT_PREFIX = "ton-connect";
75
-
76
25
  //#endregion
77
26
  //#region src/utils/convertTonSendTransactionRequest/createInternalMessage/createInternalMessage.ts
78
27
  /** @not-instrumented */
@@ -232,7 +181,7 @@ const generateTonConnectProofMessage = ({ address: addressStr, domain, payload,
232
181
  const dl = BufferImpl.alloc(4);
233
182
  dl.writeUInt32LE(domain.lengthBytes, 0);
234
183
  return BufferImpl.concat([
235
- BufferImpl.from(TON_PROOF_PREFIX),
184
+ BufferImpl.from(require_tonTransferAmount.TON_PROOF_PREFIX),
236
185
  wc,
237
186
  address.hash,
238
187
  dl,
@@ -256,7 +205,7 @@ const generateTonConnectProofHash = async ({ address, domain, payload, timestamp
256
205
  const messageHash = BufferImpl.from(await (0, _ton_crypto.sha256)(message));
257
206
  const fullMsg = BufferImpl.concat([
258
207
  BufferImpl.from([255, 255]),
259
- BufferImpl.from(TON_CONNECT_PREFIX),
208
+ BufferImpl.from(require_tonTransferAmount.TON_CONNECT_PREFIX),
260
209
  messageHash
261
210
  ]);
262
211
  return BufferImpl.from(await (0, _ton_crypto.sha256)(fullMsg)).toString("hex");
@@ -278,60 +227,6 @@ const isTonWalletDeployed = async ({ walletAddress, client }) => {
278
227
  return (await client.getContractState(address)).state === "active";
279
228
  };
280
229
 
281
- //#endregion
282
- //#region src/utils/getJettonWalletAddress/getJettonWalletAddress.ts
283
- /** @not-instrumented */
284
- const getJettonWalletAddress = async ({ jettonMasterAddress, ownerAddress, client }) => {
285
- const masterAddress = _ton_ton.Address.parse(jettonMasterAddress);
286
- const owner = _ton_ton.Address.parse(ownerAddress);
287
- const ownerCell = (0, _ton_ton.beginCell)().storeAddress(owner).endCell();
288
- return (await client.runMethod(masterAddress, "get_wallet_address", [{
289
- cell: ownerCell,
290
- type: "slice"
291
- }])).stack.readAddress().toString({
292
- bounceable: true,
293
- testOnly: false,
294
- urlSafe: true
295
- });
296
- };
297
-
298
- //#endregion
299
- //#region src/utils/prepareJettonTransfer/prepareJettonTransfer.ts
300
- /** @not-instrumented */
301
- const prepareJettonTransfer = async ({ walletAddress, jettonMasterAddress, recipientAddress, jettonAmount, forwardTonAmount, client, forwardPayload = "", timeout = DEFAULT_TIMEOUT, gasAmount = DEFAULT_JETTON_GAS, network = _tonconnect_sdk.CHAIN.MAINNET }) => {
302
- const validUntil = Math.floor(Date.now() / 1e3) + timeout;
303
- const jettonWalletAddr = _ton_ton.Address.parse(await getJettonWalletAddress({
304
- client,
305
- jettonMasterAddress,
306
- ownerAddress: walletAddress
307
- }));
308
- const recipientAddr = _ton_ton.Address.parse(recipientAddress);
309
- const walletAddr = _ton_ton.Address.parse(walletAddress);
310
- const isTestnet = network === _tonconnect_sdk.CHAIN.TESTNET;
311
- const forwardPayloadCell = forwardPayload ? (0, _ton_ton.beginCell)().storeUint(0, 32).storeStringTail(forwardPayload).endCell() : (0, _ton_ton.beginCell)().endCell();
312
- const jettonTransferBody = (0, _ton_ton.beginCell)().storeUint(260734629, 32).storeUint(0, 64).storeCoins(jettonAmount).storeAddress(recipientAddr).storeAddress(walletAddr).storeBit(0).storeCoins(forwardTonAmount).storeBit(0).storeSlice(forwardPayloadCell.beginParse()).endCell();
313
- const totalAmount = forwardTonAmount + gasAmount;
314
- const message = {
315
- address: jettonWalletAddr.toString({
316
- bounceable: true,
317
- testOnly: isTestnet,
318
- urlSafe: true
319
- }),
320
- amount: totalAmount.toString(),
321
- payload: jettonTransferBody.toBoc().toString("base64")
322
- };
323
- return {
324
- from: walletAddr.toString({
325
- bounceable: false,
326
- testOnly: isTestnet,
327
- urlSafe: true
328
- }),
329
- messages: [message],
330
- network,
331
- validUntil
332
- };
333
- };
334
-
335
230
  //#endregion
336
231
  //#region src/utils/prepareTonTransaction/prepareTonTransaction.ts
337
232
  /** @not-instrumented */
@@ -359,95 +254,6 @@ const prepareTonTransaction = ({ actionsArray, walletAddress, seqno, validUntil,
359
254
  };
360
255
  };
361
256
 
362
- //#endregion
363
- //#region src/utils/prepareTonNativeTransfer/prepareTonNativeTransfer.ts
364
- /** @not-instrumented */
365
- const prepareTonNativeTransfer = ({ walletAddress, recipient, amountInNanoton, timeout = DEFAULT_TIMEOUT, network = _tonconnect_sdk.CHAIN.MAINNET }) => {
366
- const validUntil = Math.floor(Date.now() / 1e3) + timeout;
367
- const recipientAddress = _ton_ton.Address.parse(recipient);
368
- const walletAddr = _ton_ton.Address.parse(walletAddress);
369
- const isTestnet = network === _tonconnect_sdk.CHAIN.TESTNET;
370
- const message = {
371
- address: recipientAddress.toString({
372
- bounceable: false,
373
- testOnly: isTestnet,
374
- urlSafe: true
375
- }),
376
- amount: amountInNanoton
377
- };
378
- return {
379
- from: walletAddr.toString({
380
- bounceable: false,
381
- testOnly: isTestnet,
382
- urlSafe: true
383
- }),
384
- messages: [message],
385
- network,
386
- validUntil
387
- };
388
- };
389
-
390
- //#endregion
391
- //#region src/errors/NotTonProviderError.ts
392
- var NotTonProviderError = class extends _dynamic_labs_sdk_client.BaseError {
393
- providerKey;
394
- constructor(params) {
395
- super({
396
- cause: null,
397
- code: "not_ton_provider_error",
398
- docsUrl: null,
399
- name: "NotTonProviderError",
400
- shortMessage: "Provider is not a TON wallet provider"
401
- });
402
- this.providerKey = params.providerKey;
403
- }
404
- };
405
-
406
- //#endregion
407
- //#region src/isTonWalletProvider/isTonWalletProvider.ts
408
- /**
409
- * Type guard function to check if a wallet provider is a TON wallet provider.
410
- *
411
- * @param provider - The wallet provider to check.
412
- * @returns True if the wallet provider is a TON wallet provider, false otherwise.
413
- * @not-instrumented
414
- */
415
- const isTonWalletProvider = (provider) => provider.chain === "TON";
416
-
417
- //#endregion
418
- //#region src/utils/tonTransferAmount/tonTransferAmount.ts
419
- const DEFAULT_DECIMALS = 9;
420
- /** @not-instrumented */
421
- const tonTransferAmount = async ({ amount, recipient, token, walletAccount }, client) => {
422
- const provider = (0, _dynamic_labs_sdk_client_core.getWalletProviderFromWalletAccount)({ walletAccount }, client);
423
- if (!isTonWalletProvider(provider)) throw new NotTonProviderError({ providerKey: provider.key });
424
- if (token) {
425
- const rawAmount$1 = (0, _dynamic_labs_sdk_client_core.parseAmountToSmallestUnit)({
426
- amount,
427
- decimals: token.decimals ?? DEFAULT_DECIMALS
428
- });
429
- return provider.sendJetton({
430
- transaction: {
431
- amount: rawAmount$1,
432
- jettonMasterAddress: token.address,
433
- recipientAddress: recipient
434
- },
435
- walletAccount
436
- });
437
- }
438
- const rawAmount = (0, _dynamic_labs_sdk_client_core.parseAmountToSmallestUnit)({
439
- amount,
440
- decimals: DEFAULT_DECIMALS
441
- });
442
- return provider.sendTon({
443
- transaction: {
444
- amount: rawAmount,
445
- recipientAddress: recipient
446
- },
447
- walletAccount
448
- });
449
- };
450
-
451
257
  //#endregion
452
258
  //#region src/errors/PublicKeyNotFoundError.ts
453
259
  var PublicKeyNotFoundError = class extends _dynamic_labs_sdk_client.BaseError {
@@ -494,7 +300,7 @@ const createWalletProviderForWaasTon = (sdkClient) => {
494
300
  });
495
301
  const getTonClientForActiveNetwork = async () => {
496
302
  const { networkId } = await getActiveNetworkId();
497
- return createTonClient({ rpcUrl: (0, _dynamic_labs_sdk_client_core.getNetworkProviderFromNetworkId)({
303
+ return require_tonTransferAmount.createTonClient({ rpcUrl: (0, _dynamic_labs_sdk_client_core.getNetworkProviderFromNetworkId)({
498
304
  chain: "TON",
499
305
  networkId
500
306
  }, sdkClient).rpcUrls.http[0] });
@@ -563,10 +369,10 @@ const createWalletProviderForWaasTon = (sdkClient) => {
563
369
  const sendTon = async ({ transaction, walletAccount }) => {
564
370
  (0, _dynamic_labs_sdk_client_core.assertDefined)(walletAccount, "Wallet account is required");
565
371
  return sendTransaction({
566
- request: prepareTonNativeTransfer({
372
+ request: require_tonTransferAmount.prepareTonNativeTransfer({
567
373
  amountInNanoton: transaction.amount.toString(),
568
374
  recipient: transaction.recipientAddress,
569
- timeout: DEFAULT_TIMEOUT,
375
+ timeout: require_tonTransferAmount.DEFAULT_TIMEOUT,
570
376
  walletAddress: walletAccount.address
571
377
  }),
572
378
  walletAccount
@@ -575,14 +381,14 @@ const createWalletProviderForWaasTon = (sdkClient) => {
575
381
  const sendJetton = async ({ transaction, walletAccount }) => {
576
382
  (0, _dynamic_labs_sdk_client_core.assertDefined)(walletAccount, "Wallet account is required");
577
383
  return sendTransaction({
578
- request: await prepareJettonTransfer({
384
+ request: await require_tonTransferAmount.prepareJettonTransfer({
579
385
  client: await getTonClientForActiveNetwork(),
580
386
  forwardTonAmount: transaction.forwardTonAmount ?? BigInt(0),
581
- gasAmount: transaction.gasAmount ?? DEFAULT_JETTON_GAS,
387
+ gasAmount: transaction.gasAmount ?? require_tonTransferAmount.DEFAULT_JETTON_GAS,
582
388
  jettonAmount: transaction.amount,
583
389
  jettonMasterAddress: transaction.jettonMasterAddress,
584
390
  recipientAddress: transaction.recipientAddress,
585
- timeout: DEFAULT_TIMEOUT,
391
+ timeout: require_tonTransferAmount.DEFAULT_TIMEOUT,
586
392
  walletAddress: walletAccount.address
587
393
  }),
588
394
  walletAccount
@@ -630,7 +436,7 @@ const createWalletProviderForWaasTon = (sdkClient) => {
630
436
  sendTransaction,
631
437
  signMessage,
632
438
  switchActiveNetwork,
633
- transferAmount: (args) => tonTransferAmount(args, sdkClient),
439
+ transferAmount: (args) => require_tonTransferAmount.tonTransferAmount(args, sdkClient),
634
440
  walletProviderType
635
441
  };
636
442
  };
@@ -650,7 +456,7 @@ const WAAS_TON_EXTENSION_KEY = "waasTon";
650
456
  const addWaasTonExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
651
457
  if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: WAAS_TON_EXTENSION_KEY }, client)) return;
652
458
  (0, _dynamic_labs_sdk_client_core.registerExtension)({ extensionKey: WAAS_TON_EXTENSION_KEY }, client);
653
- registerTonNetworkProviderBuilder(client);
459
+ require_tonTransferAmount.registerTonNetworkProviderBuilder(client);
654
460
  const walletProviderRegistry = (0, _dynamic_labs_sdk_client_core.getWalletProviderRegistry)(client);
655
461
  const walletProvider = createWalletProviderForWaasTon(client);
656
462
  walletProviderRegistry.register({
@@ -660,18 +466,6 @@ const addWaasTonExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefau
660
466
  };
661
467
 
662
468
  //#endregion
663
- Object.defineProperty(exports, 'NANOTON_PER_TON', {
664
- enumerable: true,
665
- get: function () {
666
- return NANOTON_PER_TON;
667
- }
668
- });
669
- Object.defineProperty(exports, 'NotTonProviderError', {
670
- enumerable: true,
671
- get: function () {
672
- return NotTonProviderError;
673
- }
674
- });
675
469
  Object.defineProperty(exports, 'TransactionExecutionFailedError', {
676
470
  enumerable: true,
677
471
  get: function () {
@@ -684,34 +478,4 @@ Object.defineProperty(exports, 'addWaasTonExtension', {
684
478
  return addWaasTonExtension;
685
479
  }
686
480
  });
687
- Object.defineProperty(exports, 'isTonWalletProvider', {
688
- enumerable: true,
689
- get: function () {
690
- return isTonWalletProvider;
691
- }
692
- });
693
- Object.defineProperty(exports, 'name', {
694
- enumerable: true,
695
- get: function () {
696
- return name;
697
- }
698
- });
699
- Object.defineProperty(exports, 'prepareJettonTransfer', {
700
- enumerable: true,
701
- get: function () {
702
- return prepareJettonTransfer;
703
- }
704
- });
705
- Object.defineProperty(exports, 'prepareTonNativeTransfer', {
706
- enumerable: true,
707
- get: function () {
708
- return prepareTonNativeTransfer;
709
- }
710
- });
711
- Object.defineProperty(exports, 'version', {
712
- enumerable: true,
713
- get: function () {
714
- return version;
715
- }
716
- });
717
- //# sourceMappingURL=addWaasTonExtension-Dzrb4rja.cjs.js.map
481
+ //# sourceMappingURL=addWaasTonExtension-BE89SiWy.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addWaasTonExtension-BE89SiWy.cjs.js","names":["BaseError","SendMode","BaseError","Cell","Cell","actions: OutActionSendMsg[]","Address","WalletContractV5R1","BaseError","Cell","Address","Address","TON_PROOF_PREFIX","TON_CONNECT_PREFIX","Address","Address","CHAIN","Address","WalletContractV5R1","BaseError","WalletProviderEnum","DYNAMIC_WAAS_METADATA","createTonClient","getActiveNetworkId: WaasTonWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasTonWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasTonWalletProvider['getConnectedAddresses']","signMessage: WaasTonWalletProvider['signMessage']","sendTransaction: WaasTonWalletProvider['sendTransaction']","CHAIN","MFAAction","sendTon: WaasTonWalletProvider['sendTon']","prepareTonNativeTransfer","DEFAULT_TIMEOUT","sendJetton: WaasTonWalletProvider['sendJetton']","prepareJettonTransfer","DEFAULT_JETTON_GAS","generateTonConnectProof: WaasTonWalletProvider['generateTonConnectProof']","tonTransferAmount","WalletProviderPriority"],"sources":["../src/errors/TransactionExecutionFailedError.ts","../src/utils/convertTonSendTransactionRequest/createInternalMessage/createInternalMessage.ts","../src/utils/convertTonSendTransactionRequest/createSendMsgAction/createSendMsgAction.ts","../src/utils/convertTonSendTransactionRequest/determineBounceFlag/determineBounceFlag.ts","../src/errors/InvalidBocError.ts","../src/utils/convertTonSendTransactionRequest/parsePayload/parsePayload.ts","../src/utils/convertTonSendTransactionRequest/parseStateInit/parseStateInit.ts","../src/utils/convertTonSendTransactionRequest/convertTonSendTransactionRequest.ts","../src/utils/createTonWalletStateInit/createTonWalletStateInit.ts","../src/errors/InvalidSignatureLengthError.ts","../src/utils/executeTonTransaction/executeTonTransaction.ts","../src/utils/generateTonConnectProofHash/generateTonConnectProofMessage/generateTonConnectProofMessage.ts","../src/utils/generateTonConnectProofHash/generateTonConnectProofHash.ts","../src/utils/getTonWalletSeqno/getTonWalletSeqno.ts","../src/utils/isTonWalletDeployed/isTonWalletDeployed.ts","../src/utils/prepareTonTransaction/prepareTonTransaction.ts","../src/errors/PublicKeyNotFoundError.ts","../src/waas/utils/getPublicKeyForWalletAccount/getPublicKeyForWalletAccount.ts","../src/waas/utils/createWalletProviderForWaasTon/createWalletProviderForWaasTon.ts","../src/waas/addWaasTonExtension/addWaasTonExtension.ts"],"sourcesContent":["import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class TransactionExecutionFailedError extends BaseError {\n constructor(message?: string) {\n super({\n cause: null,\n code: 'transaction_execution_failed_error',\n details: message,\n docsUrl: null,\n name: 'TransactionExecutionFailedError',\n shortMessage: 'Failed to execute TON transaction',\n });\n }\n}\n","import type { Address, Cell } from '@ton/ton';\n\n/** @not-instrumented */\nexport const createInternalMessage = (\n destAddr: Address,\n amount: bigint,\n body: Cell,\n bounce: boolean,\n init?: { code: Cell; data: Cell }\n) => ({\n body,\n info: {\n bounce,\n bounced: false,\n createdAt: 0,\n createdLt: BigInt(0),\n dest: destAddr,\n forwardFee: BigInt(0),\n ihrDisabled: true,\n ihrFee: BigInt(0),\n src: null,\n type: 'internal' as const,\n value: { coins: amount },\n },\n ...(init && { init }),\n});\n","import { type OutActionSendMsg, SendMode } from '@ton/core';\n\nimport type { createInternalMessage } from '../createInternalMessage';\n\n/** @not-instrumented */\nexport const createSendMsgAction = (\n internalMessage: ReturnType<typeof createInternalMessage>\n): OutActionSendMsg => ({\n mode: SendMode.PAY_GAS_SEPARATELY | SendMode.IGNORE_ERRORS,\n outMsg: internalMessage,\n type: 'sendMsg' as const,\n});\n","/** @not-instrumented */\nexport const determineBounceFlag = (address: string): boolean =>\n !address.startsWith('UQ') && !address.startsWith('0Q');\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\ntype InvalidBocErrorParams = {\n cause: Error | null;\n type: 'payload' | 'stateInit';\n};\n\nexport class InvalidBocError extends BaseError {\n constructor({ cause, type }: InvalidBocErrorParams) {\n super({\n cause,\n code: 'invalid_boc_error',\n docsUrl: null,\n name: 'InvalidBocError',\n shortMessage: `Invalid ${type} BOC`,\n });\n }\n}\n","import { Cell, beginCell } from '@ton/ton';\n\nimport { InvalidBocError } from '../../../errors/InvalidBocError';\n\n/** @not-instrumented */\nexport const parsePayload = (payload: string | undefined): Cell => {\n if (!payload) {\n return beginCell().endCell();\n }\n\n try {\n return Cell.fromBase64(payload);\n } catch (e) {\n throw new InvalidBocError({\n cause: e instanceof Error ? e : null,\n type: 'payload',\n });\n }\n};\n","import { Cell } from '@ton/ton';\n\nimport { InvalidBocError } from '../../../errors/InvalidBocError';\n\n/** @not-instrumented */\nexport const parseStateInit = (\n stateInit: string | undefined\n): { code: Cell; data: Cell } | undefined => {\n if (!stateInit) {\n return undefined;\n }\n\n try {\n const stateInitCell = Cell.fromBase64(stateInit);\n const slice = stateInitCell.beginParse();\n // skip split_depth and special flags\n slice.skip(2);\n\n return {\n code: slice.loadRef(),\n data: slice.loadRef(),\n };\n } catch (e) {\n throw new InvalidBocError({\n cause: e instanceof Error ? e : null,\n type: 'stateInit',\n });\n }\n};\n","import { type OutActionSendMsg } from '@ton/core';\nimport { Address } from '@ton/ton';\n\nimport type { TonSendTransactionRequest } from '../../ton.types';\nimport { createInternalMessage } from './createInternalMessage';\nimport { createSendMsgAction } from './createSendMsgAction';\nimport { determineBounceFlag } from './determineBounceFlag';\nimport { parsePayload } from './parsePayload';\nimport { parseStateInit } from './parseStateInit';\n\n/** @not-instrumented */\nexport const convertTonSendTransactionRequest = (\n request: TonSendTransactionRequest\n): OutActionSendMsg[] => {\n const actions: OutActionSendMsg[] = [];\n\n for (const msg of request.messages) {\n const destAddr = Address.parse(msg.address);\n const amount = BigInt(msg.amount);\n const body = parsePayload(msg.payload);\n const init = parseStateInit(msg.stateInit);\n const bounce = determineBounceFlag(msg.address);\n\n const internalMessage = createInternalMessage(\n destAddr,\n amount,\n body,\n bounce,\n init\n );\n\n actions.push(createSendMsgAction(internalMessage));\n }\n\n return actions;\n};\n","import type { StateInit } from '@ton/core';\nimport { WalletContractV5R1 } from '@ton/ton';\n\ntype CreateTonWalletStateInitParams = {\n publicKey: Buffer;\n workchain?: number;\n};\n\n/** @not-instrumented */\nexport const createTonWalletStateInit = ({\n publicKey,\n workchain = 0,\n}: CreateTonWalletStateInitParams): StateInit => {\n const wallet = WalletContractV5R1.create({\n publicKey,\n workchain,\n });\n\n return wallet.init;\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\ntype InvalidSignatureLengthErrorParams = {\n actual: number;\n expected: number;\n};\n\nexport class InvalidSignatureLengthError extends BaseError {\n constructor({ actual, expected }: InvalidSignatureLengthErrorParams) {\n super({\n cause: null,\n code: 'invalid_signature_length_error',\n docsUrl: null,\n name: 'InvalidSignatureLengthError',\n shortMessage: `Invalid signature length: expected ${expected} bytes, got ${actual}`,\n });\n }\n}\n","import { getBuffer } from '@dynamic-labs-sdk/client/core';\nimport { type StateInit, external, storeMessage } from '@ton/core';\nimport { Address, Cell, type TonClient, beginCell } from '@ton/ton';\n\nimport { InvalidSignatureLengthError } from '../../errors/InvalidSignatureLengthError';\nimport type { TonTransactionData } from '../../ton.types';\n\ntype ExecuteTonTransactionParams = {\n client: TonClient;\n signature: string;\n stateInit?: StateInit;\n transactionData: TonTransactionData;\n};\n\n/** @not-instrumented */\nexport const executeTonTransaction = async ({\n transactionData,\n signature,\n client,\n stateInit,\n}: ExecuteTonTransactionParams): Promise<{ transactionHash: string }> => {\n const signatureBuffer = getBuffer().from(signature, 'base64');\n\n if (signatureBuffer.length !== 64) {\n throw new InvalidSignatureLengthError({\n actual: signatureBuffer.length,\n expected: 64,\n });\n }\n\n const signingMessageCell = Cell.fromBase64(transactionData.messageBody);\n\n const signedMessageBody = beginCell()\n .storeSlice(signingMessageCell.beginParse())\n .storeBuffer(signatureBuffer)\n .endCell();\n\n const address = Address.parse(transactionData.address);\n\n const externalMsg = external({\n body: signedMessageBody,\n to: address,\n ...(stateInit ? { init: stateInit } : {}),\n });\n\n const externalMessage = beginCell()\n .store(storeMessage(externalMsg, { forceRef: true }))\n .endCell();\n\n const boc = externalMessage.toBoc();\n\n await client.sendFile(boc);\n\n const transactionHash = externalMessage.hash().toString('hex');\n\n return { transactionHash };\n};\n","import { getBuffer } from '@dynamic-labs-sdk/client/core';\nimport { Address } from '@ton/ton';\n\nimport type { TonConnectDomain } from '../../../ton.types';\nimport { TON_PROOF_PREFIX } from '../../constants';\n\ntype GenerateTonConnectProofMessageParams = {\n address: string;\n domain: TonConnectDomain;\n payload: string;\n timestamp: number;\n};\n\n/** @not-instrumented */\nexport const generateTonConnectProofMessage = ({\n address: addressStr,\n domain,\n payload,\n timestamp,\n}: GenerateTonConnectProofMessageParams) => {\n const BufferImpl = getBuffer();\n const address = Address.parse(addressStr);\n\n const domainBytes = BufferImpl.from(domain.value);\n\n // Workchain (32-bit big-endian)\n const wc = BufferImpl.alloc(4);\n wc.writeUInt32BE(address.workChain, 0);\n\n // Timestamp (64-bit little-endian)\n const ts = BufferImpl.alloc(8);\n ts.writeBigUInt64LE(BigInt(timestamp), 0);\n\n // Domain length (32-bit little-endian)\n const dl = BufferImpl.alloc(4);\n dl.writeUInt32LE(domain.lengthBytes, 0);\n\n return BufferImpl.concat([\n BufferImpl.from(TON_PROOF_PREFIX) as Uint8Array,\n wc,\n address.hash,\n dl,\n domainBytes,\n ts,\n BufferImpl.from(payload),\n ]);\n};\n","import { getBuffer } from '@dynamic-labs-sdk/client/core';\nimport { sha256 } from '@ton/crypto';\n\nimport type { TonConnectDomain } from '../../ton.types';\nimport { TON_CONNECT_PREFIX } from '../constants';\nimport { generateTonConnectProofMessage } from './generateTonConnectProofMessage';\n\ntype GenerateTonConnectProofHashParams = {\n address: string;\n domain: TonConnectDomain;\n payload: string;\n timestamp: number;\n};\n\n/** @not-instrumented */\nexport const generateTonConnectProofHash = async ({\n address,\n domain,\n payload,\n timestamp,\n}: GenerateTonConnectProofHashParams): Promise<string> => {\n const BufferImpl = getBuffer();\n\n const message = generateTonConnectProofMessage({\n address,\n domain,\n payload,\n timestamp,\n });\n\n const messageHash = BufferImpl.from(\n (await sha256(message)) as Uint8Array\n );\n\n const fullMsg = BufferImpl.concat([\n BufferImpl.from([0xff, 0xff]) as Uint8Array,\n BufferImpl.from(TON_CONNECT_PREFIX) as Uint8Array,\n messageHash,\n ]);\n\n const hash = BufferImpl.from((await sha256(fullMsg)) as Uint8Array);\n\n return hash.toString('hex');\n};\n","import { Address, type TonClient } from '@ton/ton';\n\ntype GetTonWalletSeqnoParams = {\n client: TonClient;\n walletAddress: string;\n};\n\n/** @not-instrumented */\nexport const getTonWalletSeqno = async ({\n walletAddress,\n client,\n}: GetTonWalletSeqnoParams): Promise<number> => {\n const address = Address.parse(walletAddress);\n const result = await client.runMethod(address, 'seqno');\n\n return result.stack.readNumber();\n};\n","import { Address, type TonClient } from '@ton/ton';\n\ntype IsTonWalletDeployedParams = {\n client: TonClient;\n walletAddress: string;\n};\n\n/** @not-instrumented */\nexport const isTonWalletDeployed = async ({\n walletAddress,\n client,\n}: IsTonWalletDeployedParams): Promise<boolean> => {\n const address = Address.parse(walletAddress);\n const state = await client.getContractState(address);\n\n return state.state === 'active';\n};\n","import { type OutActionSendMsg, storeOutList } from '@ton/core';\nimport { Address, WalletContractV5R1, beginCell } from '@ton/ton';\nimport { CHAIN } from '@tonconnect/sdk';\n\nimport type { TonTransactionData } from '../../ton.types';\n\ntype PrepareTonTransactionParams = {\n actionsArray: OutActionSendMsg[];\n networkGlobalId?: CHAIN;\n seqno: number;\n timeout: number;\n validUntil: number;\n walletAddress: string;\n};\n\ntype PrepareTonTransactionResult = {\n hashToSign: Buffer;\n hashToSignHex: string;\n transactionData: TonTransactionData;\n};\n\n/** @not-instrumented */\nexport const prepareTonTransaction = ({\n actionsArray,\n walletAddress,\n seqno,\n validUntil,\n timeout,\n networkGlobalId = CHAIN.MAINNET,\n}: PrepareTonTransactionParams): PrepareTonTransactionResult => {\n const walletAddr = Address.parse(walletAddress);\n\n const actionsCell = beginCell().store(storeOutList(actionsArray)).endCell();\n\n const actions = beginCell()\n .storeBit(1)\n .storeRef(actionsCell)\n .storeBit(0)\n .endCell();\n\n const context = beginCell()\n .storeUint(1, 1)\n .storeInt(walletAddr.workChain, 8)\n .storeUint(0, 8)\n .storeUint(0, 15)\n .endCell()\n .beginParse()\n .loadInt(32);\n\n const walletIdValue = BigInt(networkGlobalId) ^ BigInt(context);\n\n const signingMessage = beginCell()\n .storeUint(WalletContractV5R1.OpCodes.auth_signed_external, 32)\n .storeInt(walletIdValue, 32);\n\n if (seqno === 0) {\n for (let i = 0; i < 32; i++) {\n signingMessage.storeBit(1);\n }\n } else {\n signingMessage.storeUint(validUntil, 32);\n }\n\n signingMessage.storeUint(seqno, 32).storeSlice(actions.beginParse());\n\n const dataToSign = signingMessage.endCell();\n const hashToSign = dataToSign.hash();\n const hashToSignHex = hashToSign.toString('hex');\n\n const messageBody = dataToSign.toBoc().toString('base64');\n\n const transactionData: TonTransactionData = {\n address: walletAddress,\n messageBody,\n seqno,\n timeout,\n };\n\n return {\n hashToSign,\n hashToSignHex,\n transactionData,\n };\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class PublicKeyNotFoundError extends BaseError {\n constructor(address: string) {\n super({\n cause: null,\n code: 'public_key_not_found_error',\n docsUrl: null,\n name: 'PublicKeyNotFoundError',\n shortMessage: `No public key found for address ${address}`,\n });\n }\n}\n","import type { DynamicClient, WalletAccount } from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\n\nimport { PublicKeyNotFoundError } from '../../../errors/PublicKeyNotFoundError';\n\n/**\n * Gets the public key for a wallet account from the user's verified credentials\n * @not-instrumented\n */\nexport const getPublicKeyForWalletAccount = (\n walletAccount: WalletAccount,\n client: DynamicClient\n): string => {\n const user = getCore(client).state.get().user;\n\n for (const credential of user?.verifiedCredentials ?? []) {\n const additionalAddress = credential.walletAdditionalAddresses?.find(\n (addr) => addr.address === walletAccount.address\n );\n\n if (additionalAddress?.publicKey) {\n return additionalAddress.publicKey;\n }\n }\n\n throw new PublicKeyNotFoundError(walletAccount.address);\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n consumeMfaTokenIfRequiredForAction,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getBuffer,\n getNetworkProviderFromNetworkId,\n getSignedSessionId,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n DYNAMIC_WAAS_METADATA,\n createWaasProvider,\n getAllUserWaasAddressesForChain,\n} from '@dynamic-labs-sdk/client/waas/core';\nimport { MFAAction, WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport type { TonClient } from '@ton/ton';\nimport { CHAIN } from '@tonconnect/sdk';\n\nimport { TransactionExecutionFailedError } from '../../../errors/TransactionExecutionFailedError';\nimport { DEFAULT_JETTON_GAS, DEFAULT_TIMEOUT } from '../../../utils/constants';\nimport { convertTonSendTransactionRequest } from '../../../utils/convertTonSendTransactionRequest';\nimport { createTonClient } from '../../../utils/createTonClient';\nimport { createTonWalletStateInit } from '../../../utils/createTonWalletStateInit';\nimport { executeTonTransaction } from '../../../utils/executeTonTransaction';\nimport { generateTonConnectProofHash } from '../../../utils/generateTonConnectProofHash';\nimport { getTonWalletSeqno } from '../../../utils/getTonWalletSeqno';\nimport { isTonWalletDeployed } from '../../../utils/isTonWalletDeployed';\nimport { prepareJettonTransfer } from '../../../utils/prepareJettonTransfer';\nimport { prepareTonTransaction } from '../../../utils/prepareTonTransaction';\nimport { prepareTonNativeTransfer } from '../../../utils/prepareTonNativeTransfer';\nimport { tonTransferAmount } from '../../../utils/tonTransferAmount';\nimport type { WaasTonWalletProvider } from '../../WaasTonWalletProvider.types';\nimport { getPublicKeyForWalletAccount } from '../getPublicKeyForWalletAccount/getPublicKeyForWalletAccount';\n\n/** @not-instrumented */\nexport const createWalletProviderForWaasTon = (\n sdkClient: DynamicClient\n): WaasTonWalletProvider => {\n const chain = 'TON' as const;\n const walletProviderType = WalletProviderEnum.EmbeddedWallet;\n\n const key = formatWalletProviderKey({\n chain,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType,\n });\n\n const waasProvider = createWaasProvider({ chain, sdkClient });\n\n const getTonClientForActiveNetwork = async (): Promise<TonClient> => {\n const { networkId } = await getActiveNetworkId();\n const networkProvider = getNetworkProviderFromNetworkId(\n { chain: 'TON', networkId },\n sdkClient\n );\n\n return createTonClient({ rpcUrl: networkProvider.rpcUrls.http[0] });\n };\n\n const getActiveNetworkId: WaasTonWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: sdkClient,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: WaasTonWalletProvider['switchActiveNetwork'] =\n async ({ networkId }: { networkId: string }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: sdkClient,\n networkId,\n walletProviderKey: key,\n });\n\n const getConnectedAddresses: WaasTonWalletProvider['getConnectedAddresses'] =\n async () => ({\n addresses: getAllUserWaasAddressesForChain({ chain }, sdkClient),\n });\n\n const signMessage: WaasTonWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n return waasProvider.signMessage({ message, walletAccount });\n };\n\n const sendTransaction: WaasTonWalletProvider['sendTransaction'] = async ({\n request,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n const client = await getTonClientForActiveNetwork();\n const walletAddress = request.from || walletAccount.address;\n\n const deployed = await isTonWalletDeployed({ client, walletAddress });\n const seqno = deployed\n ? await getTonWalletSeqno({ client, walletAddress })\n : 0;\n\n const publicKeyHex = getPublicKeyForWalletAccount(walletAccount, sdkClient);\n const stateInit = deployed\n ? undefined\n : createTonWalletStateInit({\n publicKey: getBuffer().from(publicKeyHex, 'hex'),\n workchain: 0,\n });\n\n const actionsArray = convertTonSendTransactionRequest(request);\n\n const timeoutSeconds = request.validUntil - Math.floor(Date.now() / 1000);\n\n if (timeoutSeconds <= 0) {\n throw new TransactionExecutionFailedError(\n 'Transaction validUntil is in the past'\n );\n }\n\n const { hashToSignHex, transactionData } = prepareTonTransaction({\n actionsArray,\n networkGlobalId: request.network || CHAIN.MAINNET,\n seqno,\n timeout: timeoutSeconds,\n validUntil: request.validUntil,\n walletAddress,\n });\n\n const waasClient = await waasProvider.getWaasClient();\n const { signature: signedSessionId } = await getSignedSessionId(sdkClient);\n const mfaToken = await consumeMfaTokenIfRequiredForAction(\n { mfaAction: MFAAction.WalletWaasSign },\n sdkClient\n );\n\n const signature = await waasClient.signTransaction({\n authToken: sdkClient.token ?? undefined,\n mfaToken,\n senderAddress: walletAccount.address,\n signedSessionId,\n transaction: hashToSignHex,\n });\n\n return executeTonTransaction({\n client,\n signature,\n stateInit,\n transactionData,\n });\n };\n\n const sendTon: WaasTonWalletProvider['sendTon'] = async ({\n transaction,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n const request = prepareTonNativeTransfer({\n amountInNanoton: transaction.amount.toString(),\n recipient: transaction.recipientAddress,\n timeout: DEFAULT_TIMEOUT,\n walletAddress: walletAccount.address,\n });\n\n return sendTransaction({ request, walletAccount });\n };\n\n const sendJetton: WaasTonWalletProvider['sendJetton'] = async ({\n transaction,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n const client = await getTonClientForActiveNetwork();\n\n const request = await prepareJettonTransfer({\n client,\n forwardTonAmount: transaction.forwardTonAmount ?? BigInt(0),\n gasAmount: transaction.gasAmount ?? DEFAULT_JETTON_GAS,\n jettonAmount: transaction.amount,\n jettonMasterAddress: transaction.jettonMasterAddress,\n recipientAddress: transaction.recipientAddress,\n timeout: DEFAULT_TIMEOUT,\n walletAddress: walletAccount.address,\n });\n\n return sendTransaction({ request, walletAccount });\n };\n\n const generateTonConnectProof: WaasTonWalletProvider['generateTonConnectProof'] =\n async ({ payload, walletAccount }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n const host = globalThis.location?.host || '';\n const timestamp = Math.floor(Date.now() / 1000);\n const domain = {\n lengthBytes: new TextEncoder().encode(host).length,\n value: host,\n };\n\n const hashHex = await generateTonConnectProofHash({\n address: walletAccount.address,\n domain,\n payload,\n timestamp,\n });\n\n const { signature } = await signMessage({\n message: hashHex,\n walletAccount,\n });\n\n return {\n address: walletAccount.address,\n domain,\n payload,\n signature,\n timestamp,\n };\n };\n\n return {\n ...waasProvider,\n chain,\n generateTonConnectProof,\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(DYNAMIC_WAAS_METADATA.displayName),\n key,\n metadata: {\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n icon: DYNAMIC_WAAS_METADATA.icon,\n },\n sendJetton,\n sendTon,\n sendTransaction,\n signMessage,\n switchActiveNetwork,\n transferAmount: (args) => tonTransferAmount(args, sdkClient),\n walletProviderType,\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerTonNetworkProviderBuilder } from '../../registerTonNetworkProviderBuilder';\nimport { createWalletProviderForWaasTon } from '../utils/createWalletProviderForWaasTon';\n\nexport const WAAS_TON_EXTENSION_KEY = 'waasTon';\n\n/**\n * Adds the Dynamic WaaS (Wallet as a Service) TON extension to the Dynamic client.\n *\n * This extension enables embedded wallet functionality for the TON blockchain,\n * allowing users to have wallets managed by Dynamic's infrastructure.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @not-instrumented\n */\nexport const addWaasTonExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: WAAS_TON_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: WAAS_TON_EXTENSION_KEY }, client);\n registerTonNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n const walletProvider = createWalletProviderForWaasTon(client);\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n};\n"],"mappings":"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"}