@dynamic-labs-sdk/ton 0.25.2 → 0.26.1
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.
- package/dist/{addTonConnectExtension-D44Pw7Uc.cjs.js → addTonConnectExtension-C4wcLkEi.cjs} +2 -2
- package/dist/addTonConnectExtension-C4wcLkEi.cjs.map +1 -0
- package/dist/{addTonConnectExtension-CKsrgGBl.esm.js → addTonConnectExtension-CAMtSJML.esm.js} +2 -2
- package/dist/{addTonConnectExtension-CKsrgGBl.esm.js.map → addTonConnectExtension-CAMtSJML.esm.js.map} +1 -1
- package/dist/{addWaasTonExtension-Bbqz_Tf8.esm.js → addWaasTonExtension-BfQiT0rU.esm.js} +2 -2
- package/dist/{addWaasTonExtension-Bbqz_Tf8.esm.js.map → addWaasTonExtension-BfQiT0rU.esm.js.map} +1 -1
- package/dist/{addWaasTonExtension-BUvrxbHY.cjs.js → addWaasTonExtension-CnrMD3i0.cjs} +2 -2
- package/dist/addWaasTonExtension-CnrMD3i0.cjs.map +1 -0
- package/dist/{index.cjs.js → index.cjs} +4 -4
- package/dist/index.cjs.map +1 -0
- package/dist/index.esm.js +3 -3
- package/dist/{tonConnect.cjs.js → tonConnect.cjs} +3 -3
- package/dist/tonConnect.cjs.map +1 -0
- package/dist/tonConnect.esm.js +2 -2
- package/dist/{tonTransferAmount-DbSlNR8U.esm.js → tonTransferAmount-Dell-0ZZ.esm.js} +2 -2
- package/dist/{tonTransferAmount-DbSlNR8U.esm.js.map → tonTransferAmount-Dell-0ZZ.esm.js.map} +1 -1
- package/dist/{tonTransferAmount-CYVYzs7Z.cjs.js → tonTransferAmount-_1XakvT1.cjs} +2 -2
- package/dist/tonTransferAmount-_1XakvT1.cjs.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/{waas.cjs.js → waas.cjs} +3 -3
- package/dist/waas.cjs.map +1 -0
- package/dist/waas.esm.js +2 -2
- package/package.json +7 -7
- package/dist/addTonConnectExtension-D44Pw7Uc.cjs.js.map +0 -1
- package/dist/addWaasTonExtension-BUvrxbHY.cjs.js.map +0 -1
- package/dist/index.cjs.js.map +0 -1
- package/dist/tonConnect.cjs.js.map +0 -1
- package/dist/tonTransferAmount-CYVYzs7Z.cjs.js.map +0 -1
- package/dist/waas.cjs.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const require_tonTransferAmount = require('./tonTransferAmount-
|
|
2
|
-
const require_addWaasTonExtension = require('./addWaasTonExtension-
|
|
1
|
+
const require_tonTransferAmount = require('./tonTransferAmount-_1XakvT1.cjs');
|
|
2
|
+
const require_addWaasTonExtension = require('./addWaasTonExtension-CnrMD3i0.cjs');
|
|
3
3
|
let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
|
|
4
4
|
|
|
5
5
|
//#region src/exports/waas.ts
|
|
@@ -9,4 +9,4 @@ let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert
|
|
|
9
9
|
exports.addWaasTonExtension = require_addWaasTonExtension.addWaasTonExtension;
|
|
10
10
|
exports.prepareJettonTransfer = require_tonTransferAmount.prepareJettonTransfer;
|
|
11
11
|
exports.prepareTonNativeTransfer = require_tonTransferAmount.prepareTonNativeTransfer;
|
|
12
|
-
//# sourceMappingURL=waas.cjs.
|
|
12
|
+
//# sourceMappingURL=waas.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waas.cjs","names":["packageName","packageVersion"],"sources":["../src/exports/waas.ts"],"sourcesContent":["import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport { name as packageName, version as packageVersion } from '../../package.json';\n\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWaasTonExtension } from '../waas/addWaasTonExtension';\nexport { prepareJettonTransfer } from '../utils/prepareJettonTransfer';\nexport { prepareTonNativeTransfer } from '../utils/prepareTonNativeTransfer';\nexport type { WaasTonWalletProvider } from '../waas/WaasTonWalletProvider.types';\n"],"mappings":";;;;;mEAIqBA,gCAAaC,kCAAe"}
|
package/dist/waas.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as prepareJettonTransfer, i as prepareTonNativeTransfer, m as version, p as name } from "./tonTransferAmount-
|
|
2
|
-
import { t as addWaasTonExtension } from "./addWaasTonExtension-
|
|
1
|
+
import { a as prepareJettonTransfer, i as prepareTonNativeTransfer, m as version, p as name } from "./tonTransferAmount-Dell-0ZZ.esm.js";
|
|
2
|
+
import { t as addWaasTonExtension } from "./addWaasTonExtension-BfQiT0rU.esm.js";
|
|
3
3
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
|
4
4
|
|
|
5
5
|
//#region src/exports/waas.ts
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs-sdk/ton",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.1",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"main": "./dist/index.cjs
|
|
5
|
+
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.esm.js",
|
|
7
7
|
"types": "./dist/exports/index.d.ts",
|
|
8
8
|
"files": [
|
|
@@ -13,17 +13,17 @@
|
|
|
13
13
|
".": {
|
|
14
14
|
"types": "./dist/exports/index.d.ts",
|
|
15
15
|
"import": "./dist/index.esm.js",
|
|
16
|
-
"default": "./dist/index.cjs
|
|
16
|
+
"default": "./dist/index.cjs"
|
|
17
17
|
},
|
|
18
18
|
"./ton-connect": {
|
|
19
19
|
"types": "./dist/exports/tonConnect.d.ts",
|
|
20
20
|
"import": "./dist/tonConnect.esm.js",
|
|
21
|
-
"default": "./dist/tonConnect.cjs
|
|
21
|
+
"default": "./dist/tonConnect.cjs"
|
|
22
22
|
},
|
|
23
23
|
"./waas": {
|
|
24
24
|
"types": "./dist/exports/waas.d.ts",
|
|
25
25
|
"import": "./dist/waas.esm.js",
|
|
26
|
-
"default": "./dist/waas.cjs
|
|
26
|
+
"default": "./dist/waas.cjs"
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"@ton/ton": "16.0.0",
|
|
34
34
|
"@tonconnect/sdk": "3.4.0",
|
|
35
35
|
"@tonconnect/ui": "2.4.0",
|
|
36
|
-
"@dynamic-labs-sdk/assert-package-version": "0.
|
|
37
|
-
"@dynamic-labs-sdk/client": "0.
|
|
36
|
+
"@dynamic-labs-sdk/assert-package-version": "0.26.1",
|
|
37
|
+
"@dynamic-labs-sdk/client": "0.26.1"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"vitest": "1.6.1"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"addTonConnectExtension-D44Pw7Uc.cjs.js","names":["SUPPORTED_TON_CONNECT_WALLETS: Record<string, string | undefined>","BaseError","BaseError","BaseError","BaseError","BaseError","Cell","WalletProviderEnum","connectedWallet: ConnectedWallet | null","cachedProofNonce: string | undefined","createTonClient","getActiveNetworkId: TonWalletProvider['getActiveNetworkId']","switchActiveNetwork: TonWalletProvider['switchActiveNetwork']","Address","getConnectedAddresses: TonWalletProvider['getConnectedAddresses']","connectionTimeoutRef: {\n id: ReturnType<typeof setTimeout> | undefined;\n }","statusUnsubRef: { fn?: () => void }","modalUnsub: (() => void) | undefined","connect: TonWalletProvider['connect']","publicKey","account","proofNonce: string | undefined","disconnect: TonWalletProvider['disconnect']","signMessage: TonWalletProvider['signMessage']","sendTransaction: TonWalletProvider['sendTransaction']","sendTon: TonWalletProvider['sendTon']","prepareTonNativeTransfer","DEFAULT_TIMEOUT","sendJetton: TonWalletProvider['sendJetton']","prepareJettonTransfer","DEFAULT_JETTON_GAS","generateTonConnectProof: TonWalletProvider['generateTonConnectProof']","terminate: TonWalletProvider['terminate']","tonTransferAmount","WalletProviderPriority","TonConnectUI"],"sources":["../src/tonConnect/supportedTonConnectWallets.ts","../src/errors/TonConnectProofNotAvailableError.ts","../src/errors/TonConnectReconnectedError.ts","../src/errors/TonConnectRejectedError.ts","../src/errors/TonConnectTimeoutError.ts","../src/errors/StateInitMissingError.ts","../src/tonConnect/utils/extractPublicKeyFromStateInit/extractPublicKeyFromStateInit.ts","../src/tonConnect/utils/createWalletProviderFromTonConnect/createWalletProviderFromTonConnect.ts","../src/tonConnect/utils/discoverAndRegisterWallets/discoverAndRegisterWallets.ts","../src/tonConnect/addTonConnectExtension/addTonConnectExtension.ts"],"sourcesContent":["/**\n * Curated list of TON wallets supported by the SDK.\n *\n * TonConnect's getWallets() returns every wallet in its ecosystem registry,\n * not just installed ones. Unlike EVM (EIP-6963) or Solana (Wallet Standard)\n * where wallets self-announce, TonConnect provides a catalog, so we maintain\n * an allowlist to control which wallets appear in the UI.\n *\n * Keys are TonConnect appName identifiers. Values are display name overrides\n * (when TonConnect's default name is too generic, e.g. \"Wallet\" for Telegram\n * Wallet). When the value is undefined, TonConnect's name is used as is.\n */\nexport const SUPPORTED_TON_CONNECT_WALLETS: Record<string, string | undefined> =\n {\n mytonwallet: 'MyTonWallet',\n 'telegram-wallet': 'Telegram Wallet',\n tonkeeper: 'Tonkeeper',\n };\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class TonConnectProofNotAvailableError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'ton_connect_proof_not_available_error',\n docsUrl: null,\n name: 'TonConnectProofNotAvailableError',\n shortMessage: 'TonConnect proof not available',\n });\n }\n}\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class TonConnectReconnectedError extends BaseError {\n constructor(params: { walletName: string }) {\n super({\n cause: null,\n code: 'ton_connect_reconnected_error',\n docsUrl: null,\n name: 'TonConnectReconnectedError',\n shortMessage: `Reconnected to ${params.walletName}. Please try the action again.`,\n });\n }\n}\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class TonConnectRejectedError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'ton_connect_rejected_error',\n docsUrl: null,\n name: 'TonConnectRejectedError',\n shortMessage: 'User rejected connection',\n });\n }\n}\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class TonConnectTimeoutError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'ton_connect_timeout_error',\n docsUrl: null,\n name: 'TonConnectTimeoutError',\n shortMessage: 'Connection timed out — wallet did not respond',\n });\n }\n}\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class StateInitMissingError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'state_init_missing_error',\n docsUrl: null,\n name: 'StateInitMissingError',\n shortMessage: 'StateInit missing code or data cell',\n });\n }\n}\n","import { loadStateInit } from '@ton/core';\nimport { Cell } from '@ton/ton';\n\nimport { StateInitMissingError } from '../../../errors/StateInitMissingError';\n\nconst V5R1_CODE_HASHES = new Set([\n '2e39545f25bdc993f3bc2c1f5a3db09c1f30b70e3dd35c7ef3c25a12764fe4d0',\n '20cbb8a4c59a2521eb6e890a04b27d4f72827646a0b4bc9e20d04d8ff49e2a00',\n]);\n\nconst V5R1_SKIP_BITS = 65;\nconst DEFAULT_SKIP_BITS = 64;\nconst PUBLIC_KEY_BYTES = 32;\n\ntype ExtractPublicKeyFromStateInitParams = {\n stateInitBase64: string;\n};\n\n/**\n * Extracts the public key from a TON wallet's StateInit.\n *\n * Parses the base64-encoded StateInit cell to retrieve the 32-byte public key\n * from the data cell, handling both V5R1 and standard wallet contract layouts.\n *\n * @not-instrumented\n */\nexport const extractPublicKeyFromStateInit = ({\n stateInitBase64,\n}: ExtractPublicKeyFromStateInitParams): string => {\n const stateInitCell = Cell.fromBase64(stateInitBase64);\n const slice = stateInitCell.beginParse();\n\n const stateInit = loadStateInit(slice);\n\n const codeCell = stateInit.code;\n const dataCell = stateInit.data;\n\n if (!codeCell || !dataCell) {\n throw new StateInitMissingError();\n }\n\n const codeHash = codeCell.hash().toString('hex');\n const isV5R1 = V5R1_CODE_HASHES.has(codeHash);\n\n const dataSlice = dataCell.beginParse();\n const bitsToSkip = isV5R1 ? V5R1_SKIP_BITS : DEFAULT_SKIP_BITS;\n dataSlice.skip(bitsToSkip);\n\n const publicKeyBuffer = dataSlice.loadBuffer(PUBLIC_KEY_BYTES);\n\n return publicKeyBuffer.toString('hex');\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n createWalletProviderEventEmitter,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getNetworkProviderFromNetworkId,\n getNonce,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { Address } from '@ton/core';\nimport type { TonClient } from '@ton/ton';\nimport type {\n ConnectedWallet,\n TonConnectUI,\n WalletsModalState,\n} from '@tonconnect/ui';\n\nimport { TonConnectProofNotAvailableError } from '../../../errors/TonConnectProofNotAvailableError';\nimport { TonConnectReconnectedError } from '../../../errors/TonConnectReconnectedError';\nimport { TonConnectRejectedError } from '../../../errors/TonConnectRejectedError';\nimport { TonConnectTimeoutError } from '../../../errors/TonConnectTimeoutError';\nimport type { TonWalletProvider } from '../../../TonWalletProvider.types';\nimport { DEFAULT_JETTON_GAS, DEFAULT_TIMEOUT } from '../../../utils/constants';\nimport { createTonClient } from '../../../utils/createTonClient';\nimport { prepareJettonTransfer } from '../../../utils/prepareJettonTransfer';\nimport { prepareTonNativeTransfer } from '../../../utils/prepareTonNativeTransfer';\nimport { tonTransferAmount } from '../../../utils/tonTransferAmount';\nimport { extractPublicKeyFromStateInit } from '../extractPublicKeyFromStateInit';\n\nconst CONNECTION_TIMEOUT_MS = 30_000;\n\ntype CreateWalletProviderFromTonConnectParams = {\n dynamicClient: DynamicClient;\n tonConnectUI: TonConnectUI;\n walletInfo: {\n appName: string;\n icon: string;\n jsBridgeKey?: string;\n name: string;\n };\n};\n\n/**\n * Creates a TonWalletProvider from a TonConnect wallet.\n *\n * Wraps the TonConnect UI instance to provide connect, disconnect, sign, and\n * send operations for an external TON wallet (Tonkeeper, MyTonWallet, etc.).\n *\n * @not-instrumented\n */\nexport const createWalletProviderFromTonConnect = ({\n dynamicClient,\n tonConnectUI,\n walletInfo,\n}: CreateWalletProviderFromTonConnectParams): TonWalletProvider => {\n const chain = 'TON' as const;\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n let connectedWallet: ConnectedWallet | null = null;\n let suppressStatusEvents = false;\n let cachedProofNonce: string | undefined;\n\n const key = formatWalletProviderKey({\n chain,\n displayName: walletInfo.name,\n walletProviderType,\n });\n\n const getTonClientForActiveNetwork = async (): Promise<TonClient> => {\n const { networkId } = await getActiveNetworkId();\n const networkProvider = getNetworkProviderFromNetworkId(\n { chain: 'TON', networkId },\n dynamicClient\n );\n\n return createTonClient({ rpcUrl: networkProvider.rpcUrls.http[0] });\n };\n\n const getActiveNetworkId: TonWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: TonWalletProvider['switchActiveNetwork'] = async ({\n networkId,\n }: {\n networkId: string;\n }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const isConnectedWalletType = (\n wallet: typeof tonConnectUI.wallet\n ): wallet is ConnectedWallet => wallet !== null && 'appName' in wallet;\n\n // eslint-disable-next-line custom-rules/require-single-object-param\n const convertAddressToUserFriendly = (address: string): string => {\n try {\n if (address.startsWith('EQ') || address.startsWith('UQ')) {\n return address;\n }\n\n const isTestnet = tonConnectUI.account?.chain === '-3';\n\n return Address.parse(address).toString({\n bounceable: false,\n testOnly: isTestnet,\n urlSafe: true,\n });\n } catch {\n return address;\n }\n };\n\n const getConnectedAddresses: TonWalletProvider['getConnectedAddresses'] =\n async () => {\n await tonConnectUI.connectionRestored;\n\n const wallet = tonConnectUI.wallet;\n\n if (\n !isConnectedWalletType(wallet) ||\n wallet.appName !== walletInfo.appName\n ) {\n return { addresses: [] };\n }\n\n return {\n addresses: [convertAddressToUserFriendly(wallet.account.address)],\n };\n };\n\n // TonConnect supports only one active connection. If another TON wallet\n // took over the session, reconnect to this wallet first, then throw so\n // the actual operation happens on a separate user action.\n //\n // In Telegram Mini Apps (TMA), programmatic deep links fail on the second\n // consecutive deep link, only user triggered deep links work reliably.\n // By splitting reconnect and the actual operation into two\n // separate user actions, each gets its own deep link and both succeed.\n const ensureCorrectWalletConnected = async (): Promise<void> => {\n await tonConnectUI.connectionRestored;\n\n const current = tonConnectUI.wallet;\n\n if (\n isConnectedWalletType(current) &&\n current.appName === walletInfo.appName\n )\n return;\n\n if (tonConnectUI.connected) {\n await tonConnectUI.disconnect();\n connectedWallet = null;\n }\n\n await connectWithModal();\n\n throw new TonConnectReconnectedError({ walletName: walletInfo.name });\n };\n\n // Connect via the TonConnect UI modal.\n const connectWithModal = (tonProofPayload?: string): Promise<void> =>\n new Promise((resolve, reject) => {\n if (tonProofPayload) {\n tonConnectUI.setConnectRequestParameters({\n state: 'ready',\n value: { tonProof: tonProofPayload },\n });\n }\n\n // Mutable handle. onStatusChange may fire synchronously on subscribe,\n // so the timeout id must live in an object assigned before registration\n // to avoid the temporal dead zone when clearing.\n const connectionTimeoutRef: {\n id: ReturnType<typeof setTimeout> | undefined;\n } = { id: undefined };\n\n // Holds the onStatusChange unsubscribe. When the callback fires\n // synchronously, `fn` isn't assigned yet; handledMatchingWalletInThisConnect\n // detaches the listener right after registration.\n const statusUnsubRef: { fn?: () => void } = {};\n let handledMatchingWalletInThisConnect = false;\n\n const handleModalClose = (state: {\n closeReason?: string | null;\n status: string;\n }) => {\n if (state.status !== 'closed') return;\n // 'wallet-selected' means a deep link was initiated — don't reject yet\n if (state.closeReason === 'wallet-selected') return;\n\n clearTimeout(connectionTimeoutRef.id);\n cleanup();\n\n const error: Error = new TonConnectRejectedError();\n reject(error);\n };\n\n let modalUnsub: (() => void) | undefined;\n\n if (walletInfo.appName) {\n modalUnsub =\n tonConnectUI.onSingleWalletModalStateChange(handleModalClose);\n } else {\n modalUnsub = tonConnectUI.onModalStateChange(\n handleModalClose as (state: WalletsModalState) => void\n );\n }\n\n const cleanup = () => {\n statusUnsubRef.fn?.();\n modalUnsub?.();\n tonConnectUI.setConnectRequestParameters(null);\n };\n\n statusUnsubRef.fn = tonConnectUI.onStatusChange(\n (wallet: ConnectedWallet | null) => {\n if (wallet?.appName !== walletInfo.appName) return;\n\n connectedWallet = wallet;\n statusUnsubRef.fn?.();\n clearTimeout(connectionTimeoutRef.id);\n handledMatchingWalletInThisConnect = true;\n resolve();\n try {\n cleanup();\n } catch {\n // setConnectRequestParameters may throw WalletAlreadyConnectedError\n // in TMA context. Safe to ignore since the wallet is connected.\n }\n }\n );\n\n if (handledMatchingWalletInThisConnect) {\n statusUnsubRef.fn?.();\n }\n\n connectionTimeoutRef.id = setTimeout(() => {\n cleanup();\n\n const error: Error = new TonConnectTimeoutError();\n reject(error);\n }, CONNECTION_TIMEOUT_MS);\n\n const handleOpenError = (error: unknown) => {\n cleanup();\n reject(error);\n };\n\n if (walletInfo.appName) {\n tonConnectUI\n .openSingleWalletModal(walletInfo.appName)\n .catch(handleOpenError);\n } else {\n tonConnectUI.openModal().catch(handleOpenError);\n }\n });\n\n const connect: TonWalletProvider['connect'] = async () => {\n await tonConnectUI.connectionRestored;\n\n const currentWallet = tonConnectUI.wallet;\n const isOurWallet =\n isConnectedWalletType(currentWallet) &&\n currentWallet.appName === walletInfo.appName;\n\n // Already connected to the correct wallet — return early\n if (tonConnectUI.connected && isOurWallet) {\n connectedWallet = currentWallet;\n const { account } = currentWallet!;\n const publicKey =\n account.publicKey ??\n extractPublicKeyFromStateInit({\n stateInitBase64: account.walletStateInit,\n });\n\n return {\n addresses: [\n { address: convertAddressToUserFriendly(account.address), publicKey },\n ],\n };\n }\n\n // Disconnect stale session before reconnecting\n if (tonConnectUI.connected && !isOurWallet) {\n await tonConnectUI.disconnect();\n connectedWallet = null;\n }\n\n // Fetch a nonce and bundle it as tonProof in the connection request.\n // This lets the wallet return both address and proof in a single\n // handshake, avoiding a second deep link during verification (critical\n // for TMA where sequential deep links fail).\n let proofNonce: string | undefined;\n try {\n proofNonce = await getNonce(dynamicClient);\n } catch {\n // Nonce fetch may fail if settings aren't loaded yet, connect\n // without proof and fall back to the disconnect/reconnect flow\n // during verification.\n }\n\n await connectWithModal(proofNonce);\n\n // Store the nonce so verification can reuse it in the SIWE message,\n // matching the cached tonProof payload.\n cachedProofNonce = proofNonce;\n\n const wallet = tonConnectUI.wallet;\n assertDefined(wallet, 'Wallet not connected after successful connection');\n\n const { account } = wallet;\n const publicKey =\n account.publicKey ??\n extractPublicKeyFromStateInit({\n stateInitBase64: account.walletStateInit,\n });\n\n return {\n addresses: [\n { address: convertAddressToUserFriendly(account.address), publicKey },\n ],\n };\n };\n\n const disconnect: TonWalletProvider['disconnect'] = async () => {\n const currentWallet = tonConnectUI.wallet;\n\n if (\n tonConnectUI.connected &&\n (!isConnectedWalletType(currentWallet) ||\n currentWallet.appName === walletInfo.appName)\n ) {\n await tonConnectUI.disconnect();\n }\n\n connectedWallet = null;\n };\n\n const signMessage: TonWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n // Verification messages (SIWE-style) contain a nonce. For TON external\n // wallets, we use tonProof instead of raw signing, it includes state_init\n // and public_key which the backend needs to verify ownership of a TON\n // smart contract wallet.\n const nonceMatch = message.match(/Nonce:\\s*([^\\n\\r]+)/i);\n if (nonceMatch?.[1]) {\n const nonce = nonceMatch[1].trim().slice(0, 128);\n const proof = await generateTonConnectProof!({\n payload: nonce,\n walletAccount,\n });\n\n const stateInit = connectedWallet?.account.walletStateInit;\n const publicKey =\n connectedWallet?.account.publicKey ??\n (stateInit\n ? extractPublicKeyFromStateInit({ stateInitBase64: stateInit })\n : undefined);\n\n return {\n signature: JSON.stringify({\n address: connectedWallet?.account.address ?? walletAccount.address,\n proof: {\n domain: proof.domain,\n payload: proof.payload,\n signature: proof.signature,\n state_init: stateInit,\n timestamp: proof.timestamp,\n },\n public_key: publicKey,\n }),\n };\n }\n\n await ensureCorrectWalletConnected();\n\n const result = await tonConnectUI.signData({\n text: message,\n type: 'text',\n });\n\n return { signature: result.signature };\n };\n\n const sendTransaction: TonWalletProvider['sendTransaction'] = async ({\n request,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n await ensureCorrectWalletConnected();\n\n const result = await tonConnectUI.sendTransaction({\n messages: request.messages.map((msg) => ({\n address: msg.address,\n amount: msg.amount,\n payload: msg.payload,\n stateInit: msg.stateInit,\n })),\n validUntil: request.validUntil,\n });\n\n return { transactionHash: result.boc };\n };\n\n const sendTon: TonWalletProvider['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: TonWalletProvider['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 // Disconnects the current TonConnect session and reconnects with a\n // proof payload via the modal.\n // eslint-disable-next-line custom-rules/require-single-object-param\n const reconnectWithProof = async (payload: string) => {\n if (tonConnectUI.connected) {\n connectedWallet = null;\n await tonConnectUI.disconnect();\n }\n\n await connectWithModal(payload);\n };\n\n // Returns a cached proof from the initial connection handshake when\n // available. Falls back to a disconnect/reconnect cycle with the\n // requested payload when the cached proof is missing or stale.\n const generateTonConnectProof: TonWalletProvider['generateTonConnectProof'] =\n async ({ payload, walletAccount }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n // Return cached proof if already connected with matching payload\n if (connectedWallet?.connectItems?.tonProof) {\n const { tonProof } = connectedWallet.connectItems;\n\n if ('proof' in tonProof && tonProof.proof.payload === payload) {\n // Clear after use, nonces are one-time-use on the backend\n cachedProofNonce = undefined;\n\n return {\n address: walletAccount.address,\n domain: tonProof.proof.domain,\n payload: tonProof.proof.payload,\n signature: tonProof.proof.signature,\n timestamp: tonProof.proof.timestamp,\n };\n }\n }\n\n // Suppress SDK events during the disconnect/reconnect cycle so the\n // wallet management layer doesn't see a sudden disconnect + accounts\n // change during verification.\n suppressStatusEvents = true;\n\n try {\n await reconnectWithProof(payload);\n } finally {\n suppressStatusEvents = false;\n }\n\n const wallet = tonConnectUI.wallet;\n const proof = isConnectedWalletType(wallet)\n ? wallet.connectItems?.tonProof\n : undefined;\n\n if (!proof || !('proof' in proof)) {\n throw new TonConnectProofNotAvailableError();\n }\n\n return {\n address: walletAccount.address,\n domain: proof.proof.domain,\n payload: proof.proof.payload,\n signature: proof.proof.signature,\n timestamp: proof.proof.timestamp,\n };\n };\n\n const { getEventEmitter, cleanupEventEmitter } =\n createWalletProviderEventEmitter<VoidFunction>({\n removeEventListeners: ({\n setupReturnValue,\n }: {\n setupReturnValue: VoidFunction | undefined;\n }) => {\n assertDefined(setupReturnValue, 'Setup return value not defined');\n setupReturnValue();\n },\n\n setupEventListeners: ({\n handleAccountsChanged,\n handleDisconnected,\n }: {\n handleAccountsChanged: (args: { addresses: string[] }) => void;\n handleDisconnected: () => void;\n }) =>\n tonConnectUI.onStatusChange((wallet: ConnectedWallet | null) => {\n if (suppressStatusEvents) return;\n\n if (wallet?.appName !== walletInfo.appName) {\n if (connectedWallet) {\n connectedWallet = null;\n handleDisconnected();\n }\n return;\n }\n\n connectedWallet = wallet;\n handleAccountsChanged({\n addresses: [convertAddressToUserFriendly(wallet.account.address)],\n });\n }),\n\n supportedEvents: ['accountsChanged', 'disconnected'],\n });\n\n const terminate: TonWalletProvider['terminate'] = async () => {\n cleanupEventEmitter();\n };\n\n return {\n chain,\n connect,\n disconnect,\n get events() {\n return getEventEmitter();\n },\n generateTonConnectProof,\n getActiveNetworkId,\n getConnectedAddresses,\n getConnectProofNonce: () => cachedProofNonce,\n groupKey: formatWalletProviderGroupKey(walletInfo.name),\n key,\n metadata: {\n displayName: walletInfo.name,\n icon: walletInfo.icon,\n },\n sendJetton,\n sendTon,\n sendTransaction,\n signMessage,\n switchActiveNetwork,\n terminate,\n transferAmount: (args) => tonTransferAmount(args, dynamicClient),\n walletProviderType,\n };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n WalletProviderPriority,\n getWalletProviderRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport type { TonConnectUI } from '@tonconnect/ui';\n\nimport { SUPPORTED_TON_CONNECT_WALLETS } from '../../supportedTonConnectWallets';\nimport { createWalletProviderFromTonConnect } from '../createWalletProviderFromTonConnect';\n\ntype DiscoverAndRegisterWalletsParams = {\n client: DynamicClient;\n tonConnectUI: TonConnectUI;\n};\n\n/**\n * Discovers supported TonConnect wallets and registers them as wallet providers.\n *\n * Queries the TonConnect registry for available wallets, filters to the\n * curated allowlist, and registers each as a wallet provider with the Dynamic client.\n *\n * @not-instrumented\n */\nexport const discoverAndRegisterWallets = async ({\n client,\n tonConnectUI,\n}: DiscoverAndRegisterWalletsParams): Promise<void> => {\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const wallets = await tonConnectUI.connector.getWallets();\n\n const supportedWallets = wallets.filter(\n (wallet) => wallet.appName in SUPPORTED_TON_CONNECT_WALLETS\n );\n\n for (const wallet of supportedWallets) {\n const isInjected =\n 'jsBridgeKey' in wallet &&\n 'injected' in wallet &&\n (wallet as unknown as { injected: boolean }).injected === true;\n\n const walletProvider = createWalletProviderFromTonConnect({\n dynamicClient: client,\n tonConnectUI,\n walletInfo: {\n appName: wallet.appName,\n icon: wallet.imageUrl,\n jsBridgeKey: isInjected\n ? (wallet as unknown as { jsBridgeKey: string }).jsBridgeKey\n : undefined,\n name: SUPPORTED_TON_CONNECT_WALLETS[wallet.appName] ?? wallet.name,\n },\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,\n walletProvider,\n });\n }\n};\n","import {\n assertDefined,\n getCore,\n getDefaultClient,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport { TonConnectUI } from '@tonconnect/ui';\n\nimport { registerTonNetworkProviderBuilder } from '../../registerTonNetworkProviderBuilder';\nimport { discoverAndRegisterWallets } from '../utils/discoverAndRegisterWallets';\n\nexport const TON_CONNECT_EXTENSION_KEY = 'tonConnect';\n\n/**\n * Adds the TonConnect extension to the Dynamic client.\n *\n * This extension enables external TON wallet support via the TonConnect protocol,\n * discovering and registering supported wallets (Tonkeeper, MyTonWallet, etc.)\n * as wallet providers.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @not-instrumented\n */\nexport const addTonConnectExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: TON_CONNECT_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: TON_CONNECT_EXTENSION_KEY }, client);\n registerTonNetworkProviderBuilder(client);\n\n const universalLink = getCore(client).metadata?.universalLink;\n assertDefined(universalLink, 'Universal link is not set');\n\n const tonConnectUI = new TonConnectUI({\n manifestUrl: `${universalLink}/tonconnect-manifest.json`,\n });\n\n void discoverAndRegisterWallets({ client, tonConnectUI });\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"addWaasTonExtension-BUvrxbHY.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 // eslint-disable-next-line custom-rules/require-single-object-param\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 */\n// eslint-disable-next-line custom-rules/require-single-object-param\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 */\n// eslint-disable-next-line custom-rules/require-single-object-param\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 */\n// eslint-disable-next-line custom-rules/require-single-object-param\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 // eslint-disable-next-line custom-rules/require-single-object-param\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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"}
|
package/dist/index.cjs.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","names":["isTonWalletProvider","NotTonProviderError","MethodNotImplementedError","isTonWalletProvider","NotTonProviderError","isTonWalletProvider","NotTonProviderError","isTonWalletProvider","NotTonProviderError","packageName","packageVersion"],"sources":["../src/addTonExtension/addTonExtension.ts","../src/generateTonConnectProof/generateTonConnectProof.ts","../src/isTonNetworkProvider/isTonNetworkProvider.ts","../src/isTonWalletAccount/isTonWalletAccount.ts","../src/sendJetton/sendJetton.ts","../src/sendTon/sendTon.ts","../src/sendTransaction/sendTransaction.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addTonConnectExtension } from '../tonConnect/addTonConnectExtension';\nimport { addWaasTonExtension } from '../waas/addWaasTonExtension';\n\n/**\n * Adds the TON extension to the Dynamic client.\n *\n * This is a convenience function that adds both the TonConnect extension\n * and the Dynamic WaaS TON extension, enabling support for all TON wallet types\n * including external wallets (Tonkeeper, MyTonWallet, etc.) and embedded wallets\n * 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 addTonExtension = (client = getDefaultClient()): void => {\n addTonConnectExtension(client);\n addWaasTonExtension(client);\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport {\n MethodNotImplementedError,\n getWalletProviderFromWalletAccount,\n} from '@dynamic-labs-sdk/client/core';\n\nimport type { TonConnectProof } from '../ton.types';\nimport type { TonWalletAccount } from '../TonWalletAccount.types';\nimport { NotTonProviderError } from '../errors/NotTonProviderError';\nimport { isTonWalletProvider } from '../isTonWalletProvider';\n\ntype GenerateTonConnectProofParams = {\n payload: string;\n walletAccount: TonWalletAccount;\n};\n\n/**\n * Generates a TonConnect proof for a wallet account.\n *\n * @param params.payload - The proof payload (typically a nonce)\n * @param params.walletAccount - The wallet account to generate the proof for\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns The TonConnect proof containing address, domain, payload, signature, and timestamp\n * @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider\n * @throws {MethodNotImplementedError} If the wallet provider does not support generateTonConnectProof\n * @not-instrumented\n */\nexport const generateTonConnectProof = async (\n { payload, walletAccount }: GenerateTonConnectProofParams,\n client = getDefaultClient()\n): Promise<TonConnectProof> => {\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 (!provider.generateTonConnectProof) {\n throw new MethodNotImplementedError('generateTonConnectProof');\n }\n\n return provider.generateTonConnectProof({ payload, walletAccount });\n};\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { TonNetworkProvider } from '../TonNetworkProvider.types';\n\n/**\n * Type guard function to check if a network provider is a TON network provider.\n *\n * @param networkProvider - The network provider to check.\n * @returns True if the network provider is a TON network provider, false otherwise.\n * @not-instrumented\n */\nexport const isTonNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is TonNetworkProvider => networkProvider.chain === 'TON';\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { TonWalletAccount } from '../TonWalletAccount.types';\n\n/**\n * Type guard function to check if a wallet account is a TON wallet account.\n *\n * @param walletAccount - The wallet account to check.\n * @returns True if the wallet account is a TON wallet account, false otherwise.\n * @not-instrumented\n */\nexport const isTonWalletAccount = (\n walletAccount: WalletAccount\n): walletAccount is TonWalletAccount => walletAccount.chain === 'TON';\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { getWalletProviderFromWalletAccount } from '@dynamic-labs-sdk/client/core';\n\nimport type { TonJettonTransfer, TonSendTransactionResponse } from '../ton.types';\nimport type { TonWalletAccount } from '../TonWalletAccount.types';\nimport { NotTonProviderError } from '../errors/NotTonProviderError';\nimport { isTonWalletProvider } from '../isTonWalletProvider';\n\ntype SendJettonParams = {\n transaction: TonJettonTransfer;\n walletAccount: TonWalletAccount;\n};\n\n/**\n * Sends a Jetton (TON token) transaction.\n *\n * @param params.transaction - The Jetton transaction to send\n * @param params.walletAccount - The wallet account to send the transaction from\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the transaction hash\n * @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider\n * @not-instrumented\n */\nexport const sendJetton = async (\n { walletAccount, transaction }: SendJettonParams,\n client = getDefaultClient()\n): Promise<TonSendTransactionResponse> => {\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isTonWalletProvider(provider)) {\n throw new NotTonProviderError({ providerKey: provider.key });\n }\n\n return provider.sendJetton({ transaction, walletAccount });\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { getWalletProviderFromWalletAccount } from '@dynamic-labs-sdk/client/core';\n\nimport type { TonNativeTransfer, TonSendTransactionResponse } from '../ton.types';\nimport type { TonWalletAccount } from '../TonWalletAccount.types';\nimport { NotTonProviderError } from '../errors/NotTonProviderError';\nimport { isTonWalletProvider } from '../isTonWalletProvider';\n\ntype SendTonParams = {\n transaction: TonNativeTransfer;\n walletAccount: TonWalletAccount;\n};\n\n/**\n * Sends a native TON transaction.\n *\n * @param params.transaction - The native TON transaction to send\n * @param params.walletAccount - The wallet account to send the transaction from\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the transaction hash\n * @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider\n * @not-instrumented\n */\nexport const sendTon = async (\n { walletAccount, transaction }: SendTonParams,\n client = getDefaultClient()\n): Promise<TonSendTransactionResponse> => {\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isTonWalletProvider(provider)) {\n throw new NotTonProviderError({ providerKey: provider.key });\n }\n\n return provider.sendTon({ transaction, walletAccount });\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { getWalletProviderFromWalletAccount } from '@dynamic-labs-sdk/client/core';\n\nimport { NotTonProviderError } from '../errors/NotTonProviderError';\nimport { isTonWalletProvider } from '../isTonWalletProvider';\nimport type {\n TonSendTransactionRequest,\n TonSendTransactionResponse,\n} from '../ton.types';\nimport type { TonWalletAccount } from '../TonWalletAccount.types';\n\ntype SendTransactionParams = {\n request: TonSendTransactionRequest;\n walletAccount: TonWalletAccount;\n};\n\n/**\n * Sends a custom TON transaction with an arbitrary message payload.\n *\n * @param params.request - The raw TON transaction request (messages, validUntil, etc.)\n * @param params.walletAccount - The wallet account to send the transaction from\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the transaction hash\n * @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider\n * @not-instrumented\n */\nexport const sendTransaction = async (\n { request, walletAccount }: SendTransactionParams,\n client = getDefaultClient()\n): Promise<TonSendTransactionResponse> => {\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isTonWalletProvider(provider)) {\n throw new NotTonProviderError({ providerKey: provider.key });\n }\n\n return provider.sendTransaction({ request, walletAccount });\n};\n","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 { addTonExtension } from '../addTonExtension';\nexport { NotTonProviderError } from '../errors/NotTonProviderError';\nexport { TransactionExecutionFailedError } from '../errors/TransactionExecutionFailedError';\nexport { generateTonConnectProof } from '../generateTonConnectProof';\nexport { isTonNetworkProvider } from '../isTonNetworkProvider';\nexport { isTonWalletAccount } from '../isTonWalletAccount';\nexport { isTonWalletProvider } from '../isTonWalletProvider';\nexport { sendJetton } from '../sendJetton';\nexport { sendTon } from '../sendTon';\nexport { sendTransaction } from '../sendTransaction';\nexport type {\n TonJettonTransfer,\n TonNativeTransfer,\n TonConnectProof,\n TonSendTransactionRequest,\n TonSendTransactionResponse,\n} from '../ton.types';\nexport type { TonNetworkProvider } from '../TonNetworkProvider.types';\nexport type { TonWalletAccount } from '../TonWalletAccount.types';\nexport type { TonWalletProvider } from '../TonWalletProvider.types';\nexport { NANOTON_PER_TON } from '../utils/constants';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAgBA,MAAa,mBAAmB,8DAA2B,KAAW;AACpE,uDAAuB,OAAO;AAC9B,iDAAoB,OAAO;;;;;;;;;;;;;;;;ACS7B,MAAa,0BAA0B,OACrC,EAAE,SAAS,iBACX,yDAA2B,KACE;CAC7B,MAAM,iFACJ,EAAE,eAAe,EACjB,OACD;AAED,KAAI,CAACA,8CAAoB,SAAS,CAChC,OAAM,IAAIC,8CAAoB,EAAE,aAAa,SAAS,KAAK,CAAC;AAG9D,KAAI,CAAC,SAAS,wBACZ,OAAM,IAAIC,wDAA0B,0BAA0B;AAGhE,QAAO,SAAS,wBAAwB;EAAE;EAAS;EAAe,CAAC;;;;;;;;;;;;ACjCrE,MAAa,wBACX,oBAC0C,gBAAgB,UAAU;;;;;;;;;;;ACFtE,MAAa,sBACX,kBACsC,cAAc,UAAU;;;;;;;;;;;;;;ACUhE,MAAa,aAAa,OACxB,EAAE,eAAe,eACjB,yDAA2B,KACa;CACxC,MAAM,iFACJ,EAAE,eAAe,EACjB,OACD;AAED,KAAI,CAACC,8CAAoB,SAAS,CAChC,OAAM,IAAIC,8CAAoB,EAAE,aAAa,SAAS,KAAK,CAAC;AAG9D,QAAO,SAAS,WAAW;EAAE;EAAa;EAAe,CAAC;;;;;;;;;;;;;;;ACb5D,MAAa,UAAU,OACrB,EAAE,eAAe,eACjB,yDAA2B,KACa;CACxC,MAAM,iFACJ,EAAE,eAAe,EACjB,OACD;AAED,KAAI,CAACC,8CAAoB,SAAS,CAChC,OAAM,IAAIC,8CAAoB,EAAE,aAAa,SAAS,KAAK,CAAC;AAG9D,QAAO,SAAS,QAAQ;EAAE;EAAa;EAAe,CAAC;;;;;;;;;;;;;;;ACVzD,MAAa,kBAAkB,OAC7B,EAAE,SAAS,iBACX,yDAA2B,KACa;CACxC,MAAM,iFACJ,EAAE,eAAe,EACjB,OACD;AAED,KAAI,CAACC,8CAAoB,SAAS,CAChC,OAAM,IAAIC,8CAAoB,EAAE,aAAa,SAAS,KAAK,CAAC;AAG9D,QAAO,SAAS,gBAAgB;EAAE;EAAS;EAAe,CAAC;;;;;mEChCxCC,gCAAaC,kCAAe"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tonConnect.cjs.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":";;;;;mEAOqBA,gCAAaC,kCAAe"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tonTransferAmount-CYVYzs7Z.cjs.js","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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"}
|
package/dist/waas.cjs.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waas.cjs.js","names":["packageName","packageVersion"],"sources":["../src/exports/waas.ts"],"sourcesContent":["import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport { name as packageName, version as packageVersion } from '../../package.json';\n\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWaasTonExtension } from '../waas/addWaasTonExtension';\nexport { prepareJettonTransfer } from '../utils/prepareJettonTransfer';\nexport { prepareTonNativeTransfer } from '../utils/prepareTonNativeTransfer';\nexport type { WaasTonWalletProvider } from '../waas/WaasTonWalletProvider.types';\n"],"mappings":";;;;;mEAIqBA,gCAAaC,kCAAe"}
|