@dynamic-labs-sdk/ton 0.26.7 → 0.26.10

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 (48) hide show
  1. package/dist/{addTonConnectExtension-hExZDbwf.esm.js → addTonConnectExtension-Bsi_Yid0.esm.js} +47 -26
  2. package/dist/addTonConnectExtension-Bsi_Yid0.esm.js.map +1 -0
  3. package/dist/{addTonConnectExtension-CyXo57ww.cjs → addTonConnectExtension-zUcfkfpk.cjs} +47 -26
  4. package/dist/addTonConnectExtension-zUcfkfpk.cjs.map +1 -0
  5. package/dist/addTonExtension/addTonExtension.d.ts +6 -1
  6. package/dist/addTonExtension/addTonExtension.d.ts.map +1 -1
  7. package/dist/addTonExtension/index.d.ts +1 -0
  8. package/dist/addTonExtension/index.d.ts.map +1 -1
  9. package/dist/{addWaasTonExtension-CwlMIFZ9.cjs → addWaasTonExtension-CKk-h3gl.cjs} +2 -2
  10. package/dist/{addWaasTonExtension-CwlMIFZ9.cjs.map → addWaasTonExtension-CKk-h3gl.cjs.map} +1 -1
  11. package/dist/{addWaasTonExtension-CT1amZKp.esm.js → addWaasTonExtension-Di7EOIKG.esm.js} +2 -2
  12. package/dist/{addWaasTonExtension-CT1amZKp.esm.js.map → addWaasTonExtension-Di7EOIKG.esm.js.map} +1 -1
  13. package/dist/exports/index.d.ts +1 -1
  14. package/dist/exports/index.d.ts.map +1 -1
  15. package/dist/exports/tonConnect.d.ts +1 -1
  16. package/dist/exports/tonConnect.d.ts.map +1 -1
  17. package/dist/index.cjs +7 -5
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.esm.js +7 -5
  20. package/dist/index.esm.js.map +1 -1
  21. package/dist/tonConnect/addTonConnectExtension/addTonConnectExtension.d.ts +14 -1
  22. package/dist/tonConnect/addTonConnectExtension/addTonConnectExtension.d.ts.map +1 -1
  23. package/dist/tonConnect/addTonConnectExtension/index.d.ts +1 -0
  24. package/dist/tonConnect/addTonConnectExtension/index.d.ts.map +1 -1
  25. package/dist/tonConnect/tonConnectDisplayNameOverrides.d.ts +18 -0
  26. package/dist/tonConnect/tonConnectDisplayNameOverrides.d.ts.map +1 -0
  27. package/dist/tonConnect/utils/createDefaultTonConnectUI/createDefaultTonConnectUI.d.ts +15 -0
  28. package/dist/tonConnect/utils/createDefaultTonConnectUI/createDefaultTonConnectUI.d.ts.map +1 -0
  29. package/dist/tonConnect/utils/createDefaultTonConnectUI/index.d.ts +2 -0
  30. package/dist/tonConnect/utils/createDefaultTonConnectUI/index.d.ts.map +1 -0
  31. package/dist/tonConnect/utils/discoverAndRegisterWallets/discoverAndRegisterWallets.d.ts +5 -3
  32. package/dist/tonConnect/utils/discoverAndRegisterWallets/discoverAndRegisterWallets.d.ts.map +1 -1
  33. package/dist/tonConnect.cjs +2 -2
  34. package/dist/tonConnect.cjs.map +1 -1
  35. package/dist/tonConnect.esm.js +2 -2
  36. package/dist/tonConnect.esm.js.map +1 -1
  37. package/dist/{tonTransferAmount-KHxIUYnb.cjs → tonTransferAmount-Cqk8JYLa.cjs} +2 -2
  38. package/dist/{tonTransferAmount-KHxIUYnb.cjs.map → tonTransferAmount-Cqk8JYLa.cjs.map} +1 -1
  39. package/dist/{tonTransferAmount-Ml0gqZMG.esm.js → tonTransferAmount-DFtzdUtk.esm.js} +2 -2
  40. package/dist/{tonTransferAmount-Ml0gqZMG.esm.js.map → tonTransferAmount-DFtzdUtk.esm.js.map} +1 -1
  41. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  42. package/dist/waas.cjs +2 -2
  43. package/dist/waas.esm.js +2 -2
  44. package/package.json +4 -4
  45. package/dist/addTonConnectExtension-CyXo57ww.cjs.map +0 -1
  46. package/dist/addTonConnectExtension-hExZDbwf.esm.js.map +0 -1
  47. package/dist/tonConnect/supportedTonConnectWallets.d.ts +0 -14
  48. package/dist/tonConnect/supportedTonConnectWallets.d.ts.map +0 -1
@@ -1,2 +1,3 @@
1
1
  export { addTonConnectExtension } from './addTonConnectExtension';
2
+ export type { AddTonConnectExtensionParams } from './addTonConnectExtension';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tonConnect/addTonConnectExtension/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tonConnect/addTonConnectExtension/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Display-name overrides for wallets returned by TonConnect's registry.
3
+ *
4
+ * TonConnect's `getWallets()` returns the full ecosystem catalog. Each wallet
5
+ * comes with its own `name`, which we use as-is by default. A small number of
6
+ * wallets ship a name that is too generic to render (e.g. Telegram Wallet's
7
+ * registry name is just `'Wallet'`); we override those here.
8
+ *
9
+ * IMPORTANT: the wallet's normalized display name is what `formatWalletProviderKey`
10
+ * uses to derive the persisted `walletProviderKey`. Changing an override breaks
11
+ * re-login for any user who linked under the previous name. Treat this map as
12
+ * append-only: never edit existing values, only add new ones.
13
+ *
14
+ * Keys are TonConnect `appName` identifiers; values are the display names we
15
+ * want to render and persist.
16
+ */
17
+ export declare const TON_CONNECT_DISPLAY_NAME_OVERRIDES: Record<string, string>;
18
+ //# sourceMappingURL=tonConnectDisplayNameOverrides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tonConnectDisplayNameOverrides.d.ts","sourceRoot":"","sources":["../../src/tonConnect/tonConnectDisplayNameOverrides.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kCAAkC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAErE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { DynamicClient } from '@dynamic-labs-sdk/client';
2
+ import { TonConnectUI } from '@tonconnect/ui';
3
+ /**
4
+ * Creates a default TonConnectUI instance using the Dynamic environment's
5
+ * universal link as the source for the TonConnect manifest URL.
6
+ *
7
+ * Used as a fallback when the consumer does not pass an external
8
+ * TonConnectUI into `addTonConnectExtension`.
9
+ *
10
+ * @param client - The Dynamic client instance.
11
+ * @throws When the environment's universal link is not configured.
12
+ * @not-instrumented
13
+ */
14
+ export declare const createDefaultTonConnectUI: (client: DynamicClient) => TonConnectUI;
15
+ //# sourceMappingURL=createDefaultTonConnectUI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDefaultTonConnectUI.d.ts","sourceRoot":"","sources":["../../../../src/tonConnect/utils/createDefaultTonConnectUI/createDefaultTonConnectUI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,WAC5B,aAAa,KACpB,YAOF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createDefaultTonConnectUI } from './createDefaultTonConnectUI';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tonConnect/utils/createDefaultTonConnectUI/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -5,10 +5,12 @@ type DiscoverAndRegisterWalletsParams = {
5
5
  tonConnectUI: TonConnectUI;
6
6
  };
7
7
  /**
8
- * Discovers supported TonConnect wallets and registers them as wallet providers.
8
+ * Discovers TonConnect wallets and registers each as a wallet provider.
9
9
  *
10
- * Queries the TonConnect registry for available wallets, filters to the
11
- * curated allowlist, and registers each as a wallet provider with the Dynamic client.
10
+ * Queries the TonConnect registry for the full wallet catalog and registers
11
+ * every entry as a wallet provider with the Dynamic client. Display names are
12
+ * taken from the registry by default; a small override map handles wallets
13
+ * whose registry name would otherwise be too generic (e.g. Telegram Wallet).
12
14
  *
13
15
  * @not-instrumented
14
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"discoverAndRegisterWallets.d.ts","sourceRoot":"","sources":["../../../../src/tonConnect/utils/discoverAndRegisterWallets/discoverAndRegisterWallets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,KAAK,gCAAgC,GAAG;IACtC,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,8BAGpC,gCAAgC,KAAG,OAAO,CAAC,IAAI,CAiCjD,CAAC"}
1
+ {"version":3,"file":"discoverAndRegisterWallets.d.ts","sourceRoot":"","sources":["../../../../src/tonConnect/utils/discoverAndRegisterWallets/discoverAndRegisterWallets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKnD,KAAK,gCAAgC,GAAG;IACtC,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,8BAGpC,gCAAgC,KAAG,OAAO,CAAC,IAAI,CA8BjD,CAAC"}
@@ -1,5 +1,5 @@
1
- const require_tonTransferAmount = require('./tonTransferAmount-KHxIUYnb.cjs');
2
- const require_addTonConnectExtension = require('./addTonConnectExtension-CyXo57ww.cjs');
1
+ const require_tonTransferAmount = require('./tonTransferAmount-Cqk8JYLa.cjs');
2
+ const require_addTonConnectExtension = require('./addTonConnectExtension-zUcfkfpk.cjs');
3
3
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
4
4
 
5
5
  //#region src/exports/tonConnect.ts
@@ -1 +1 @@
1
- {"version":3,"file":"tonConnect.cjs","names":["packageName","packageVersion"],"sources":["../src/exports/tonConnect.ts"],"sourcesContent":["import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\n\nassertPackageVersion(packageName, packageVersion);\n\nexport { addTonConnectExtension } from '../tonConnect/addTonConnectExtension';\n"],"mappings":";;;;;mEAOqBA,gCAAaC,kCAAe"}
1
+ {"version":3,"file":"tonConnect.cjs","names":["packageName","packageVersion"],"sources":["../src/exports/tonConnect.ts"],"sourcesContent":["import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\n\nassertPackageVersion(packageName, packageVersion);\n\nexport {\n type AddTonConnectExtensionParams,\n addTonConnectExtension,\n} from '../tonConnect/addTonConnectExtension';\n"],"mappings":";;;;;mEAOqBA,gCAAaC,kCAAe"}
@@ -1,5 +1,5 @@
1
- import { m as version, p as name } from "./tonTransferAmount-Ml0gqZMG.esm.js";
2
- import { t as addTonConnectExtension } from "./addTonConnectExtension-hExZDbwf.esm.js";
1
+ import { m as version, p as name } from "./tonTransferAmount-DFtzdUtk.esm.js";
2
+ import { t as addTonConnectExtension } from "./addTonConnectExtension-Bsi_Yid0.esm.js";
3
3
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
4
4
 
5
5
  //#region src/exports/tonConnect.ts
@@ -1 +1 @@
1
- {"version":3,"file":"tonConnect.esm.js","names":["packageName","packageVersion"],"sources":["../src/exports/tonConnect.ts"],"sourcesContent":["import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\n\nassertPackageVersion(packageName, packageVersion);\n\nexport { addTonConnectExtension } from '../tonConnect/addTonConnectExtension';\n"],"mappings":";;;;;AAOA,qBAAqBA,MAAaC,QAAe"}
1
+ {"version":3,"file":"tonConnect.esm.js","names":["packageName","packageVersion"],"sources":["../src/exports/tonConnect.ts"],"sourcesContent":["import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\n\nassertPackageVersion(packageName, packageVersion);\n\nexport {\n type AddTonConnectExtensionParams,\n addTonConnectExtension,\n} from '../tonConnect/addTonConnectExtension';\n"],"mappings":";;;;;AAOA,qBAAqBA,MAAaC,QAAe"}
@@ -5,7 +5,7 @@ let _tonconnect_sdk = require("@tonconnect/sdk");
5
5
 
6
6
  //#region package.json
7
7
  var name = "@dynamic-labs-sdk/ton";
8
- var version = "0.26.7";
8
+ var version = "0.26.10";
9
9
 
10
10
  //#endregion
11
11
  //#region src/utils/createTonClient/createTonClient.ts
@@ -282,4 +282,4 @@ Object.defineProperty(exports, 'version', {
282
282
  return version;
283
283
  }
284
284
  });
285
- //# sourceMappingURL=tonTransferAmount-KHxIUYnb.cjs.map
285
+ //# sourceMappingURL=tonTransferAmount-Cqk8JYLa.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tonTransferAmount-KHxIUYnb.cjs","names":["TonClient","Address","Address","CHAIN","Address","CHAIN","Address","BaseError","rawAmount"],"sources":["../package.json","../src/utils/createTonClient/createTonClient.ts","../src/utils/fetchTonBalance/fetchTonBalance.ts","../src/utils/createTonNetworkProvider/createTonNetworkProvider.ts","../src/registerTonNetworkProviderBuilder/registerTonNetworkProviderBuilder.ts","../src/utils/constants.ts","../src/utils/getJettonWalletAddress/getJettonWalletAddress.ts","../src/utils/prepareJettonTransfer/prepareJettonTransfer.ts","../src/utils/prepareTonNativeTransfer/prepareTonNativeTransfer.ts","../src/errors/NotTonProviderError.ts","../src/isTonWalletProvider/isTonWalletProvider.ts","../src/utils/tonTransferAmount/tonTransferAmount.ts"],"sourcesContent":["","import { TonClient } from '@ton/ton';\n\ntype CreateTonClientParams = {\n rpcUrl: string;\n};\n\n/** @not-instrumented */\nexport const createTonClient = ({\n rpcUrl,\n}: CreateTonClientParams): TonClient => new TonClient({ endpoint: rpcUrl });\n","import { Address, type TonClient, fromNano } from '@ton/ton';\n\ntype FetchTonBalanceParams = {\n address: string;\n client: TonClient;\n};\n\n/** @not-instrumented */\nexport const fetchTonBalance = async ({\n address,\n client,\n}: FetchTonBalanceParams): Promise<string | null> => {\n try {\n const balanceNano = await client.getBalance(Address.parse(address));\n\n return fromNano(balanceNano);\n } catch {\n return null;\n }\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { TonNetworkProvider } from '../../TonNetworkProvider.types';\nimport { createTonClient } from '../createTonClient';\nimport { fetchTonBalance } from '../fetchTonBalance';\n\n/** @not-instrumented */\nexport const createTonNetworkProvider = (\n networkData: NetworkData\n): TonNetworkProvider => ({\n ...createBaseNetworkProvider('TON', networkData),\n getBalance: async ({ address }: { address: string }) => ({\n balance: await fetchTonBalance({\n address,\n client: createTonClient({ rpcUrl: networkData.rpcUrls.http[0] }),\n }),\n }),\n});\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createTonNetworkProvider } from '../utils/createTonNetworkProvider';\n\n/** @not-instrumented */\nexport const registerTonNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n if (networkProviderBuilderRegistry.get().get('TON')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: createTonNetworkProvider,\n chain: 'TON',\n });\n};\n","export const DEFAULT_TIMEOUT = 60;\nexport const DEFAULT_JETTON_GAS = BigInt(50_000_000);\nexport const NANOTON_PER_TON = BigInt(1_000_000_000);\nexport const TON_PROOF_PREFIX = 'ton-proof-item-v2/';\nexport const TON_CONNECT_PREFIX = 'ton-connect';\n","import { Address, type TonClient, beginCell } from '@ton/ton';\n\ntype GetJettonWalletAddressParams = {\n client: TonClient;\n jettonMasterAddress: string;\n ownerAddress: string;\n};\n\n/** @not-instrumented */\nexport const getJettonWalletAddress = async ({\n jettonMasterAddress,\n ownerAddress,\n client,\n}: GetJettonWalletAddressParams): Promise<string> => {\n const masterAddress = Address.parse(jettonMasterAddress);\n const owner = Address.parse(ownerAddress);\n\n const ownerCell = beginCell().storeAddress(owner).endCell();\n\n const result = await client.runMethod(masterAddress, 'get_wallet_address', [\n { cell: ownerCell, type: 'slice' },\n ]);\n\n const jettonWalletAddress = result.stack.readAddress();\n\n return jettonWalletAddress.toString({\n bounceable: true,\n testOnly: false,\n urlSafe: true,\n });\n};\n","import { Address, type TonClient, beginCell } from '@ton/ton';\nimport { CHAIN } from '@tonconnect/sdk';\n\nimport type { TonSendTransactionRequest } from '../../ton.types';\nimport { DEFAULT_JETTON_GAS, DEFAULT_TIMEOUT } from '../constants';\nimport { getJettonWalletAddress } from '../getJettonWalletAddress';\n\ntype PrepareJettonTransferParams = {\n client: TonClient;\n forwardPayload?: string;\n forwardTonAmount: bigint;\n gasAmount?: bigint;\n jettonAmount: bigint;\n jettonMasterAddress: string;\n network?: CHAIN;\n recipientAddress: string;\n timeout?: number;\n walletAddress: string;\n};\n\n/** @not-instrumented */\nexport const prepareJettonTransfer = async ({\n walletAddress,\n jettonMasterAddress,\n recipientAddress,\n jettonAmount,\n forwardTonAmount,\n client,\n forwardPayload = '',\n timeout = DEFAULT_TIMEOUT,\n gasAmount = DEFAULT_JETTON_GAS,\n network = CHAIN.MAINNET,\n}: PrepareJettonTransferParams): Promise<TonSendTransactionRequest> => {\n const validUntil = Math.floor(Date.now() / 1000) + timeout;\n\n const jettonWalletAddr = Address.parse(\n await getJettonWalletAddress({\n client,\n jettonMasterAddress,\n ownerAddress: walletAddress,\n })\n );\n\n const recipientAddr = Address.parse(recipientAddress);\n const walletAddr = Address.parse(walletAddress);\n const isTestnet = network === CHAIN.TESTNET;\n\n const forwardPayloadCell = forwardPayload\n ? beginCell().storeUint(0, 32).storeStringTail(forwardPayload).endCell()\n : beginCell().endCell();\n\n const jettonTransferBody = beginCell()\n .storeUint(0xf8a7ea5, 32)\n .storeUint(0, 64)\n .storeCoins(jettonAmount)\n .storeAddress(recipientAddr)\n .storeAddress(walletAddr)\n .storeBit(0)\n .storeCoins(forwardTonAmount)\n .storeBit(0)\n .storeSlice(forwardPayloadCell.beginParse())\n .endCell();\n\n const totalAmount = forwardTonAmount + gasAmount;\n\n const message = {\n address: jettonWalletAddr.toString({\n bounceable: true,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n amount: totalAmount.toString(),\n payload: jettonTransferBody.toBoc().toString('base64'),\n };\n\n return {\n from: walletAddr.toString({\n bounceable: false,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n messages: [message],\n network,\n validUntil,\n };\n};\n","import { Address } from '@ton/ton';\nimport { CHAIN } from '@tonconnect/sdk';\n\nimport type { TonSendTransactionRequest } from '../../ton.types';\nimport { DEFAULT_TIMEOUT } from '../constants';\n\ntype PrepareTonNativeTransferParams = {\n amountInNanoton: string;\n network?: CHAIN;\n recipient: string;\n timeout?: number;\n walletAddress: string;\n};\n\n/** @not-instrumented */\nexport const prepareTonNativeTransfer = ({\n walletAddress,\n recipient,\n amountInNanoton,\n timeout = DEFAULT_TIMEOUT,\n network = CHAIN.MAINNET,\n}: PrepareTonNativeTransferParams): TonSendTransactionRequest => {\n const validUntil = Math.floor(Date.now() / 1000) + timeout;\n\n const recipientAddress = Address.parse(recipient);\n\n const walletAddr = Address.parse(walletAddress);\n const isTestnet = network === CHAIN.TESTNET;\n\n const message = {\n address: recipientAddress.toString({\n bounceable: false,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n amount: amountInNanoton,\n };\n\n return {\n from: walletAddr.toString({\n bounceable: false,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n messages: [message],\n network,\n validUntil,\n };\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotTonProviderError extends BaseError {\n public readonly providerKey: string;\n\n constructor(params: { providerKey: string }) {\n super({\n cause: null,\n code: 'not_ton_provider_error',\n docsUrl: null,\n name: 'NotTonProviderError',\n shortMessage: 'Provider is not a TON wallet provider',\n });\n this.providerKey = params.providerKey;\n }\n}\n","import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { TonWalletProvider } from '../TonWalletProvider.types';\n\n/**\n * Type guard function to check if a wallet provider is a TON wallet provider.\n *\n * @param provider - The wallet provider to check.\n * @returns True if the wallet provider is a TON wallet provider, false otherwise.\n * @not-instrumented\n */\nexport const isTonWalletProvider = (\n provider: WalletProvider\n): provider is TonWalletProvider => provider.chain === 'TON';\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport type { TransferAmountParams } from '@dynamic-labs-sdk/client/core';\nimport {\n getWalletProviderFromWalletAccount,\n parseAmountToSmallestUnit,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { NotTonProviderError } from '../../errors/NotTonProviderError';\nimport { isTonWalletProvider } from '../../isTonWalletProvider';\n\nconst DEFAULT_DECIMALS = 9;\n\n/** @not-instrumented */\nexport const tonTransferAmount = async (\n { amount, recipient, token, walletAccount }: TransferAmountParams,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isTonWalletProvider(provider)) {\n throw new NotTonProviderError({ providerKey: provider.key });\n }\n\n if (token) {\n const rawAmount = parseAmountToSmallestUnit({\n amount,\n decimals: token.decimals ?? DEFAULT_DECIMALS,\n });\n\n return provider.sendJetton({\n transaction: {\n amount: rawAmount,\n jettonMasterAddress: token.address,\n recipientAddress: recipient,\n },\n walletAccount,\n });\n }\n\n const rawAmount = parseAmountToSmallestUnit({\n amount,\n decimals: DEFAULT_DECIMALS,\n });\n\n return provider.sendTon({\n transaction: {\n amount: rawAmount,\n recipientAddress: recipient,\n },\n walletAccount,\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"tonTransferAmount-Cqk8JYLa.cjs","names":["TonClient","Address","Address","CHAIN","Address","CHAIN","Address","BaseError","rawAmount"],"sources":["../package.json","../src/utils/createTonClient/createTonClient.ts","../src/utils/fetchTonBalance/fetchTonBalance.ts","../src/utils/createTonNetworkProvider/createTonNetworkProvider.ts","../src/registerTonNetworkProviderBuilder/registerTonNetworkProviderBuilder.ts","../src/utils/constants.ts","../src/utils/getJettonWalletAddress/getJettonWalletAddress.ts","../src/utils/prepareJettonTransfer/prepareJettonTransfer.ts","../src/utils/prepareTonNativeTransfer/prepareTonNativeTransfer.ts","../src/errors/NotTonProviderError.ts","../src/isTonWalletProvider/isTonWalletProvider.ts","../src/utils/tonTransferAmount/tonTransferAmount.ts"],"sourcesContent":["","import { TonClient } from '@ton/ton';\n\ntype CreateTonClientParams = {\n rpcUrl: string;\n};\n\n/** @not-instrumented */\nexport const createTonClient = ({\n rpcUrl,\n}: CreateTonClientParams): TonClient => new TonClient({ endpoint: rpcUrl });\n","import { Address, type TonClient, fromNano } from '@ton/ton';\n\ntype FetchTonBalanceParams = {\n address: string;\n client: TonClient;\n};\n\n/** @not-instrumented */\nexport const fetchTonBalance = async ({\n address,\n client,\n}: FetchTonBalanceParams): Promise<string | null> => {\n try {\n const balanceNano = await client.getBalance(Address.parse(address));\n\n return fromNano(balanceNano);\n } catch {\n return null;\n }\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { TonNetworkProvider } from '../../TonNetworkProvider.types';\nimport { createTonClient } from '../createTonClient';\nimport { fetchTonBalance } from '../fetchTonBalance';\n\n/** @not-instrumented */\nexport const createTonNetworkProvider = (\n networkData: NetworkData\n): TonNetworkProvider => ({\n ...createBaseNetworkProvider('TON', networkData),\n getBalance: async ({ address }: { address: string }) => ({\n balance: await fetchTonBalance({\n address,\n client: createTonClient({ rpcUrl: networkData.rpcUrls.http[0] }),\n }),\n }),\n});\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createTonNetworkProvider } from '../utils/createTonNetworkProvider';\n\n/** @not-instrumented */\nexport const registerTonNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n if (networkProviderBuilderRegistry.get().get('TON')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: createTonNetworkProvider,\n chain: 'TON',\n });\n};\n","export const DEFAULT_TIMEOUT = 60;\nexport const DEFAULT_JETTON_GAS = BigInt(50_000_000);\nexport const NANOTON_PER_TON = BigInt(1_000_000_000);\nexport const TON_PROOF_PREFIX = 'ton-proof-item-v2/';\nexport const TON_CONNECT_PREFIX = 'ton-connect';\n","import { Address, type TonClient, beginCell } from '@ton/ton';\n\ntype GetJettonWalletAddressParams = {\n client: TonClient;\n jettonMasterAddress: string;\n ownerAddress: string;\n};\n\n/** @not-instrumented */\nexport const getJettonWalletAddress = async ({\n jettonMasterAddress,\n ownerAddress,\n client,\n}: GetJettonWalletAddressParams): Promise<string> => {\n const masterAddress = Address.parse(jettonMasterAddress);\n const owner = Address.parse(ownerAddress);\n\n const ownerCell = beginCell().storeAddress(owner).endCell();\n\n const result = await client.runMethod(masterAddress, 'get_wallet_address', [\n { cell: ownerCell, type: 'slice' },\n ]);\n\n const jettonWalletAddress = result.stack.readAddress();\n\n return jettonWalletAddress.toString({\n bounceable: true,\n testOnly: false,\n urlSafe: true,\n });\n};\n","import { Address, type TonClient, beginCell } from '@ton/ton';\nimport { CHAIN } from '@tonconnect/sdk';\n\nimport type { TonSendTransactionRequest } from '../../ton.types';\nimport { DEFAULT_JETTON_GAS, DEFAULT_TIMEOUT } from '../constants';\nimport { getJettonWalletAddress } from '../getJettonWalletAddress';\n\ntype PrepareJettonTransferParams = {\n client: TonClient;\n forwardPayload?: string;\n forwardTonAmount: bigint;\n gasAmount?: bigint;\n jettonAmount: bigint;\n jettonMasterAddress: string;\n network?: CHAIN;\n recipientAddress: string;\n timeout?: number;\n walletAddress: string;\n};\n\n/** @not-instrumented */\nexport const prepareJettonTransfer = async ({\n walletAddress,\n jettonMasterAddress,\n recipientAddress,\n jettonAmount,\n forwardTonAmount,\n client,\n forwardPayload = '',\n timeout = DEFAULT_TIMEOUT,\n gasAmount = DEFAULT_JETTON_GAS,\n network = CHAIN.MAINNET,\n}: PrepareJettonTransferParams): Promise<TonSendTransactionRequest> => {\n const validUntil = Math.floor(Date.now() / 1000) + timeout;\n\n const jettonWalletAddr = Address.parse(\n await getJettonWalletAddress({\n client,\n jettonMasterAddress,\n ownerAddress: walletAddress,\n })\n );\n\n const recipientAddr = Address.parse(recipientAddress);\n const walletAddr = Address.parse(walletAddress);\n const isTestnet = network === CHAIN.TESTNET;\n\n const forwardPayloadCell = forwardPayload\n ? beginCell().storeUint(0, 32).storeStringTail(forwardPayload).endCell()\n : beginCell().endCell();\n\n const jettonTransferBody = beginCell()\n .storeUint(0xf8a7ea5, 32)\n .storeUint(0, 64)\n .storeCoins(jettonAmount)\n .storeAddress(recipientAddr)\n .storeAddress(walletAddr)\n .storeBit(0)\n .storeCoins(forwardTonAmount)\n .storeBit(0)\n .storeSlice(forwardPayloadCell.beginParse())\n .endCell();\n\n const totalAmount = forwardTonAmount + gasAmount;\n\n const message = {\n address: jettonWalletAddr.toString({\n bounceable: true,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n amount: totalAmount.toString(),\n payload: jettonTransferBody.toBoc().toString('base64'),\n };\n\n return {\n from: walletAddr.toString({\n bounceable: false,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n messages: [message],\n network,\n validUntil,\n };\n};\n","import { Address } from '@ton/ton';\nimport { CHAIN } from '@tonconnect/sdk';\n\nimport type { TonSendTransactionRequest } from '../../ton.types';\nimport { DEFAULT_TIMEOUT } from '../constants';\n\ntype PrepareTonNativeTransferParams = {\n amountInNanoton: string;\n network?: CHAIN;\n recipient: string;\n timeout?: number;\n walletAddress: string;\n};\n\n/** @not-instrumented */\nexport const prepareTonNativeTransfer = ({\n walletAddress,\n recipient,\n amountInNanoton,\n timeout = DEFAULT_TIMEOUT,\n network = CHAIN.MAINNET,\n}: PrepareTonNativeTransferParams): TonSendTransactionRequest => {\n const validUntil = Math.floor(Date.now() / 1000) + timeout;\n\n const recipientAddress = Address.parse(recipient);\n\n const walletAddr = Address.parse(walletAddress);\n const isTestnet = network === CHAIN.TESTNET;\n\n const message = {\n address: recipientAddress.toString({\n bounceable: false,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n amount: amountInNanoton,\n };\n\n return {\n from: walletAddr.toString({\n bounceable: false,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n messages: [message],\n network,\n validUntil,\n };\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotTonProviderError extends BaseError {\n public readonly providerKey: string;\n\n constructor(params: { providerKey: string }) {\n super({\n cause: null,\n code: 'not_ton_provider_error',\n docsUrl: null,\n name: 'NotTonProviderError',\n shortMessage: 'Provider is not a TON wallet provider',\n });\n this.providerKey = params.providerKey;\n }\n}\n","import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { TonWalletProvider } from '../TonWalletProvider.types';\n\n/**\n * Type guard function to check if a wallet provider is a TON wallet provider.\n *\n * @param provider - The wallet provider to check.\n * @returns True if the wallet provider is a TON wallet provider, false otherwise.\n * @not-instrumented\n */\nexport const isTonWalletProvider = (\n provider: WalletProvider\n): provider is TonWalletProvider => provider.chain === 'TON';\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport type { TransferAmountParams } from '@dynamic-labs-sdk/client/core';\nimport {\n getWalletProviderFromWalletAccount,\n parseAmountToSmallestUnit,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { NotTonProviderError } from '../../errors/NotTonProviderError';\nimport { isTonWalletProvider } from '../../isTonWalletProvider';\n\nconst DEFAULT_DECIMALS = 9;\n\n/** @not-instrumented */\nexport const tonTransferAmount = async (\n { amount, recipient, token, walletAccount }: TransferAmountParams,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isTonWalletProvider(provider)) {\n throw new NotTonProviderError({ providerKey: provider.key });\n }\n\n if (token) {\n const rawAmount = parseAmountToSmallestUnit({\n amount,\n decimals: token.decimals ?? DEFAULT_DECIMALS,\n });\n\n return provider.sendJetton({\n transaction: {\n amount: rawAmount,\n jettonMasterAddress: token.address,\n recipientAddress: recipient,\n },\n walletAccount,\n });\n }\n\n const rawAmount = parseAmountToSmallestUnit({\n amount,\n decimals: DEFAULT_DECIMALS,\n });\n\n return provider.sendTon({\n transaction: {\n amount: rawAmount,\n recipientAddress: recipient,\n },\n walletAccount,\n });\n};\n"],"mappings":"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"}
@@ -5,7 +5,7 @@ import { CHAIN } from "@tonconnect/sdk";
5
5
 
6
6
  //#region package.json
7
7
  var name = "@dynamic-labs-sdk/ton";
8
- var version = "0.26.7";
8
+ var version = "0.26.10";
9
9
 
10
10
  //#endregion
11
11
  //#region src/utils/createTonClient/createTonClient.ts
@@ -199,4 +199,4 @@ const tonTransferAmount = async ({ amount, recipient, token, walletAccount }, cl
199
199
 
200
200
  //#endregion
201
201
  export { prepareJettonTransfer as a, NANOTON_PER_TON as c, registerTonNetworkProviderBuilder as d, createTonClient as f, prepareTonNativeTransfer as i, TON_CONNECT_PREFIX as l, version as m, isTonWalletProvider as n, DEFAULT_JETTON_GAS as o, name as p, NotTonProviderError as r, DEFAULT_TIMEOUT as s, tonTransferAmount as t, TON_PROOF_PREFIX as u };
202
- //# sourceMappingURL=tonTransferAmount-Ml0gqZMG.esm.js.map
202
+ //# sourceMappingURL=tonTransferAmount-DFtzdUtk.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tonTransferAmount-Ml0gqZMG.esm.js","names":["rawAmount"],"sources":["../package.json","../src/utils/createTonClient/createTonClient.ts","../src/utils/fetchTonBalance/fetchTonBalance.ts","../src/utils/createTonNetworkProvider/createTonNetworkProvider.ts","../src/registerTonNetworkProviderBuilder/registerTonNetworkProviderBuilder.ts","../src/utils/constants.ts","../src/utils/getJettonWalletAddress/getJettonWalletAddress.ts","../src/utils/prepareJettonTransfer/prepareJettonTransfer.ts","../src/utils/prepareTonNativeTransfer/prepareTonNativeTransfer.ts","../src/errors/NotTonProviderError.ts","../src/isTonWalletProvider/isTonWalletProvider.ts","../src/utils/tonTransferAmount/tonTransferAmount.ts"],"sourcesContent":["","import { TonClient } from '@ton/ton';\n\ntype CreateTonClientParams = {\n rpcUrl: string;\n};\n\n/** @not-instrumented */\nexport const createTonClient = ({\n rpcUrl,\n}: CreateTonClientParams): TonClient => new TonClient({ endpoint: rpcUrl });\n","import { Address, type TonClient, fromNano } from '@ton/ton';\n\ntype FetchTonBalanceParams = {\n address: string;\n client: TonClient;\n};\n\n/** @not-instrumented */\nexport const fetchTonBalance = async ({\n address,\n client,\n}: FetchTonBalanceParams): Promise<string | null> => {\n try {\n const balanceNano = await client.getBalance(Address.parse(address));\n\n return fromNano(balanceNano);\n } catch {\n return null;\n }\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { TonNetworkProvider } from '../../TonNetworkProvider.types';\nimport { createTonClient } from '../createTonClient';\nimport { fetchTonBalance } from '../fetchTonBalance';\n\n/** @not-instrumented */\nexport const createTonNetworkProvider = (\n networkData: NetworkData\n): TonNetworkProvider => ({\n ...createBaseNetworkProvider('TON', networkData),\n getBalance: async ({ address }: { address: string }) => ({\n balance: await fetchTonBalance({\n address,\n client: createTonClient({ rpcUrl: networkData.rpcUrls.http[0] }),\n }),\n }),\n});\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createTonNetworkProvider } from '../utils/createTonNetworkProvider';\n\n/** @not-instrumented */\nexport const registerTonNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n if (networkProviderBuilderRegistry.get().get('TON')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: createTonNetworkProvider,\n chain: 'TON',\n });\n};\n","export const DEFAULT_TIMEOUT = 60;\nexport const DEFAULT_JETTON_GAS = BigInt(50_000_000);\nexport const NANOTON_PER_TON = BigInt(1_000_000_000);\nexport const TON_PROOF_PREFIX = 'ton-proof-item-v2/';\nexport const TON_CONNECT_PREFIX = 'ton-connect';\n","import { Address, type TonClient, beginCell } from '@ton/ton';\n\ntype GetJettonWalletAddressParams = {\n client: TonClient;\n jettonMasterAddress: string;\n ownerAddress: string;\n};\n\n/** @not-instrumented */\nexport const getJettonWalletAddress = async ({\n jettonMasterAddress,\n ownerAddress,\n client,\n}: GetJettonWalletAddressParams): Promise<string> => {\n const masterAddress = Address.parse(jettonMasterAddress);\n const owner = Address.parse(ownerAddress);\n\n const ownerCell = beginCell().storeAddress(owner).endCell();\n\n const result = await client.runMethod(masterAddress, 'get_wallet_address', [\n { cell: ownerCell, type: 'slice' },\n ]);\n\n const jettonWalletAddress = result.stack.readAddress();\n\n return jettonWalletAddress.toString({\n bounceable: true,\n testOnly: false,\n urlSafe: true,\n });\n};\n","import { Address, type TonClient, beginCell } from '@ton/ton';\nimport { CHAIN } from '@tonconnect/sdk';\n\nimport type { TonSendTransactionRequest } from '../../ton.types';\nimport { DEFAULT_JETTON_GAS, DEFAULT_TIMEOUT } from '../constants';\nimport { getJettonWalletAddress } from '../getJettonWalletAddress';\n\ntype PrepareJettonTransferParams = {\n client: TonClient;\n forwardPayload?: string;\n forwardTonAmount: bigint;\n gasAmount?: bigint;\n jettonAmount: bigint;\n jettonMasterAddress: string;\n network?: CHAIN;\n recipientAddress: string;\n timeout?: number;\n walletAddress: string;\n};\n\n/** @not-instrumented */\nexport const prepareJettonTransfer = async ({\n walletAddress,\n jettonMasterAddress,\n recipientAddress,\n jettonAmount,\n forwardTonAmount,\n client,\n forwardPayload = '',\n timeout = DEFAULT_TIMEOUT,\n gasAmount = DEFAULT_JETTON_GAS,\n network = CHAIN.MAINNET,\n}: PrepareJettonTransferParams): Promise<TonSendTransactionRequest> => {\n const validUntil = Math.floor(Date.now() / 1000) + timeout;\n\n const jettonWalletAddr = Address.parse(\n await getJettonWalletAddress({\n client,\n jettonMasterAddress,\n ownerAddress: walletAddress,\n })\n );\n\n const recipientAddr = Address.parse(recipientAddress);\n const walletAddr = Address.parse(walletAddress);\n const isTestnet = network === CHAIN.TESTNET;\n\n const forwardPayloadCell = forwardPayload\n ? beginCell().storeUint(0, 32).storeStringTail(forwardPayload).endCell()\n : beginCell().endCell();\n\n const jettonTransferBody = beginCell()\n .storeUint(0xf8a7ea5, 32)\n .storeUint(0, 64)\n .storeCoins(jettonAmount)\n .storeAddress(recipientAddr)\n .storeAddress(walletAddr)\n .storeBit(0)\n .storeCoins(forwardTonAmount)\n .storeBit(0)\n .storeSlice(forwardPayloadCell.beginParse())\n .endCell();\n\n const totalAmount = forwardTonAmount + gasAmount;\n\n const message = {\n address: jettonWalletAddr.toString({\n bounceable: true,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n amount: totalAmount.toString(),\n payload: jettonTransferBody.toBoc().toString('base64'),\n };\n\n return {\n from: walletAddr.toString({\n bounceable: false,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n messages: [message],\n network,\n validUntil,\n };\n};\n","import { Address } from '@ton/ton';\nimport { CHAIN } from '@tonconnect/sdk';\n\nimport type { TonSendTransactionRequest } from '../../ton.types';\nimport { DEFAULT_TIMEOUT } from '../constants';\n\ntype PrepareTonNativeTransferParams = {\n amountInNanoton: string;\n network?: CHAIN;\n recipient: string;\n timeout?: number;\n walletAddress: string;\n};\n\n/** @not-instrumented */\nexport const prepareTonNativeTransfer = ({\n walletAddress,\n recipient,\n amountInNanoton,\n timeout = DEFAULT_TIMEOUT,\n network = CHAIN.MAINNET,\n}: PrepareTonNativeTransferParams): TonSendTransactionRequest => {\n const validUntil = Math.floor(Date.now() / 1000) + timeout;\n\n const recipientAddress = Address.parse(recipient);\n\n const walletAddr = Address.parse(walletAddress);\n const isTestnet = network === CHAIN.TESTNET;\n\n const message = {\n address: recipientAddress.toString({\n bounceable: false,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n amount: amountInNanoton,\n };\n\n return {\n from: walletAddr.toString({\n bounceable: false,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n messages: [message],\n network,\n validUntil,\n };\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotTonProviderError extends BaseError {\n public readonly providerKey: string;\n\n constructor(params: { providerKey: string }) {\n super({\n cause: null,\n code: 'not_ton_provider_error',\n docsUrl: null,\n name: 'NotTonProviderError',\n shortMessage: 'Provider is not a TON wallet provider',\n });\n this.providerKey = params.providerKey;\n }\n}\n","import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { TonWalletProvider } from '../TonWalletProvider.types';\n\n/**\n * Type guard function to check if a wallet provider is a TON wallet provider.\n *\n * @param provider - The wallet provider to check.\n * @returns True if the wallet provider is a TON wallet provider, false otherwise.\n * @not-instrumented\n */\nexport const isTonWalletProvider = (\n provider: WalletProvider\n): provider is TonWalletProvider => provider.chain === 'TON';\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport type { TransferAmountParams } from '@dynamic-labs-sdk/client/core';\nimport {\n getWalletProviderFromWalletAccount,\n parseAmountToSmallestUnit,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { NotTonProviderError } from '../../errors/NotTonProviderError';\nimport { isTonWalletProvider } from '../../isTonWalletProvider';\n\nconst DEFAULT_DECIMALS = 9;\n\n/** @not-instrumented */\nexport const tonTransferAmount = async (\n { amount, recipient, token, walletAccount }: TransferAmountParams,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isTonWalletProvider(provider)) {\n throw new NotTonProviderError({ providerKey: provider.key });\n }\n\n if (token) {\n const rawAmount = parseAmountToSmallestUnit({\n amount,\n decimals: token.decimals ?? DEFAULT_DECIMALS,\n });\n\n return provider.sendJetton({\n transaction: {\n amount: rawAmount,\n jettonMasterAddress: token.address,\n recipientAddress: recipient,\n },\n walletAccount,\n });\n }\n\n const rawAmount = parseAmountToSmallestUnit({\n amount,\n decimals: DEFAULT_DECIMALS,\n });\n\n return provider.sendTon({\n transaction: {\n amount: rawAmount,\n recipientAddress: recipient,\n },\n walletAccount,\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"tonTransferAmount-DFtzdUtk.esm.js","names":["rawAmount"],"sources":["../package.json","../src/utils/createTonClient/createTonClient.ts","../src/utils/fetchTonBalance/fetchTonBalance.ts","../src/utils/createTonNetworkProvider/createTonNetworkProvider.ts","../src/registerTonNetworkProviderBuilder/registerTonNetworkProviderBuilder.ts","../src/utils/constants.ts","../src/utils/getJettonWalletAddress/getJettonWalletAddress.ts","../src/utils/prepareJettonTransfer/prepareJettonTransfer.ts","../src/utils/prepareTonNativeTransfer/prepareTonNativeTransfer.ts","../src/errors/NotTonProviderError.ts","../src/isTonWalletProvider/isTonWalletProvider.ts","../src/utils/tonTransferAmount/tonTransferAmount.ts"],"sourcesContent":["","import { TonClient } from '@ton/ton';\n\ntype CreateTonClientParams = {\n rpcUrl: string;\n};\n\n/** @not-instrumented */\nexport const createTonClient = ({\n rpcUrl,\n}: CreateTonClientParams): TonClient => new TonClient({ endpoint: rpcUrl });\n","import { Address, type TonClient, fromNano } from '@ton/ton';\n\ntype FetchTonBalanceParams = {\n address: string;\n client: TonClient;\n};\n\n/** @not-instrumented */\nexport const fetchTonBalance = async ({\n address,\n client,\n}: FetchTonBalanceParams): Promise<string | null> => {\n try {\n const balanceNano = await client.getBalance(Address.parse(address));\n\n return fromNano(balanceNano);\n } catch {\n return null;\n }\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { TonNetworkProvider } from '../../TonNetworkProvider.types';\nimport { createTonClient } from '../createTonClient';\nimport { fetchTonBalance } from '../fetchTonBalance';\n\n/** @not-instrumented */\nexport const createTonNetworkProvider = (\n networkData: NetworkData\n): TonNetworkProvider => ({\n ...createBaseNetworkProvider('TON', networkData),\n getBalance: async ({ address }: { address: string }) => ({\n balance: await fetchTonBalance({\n address,\n client: createTonClient({ rpcUrl: networkData.rpcUrls.http[0] }),\n }),\n }),\n});\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createTonNetworkProvider } from '../utils/createTonNetworkProvider';\n\n/** @not-instrumented */\nexport const registerTonNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n if (networkProviderBuilderRegistry.get().get('TON')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: createTonNetworkProvider,\n chain: 'TON',\n });\n};\n","export const DEFAULT_TIMEOUT = 60;\nexport const DEFAULT_JETTON_GAS = BigInt(50_000_000);\nexport const NANOTON_PER_TON = BigInt(1_000_000_000);\nexport const TON_PROOF_PREFIX = 'ton-proof-item-v2/';\nexport const TON_CONNECT_PREFIX = 'ton-connect';\n","import { Address, type TonClient, beginCell } from '@ton/ton';\n\ntype GetJettonWalletAddressParams = {\n client: TonClient;\n jettonMasterAddress: string;\n ownerAddress: string;\n};\n\n/** @not-instrumented */\nexport const getJettonWalletAddress = async ({\n jettonMasterAddress,\n ownerAddress,\n client,\n}: GetJettonWalletAddressParams): Promise<string> => {\n const masterAddress = Address.parse(jettonMasterAddress);\n const owner = Address.parse(ownerAddress);\n\n const ownerCell = beginCell().storeAddress(owner).endCell();\n\n const result = await client.runMethod(masterAddress, 'get_wallet_address', [\n { cell: ownerCell, type: 'slice' },\n ]);\n\n const jettonWalletAddress = result.stack.readAddress();\n\n return jettonWalletAddress.toString({\n bounceable: true,\n testOnly: false,\n urlSafe: true,\n });\n};\n","import { Address, type TonClient, beginCell } from '@ton/ton';\nimport { CHAIN } from '@tonconnect/sdk';\n\nimport type { TonSendTransactionRequest } from '../../ton.types';\nimport { DEFAULT_JETTON_GAS, DEFAULT_TIMEOUT } from '../constants';\nimport { getJettonWalletAddress } from '../getJettonWalletAddress';\n\ntype PrepareJettonTransferParams = {\n client: TonClient;\n forwardPayload?: string;\n forwardTonAmount: bigint;\n gasAmount?: bigint;\n jettonAmount: bigint;\n jettonMasterAddress: string;\n network?: CHAIN;\n recipientAddress: string;\n timeout?: number;\n walletAddress: string;\n};\n\n/** @not-instrumented */\nexport const prepareJettonTransfer = async ({\n walletAddress,\n jettonMasterAddress,\n recipientAddress,\n jettonAmount,\n forwardTonAmount,\n client,\n forwardPayload = '',\n timeout = DEFAULT_TIMEOUT,\n gasAmount = DEFAULT_JETTON_GAS,\n network = CHAIN.MAINNET,\n}: PrepareJettonTransferParams): Promise<TonSendTransactionRequest> => {\n const validUntil = Math.floor(Date.now() / 1000) + timeout;\n\n const jettonWalletAddr = Address.parse(\n await getJettonWalletAddress({\n client,\n jettonMasterAddress,\n ownerAddress: walletAddress,\n })\n );\n\n const recipientAddr = Address.parse(recipientAddress);\n const walletAddr = Address.parse(walletAddress);\n const isTestnet = network === CHAIN.TESTNET;\n\n const forwardPayloadCell = forwardPayload\n ? beginCell().storeUint(0, 32).storeStringTail(forwardPayload).endCell()\n : beginCell().endCell();\n\n const jettonTransferBody = beginCell()\n .storeUint(0xf8a7ea5, 32)\n .storeUint(0, 64)\n .storeCoins(jettonAmount)\n .storeAddress(recipientAddr)\n .storeAddress(walletAddr)\n .storeBit(0)\n .storeCoins(forwardTonAmount)\n .storeBit(0)\n .storeSlice(forwardPayloadCell.beginParse())\n .endCell();\n\n const totalAmount = forwardTonAmount + gasAmount;\n\n const message = {\n address: jettonWalletAddr.toString({\n bounceable: true,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n amount: totalAmount.toString(),\n payload: jettonTransferBody.toBoc().toString('base64'),\n };\n\n return {\n from: walletAddr.toString({\n bounceable: false,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n messages: [message],\n network,\n validUntil,\n };\n};\n","import { Address } from '@ton/ton';\nimport { CHAIN } from '@tonconnect/sdk';\n\nimport type { TonSendTransactionRequest } from '../../ton.types';\nimport { DEFAULT_TIMEOUT } from '../constants';\n\ntype PrepareTonNativeTransferParams = {\n amountInNanoton: string;\n network?: CHAIN;\n recipient: string;\n timeout?: number;\n walletAddress: string;\n};\n\n/** @not-instrumented */\nexport const prepareTonNativeTransfer = ({\n walletAddress,\n recipient,\n amountInNanoton,\n timeout = DEFAULT_TIMEOUT,\n network = CHAIN.MAINNET,\n}: PrepareTonNativeTransferParams): TonSendTransactionRequest => {\n const validUntil = Math.floor(Date.now() / 1000) + timeout;\n\n const recipientAddress = Address.parse(recipient);\n\n const walletAddr = Address.parse(walletAddress);\n const isTestnet = network === CHAIN.TESTNET;\n\n const message = {\n address: recipientAddress.toString({\n bounceable: false,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n amount: amountInNanoton,\n };\n\n return {\n from: walletAddr.toString({\n bounceable: false,\n testOnly: isTestnet,\n urlSafe: true,\n }),\n messages: [message],\n network,\n validUntil,\n };\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class NotTonProviderError extends BaseError {\n public readonly providerKey: string;\n\n constructor(params: { providerKey: string }) {\n super({\n cause: null,\n code: 'not_ton_provider_error',\n docsUrl: null,\n name: 'NotTonProviderError',\n shortMessage: 'Provider is not a TON wallet provider',\n });\n this.providerKey = params.providerKey;\n }\n}\n","import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { TonWalletProvider } from '../TonWalletProvider.types';\n\n/**\n * Type guard function to check if a wallet provider is a TON wallet provider.\n *\n * @param provider - The wallet provider to check.\n * @returns True if the wallet provider is a TON wallet provider, false otherwise.\n * @not-instrumented\n */\nexport const isTonWalletProvider = (\n provider: WalletProvider\n): provider is TonWalletProvider => provider.chain === 'TON';\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport type { TransferAmountParams } from '@dynamic-labs-sdk/client/core';\nimport {\n getWalletProviderFromWalletAccount,\n parseAmountToSmallestUnit,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { NotTonProviderError } from '../../errors/NotTonProviderError';\nimport { isTonWalletProvider } from '../../isTonWalletProvider';\n\nconst DEFAULT_DECIMALS = 9;\n\n/** @not-instrumented */\nexport const tonTransferAmount = async (\n { amount, recipient, token, walletAccount }: TransferAmountParams,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isTonWalletProvider(provider)) {\n throw new NotTonProviderError({ providerKey: provider.key });\n }\n\n if (token) {\n const rawAmount = parseAmountToSmallestUnit({\n amount,\n decimals: token.decimals ?? DEFAULT_DECIMALS,\n });\n\n return provider.sendJetton({\n transaction: {\n amount: rawAmount,\n jettonMasterAddress: token.address,\n recipientAddress: recipient,\n },\n walletAccount,\n });\n }\n\n const rawAmount = parseAmountToSmallestUnit({\n amount,\n decimals: DEFAULT_DECIMALS,\n });\n\n return provider.sendTon({\n transaction: {\n amount: rawAmount,\n recipientAddress: recipient,\n },\n walletAccount,\n });\n};\n"],"mappings":"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"}