@dynamic-labs-sdk/ton 1.18.0 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{addTonConnectExtension-Bbs7G_mc.cjs → addTonConnectExtension-BaTBqUGn.cjs} +2 -2
- package/dist/{addTonConnectExtension-Bbs7G_mc.cjs.map → addTonConnectExtension-BaTBqUGn.cjs.map} +1 -1
- package/dist/{addTonConnectExtension-CLavm4Do.esm.js → addTonConnectExtension-vitG3cpo.esm.js} +2 -2
- package/dist/{addTonConnectExtension-CLavm4Do.esm.js.map → addTonConnectExtension-vitG3cpo.esm.js.map} +1 -1
- package/dist/addTonExtension/addTonExtension.d.ts +9 -0
- package/dist/addTonExtension/addTonExtension.d.ts.map +1 -1
- package/dist/{addWaasTonExtension-Y2PCarL3.cjs → addWaasTonExtension-BJ69G2y4.cjs} +2 -2
- package/dist/{addWaasTonExtension-Y2PCarL3.cjs.map → addWaasTonExtension-BJ69G2y4.cjs.map} +1 -1
- package/dist/{addWaasTonExtension-DiWbUG14.esm.js → addWaasTonExtension-Bju5fVlY.esm.js} +2 -2
- package/dist/{addWaasTonExtension-DiWbUG14.esm.js.map → addWaasTonExtension-Bju5fVlY.esm.js.map} +1 -1
- package/dist/generateTonConnectProof/generateTonConnectProof.d.ts +15 -5
- package/dist/generateTonConnectProof/generateTonConnectProof.d.ts.map +1 -1
- package/dist/index.cjs +86 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +86 -20
- package/dist/index.esm.js.map +1 -1
- package/dist/isTonNetworkProvider/isTonNetworkProvider.d.ts +10 -1
- package/dist/isTonNetworkProvider/isTonNetworkProvider.d.ts.map +1 -1
- package/dist/isTonWalletAccount/isTonWalletAccount.d.ts +9 -1
- package/dist/isTonWalletAccount/isTonWalletAccount.d.ts.map +1 -1
- package/dist/isTonWalletProvider/isTonWalletProvider.d.ts +10 -1
- package/dist/isTonWalletProvider/isTonWalletProvider.d.ts.map +1 -1
- package/dist/sendJetton/sendJetton.d.ts +15 -5
- package/dist/sendJetton/sendJetton.d.ts.map +1 -1
- package/dist/sendTon/sendTon.d.ts +15 -5
- package/dist/sendTon/sendTon.d.ts.map +1 -1
- package/dist/sendTransaction/sendTransaction.d.ts +14 -4
- package/dist/sendTransaction/sendTransaction.d.ts.map +1 -1
- package/dist/tonConnect.cjs +2 -2
- package/dist/tonConnect.esm.js +2 -2
- package/dist/{tonTransferAmount-JgBt15EL.esm.js → tonTransferAmount-5Ltz1PnK.esm.js} +11 -2
- package/dist/{tonTransferAmount-JgBt15EL.esm.js.map → tonTransferAmount-5Ltz1PnK.esm.js.map} +1 -1
- package/dist/{tonTransferAmount-MF75NsQx.cjs → tonTransferAmount-ROBOHZEu.cjs} +11 -2
- package/dist/{tonTransferAmount-MF75NsQx.cjs.map → tonTransferAmount-ROBOHZEu.cjs.map} +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/waas.cjs +2 -2
- package/dist/waas.esm.js +2 -2
- package/package.json +13 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addWaasTonExtension-Y2PCarL3.cjs","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/** @notInstrumented */\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/** @notInstrumented */\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","/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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 * @notInstrumented\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/** @notInstrumented */\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 * @notInstrumented\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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"}
|
|
1
|
+
{"version":3,"file":"addWaasTonExtension-BJ69G2y4.cjs","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/** @notInstrumented */\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/** @notInstrumented */\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","/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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 * @notInstrumented\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/** @notInstrumented */\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 * @notInstrumented\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":";;;;;;;;;;;AAEA,IAAa,kCAAb,cAAqDA,mCAAU;CAE7D,YAAY,SAAkB;AAC5B,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,MAAM;GACN,cAAc;GACf,CAAC;;;;;;;ACRN,MAAa,yBACX,UACA,QACA,MACA,QACA,UACI;CACJ;CACA,MAAM;EACJ;EACA,SAAS;EACT,WAAW;EACX,WAAW,OAAO,EAAE;EACpB,MAAM;EACN,YAAY,OAAO,EAAE;EACrB,aAAa;EACb,QAAQ,OAAO,EAAE;EACjB,KAAK;EACL,MAAM;EACN,OAAO,EAAE,OAAO,QAAQ;EACzB;CACD,GAAI,QAAQ,EAAE,MAAM;CACrB;;;;;ACrBD,MAAa,uBACX,qBACsB;CACtB,MAAMC,mBAAS,qBAAqBA,mBAAS;CAC7C,QAAQ;CACR,MAAM;CACP;;;;;ACVD,MAAa,uBAAuB,YAClC,CAAC,QAAQ,WAAW,KAAK,IAAI,CAAC,QAAQ,WAAW,KAAK;;;;ACKxD,IAAa,kBAAb,cAAqCC,mCAAU;CAC7C,YAAY,EAAE,OAAO,QAA+B;AAClD,QAAM;GACJ;GACA,MAAM;GACN,SAAS;GACT,MAAM;GACN,cAAc,WAAW,KAAK;GAC/B,CAAC;;;;;;;ACTN,MAAa,gBAAgB,YAAsC;AACjE,KAAI,CAAC,QACH,iCAAkB,CAAC,SAAS;AAG9B,KAAI;AACF,SAAOC,cAAK,WAAW,QAAQ;UACxB,GAAG;AACV,QAAM,IAAI,gBAAgB;GACxB,OAAO,aAAa,QAAQ,IAAI;GAChC,MAAM;GACP,CAAC;;;;;;;ACXN,MAAa,kBACX,cAC2C;AAC3C,KAAI,CAAC,UACH;AAGF,KAAI;EAEF,MAAM,QADgBC,cAAK,WAAW,UAAU,CACpB,YAAY;AAExC,QAAM,KAAK,EAAE;AAEb,SAAO;GACL,MAAM,MAAM,SAAS;GACrB,MAAM,MAAM,SAAS;GACtB;UACM,GAAG;AACV,QAAM,IAAI,gBAAgB;GACxB,OAAO,aAAa,QAAQ,IAAI;GAChC,MAAM;GACP,CAAC;;;;;;;AChBN,MAAa,oCACX,YACuB;CACvB,MAAMC,UAA8B,EAAE;AAEtC,MAAK,MAAM,OAAO,QAAQ,UAAU;EAClC,MAAM,WAAWC,iBAAQ,MAAM,IAAI,QAAQ;EAC3C,MAAM,SAAS,OAAO,IAAI,OAAO;EACjC,MAAM,OAAO,aAAa,IAAI,QAAQ;EACtC,MAAM,OAAO,eAAe,IAAI,UAAU;EAG1C,MAAM,kBAAkB,sBACtB,UACA,QACA,MALa,oBAAoB,IAAI,QAAQ,EAO7C,KACD;AAED,UAAQ,KAAK,oBAAoB,gBAAgB,CAAC;;AAGpD,QAAO;;;;;;ACzBT,MAAa,4BAA4B,EACvC,WACA,YAAY,QACmC;AAM/C,QALeC,4BAAmB,OAAO;EACvC;EACA;EACD,CAAC,CAEY;;;;;ACXhB,IAAa,8BAAb,cAAiDC,mCAAU;CACzD,YAAY,EAAE,QAAQ,YAA+C;AACnE,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;GACN,cAAc,sCAAsC,SAAS,cAAc;GAC5E,CAAC;;;;;;;ACAN,MAAa,wBAAwB,OAAO,EAC1C,iBACA,WACA,QACA,gBACuE;CACvE,MAAM,gEAA6B,CAAC,KAAK,WAAW,SAAS;AAE7D,KAAI,gBAAgB,WAAW,GAC7B,OAAM,IAAI,4BAA4B;EACpC,QAAQ,gBAAgB;EACxB,UAAU;EACX,CAAC;CAGJ,MAAM,qBAAqBC,cAAK,WAAW,gBAAgB,YAAY;CASvE,MAAM,sCAAuB;EAC3B,+BARmC,CAClC,WAAW,mBAAmB,YAAY,CAAC,CAC3C,YAAY,gBAAgB,CAC5B,SAAS;EAMV,IAJcC,iBAAQ,MAAM,gBAAgB,QAAQ;EAKpD,GAAI,YAAY,EAAE,MAAM,WAAW,GAAG,EAAE;EACzC,CAAC;CAEF,MAAM,2CAA6B,CAChC,kCAAmB,aAAa,EAAE,UAAU,MAAM,CAAC,CAAC,CACpD,SAAS;CAEZ,MAAM,MAAM,gBAAgB,OAAO;AAEnC,OAAM,OAAO,SAAS,IAAI;AAI1B,QAAO,EAAE,iBAFe,gBAAgB,MAAM,CAAC,SAAS,MAAM,EAEpC;;;;;;ACzC5B,MAAa,kCAAkC,EAC7C,SAAS,YACT,QACA,SACA,gBAC0C;CAC1C,MAAM,2DAAwB;CAC9B,MAAM,UAAUC,iBAAQ,MAAM,WAAW;CAEzC,MAAM,cAAc,WAAW,KAAK,OAAO,MAAM;CAGjD,MAAM,KAAK,WAAW,MAAM,EAAE;AAC9B,IAAG,cAAc,QAAQ,WAAW,EAAE;CAGtC,MAAM,KAAK,WAAW,MAAM,EAAE;AAC9B,IAAG,iBAAiB,OAAO,UAAU,EAAE,EAAE;CAGzC,MAAM,KAAK,WAAW,MAAM,EAAE;AAC9B,IAAG,cAAc,OAAO,aAAa,EAAE;AAEvC,QAAO,WAAW,OAAO;EACvB,WAAW,KAAKC,2CAAiB;EACjC;EACA,QAAQ;EACR;EACA;EACA;EACA,WAAW,KAAK,QAAQ;EACzB,CAAC;;;;;;AC9BJ,MAAa,8BAA8B,OAAO,EAChD,SACA,QACA,SACA,gBACwD;CACxD,MAAM,2DAAwB;CAE9B,MAAM,UAAU,+BAA+B;EAC7C;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,cAAc,WAAW,KAC5B,8BAAa,QAAQ,CACvB;CAED,MAAM,UAAU,WAAW,OAAO;EAChC,WAAW,KAAK,CAAC,KAAM,IAAK,CAAC;EAC7B,WAAW,KAAKC,6CAAmB;EACnC;EACD,CAAC;AAIF,QAFa,WAAW,KAAM,8BAAa,QAAQ,CAAgB,CAEvD,SAAS,MAAM;;;;;;AClC7B,MAAa,oBAAoB,OAAO,EACtC,eACA,aAC8C;CAC9C,MAAM,UAAUC,iBAAQ,MAAM,cAAc;AAG5C,SAFe,MAAM,OAAO,UAAU,SAAS,QAAQ,EAEzC,MAAM,YAAY;;;;;;ACPlC,MAAa,sBAAsB,OAAO,EACxC,eACA,aACiD;CACjD,MAAM,UAAUC,iBAAQ,MAAM,cAAc;AAG5C,SAFc,MAAM,OAAO,iBAAiB,QAAQ,EAEvC,UAAU;;;;;;ACOzB,MAAa,yBAAyB,EACpC,cACA,eACA,OACA,YACA,SACA,kBAAkBC,sBAAM,cACsC;CAC9D,MAAM,aAAaC,iBAAQ,MAAM,cAAc;CAE/C,MAAM,uCAAyB,CAAC,kCAAmB,aAAa,CAAC,CAAC,SAAS;CAE3E,MAAM,mCAAqB,CACxB,SAAS,EAAE,CACX,SAAS,YAAY,CACrB,SAAS,EAAE,CACX,SAAS;CAEZ,MAAM,mCAAqB,CACxB,UAAU,GAAG,EAAE,CACf,SAAS,WAAW,WAAW,EAAE,CACjC,UAAU,GAAG,EAAE,CACf,UAAU,GAAG,GAAG,CAChB,SAAS,CACT,YAAY,CACZ,QAAQ,GAAG;CAEd,MAAM,gBAAgB,OAAO,gBAAgB,GAAG,OAAO,QAAQ;CAE/D,MAAM,0CAA4B,CAC/B,UAAUC,4BAAmB,QAAQ,sBAAsB,GAAG,CAC9D,SAAS,eAAe,GAAG;AAE9B,KAAI,UAAU,EACZ,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IACtB,gBAAe,SAAS,EAAE;KAG5B,gBAAe,UAAU,YAAY,GAAG;AAG1C,gBAAe,UAAU,OAAO,GAAG,CAAC,WAAW,QAAQ,YAAY,CAAC;CAEpE,MAAM,aAAa,eAAe,SAAS;CAC3C,MAAM,aAAa,WAAW,MAAM;AAYpC,QAAO;EACL;EACA,eAboB,WAAW,SAAS,MAAM;EAc9C,iBAV0C;GAC1C,SAAS;GACT,aAJkB,WAAW,OAAO,CAAC,SAAS,SAAS;GAKvD;GACA;GACD;EAMA;;;;;AChFH,IAAa,yBAAb,cAA4CC,mCAAU;CAEpD,YAAY,SAAiB;AAC3B,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;GACN,cAAc,mCAAmC;GAClD,CAAC;;;;;;;;;;ACFN,MAAa,gCACX,eACA,WACW;CACX,MAAM,kDAAe,OAAO,CAAC,MAAM,KAAK,CAAC;AAEzC,MAAK,MAAM,cAAc,MAAM,uBAAuB,EAAE,EAAE;EACxD,MAAM,oBAAoB,WAAW,2BAA2B,MAC7D,SAAS,KAAK,YAAY,cAAc,QAC1C;AAED,MAAI,mBAAmB,UACrB,QAAO,kBAAkB;;AAI7B,OAAM,IAAI,uBAAuB,cAAc,QAAQ;;;;;;ACazD,MAAa,kCACX,cAC0B;CAC1B,MAAM,QAAQ;CACd,MAAM,qBAAqBC,8CAAmB;CAE9C,MAAM,iEAA8B;EAClC;EACA,aAAaC,yDAAsB;EACnC;EACD,CAAC;CAEF,MAAM,0EAAkC;EAAE;EAAO;EAAW,CAAC;CAE7D,MAAM,+BAA+B,YAAgC;EACnE,MAAM,EAAE,cAAc,MAAM,oBAAoB;AAMhD,SAAOC,0CAAgB,EAAE,2EAJvB;GAAE,OAAO;GAAO;GAAW,EAC3B,UACD,CAEgD,QAAQ,KAAK,IAAI,CAAC;;CAGrE,MAAMC,qBACJ,uFAC0C;EACtC,QAAQ;EACR,mBAAmB;EACpB,CAAC;CAEN,MAAMC,sBACJ,OAAO,EAAE,0FACgC;EACrC,QAAQ;EACR;EACA,mBAAmB;EACpB,CAAC;CAEN,MAAMC,wBACJ,aAAa,EACX,mFAA2C,EAAE,OAAO,EAAE,UAAU,EACjE;CAEH,MAAMC,cAAoD,OAAO,EAC/D,SACA,oBACI;AACJ,mDAAc,eAAe,6BAA6B;AAE1D,SAAO,aAAa,YAAY;GAAE;GAAS;GAAe,CAAC;;CAG7D,MAAMC,kBAA4D,OAAO,EACvE,SACA,oBACI;AACJ,mDAAc,eAAe,6BAA6B;EAE1D,MAAM,SAAS,MAAM,8BAA8B;EACnD,MAAM,gBAAgB,QAAQ,QAAQ,cAAc;EAEpD,MAAM,WAAW,MAAM,oBAAoB;GAAE;GAAQ;GAAe,CAAC;EACrE,MAAM,QAAQ,WACV,MAAM,kBAAkB;GAAE;GAAQ;GAAe,CAAC,GAClD;EAEJ,MAAM,eAAe,6BAA6B,eAAe,UAAU;EAC3E,MAAM,YAAY,WACd,SACA,yBAAyB;GACvB,yDAAsB,CAAC,KAAK,cAAc,MAAM;GAChD,WAAW;GACZ,CAAC;EAEN,MAAM,eAAe,iCAAiC,QAAQ;EAE9D,MAAM,iBAAiB,QAAQ,aAAa,KAAK,MAAM,KAAK,KAAK,GAAG,IAAK;AAEzE,MAAI,kBAAkB,EACpB,OAAM,IAAI,gCACR,wCACD;EAGH,MAAM,EAAE,eAAe,oBAAoB,sBAAsB;GAC/D;GACA,iBAAiB,QAAQ,WAAWC,sBAAM;GAC1C;GACA,SAAS;GACT,YAAY,QAAQ;GACpB;GACD,CAAC;EAEF,MAAM,aAAa,MAAM,aAAa,eAAe;EACrD,MAAM,EAAE,WAAW,oBAAoB,4DAAyB,UAAU;EAC1E,MAAM,WAAW,4EACf,EAAE,WAAWC,qCAAU,gBAAgB,EACvC,UACD;AAUD,SAAO,sBAAsB;GAC3B;GACA,WAVgB,MAAM,WAAW,gBAAgB;IACjD,WAAW,UAAU,SAAS;IAC9B;IACA,eAAe,cAAc;IAC7B;IACA,aAAa;IACd,CAAC;GAKA;GACA;GACD,CAAC;;CAGJ,MAAMC,UAA4C,OAAO,EACvD,aACA,oBACI;AACJ,mDAAc,eAAe,6BAA6B;AAS1D,SAAO,gBAAgB;GAAE,SAPTC,mDAAyB;IACvC,iBAAiB,YAAY,OAAO,UAAU;IAC9C,WAAW,YAAY;IACvB,SAASC;IACT,eAAe,cAAc;IAC9B,CAAC;GAEgC;GAAe,CAAC;;CAGpD,MAAMC,aAAkD,OAAO,EAC7D,aACA,oBACI;AACJ,mDAAc,eAAe,6BAA6B;AAe1D,SAAO,gBAAgB;GAAE,SAXT,MAAMC,gDAAsB;IAC1C,QAHa,MAAM,8BAA8B;IAIjD,kBAAkB,YAAY,oBAAoB,OAAO,EAAE;IAC3D,WAAW,YAAY,aAAaC;IACpC,cAAc,YAAY;IAC1B,qBAAqB,YAAY;IACjC,kBAAkB,YAAY;IAC9B,SAASH;IACT,eAAe,cAAc;IAC9B,CAAC;GAEgC;GAAe,CAAC;;CAGpD,MAAMI,0BACJ,OAAO,EAAE,SAAS,oBAAoB;AACpC,mDAAc,eAAe,6BAA6B;EAE1D,MAAM,OAAO,WAAW,UAAU,QAAQ;EAC1C,MAAM,YAAY,KAAK,MAAM,KAAK,KAAK,GAAG,IAAK;EAC/C,MAAM,SAAS;GACb,aAAa,IAAI,aAAa,CAAC,OAAO,KAAK,CAAC;GAC5C,OAAO;GACR;EASD,MAAM,EAAE,cAAc,MAAM,YAAY;GACtC,SARc,MAAM,4BAA4B;IAChD,SAAS,cAAc;IACvB;IACA;IACA;IACD,CAAC;GAIA;GACD,CAAC;AAEF,SAAO;GACL,SAAS,cAAc;GACvB;GACA;GACA;GACA;GACD;;AAGL,QAAO;EACL,GAAG;EACH;EACA;EACA;EACA;EACA,0EAAuCf,yDAAsB,YAAY;EACzE;EACA,UAAU;GACR,aAAaA,yDAAsB;GACnC,MAAMA,yDAAsB;GAC7B;EACD;EACA;EACA;EACA;EACA;EACA,iBAAiB,SAASgB,4CAAkB,MAAM,UAAU;EAC5D;EACD;;;;;ACzOH,MAAa,yBAAyB;;;;;;;;;;AAWtC,MAAa,uBAAuB,8DAA2B,KAAW;AACxE,qDAAiB,EAAE,cAAc,wBAAwB,EAAE,OAAO,CAChE;AAGF,sDAAkB,EAAE,cAAc,wBAAwB,EAAE,OAAO;AACnE,6DAAkC,OAAO;CAEzC,MAAM,sFAAmD,OAAO;CAChE,MAAM,iBAAiB,+BAA+B,OAAO;AAE7D,wBAAuB,SAAS;EAC9B,UAAUC,qDAAuB;EACjC;EACD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as prepareJettonTransfer, d as registerTonNetworkProviderBuilder, f as createTonClient, i as prepareTonNativeTransfer, l as TON_CONNECT_PREFIX, o as DEFAULT_JETTON_GAS, s as DEFAULT_TIMEOUT, t as tonTransferAmount, u as TON_PROOF_PREFIX } from "./tonTransferAmount-
|
|
1
|
+
import { a as prepareJettonTransfer, d as registerTonNetworkProviderBuilder, f as createTonClient, i as prepareTonNativeTransfer, l as TON_CONNECT_PREFIX, o as DEFAULT_JETTON_GAS, s as DEFAULT_TIMEOUT, t as tonTransferAmount, u as TON_PROOF_PREFIX } from "./tonTransferAmount-5Ltz1PnK.esm.js";
|
|
2
2
|
import { WalletProviderPriority, assertDefined, consumeMfaTokenIfRequiredForAction, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getBuffer, getCore, getDefaultClient, getNetworkProviderFromNetworkId, getSignedSessionId, getWalletProviderRegistry, hasExtension, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
|
|
3
3
|
import { Address, Cell, WalletContractV5R1, beginCell } from "@ton/ton";
|
|
4
4
|
import { MFAAction, WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
|
|
@@ -467,4 +467,4 @@ const addWaasTonExtension = (client = getDefaultClient()) => {
|
|
|
467
467
|
|
|
468
468
|
//#endregion
|
|
469
469
|
export { TransactionExecutionFailedError as n, addWaasTonExtension as t };
|
|
470
|
-
//# sourceMappingURL=addWaasTonExtension-
|
|
470
|
+
//# sourceMappingURL=addWaasTonExtension-Bju5fVlY.esm.js.map
|
package/dist/{addWaasTonExtension-DiWbUG14.esm.js.map → addWaasTonExtension-Bju5fVlY.esm.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addWaasTonExtension-DiWbUG14.esm.js","names":["actions: OutActionSendMsg[]","getActiveNetworkId: WaasTonWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasTonWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasTonWalletProvider['getConnectedAddresses']","signMessage: WaasTonWalletProvider['signMessage']","sendTransaction: WaasTonWalletProvider['sendTransaction']","sendTon: WaasTonWalletProvider['sendTon']","sendJetton: WaasTonWalletProvider['sendJetton']","generateTonConnectProof: WaasTonWalletProvider['generateTonConnectProof']"],"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/** @notInstrumented */\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/** @notInstrumented */\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","/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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 * @notInstrumented\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/** @notInstrumented */\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 * @notInstrumented\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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"}
|
|
1
|
+
{"version":3,"file":"addWaasTonExtension-Bju5fVlY.esm.js","names":["actions: OutActionSendMsg[]","getActiveNetworkId: WaasTonWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasTonWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasTonWalletProvider['getConnectedAddresses']","signMessage: WaasTonWalletProvider['signMessage']","sendTransaction: WaasTonWalletProvider['sendTransaction']","sendTon: WaasTonWalletProvider['sendTon']","sendJetton: WaasTonWalletProvider['sendJetton']","generateTonConnectProof: WaasTonWalletProvider['generateTonConnectProof']"],"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/** @notInstrumented */\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/** @notInstrumented */\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","/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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/** @notInstrumented */\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 * @notInstrumented\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/** @notInstrumented */\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 * @notInstrumented\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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"}
|
|
@@ -7,12 +7,22 @@ type GenerateTonConnectProofParams = {
|
|
|
7
7
|
/**
|
|
8
8
|
* Generates a TonConnect proof for a wallet account.
|
|
9
9
|
*
|
|
10
|
-
* @
|
|
11
|
-
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const proof = await generateTonConnectProof({
|
|
13
|
+
* walletAccount: tonAccount,
|
|
14
|
+
* payload: 'nonce-abc123',
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @param params.payload - The proof payload (typically a nonce).
|
|
19
|
+
* @param params.walletAccount - The wallet account to generate the proof for.
|
|
12
20
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
13
|
-
* @returns The TonConnect proof containing address, domain, payload, signature, and timestamp
|
|
14
|
-
* @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider
|
|
15
|
-
* @throws {MethodNotImplementedError} If the wallet provider does not support generateTonConnectProof
|
|
21
|
+
* @returns The TonConnect proof containing address, domain, payload, signature, and timestamp.
|
|
22
|
+
* @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider.
|
|
23
|
+
* @throws {MethodNotImplementedError} If the wallet provider does not support generateTonConnectProof.
|
|
24
|
+
* @see isTonWalletAccount
|
|
25
|
+
* @see sendTransaction
|
|
16
26
|
* @notInstrumented
|
|
17
27
|
*/
|
|
18
28
|
export declare const generateTonConnectProof: ({ payload, walletAccount }: GenerateTonConnectProofParams, client?: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<TonConnectProof>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateTonConnectProof.d.ts","sourceRoot":"","sources":["../../src/generateTonConnectProof/generateTonConnectProof.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAIlE,KAAK,6BAA6B,GAAG;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"generateTonConnectProof.d.ts","sourceRoot":"","sources":["../../src/generateTonConnectProof/generateTonConnectProof.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAIlE,KAAK,6BAA6B,GAAG;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,uBAAuB,+BACN,6BAA6B,gEAExD,OAAO,CAAC,eAAe,CAezB,CAAC"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const require_tonTransferAmount = require('./tonTransferAmount-
|
|
2
|
-
const require_addTonConnectExtension = require('./addTonConnectExtension-
|
|
3
|
-
const require_addWaasTonExtension = require('./addWaasTonExtension-
|
|
1
|
+
const require_tonTransferAmount = require('./tonTransferAmount-ROBOHZEu.cjs');
|
|
2
|
+
const require_addTonConnectExtension = require('./addTonConnectExtension-BaTBqUGn.cjs');
|
|
3
|
+
const require_addWaasTonExtension = require('./addWaasTonExtension-BJ69G2y4.cjs');
|
|
4
4
|
let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
|
|
5
5
|
let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
|
|
6
6
|
let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
|
|
@@ -14,9 +14,18 @@ let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
|
|
|
14
14
|
* including external wallets (Tonkeeper, MyTonWallet, etc.) and embedded wallets
|
|
15
15
|
* managed by Dynamic's infrastructure.
|
|
16
16
|
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const client = createDynamicClient({ environmentId: 'env-123' });
|
|
20
|
+
* addTonExtension({}, client);
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
17
23
|
* @param [params] - Optional configuration forwarded to the TonConnect extension.
|
|
18
24
|
* @param [params.tonConnectUI] - An external TonConnectUI instance to reuse.
|
|
19
25
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
26
|
+
* @returns void
|
|
27
|
+
* @see isTonWalletAccount
|
|
28
|
+
* @see isTonNetworkProvider
|
|
20
29
|
* @notInstrumented
|
|
21
30
|
*/
|
|
22
31
|
const addTonExtension = (params = {}, client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
|
|
@@ -29,12 +38,22 @@ const addTonExtension = (params = {}, client = (0, _dynamic_labs_sdk_client_core
|
|
|
29
38
|
/**
|
|
30
39
|
* Generates a TonConnect proof for a wallet account.
|
|
31
40
|
*
|
|
32
|
-
* @
|
|
33
|
-
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* const proof = await generateTonConnectProof({
|
|
44
|
+
* walletAccount: tonAccount,
|
|
45
|
+
* payload: 'nonce-abc123',
|
|
46
|
+
* });
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @param params.payload - The proof payload (typically a nonce).
|
|
50
|
+
* @param params.walletAccount - The wallet account to generate the proof for.
|
|
34
51
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
35
|
-
* @returns The TonConnect proof containing address, domain, payload, signature, and timestamp
|
|
36
|
-
* @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider
|
|
37
|
-
* @throws {MethodNotImplementedError} If the wallet provider does not support generateTonConnectProof
|
|
52
|
+
* @returns The TonConnect proof containing address, domain, payload, signature, and timestamp.
|
|
53
|
+
* @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider.
|
|
54
|
+
* @throws {MethodNotImplementedError} If the wallet provider does not support generateTonConnectProof.
|
|
55
|
+
* @see isTonWalletAccount
|
|
56
|
+
* @see sendTransaction
|
|
38
57
|
* @notInstrumented
|
|
39
58
|
*/
|
|
40
59
|
const generateTonConnectProof = async ({ payload, walletAccount }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|
|
@@ -52,8 +71,17 @@ const generateTonConnectProof = async ({ payload, walletAccount }, client = (0,
|
|
|
52
71
|
/**
|
|
53
72
|
* Type guard function to check if a network provider is a TON network provider.
|
|
54
73
|
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```ts
|
|
76
|
+
* if (isTonNetworkProvider(networkProvider)) {
|
|
77
|
+
* const tonClient = networkProvider.getTonClient();
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
55
81
|
* @param networkProvider - The network provider to check.
|
|
56
82
|
* @returns True if the network provider is a TON network provider, false otherwise.
|
|
83
|
+
* @see isTonWalletAccount
|
|
84
|
+
* @see addTonExtension
|
|
57
85
|
* @notInstrumented
|
|
58
86
|
*/
|
|
59
87
|
const isTonNetworkProvider = (networkProvider) => networkProvider.chain === "TON";
|
|
@@ -63,8 +91,16 @@ const isTonNetworkProvider = (networkProvider) => networkProvider.chain === "TON
|
|
|
63
91
|
/**
|
|
64
92
|
* Type guard function to check if a wallet account is a TON wallet account.
|
|
65
93
|
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts
|
|
96
|
+
* const accounts = getWalletAccounts();
|
|
97
|
+
* const tonAccounts = accounts.filter(isTonWalletAccount);
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
66
100
|
* @param walletAccount - The wallet account to check.
|
|
67
101
|
* @returns True if the wallet account is a TON wallet account, false otherwise.
|
|
102
|
+
* @see isTonNetworkProvider
|
|
103
|
+
* @see addTonExtension
|
|
68
104
|
* @notInstrumented
|
|
69
105
|
*/
|
|
70
106
|
const isTonWalletAccount = (walletAccount) => walletAccount.chain === "TON";
|
|
@@ -74,11 +110,21 @@ const isTonWalletAccount = (walletAccount) => walletAccount.chain === "TON";
|
|
|
74
110
|
/**
|
|
75
111
|
* Sends a Jetton (TON token) transaction.
|
|
76
112
|
*
|
|
77
|
-
* @
|
|
78
|
-
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```ts
|
|
115
|
+
* const { hash } = await sendJetton({
|
|
116
|
+
* walletAccount: tonAccount,
|
|
117
|
+
* transaction: jettonTransfer,
|
|
118
|
+
* });
|
|
119
|
+
* ```
|
|
120
|
+
*
|
|
121
|
+
* @param params.transaction - The Jetton transaction to send.
|
|
122
|
+
* @param params.walletAccount - The wallet account to send the transaction from.
|
|
79
123
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
80
|
-
* @returns An object containing the transaction hash
|
|
81
|
-
* @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider
|
|
124
|
+
* @returns An object containing the transaction hash.
|
|
125
|
+
* @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider.
|
|
126
|
+
* @see sendTon
|
|
127
|
+
* @see sendTransaction
|
|
82
128
|
* @notInstrumented
|
|
83
129
|
*/
|
|
84
130
|
const sendJetton = async ({ walletAccount, transaction }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|
|
@@ -95,11 +141,21 @@ const sendJetton = async ({ walletAccount, transaction }, client = (0, _dynamic_
|
|
|
95
141
|
/**
|
|
96
142
|
* Sends a native TON transaction.
|
|
97
143
|
*
|
|
98
|
-
* @
|
|
99
|
-
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```ts
|
|
146
|
+
* const { hash } = await sendTon({
|
|
147
|
+
* walletAccount: tonAccount,
|
|
148
|
+
* transaction: nativeTransfer,
|
|
149
|
+
* });
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* @param params.transaction - The native TON transaction to send.
|
|
153
|
+
* @param params.walletAccount - The wallet account to send the transaction from.
|
|
100
154
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
101
|
-
* @returns An object containing the transaction hash
|
|
102
|
-
* @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider
|
|
155
|
+
* @returns An object containing the transaction hash.
|
|
156
|
+
* @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider.
|
|
157
|
+
* @see sendJetton
|
|
158
|
+
* @see sendTransaction
|
|
103
159
|
* @notInstrumented
|
|
104
160
|
*/
|
|
105
161
|
const sendTon = async ({ walletAccount, transaction }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|
|
@@ -116,11 +172,21 @@ const sendTon = async ({ walletAccount, transaction }, client = (0, _dynamic_lab
|
|
|
116
172
|
/**
|
|
117
173
|
* Sends a custom TON transaction with an arbitrary message payload.
|
|
118
174
|
*
|
|
119
|
-
* @
|
|
120
|
-
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```ts
|
|
177
|
+
* const { hash } = await sendTransaction({
|
|
178
|
+
* walletAccount: tonAccount,
|
|
179
|
+
* request: { messages: [{ address: 'EQ...', amount: '1000000000' }] },
|
|
180
|
+
* });
|
|
181
|
+
* ```
|
|
182
|
+
*
|
|
183
|
+
* @param params.request - The raw TON transaction request (messages, validUntil, etc.).
|
|
184
|
+
* @param params.walletAccount - The wallet account to send the transaction from.
|
|
121
185
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
122
|
-
* @returns An object containing the transaction hash
|
|
123
|
-
* @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider
|
|
186
|
+
* @returns An object containing the transaction hash.
|
|
187
|
+
* @throws {NotTonProviderError} If the wallet provider is not a TON wallet provider.
|
|
188
|
+
* @see sendTon
|
|
189
|
+
* @see sendJetton
|
|
124
190
|
* @notInstrumented
|
|
125
191
|
*/
|
|
126
192
|
const sendTransaction = async ({ request, walletAccount }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|