@dynamic-labs-sdk/tron 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.
Files changed (38) hide show
  1. package/dist/addTronExtension/addTronExtension.d.ts +10 -1
  2. package/dist/addTronExtension/addTronExtension.d.ts.map +1 -1
  3. package/dist/{addTronWalletAdaptersExtension-BBNMW8if.esm.js → addTronWalletAdaptersExtension-D7s8BCaT.esm.js} +2 -2
  4. package/dist/{addTronWalletAdaptersExtension-BBNMW8if.esm.js.map → addTronWalletAdaptersExtension-D7s8BCaT.esm.js.map} +1 -1
  5. package/dist/{addTronWalletAdaptersExtension-BvtCFk52.cjs → addTronWalletAdaptersExtension-O6v6XmV-.cjs} +2 -2
  6. package/dist/{addTronWalletAdaptersExtension-BvtCFk52.cjs.map → addTronWalletAdaptersExtension-O6v6XmV-.cjs.map} +1 -1
  7. package/dist/{addWaasTronExtension-BsGnwB_I.cjs → addWaasTronExtension-OL6TymZK.cjs} +2 -2
  8. package/dist/{addWaasTronExtension-BsGnwB_I.cjs.map → addWaasTronExtension-OL6TymZK.cjs.map} +1 -1
  9. package/dist/{addWaasTronExtension-DME6Hc0A.esm.js → addWaasTronExtension-tBdm8r9R.esm.js} +2 -2
  10. package/dist/{addWaasTronExtension-DME6Hc0A.esm.js.map → addWaasTronExtension-tBdm8r9R.esm.js.map} +1 -1
  11. package/dist/getTronWeb/getTronWeb.d.ts +10 -3
  12. package/dist/getTronWeb/getTronWeb.d.ts.map +1 -1
  13. package/dist/index.cjs +68 -13
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.esm.js +68 -13
  16. package/dist/index.esm.js.map +1 -1
  17. package/dist/isTronNetworkProvider/isTronNetworkProvider.d.ts +16 -1
  18. package/dist/isTronNetworkProvider/isTronNetworkProvider.d.ts.map +1 -1
  19. package/dist/isTronWalletAccount/isTronWalletAccount.d.ts +15 -1
  20. package/dist/isTronWalletAccount/isTronWalletAccount.d.ts.map +1 -1
  21. package/dist/isTronWalletProvider/isTronWalletProvider.d.ts +16 -1
  22. package/dist/isTronWalletProvider/isTronWalletProvider.d.ts.map +1 -1
  23. package/dist/sendTransaction/sendTransaction.d.ts +17 -5
  24. package/dist/sendTransaction/sendTransaction.d.ts.map +1 -1
  25. package/dist/{tronTransferAmount-D47NFqIu.cjs → tronTransferAmount-C48MZYe2.cjs} +33 -4
  26. package/dist/tronTransferAmount-C48MZYe2.cjs.map +1 -0
  27. package/dist/{tronTransferAmount-Cjye0AD7.esm.js → tronTransferAmount-D6YcQFhZ.esm.js} +33 -4
  28. package/dist/tronTransferAmount-D6YcQFhZ.esm.js.map +1 -0
  29. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  30. package/dist/utils/calculateTronTransactionFee/calculateTronTransactionFee.d.ts +15 -3
  31. package/dist/utils/calculateTronTransactionFee/calculateTronTransactionFee.d.ts.map +1 -1
  32. package/dist/waas.cjs +2 -2
  33. package/dist/waas.esm.js +2 -2
  34. package/dist/walletAdapters.cjs +2 -2
  35. package/dist/walletAdapters.esm.js +2 -2
  36. package/package.json +4 -4
  37. package/dist/tronTransferAmount-Cjye0AD7.esm.js.map +0 -1
  38. package/dist/tronTransferAmount-D47NFqIu.cjs.map +0 -1
@@ -6,8 +6,17 @@
6
6
  * including injected wallets (Tronlink, etc.) and embedded wallets managed by
7
7
  * Dynamic's infrastructure.
8
8
  *
9
+ * @example
10
+ * ```ts
11
+ * const client = createDynamicClient({ environmentId: 'env-123' });
12
+ * addTronExtension(client);
13
+ * ```
14
+ *
9
15
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
10
- * @notInstrumented
16
+ * @returns void
17
+ * @see isTronWalletAccount
18
+ * @see isTronNetworkProvider
19
+ * @notInstrumented
11
20
  */
12
21
  export declare const addTronExtension: (client?: import("@dynamic-labs-sdk/client").DynamicClient) => void;
13
22
  //# sourceMappingURL=addTronExtension.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"addTronExtension.d.ts","sourceRoot":"","sources":["../../src/addTronExtension/addTronExtension.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,iEAAkC,IAG9D,CAAC"}
1
+ {"version":3,"file":"addTronExtension.d.ts","sourceRoot":"","sources":["../../src/addTronExtension/addTronExtension.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,gBAAgB,iEAAkC,IAG9D,CAAC"}
@@ -1,4 +1,4 @@
1
- import { i as tronConfirmTransaction, r as tronExecuteSwapTransaction, s as registerTronNetworkProviderBuilder, t as tronTransferAmount } from "./tronTransferAmount-Cjye0AD7.esm.js";
1
+ import { i as tronConfirmTransaction, r as tronExecuteSwapTransaction, s as registerTronNetworkProviderBuilder, t as tronTransferAmount } from "./tronTransferAmount-D6YcQFhZ.esm.js";
2
2
  import { WalletProviderPriority, assertDefined, formatWalletProviderGroupKey, formatWalletProviderKey, getCore, getDefaultClient, getWalletProviderRegistry, hasExtension, registerExtension } from "@dynamic-labs-sdk/client/core";
3
3
  import { TronWeb } from "tronweb";
4
4
  import { assertWalletAccountSigningAvailability, getActiveNetworkData } from "@dynamic-labs-sdk/client";
@@ -131,4 +131,4 @@ const addTronWalletAdaptersExtension = (client = getDefaultClient()) => {
131
131
 
132
132
  //#endregion
133
133
  export { addTronWalletAdaptersExtension as t };
134
- //# sourceMappingURL=addTronWalletAdaptersExtension-BBNMW8if.esm.js.map
134
+ //# sourceMappingURL=addTronWalletAdaptersExtension-D7s8BCaT.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"addTronWalletAdaptersExtension-BBNMW8if.esm.js","names":["chain: Chain","metadata: WalletProviderMetadata","connect: TronWalletProvider['connect']","destroy: TronWalletProvider['destroy']","getActiveNetworkId: TronWalletProvider['getActiveNetworkId']","getConnectedAddresses: TronWalletProvider['getConnectedAddresses']","signMessage: TronWalletProvider['signMessage']","getTronWeb: TronWalletProvider['getTronWeb']","tronWalletProviders: TronWalletProvider[]"],"sources":["../src/utils/convertChainIdToDecimal/convertChainIdToDecimal.ts","../src/walletAdapters/utils/createWalletProviderForTronWalletAdapter/createWalletProviderForTronWalletAdapter.ts","../src/walletAdapters/addTronWalletAdaptersExtension/addTronWalletAdaptersExtension.ts"],"sourcesContent":["/** @notInstrumented */\nexport const convertChainIdToDecimal = (chainId: string): string =>\n chainId.startsWith('0x') ? parseInt(chainId, 16).toString() : chainId;\n","import {\n type Chain,\n type DynamicClient,\n type WalletProviderMetadata,\n assertWalletAccountSigningAvailability,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getCore,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport type { Adapter } from '@tronweb3/tronwallet-abstract-adapter';\nimport { WalletReadyState } from '@tronweb3/tronwallet-abstract-adapter';\nimport { TronWeb } from 'tronweb';\n\nimport type {\n TronAdapter,\n TronWalletProvider,\n} from '../../../TronWalletProvider.types';\nimport { convertChainIdToDecimal } from '../../../utils/convertChainIdToDecimal';\nimport { tronConfirmTransaction } from '../../../utils/tronConfirmTransaction';\nimport { tronExecuteSwapTransaction } from '../../../utils/tronExecuteSwapTransaction';\nimport { tronTransferAmount } from '../../../utils/tronTransferAmount';\n\ntype CreateWalletProviderForTronWalletAdapterParams = {\n adapter: Adapter;\n dynamicClient: DynamicClient;\n};\n\n/** @notInstrumented */\nexport const createWalletProviderForTronWalletAdapter = ({\n dynamicClient,\n adapter,\n}: CreateWalletProviderForTronWalletAdapterParams):\n | TronWalletProvider\n | undefined => {\n const chain: Chain = 'TRON';\n\n // we have to do this type cast because these adapters have the _wallet property private,\n // but we need to access it to get the TronWeb instance\n const tronAdapter = adapter as unknown as TronAdapter;\n\n // Wallet is not installed\n if (tronAdapter.readyState !== WalletReadyState.Found) {\n return undefined;\n }\n\n const metadata: WalletProviderMetadata = {\n displayName: tronAdapter.name,\n icon: tronAdapter.icon,\n };\n\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain,\n displayName: metadata.displayName,\n walletProviderType,\n });\n\n const connect: TronWalletProvider['connect'] = async () => {\n await tronAdapter.connect();\n\n // Some wallets (Trust, Bitget) populate the address asynchronously after connect()\n // Wait briefly for the address to be populated by the wallet\n const startTime = Date.now();\n while (!tronAdapter.address?.length && Date.now() - startTime < 1000) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n\n return {\n addresses: tronAdapter.address ? [{ address: tronAdapter.address }] : [],\n };\n };\n\n const destroy: TronWalletProvider['destroy'] = async () => {\n try {\n await tronAdapter.disconnect();\n } catch (err) {\n getCore(dynamicClient).logger.error(\n `[${key}] destroy: remote signal failed`,\n err\n );\n }\n };\n\n const getActiveNetworkId: TronWalletProvider['getActiveNetworkId'] =\n async () => {\n const networkInfo = await tronAdapter.network();\n\n const networkId = convertChainIdToDecimal(networkInfo.chainId);\n\n return { networkId };\n };\n\n const getConnectedAddresses: TronWalletProvider['getConnectedAddresses'] =\n async () => {\n return {\n addresses: tronAdapter.address ? [tronAdapter.address] : [],\n };\n };\n\n const signMessage: TronWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account not found');\n\n await assertWalletAccountSigningAvailability(\n { walletAccount },\n dynamicClient\n );\n\n const signedMessage = await tronAdapter.signMessage(message);\n\n return {\n signature: signedMessage,\n };\n };\n\n const getTronWeb: TronWalletProvider['getTronWeb'] = async ({\n walletAccount,\n }) => {\n const tronWeb =\n tronAdapter._wallet?.tronWeb || tronAdapter._wallet?.tron?.tronWeb;\n\n if (tronWeb) {\n return tronWeb;\n }\n\n const activeNetworkData = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n assertDefined(activeNetworkData, 'No active network data found');\n\n const url = activeNetworkData.networkData?.rpcUrls.http[0];\n assertDefined(url, 'No RPC URL found for active network');\n\n return new TronWeb({ fullHost: url });\n };\n\n return {\n chain,\n confirmTransaction: (args) => tronConfirmTransaction(args, dynamicClient),\n connect,\n destroy,\n executeSwapTransaction: (args) =>\n tronExecuteSwapTransaction(args, dynamicClient),\n getActiveNetworkId,\n getConnectedAddresses,\n getTronWeb,\n groupKey: formatWalletProviderGroupKey(metadata.displayName),\n key,\n metadata,\n signMessage,\n transferAmount: (args) => tronTransferAmount(args, dynamicClient),\n walletProviderType,\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n BitKeepAdapter,\n OkxWalletAdapter,\n TokenPocketAdapter,\n TronLinkAdapter,\n TrustAdapter,\n} from '@tronweb3/tronwallet-adapters';\n\nimport { registerTronNetworkProviderBuilder } from '../../registerTronNetworkProviderBuilder';\nimport type { TronWalletProvider } from '../../TronWalletProvider.types';\nimport { createWalletProviderForTronWalletAdapter } from '../utils/createWalletProviderForTronWalletAdapter';\n\nexport const TRON_WALLET_ADAPTERS_EXTENSION_KEY = 'tronWalletAdapters';\n\n/**\n * Adds the Tron Wallet Adapters extension to the Dynamic client.\n *\n * This extension enables integration with wallets that have related Tron Wallet Adapters ('@tronweb3/tronwallet-adapters'),\n * automatically registering compatible wallets for use with the Dynamic SDK.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @notInstrumented\n */\nexport const addTronWalletAdaptersExtension = (\n client = getDefaultClient()\n): void => {\n if (\n hasExtension({ extensionKey: TRON_WALLET_ADAPTERS_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension(\n { extensionKey: TRON_WALLET_ADAPTERS_EXTENSION_KEY },\n client\n );\n\n registerTronNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const tronWalletProviders: TronWalletProvider[] = [];\n\n // Create and register OKX wallet provider\n const okxWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new OkxWalletAdapter(),\n dynamicClient: client,\n });\n if (okxWalletProvider) {\n tronWalletProviders.push(okxWalletProvider);\n }\n\n // Create and register TronLink wallet provider\n const tronLinkWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new TronLinkAdapter(),\n dynamicClient: client,\n });\n if (tronLinkWalletProvider) {\n tronWalletProviders.push(tronLinkWalletProvider);\n }\n\n // Create and register Trust wallet provider\n const trustWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new TrustAdapter(),\n dynamicClient: client,\n });\n if (trustWalletProvider) {\n tronWalletProviders.push(trustWalletProvider);\n }\n\n // Create and register TokenPocket wallet provider\n const tokenPocketWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new TokenPocketAdapter(),\n dynamicClient: client,\n });\n if (tokenPocketWalletProvider) {\n tronWalletProviders.push(tokenPocketWalletProvider);\n }\n\n // Create and register Bitget wallet provider\n const bitgetWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new BitKeepAdapter(),\n dynamicClient: client,\n });\n if (bitgetWalletProvider) {\n tronWalletProviders.push(bitgetWalletProvider);\n }\n\n tronWalletProviders.forEach((walletProvider) => {\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"addTronWalletAdaptersExtension-D7s8BCaT.esm.js","names":["chain: Chain","metadata: WalletProviderMetadata","connect: TronWalletProvider['connect']","destroy: TronWalletProvider['destroy']","getActiveNetworkId: TronWalletProvider['getActiveNetworkId']","getConnectedAddresses: TronWalletProvider['getConnectedAddresses']","signMessage: TronWalletProvider['signMessage']","getTronWeb: TronWalletProvider['getTronWeb']","tronWalletProviders: TronWalletProvider[]"],"sources":["../src/utils/convertChainIdToDecimal/convertChainIdToDecimal.ts","../src/walletAdapters/utils/createWalletProviderForTronWalletAdapter/createWalletProviderForTronWalletAdapter.ts","../src/walletAdapters/addTronWalletAdaptersExtension/addTronWalletAdaptersExtension.ts"],"sourcesContent":["/** @notInstrumented */\nexport const convertChainIdToDecimal = (chainId: string): string =>\n chainId.startsWith('0x') ? parseInt(chainId, 16).toString() : chainId;\n","import {\n type Chain,\n type DynamicClient,\n type WalletProviderMetadata,\n assertWalletAccountSigningAvailability,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getCore,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport type { Adapter } from '@tronweb3/tronwallet-abstract-adapter';\nimport { WalletReadyState } from '@tronweb3/tronwallet-abstract-adapter';\nimport { TronWeb } from 'tronweb';\n\nimport type {\n TronAdapter,\n TronWalletProvider,\n} from '../../../TronWalletProvider.types';\nimport { convertChainIdToDecimal } from '../../../utils/convertChainIdToDecimal';\nimport { tronConfirmTransaction } from '../../../utils/tronConfirmTransaction';\nimport { tronExecuteSwapTransaction } from '../../../utils/tronExecuteSwapTransaction';\nimport { tronTransferAmount } from '../../../utils/tronTransferAmount';\n\ntype CreateWalletProviderForTronWalletAdapterParams = {\n adapter: Adapter;\n dynamicClient: DynamicClient;\n};\n\n/** @notInstrumented */\nexport const createWalletProviderForTronWalletAdapter = ({\n dynamicClient,\n adapter,\n}: CreateWalletProviderForTronWalletAdapterParams):\n | TronWalletProvider\n | undefined => {\n const chain: Chain = 'TRON';\n\n // we have to do this type cast because these adapters have the _wallet property private,\n // but we need to access it to get the TronWeb instance\n const tronAdapter = adapter as unknown as TronAdapter;\n\n // Wallet is not installed\n if (tronAdapter.readyState !== WalletReadyState.Found) {\n return undefined;\n }\n\n const metadata: WalletProviderMetadata = {\n displayName: tronAdapter.name,\n icon: tronAdapter.icon,\n };\n\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain,\n displayName: metadata.displayName,\n walletProviderType,\n });\n\n const connect: TronWalletProvider['connect'] = async () => {\n await tronAdapter.connect();\n\n // Some wallets (Trust, Bitget) populate the address asynchronously after connect()\n // Wait briefly for the address to be populated by the wallet\n const startTime = Date.now();\n while (!tronAdapter.address?.length && Date.now() - startTime < 1000) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n\n return {\n addresses: tronAdapter.address ? [{ address: tronAdapter.address }] : [],\n };\n };\n\n const destroy: TronWalletProvider['destroy'] = async () => {\n try {\n await tronAdapter.disconnect();\n } catch (err) {\n getCore(dynamicClient).logger.error(\n `[${key}] destroy: remote signal failed`,\n err\n );\n }\n };\n\n const getActiveNetworkId: TronWalletProvider['getActiveNetworkId'] =\n async () => {\n const networkInfo = await tronAdapter.network();\n\n const networkId = convertChainIdToDecimal(networkInfo.chainId);\n\n return { networkId };\n };\n\n const getConnectedAddresses: TronWalletProvider['getConnectedAddresses'] =\n async () => {\n return {\n addresses: tronAdapter.address ? [tronAdapter.address] : [],\n };\n };\n\n const signMessage: TronWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account not found');\n\n await assertWalletAccountSigningAvailability(\n { walletAccount },\n dynamicClient\n );\n\n const signedMessage = await tronAdapter.signMessage(message);\n\n return {\n signature: signedMessage,\n };\n };\n\n const getTronWeb: TronWalletProvider['getTronWeb'] = async ({\n walletAccount,\n }) => {\n const tronWeb =\n tronAdapter._wallet?.tronWeb || tronAdapter._wallet?.tron?.tronWeb;\n\n if (tronWeb) {\n return tronWeb;\n }\n\n const activeNetworkData = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n assertDefined(activeNetworkData, 'No active network data found');\n\n const url = activeNetworkData.networkData?.rpcUrls.http[0];\n assertDefined(url, 'No RPC URL found for active network');\n\n return new TronWeb({ fullHost: url });\n };\n\n return {\n chain,\n confirmTransaction: (args) => tronConfirmTransaction(args, dynamicClient),\n connect,\n destroy,\n executeSwapTransaction: (args) =>\n tronExecuteSwapTransaction(args, dynamicClient),\n getActiveNetworkId,\n getConnectedAddresses,\n getTronWeb,\n groupKey: formatWalletProviderGroupKey(metadata.displayName),\n key,\n metadata,\n signMessage,\n transferAmount: (args) => tronTransferAmount(args, dynamicClient),\n walletProviderType,\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n BitKeepAdapter,\n OkxWalletAdapter,\n TokenPocketAdapter,\n TronLinkAdapter,\n TrustAdapter,\n} from '@tronweb3/tronwallet-adapters';\n\nimport { registerTronNetworkProviderBuilder } from '../../registerTronNetworkProviderBuilder';\nimport type { TronWalletProvider } from '../../TronWalletProvider.types';\nimport { createWalletProviderForTronWalletAdapter } from '../utils/createWalletProviderForTronWalletAdapter';\n\nexport const TRON_WALLET_ADAPTERS_EXTENSION_KEY = 'tronWalletAdapters';\n\n/**\n * Adds the Tron Wallet Adapters extension to the Dynamic client.\n *\n * This extension enables integration with wallets that have related Tron Wallet Adapters ('@tronweb3/tronwallet-adapters'),\n * automatically registering compatible wallets for use with the Dynamic SDK.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @notInstrumented\n */\nexport const addTronWalletAdaptersExtension = (\n client = getDefaultClient()\n): void => {\n if (\n hasExtension({ extensionKey: TRON_WALLET_ADAPTERS_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension(\n { extensionKey: TRON_WALLET_ADAPTERS_EXTENSION_KEY },\n client\n );\n\n registerTronNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const tronWalletProviders: TronWalletProvider[] = [];\n\n // Create and register OKX wallet provider\n const okxWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new OkxWalletAdapter(),\n dynamicClient: client,\n });\n if (okxWalletProvider) {\n tronWalletProviders.push(okxWalletProvider);\n }\n\n // Create and register TronLink wallet provider\n const tronLinkWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new TronLinkAdapter(),\n dynamicClient: client,\n });\n if (tronLinkWalletProvider) {\n tronWalletProviders.push(tronLinkWalletProvider);\n }\n\n // Create and register Trust wallet provider\n const trustWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new TrustAdapter(),\n dynamicClient: client,\n });\n if (trustWalletProvider) {\n tronWalletProviders.push(trustWalletProvider);\n }\n\n // Create and register TokenPocket wallet provider\n const tokenPocketWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new TokenPocketAdapter(),\n dynamicClient: client,\n });\n if (tokenPocketWalletProvider) {\n tronWalletProviders.push(tokenPocketWalletProvider);\n }\n\n // Create and register Bitget wallet provider\n const bitgetWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new BitKeepAdapter(),\n dynamicClient: client,\n });\n if (bitgetWalletProvider) {\n tronWalletProviders.push(bitgetWalletProvider);\n }\n\n tronWalletProviders.forEach((walletProvider) => {\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n};\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- const require_tronTransferAmount = require('./tronTransferAmount-D47NFqIu.cjs');
1
+ const require_tronTransferAmount = require('./tronTransferAmount-C48MZYe2.cjs');
2
2
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
3
3
  let tronweb = require("tronweb");
4
4
  let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
@@ -136,4 +136,4 @@ Object.defineProperty(exports, 'addTronWalletAdaptersExtension', {
136
136
  return addTronWalletAdaptersExtension;
137
137
  }
138
138
  });
139
- //# sourceMappingURL=addTronWalletAdaptersExtension-BvtCFk52.cjs.map
139
+ //# sourceMappingURL=addTronWalletAdaptersExtension-O6v6XmV-.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"addTronWalletAdaptersExtension-BvtCFk52.cjs","names":["chain: Chain","WalletReadyState","metadata: WalletProviderMetadata","WalletProviderEnum","connect: TronWalletProvider['connect']","destroy: TronWalletProvider['destroy']","getActiveNetworkId: TronWalletProvider['getActiveNetworkId']","getConnectedAddresses: TronWalletProvider['getConnectedAddresses']","signMessage: TronWalletProvider['signMessage']","getTronWeb: TronWalletProvider['getTronWeb']","TronWeb","tronConfirmTransaction","tronExecuteSwapTransaction","tronTransferAmount","tronWalletProviders: TronWalletProvider[]","OkxWalletAdapter","TronLinkAdapter","TrustAdapter","TokenPocketAdapter","BitKeepAdapter","WalletProviderPriority"],"sources":["../src/utils/convertChainIdToDecimal/convertChainIdToDecimal.ts","../src/walletAdapters/utils/createWalletProviderForTronWalletAdapter/createWalletProviderForTronWalletAdapter.ts","../src/walletAdapters/addTronWalletAdaptersExtension/addTronWalletAdaptersExtension.ts"],"sourcesContent":["/** @notInstrumented */\nexport const convertChainIdToDecimal = (chainId: string): string =>\n chainId.startsWith('0x') ? parseInt(chainId, 16).toString() : chainId;\n","import {\n type Chain,\n type DynamicClient,\n type WalletProviderMetadata,\n assertWalletAccountSigningAvailability,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getCore,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport type { Adapter } from '@tronweb3/tronwallet-abstract-adapter';\nimport { WalletReadyState } from '@tronweb3/tronwallet-abstract-adapter';\nimport { TronWeb } from 'tronweb';\n\nimport type {\n TronAdapter,\n TronWalletProvider,\n} from '../../../TronWalletProvider.types';\nimport { convertChainIdToDecimal } from '../../../utils/convertChainIdToDecimal';\nimport { tronConfirmTransaction } from '../../../utils/tronConfirmTransaction';\nimport { tronExecuteSwapTransaction } from '../../../utils/tronExecuteSwapTransaction';\nimport { tronTransferAmount } from '../../../utils/tronTransferAmount';\n\ntype CreateWalletProviderForTronWalletAdapterParams = {\n adapter: Adapter;\n dynamicClient: DynamicClient;\n};\n\n/** @notInstrumented */\nexport const createWalletProviderForTronWalletAdapter = ({\n dynamicClient,\n adapter,\n}: CreateWalletProviderForTronWalletAdapterParams):\n | TronWalletProvider\n | undefined => {\n const chain: Chain = 'TRON';\n\n // we have to do this type cast because these adapters have the _wallet property private,\n // but we need to access it to get the TronWeb instance\n const tronAdapter = adapter as unknown as TronAdapter;\n\n // Wallet is not installed\n if (tronAdapter.readyState !== WalletReadyState.Found) {\n return undefined;\n }\n\n const metadata: WalletProviderMetadata = {\n displayName: tronAdapter.name,\n icon: tronAdapter.icon,\n };\n\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain,\n displayName: metadata.displayName,\n walletProviderType,\n });\n\n const connect: TronWalletProvider['connect'] = async () => {\n await tronAdapter.connect();\n\n // Some wallets (Trust, Bitget) populate the address asynchronously after connect()\n // Wait briefly for the address to be populated by the wallet\n const startTime = Date.now();\n while (!tronAdapter.address?.length && Date.now() - startTime < 1000) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n\n return {\n addresses: tronAdapter.address ? [{ address: tronAdapter.address }] : [],\n };\n };\n\n const destroy: TronWalletProvider['destroy'] = async () => {\n try {\n await tronAdapter.disconnect();\n } catch (err) {\n getCore(dynamicClient).logger.error(\n `[${key}] destroy: remote signal failed`,\n err\n );\n }\n };\n\n const getActiveNetworkId: TronWalletProvider['getActiveNetworkId'] =\n async () => {\n const networkInfo = await tronAdapter.network();\n\n const networkId = convertChainIdToDecimal(networkInfo.chainId);\n\n return { networkId };\n };\n\n const getConnectedAddresses: TronWalletProvider['getConnectedAddresses'] =\n async () => {\n return {\n addresses: tronAdapter.address ? [tronAdapter.address] : [],\n };\n };\n\n const signMessage: TronWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account not found');\n\n await assertWalletAccountSigningAvailability(\n { walletAccount },\n dynamicClient\n );\n\n const signedMessage = await tronAdapter.signMessage(message);\n\n return {\n signature: signedMessage,\n };\n };\n\n const getTronWeb: TronWalletProvider['getTronWeb'] = async ({\n walletAccount,\n }) => {\n const tronWeb =\n tronAdapter._wallet?.tronWeb || tronAdapter._wallet?.tron?.tronWeb;\n\n if (tronWeb) {\n return tronWeb;\n }\n\n const activeNetworkData = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n assertDefined(activeNetworkData, 'No active network data found');\n\n const url = activeNetworkData.networkData?.rpcUrls.http[0];\n assertDefined(url, 'No RPC URL found for active network');\n\n return new TronWeb({ fullHost: url });\n };\n\n return {\n chain,\n confirmTransaction: (args) => tronConfirmTransaction(args, dynamicClient),\n connect,\n destroy,\n executeSwapTransaction: (args) =>\n tronExecuteSwapTransaction(args, dynamicClient),\n getActiveNetworkId,\n getConnectedAddresses,\n getTronWeb,\n groupKey: formatWalletProviderGroupKey(metadata.displayName),\n key,\n metadata,\n signMessage,\n transferAmount: (args) => tronTransferAmount(args, dynamicClient),\n walletProviderType,\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n BitKeepAdapter,\n OkxWalletAdapter,\n TokenPocketAdapter,\n TronLinkAdapter,\n TrustAdapter,\n} from '@tronweb3/tronwallet-adapters';\n\nimport { registerTronNetworkProviderBuilder } from '../../registerTronNetworkProviderBuilder';\nimport type { TronWalletProvider } from '../../TronWalletProvider.types';\nimport { createWalletProviderForTronWalletAdapter } from '../utils/createWalletProviderForTronWalletAdapter';\n\nexport const TRON_WALLET_ADAPTERS_EXTENSION_KEY = 'tronWalletAdapters';\n\n/**\n * Adds the Tron Wallet Adapters extension to the Dynamic client.\n *\n * This extension enables integration with wallets that have related Tron Wallet Adapters ('@tronweb3/tronwallet-adapters'),\n * automatically registering compatible wallets for use with the Dynamic SDK.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @notInstrumented\n */\nexport const addTronWalletAdaptersExtension = (\n client = getDefaultClient()\n): void => {\n if (\n hasExtension({ extensionKey: TRON_WALLET_ADAPTERS_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension(\n { extensionKey: TRON_WALLET_ADAPTERS_EXTENSION_KEY },\n client\n );\n\n registerTronNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const tronWalletProviders: TronWalletProvider[] = [];\n\n // Create and register OKX wallet provider\n const okxWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new OkxWalletAdapter(),\n dynamicClient: client,\n });\n if (okxWalletProvider) {\n tronWalletProviders.push(okxWalletProvider);\n }\n\n // Create and register TronLink wallet provider\n const tronLinkWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new TronLinkAdapter(),\n dynamicClient: client,\n });\n if (tronLinkWalletProvider) {\n tronWalletProviders.push(tronLinkWalletProvider);\n }\n\n // Create and register Trust wallet provider\n const trustWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new TrustAdapter(),\n dynamicClient: client,\n });\n if (trustWalletProvider) {\n tronWalletProviders.push(trustWalletProvider);\n }\n\n // Create and register TokenPocket wallet provider\n const tokenPocketWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new TokenPocketAdapter(),\n dynamicClient: client,\n });\n if (tokenPocketWalletProvider) {\n tronWalletProviders.push(tokenPocketWalletProvider);\n }\n\n // Create and register Bitget wallet provider\n const bitgetWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new BitKeepAdapter(),\n dynamicClient: client,\n });\n if (bitgetWalletProvider) {\n tronWalletProviders.push(bitgetWalletProvider);\n }\n\n tronWalletProviders.forEach((walletProvider) => {\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n};\n"],"mappings":";;;;;;;;;;AACA,MAAa,2BAA2B,YACtC,QAAQ,WAAW,KAAK,GAAG,SAAS,SAAS,GAAG,CAAC,UAAU,GAAG;;;;;AC+BhE,MAAa,4CAA4C,EACvD,eACA,cAGe;CACf,MAAMA,QAAe;CAIrB,MAAM,cAAc;AAGpB,KAAI,YAAY,eAAeC,uDAAiB,MAC9C;CAGF,MAAMC,WAAmC;EACvC,aAAa,YAAY;EACzB,MAAM,YAAY;EACnB;CAED,MAAM,qBAAqBC,8CAAmB;CAE9C,MAAM,iEAA8B;EAClC;EACA,aAAa,SAAS;EACtB;EACD,CAAC;CAEF,MAAMC,UAAyC,YAAY;AACzD,QAAM,YAAY,SAAS;EAI3B,MAAM,YAAY,KAAK,KAAK;AAC5B,SAAO,CAAC,YAAY,SAAS,UAAU,KAAK,KAAK,GAAG,YAAY,IAC9D,OAAM,IAAI,SAAS,YAAY,WAAW,SAAS,GAAG,CAAC;AAGzD,SAAO,EACL,WAAW,YAAY,UAAU,CAAC,EAAE,SAAS,YAAY,SAAS,CAAC,GAAG,EAAE,EACzE;;CAGH,MAAMC,UAAyC,YAAY;AACzD,MAAI;AACF,SAAM,YAAY,YAAY;WACvB,KAAK;AACZ,8CAAQ,cAAc,CAAC,OAAO,MAC5B,IAAI,IAAI,kCACR,IACD;;;CAIL,MAAMC,qBACJ,YAAY;AAKV,SAAO,EAAE,WAFS,yBAFE,MAAM,YAAY,SAAS,EAEO,QAAQ,EAE1C;;CAGxB,MAAMC,wBACJ,YAAY;AACV,SAAO,EACL,WAAW,YAAY,UAAU,CAAC,YAAY,QAAQ,GAAG,EAAE,EAC5D;;CAGL,MAAMC,cAAiD,OAAO,EAC5D,SACA,oBACI;AACJ,mDAAc,eAAe,2BAA2B;AAExD,6EACE,EAAE,eAAe,EACjB,cACD;AAID,SAAO,EACL,WAHoB,MAAM,YAAY,YAAY,QAAQ,EAI3D;;CAGH,MAAMC,aAA+C,OAAO,EAC1D,oBACI;EACJ,MAAM,UACJ,YAAY,SAAS,WAAW,YAAY,SAAS,MAAM;AAE7D,MAAI,QACF,QAAO;EAGT,MAAM,oBAAoB,yDACxB,EAAE,eAAe,EACjB,cACD;AACD,mDAAc,mBAAmB,+BAA+B;EAEhE,MAAM,MAAM,kBAAkB,aAAa,QAAQ,KAAK;AACxD,mDAAc,KAAK,sCAAsC;AAEzD,SAAO,IAAIC,gBAAQ,EAAE,UAAU,KAAK,CAAC;;AAGvC,QAAO;EACL;EACA,qBAAqB,SAASC,kDAAuB,MAAM,cAAc;EACzE;EACA;EACA,yBAAyB,SACvBC,sDAA2B,MAAM,cAAc;EACjD;EACA;EACA;EACA,0EAAuC,SAAS,YAAY;EAC5D;EACA;EACA;EACA,iBAAiB,SAASC,8CAAmB,MAAM,cAAc;EACjE;EACD;;;;;AC9IH,MAAa,qCAAqC;;;;;;;;;;AAWlD,MAAa,kCACX,8DAA2B,KAClB;AACT,qDACe,EAAE,cAAc,oCAAoC,EAAE,OAAO,CAE1E;AAGF,sDACE,EAAE,cAAc,oCAAoC,EACpD,OACD;AAED,+DAAmC,OAAO;CAE1C,MAAM,sFAAmD,OAAO;CAEhE,MAAMC,sBAA4C,EAAE;CAGpD,MAAM,oBAAoB,yCAAyC;EACjE,SAAS,IAAIC,gDAAkB;EAC/B,eAAe;EAChB,CAAC;AACF,KAAI,kBACF,qBAAoB,KAAK,kBAAkB;CAI7C,MAAM,yBAAyB,yCAAyC;EACtE,SAAS,IAAIC,+CAAiB;EAC9B,eAAe;EAChB,CAAC;AACF,KAAI,uBACF,qBAAoB,KAAK,uBAAuB;CAIlD,MAAM,sBAAsB,yCAAyC;EACnE,SAAS,IAAIC,4CAAc;EAC3B,eAAe;EAChB,CAAC;AACF,KAAI,oBACF,qBAAoB,KAAK,oBAAoB;CAI/C,MAAM,4BAA4B,yCAAyC;EACzE,SAAS,IAAIC,kDAAoB;EACjC,eAAe;EAChB,CAAC;AACF,KAAI,0BACF,qBAAoB,KAAK,0BAA0B;CAIrD,MAAM,uBAAuB,yCAAyC;EACpE,SAAS,IAAIC,8CAAgB;EAC7B,eAAe;EAChB,CAAC;AACF,KAAI,qBACF,qBAAoB,KAAK,qBAAqB;AAGhD,qBAAoB,SAAS,mBAAmB;AAC9C,yBAAuB,SAAS;GAC9B,UAAUC,qDAAuB;GACjC;GACD,CAAC;GACF"}
1
+ {"version":3,"file":"addTronWalletAdaptersExtension-O6v6XmV-.cjs","names":["chain: Chain","WalletReadyState","metadata: WalletProviderMetadata","WalletProviderEnum","connect: TronWalletProvider['connect']","destroy: TronWalletProvider['destroy']","getActiveNetworkId: TronWalletProvider['getActiveNetworkId']","getConnectedAddresses: TronWalletProvider['getConnectedAddresses']","signMessage: TronWalletProvider['signMessage']","getTronWeb: TronWalletProvider['getTronWeb']","TronWeb","tronConfirmTransaction","tronExecuteSwapTransaction","tronTransferAmount","tronWalletProviders: TronWalletProvider[]","OkxWalletAdapter","TronLinkAdapter","TrustAdapter","TokenPocketAdapter","BitKeepAdapter","WalletProviderPriority"],"sources":["../src/utils/convertChainIdToDecimal/convertChainIdToDecimal.ts","../src/walletAdapters/utils/createWalletProviderForTronWalletAdapter/createWalletProviderForTronWalletAdapter.ts","../src/walletAdapters/addTronWalletAdaptersExtension/addTronWalletAdaptersExtension.ts"],"sourcesContent":["/** @notInstrumented */\nexport const convertChainIdToDecimal = (chainId: string): string =>\n chainId.startsWith('0x') ? parseInt(chainId, 16).toString() : chainId;\n","import {\n type Chain,\n type DynamicClient,\n type WalletProviderMetadata,\n assertWalletAccountSigningAvailability,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getCore,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport type { Adapter } from '@tronweb3/tronwallet-abstract-adapter';\nimport { WalletReadyState } from '@tronweb3/tronwallet-abstract-adapter';\nimport { TronWeb } from 'tronweb';\n\nimport type {\n TronAdapter,\n TronWalletProvider,\n} from '../../../TronWalletProvider.types';\nimport { convertChainIdToDecimal } from '../../../utils/convertChainIdToDecimal';\nimport { tronConfirmTransaction } from '../../../utils/tronConfirmTransaction';\nimport { tronExecuteSwapTransaction } from '../../../utils/tronExecuteSwapTransaction';\nimport { tronTransferAmount } from '../../../utils/tronTransferAmount';\n\ntype CreateWalletProviderForTronWalletAdapterParams = {\n adapter: Adapter;\n dynamicClient: DynamicClient;\n};\n\n/** @notInstrumented */\nexport const createWalletProviderForTronWalletAdapter = ({\n dynamicClient,\n adapter,\n}: CreateWalletProviderForTronWalletAdapterParams):\n | TronWalletProvider\n | undefined => {\n const chain: Chain = 'TRON';\n\n // we have to do this type cast because these adapters have the _wallet property private,\n // but we need to access it to get the TronWeb instance\n const tronAdapter = adapter as unknown as TronAdapter;\n\n // Wallet is not installed\n if (tronAdapter.readyState !== WalletReadyState.Found) {\n return undefined;\n }\n\n const metadata: WalletProviderMetadata = {\n displayName: tronAdapter.name,\n icon: tronAdapter.icon,\n };\n\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain,\n displayName: metadata.displayName,\n walletProviderType,\n });\n\n const connect: TronWalletProvider['connect'] = async () => {\n await tronAdapter.connect();\n\n // Some wallets (Trust, Bitget) populate the address asynchronously after connect()\n // Wait briefly for the address to be populated by the wallet\n const startTime = Date.now();\n while (!tronAdapter.address?.length && Date.now() - startTime < 1000) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n\n return {\n addresses: tronAdapter.address ? [{ address: tronAdapter.address }] : [],\n };\n };\n\n const destroy: TronWalletProvider['destroy'] = async () => {\n try {\n await tronAdapter.disconnect();\n } catch (err) {\n getCore(dynamicClient).logger.error(\n `[${key}] destroy: remote signal failed`,\n err\n );\n }\n };\n\n const getActiveNetworkId: TronWalletProvider['getActiveNetworkId'] =\n async () => {\n const networkInfo = await tronAdapter.network();\n\n const networkId = convertChainIdToDecimal(networkInfo.chainId);\n\n return { networkId };\n };\n\n const getConnectedAddresses: TronWalletProvider['getConnectedAddresses'] =\n async () => {\n return {\n addresses: tronAdapter.address ? [tronAdapter.address] : [],\n };\n };\n\n const signMessage: TronWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account not found');\n\n await assertWalletAccountSigningAvailability(\n { walletAccount },\n dynamicClient\n );\n\n const signedMessage = await tronAdapter.signMessage(message);\n\n return {\n signature: signedMessage,\n };\n };\n\n const getTronWeb: TronWalletProvider['getTronWeb'] = async ({\n walletAccount,\n }) => {\n const tronWeb =\n tronAdapter._wallet?.tronWeb || tronAdapter._wallet?.tron?.tronWeb;\n\n if (tronWeb) {\n return tronWeb;\n }\n\n const activeNetworkData = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n assertDefined(activeNetworkData, 'No active network data found');\n\n const url = activeNetworkData.networkData?.rpcUrls.http[0];\n assertDefined(url, 'No RPC URL found for active network');\n\n return new TronWeb({ fullHost: url });\n };\n\n return {\n chain,\n confirmTransaction: (args) => tronConfirmTransaction(args, dynamicClient),\n connect,\n destroy,\n executeSwapTransaction: (args) =>\n tronExecuteSwapTransaction(args, dynamicClient),\n getActiveNetworkId,\n getConnectedAddresses,\n getTronWeb,\n groupKey: formatWalletProviderGroupKey(metadata.displayName),\n key,\n metadata,\n signMessage,\n transferAmount: (args) => tronTransferAmount(args, dynamicClient),\n walletProviderType,\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n BitKeepAdapter,\n OkxWalletAdapter,\n TokenPocketAdapter,\n TronLinkAdapter,\n TrustAdapter,\n} from '@tronweb3/tronwallet-adapters';\n\nimport { registerTronNetworkProviderBuilder } from '../../registerTronNetworkProviderBuilder';\nimport type { TronWalletProvider } from '../../TronWalletProvider.types';\nimport { createWalletProviderForTronWalletAdapter } from '../utils/createWalletProviderForTronWalletAdapter';\n\nexport const TRON_WALLET_ADAPTERS_EXTENSION_KEY = 'tronWalletAdapters';\n\n/**\n * Adds the Tron Wallet Adapters extension to the Dynamic client.\n *\n * This extension enables integration with wallets that have related Tron Wallet Adapters ('@tronweb3/tronwallet-adapters'),\n * automatically registering compatible wallets for use with the Dynamic SDK.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @notInstrumented\n */\nexport const addTronWalletAdaptersExtension = (\n client = getDefaultClient()\n): void => {\n if (\n hasExtension({ extensionKey: TRON_WALLET_ADAPTERS_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension(\n { extensionKey: TRON_WALLET_ADAPTERS_EXTENSION_KEY },\n client\n );\n\n registerTronNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const tronWalletProviders: TronWalletProvider[] = [];\n\n // Create and register OKX wallet provider\n const okxWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new OkxWalletAdapter(),\n dynamicClient: client,\n });\n if (okxWalletProvider) {\n tronWalletProviders.push(okxWalletProvider);\n }\n\n // Create and register TronLink wallet provider\n const tronLinkWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new TronLinkAdapter(),\n dynamicClient: client,\n });\n if (tronLinkWalletProvider) {\n tronWalletProviders.push(tronLinkWalletProvider);\n }\n\n // Create and register Trust wallet provider\n const trustWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new TrustAdapter(),\n dynamicClient: client,\n });\n if (trustWalletProvider) {\n tronWalletProviders.push(trustWalletProvider);\n }\n\n // Create and register TokenPocket wallet provider\n const tokenPocketWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new TokenPocketAdapter(),\n dynamicClient: client,\n });\n if (tokenPocketWalletProvider) {\n tronWalletProviders.push(tokenPocketWalletProvider);\n }\n\n // Create and register Bitget wallet provider\n const bitgetWalletProvider = createWalletProviderForTronWalletAdapter({\n adapter: new BitKeepAdapter(),\n dynamicClient: client,\n });\n if (bitgetWalletProvider) {\n tronWalletProviders.push(bitgetWalletProvider);\n }\n\n tronWalletProviders.forEach((walletProvider) => {\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n};\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- const require_tronTransferAmount = require('./tronTransferAmount-D47NFqIu.cjs');
1
+ const require_tronTransferAmount = require('./tronTransferAmount-C48MZYe2.cjs');
2
2
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
3
3
  let tronweb = require("tronweb");
4
4
  let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
@@ -113,4 +113,4 @@ Object.defineProperty(exports, 'addWaasTronExtension', {
113
113
  return addWaasTronExtension;
114
114
  }
115
115
  });
116
- //# sourceMappingURL=addWaasTronExtension-BsGnwB_I.cjs.map
116
+ //# sourceMappingURL=addWaasTronExtension-OL6TymZK.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"addWaasTronExtension-BsGnwB_I.cjs","names":["TRON_CHAIN: Chain","WalletProviderEnum","DYNAMIC_WAAS_METADATA","getActiveNetworkId: WaasTronWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasTronWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasTronWalletProvider['getConnectedAddresses']","signMessage: WaasTronWalletProvider['signMessage']","TronWeb","getTronWeb: WaasTronWalletProvider['getTronWeb']","destroy: WaasTronWalletProvider['destroy']","tronConfirmTransaction","tronExecuteSwapTransaction","tronTransferAmount","WalletProviderPriority"],"sources":["../src/waas/utils/createWalletProviderForWaasTron/createWalletProviderForWaasTron.ts","../src/waas/addWaasTronExtension/addWaasTronExtension.ts"],"sourcesContent":["import {\n type Chain,\n type DynamicClient,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\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 { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { TronWeb } from 'tronweb';\n\nimport type { TronWalletAccount } from '../../../TronWalletAccount.types';\nimport { tronConfirmTransaction } from '../../../utils/tronConfirmTransaction';\nimport { tronExecuteSwapTransaction } from '../../../utils/tronExecuteSwapTransaction';\nimport { tronTransferAmount } from '../../../utils/tronTransferAmount';\nimport type { WaasTronWalletProvider } from '../../WaasTronWalletProvider.types';\n\nconst TRON_CHAIN: Chain = 'TRON';\n\ntype UnsignedTronTransaction = {\n raw_data_hex: string;\n signature?: string[];\n txID?: string;\n};\n\ntype CreateWalletProviderForWaasTronParams = {\n dynamicClient: DynamicClient;\n};\n\n/** @notInstrumented */\nexport const createWalletProviderForWaasTron = ({\n dynamicClient,\n}: CreateWalletProviderForWaasTronParams): WaasTronWalletProvider => {\n const walletProviderType = WalletProviderEnum.EmbeddedWallet;\n\n const key = formatWalletProviderKey({\n chain: TRON_CHAIN,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType,\n });\n\n const waasProvider = createWaasProvider({\n chain: TRON_CHAIN,\n sdkClient: dynamicClient,\n });\n\n const getActiveNetworkId: WaasTronWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: WaasTronWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const getConnectedAddresses: WaasTronWalletProvider['getConnectedAddresses'] =\n async () => {\n const waasTronAddresses = getAllUserWaasAddressesForChain(\n { chain: TRON_CHAIN },\n dynamicClient\n );\n\n return {\n addresses: waasTronAddresses,\n };\n };\n\n const signMessage: WaasTronWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n return waasProvider.signMessage({\n message,\n walletAccount,\n });\n };\n\n const buildTronWebForWalletAccount = async (\n walletAccount: TronWalletAccount\n ): Promise<TronWeb> => {\n const activeNetworkData = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n assertDefined(activeNetworkData, 'No active network data found');\n\n const url = activeNetworkData.networkData?.rpcUrls.http[0];\n assertDefined(url, 'No RPC URL found for active network');\n\n const tronWeb = new TronWeb({ fullHost: url });\n\n tronWeb.setAddress(walletAccount.address);\n\n tronWeb.trx.sign = (async (transaction: UnsignedTronTransaction) => {\n assertDefined(\n transaction?.raw_data_hex,\n 'Tron transaction is missing raw_data_hex'\n );\n\n const { signature } = await waasProvider.signSerializedTransaction({\n serializedTransaction: transaction.raw_data_hex,\n walletAccount,\n });\n\n return {\n ...transaction,\n signature: [signature],\n };\n }) as unknown as TronWeb['trx']['sign'];\n\n return tronWeb;\n };\n\n const getTronWeb: WaasTronWalletProvider['getTronWeb'] = async ({\n walletAccount,\n }) => buildTronWebForWalletAccount(walletAccount);\n\n const destroy: WaasTronWalletProvider['destroy'] = async (args) =>\n waasProvider.destroy(args);\n\n return {\n ...waasProvider,\n chain: TRON_CHAIN,\n confirmTransaction: (args) => tronConfirmTransaction(args, dynamicClient),\n destroy,\n executeSwapTransaction: (args) =>\n tronExecuteSwapTransaction(args, dynamicClient),\n getActiveNetworkId,\n getConnectedAddresses,\n getTronWeb,\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 signMessage,\n switchActiveNetwork,\n transferAmount: (args) => tronTransferAmount(args, dynamicClient),\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 { registerTronNetworkProviderBuilder } from '../../registerTronNetworkProviderBuilder';\nimport { createWalletProviderForWaasTron } from '../utils/createWalletProviderForWaasTron';\n\nexport const WAAS_TRON_EXTENSION_KEY = 'waasTron';\n\n/**\n * Adds the Dynamic WaaS (Wallet as a Service) Tron extension to the Dynamic client.\n *\n * This extension enables embedded wallet functionality for the Tron 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 addWaasTronExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: WAAS_TRON_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: WAAS_TRON_EXTENSION_KEY }, client);\n registerTronNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = createWalletProviderForWaasTron({\n dynamicClient: client,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n};\n"],"mappings":";;;;;;;;AA0BA,MAAMA,aAAoB;;AAa1B,MAAa,mCAAmC,EAC9C,oBACmE;CACnE,MAAM,qBAAqBC,8CAAmB;CAE9C,MAAM,iEAA8B;EAClC,OAAO;EACP,aAAaC,yDAAsB;EACnC;EACD,CAAC;CAEF,MAAM,0EAAkC;EACtC,OAAO;EACP,WAAW;EACZ,CAAC;CAEF,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,YAAY;AAMV,SAAO,EACL,mFALA,EAAE,OAAO,YAAY,EACrB,cACD,EAIA;;CAGL,MAAMC,cAAqD,OAAO,EAChE,SACA,oBACI;AACJ,mDAAc,eAAe,6BAA6B;AAE1D,SAAO,aAAa,YAAY;GAC9B;GACA;GACD,CAAC;;CAGJ,MAAM,+BAA+B,OACnC,kBACqB;EACrB,MAAM,oBAAoB,yDACxB,EAAE,eAAe,EACjB,cACD;AACD,mDAAc,mBAAmB,+BAA+B;EAEhE,MAAM,MAAM,kBAAkB,aAAa,QAAQ,KAAK;AACxD,mDAAc,KAAK,sCAAsC;EAEzD,MAAM,UAAU,IAAIC,gBAAQ,EAAE,UAAU,KAAK,CAAC;AAE9C,UAAQ,WAAW,cAAc,QAAQ;AAEzC,UAAQ,IAAI,QAAQ,OAAO,gBAAyC;AAClE,oDACE,aAAa,cACb,2CACD;GAED,MAAM,EAAE,cAAc,MAAM,aAAa,0BAA0B;IACjE,uBAAuB,YAAY;IACnC;IACD,CAAC;AAEF,UAAO;IACL,GAAG;IACH,WAAW,CAAC,UAAU;IACvB;;AAGH,SAAO;;CAGT,MAAMC,aAAmD,OAAO,EAC9D,oBACI,6BAA6B,cAAc;CAEjD,MAAMC,UAA6C,OAAO,SACxD,aAAa,QAAQ,KAAK;AAE5B,QAAO;EACL,GAAG;EACH,OAAO;EACP,qBAAqB,SAASC,kDAAuB,MAAM,cAAc;EACzE;EACA,yBAAyB,SACvBC,sDAA2B,MAAM,cAAc;EACjD;EACA;EACA;EACA,0EAAuCT,yDAAsB,YAAY;EACzE;EACA,UAAU;GACR,aAAaA,yDAAsB;GACnC,MAAMA,yDAAsB;GAC7B;EACD;EACA;EACA,iBAAiB,SAASU,8CAAmB,MAAM,cAAc;EACjE;EACD;;;;;AClJH,MAAa,0BAA0B;;;;;;;;;;AAWvC,MAAa,wBAAwB,8DAA2B,KAAW;AACzE,qDAAiB,EAAE,cAAc,yBAAyB,EAAE,OAAO,CACjE;AAGF,sDAAkB,EAAE,cAAc,yBAAyB,EAAE,OAAO;AACpE,+DAAmC,OAAO;CAE1C,MAAM,sFAAmD,OAAO;CAEhE,MAAM,iBAAiB,gCAAgC,EACrD,eAAe,QAChB,CAAC;AAEF,wBAAuB,SAAS;EAC9B,UAAUC,qDAAuB;EACjC;EACD,CAAC"}
1
+ {"version":3,"file":"addWaasTronExtension-OL6TymZK.cjs","names":["TRON_CHAIN: Chain","WalletProviderEnum","DYNAMIC_WAAS_METADATA","getActiveNetworkId: WaasTronWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasTronWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasTronWalletProvider['getConnectedAddresses']","signMessage: WaasTronWalletProvider['signMessage']","TronWeb","getTronWeb: WaasTronWalletProvider['getTronWeb']","destroy: WaasTronWalletProvider['destroy']","tronConfirmTransaction","tronExecuteSwapTransaction","tronTransferAmount","WalletProviderPriority"],"sources":["../src/waas/utils/createWalletProviderForWaasTron/createWalletProviderForWaasTron.ts","../src/waas/addWaasTronExtension/addWaasTronExtension.ts"],"sourcesContent":["import {\n type Chain,\n type DynamicClient,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\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 { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { TronWeb } from 'tronweb';\n\nimport type { TronWalletAccount } from '../../../TronWalletAccount.types';\nimport { tronConfirmTransaction } from '../../../utils/tronConfirmTransaction';\nimport { tronExecuteSwapTransaction } from '../../../utils/tronExecuteSwapTransaction';\nimport { tronTransferAmount } from '../../../utils/tronTransferAmount';\nimport type { WaasTronWalletProvider } from '../../WaasTronWalletProvider.types';\n\nconst TRON_CHAIN: Chain = 'TRON';\n\ntype UnsignedTronTransaction = {\n raw_data_hex: string;\n signature?: string[];\n txID?: string;\n};\n\ntype CreateWalletProviderForWaasTronParams = {\n dynamicClient: DynamicClient;\n};\n\n/** @notInstrumented */\nexport const createWalletProviderForWaasTron = ({\n dynamicClient,\n}: CreateWalletProviderForWaasTronParams): WaasTronWalletProvider => {\n const walletProviderType = WalletProviderEnum.EmbeddedWallet;\n\n const key = formatWalletProviderKey({\n chain: TRON_CHAIN,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType,\n });\n\n const waasProvider = createWaasProvider({\n chain: TRON_CHAIN,\n sdkClient: dynamicClient,\n });\n\n const getActiveNetworkId: WaasTronWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: WaasTronWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const getConnectedAddresses: WaasTronWalletProvider['getConnectedAddresses'] =\n async () => {\n const waasTronAddresses = getAllUserWaasAddressesForChain(\n { chain: TRON_CHAIN },\n dynamicClient\n );\n\n return {\n addresses: waasTronAddresses,\n };\n };\n\n const signMessage: WaasTronWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n return waasProvider.signMessage({\n message,\n walletAccount,\n });\n };\n\n const buildTronWebForWalletAccount = async (\n walletAccount: TronWalletAccount\n ): Promise<TronWeb> => {\n const activeNetworkData = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n assertDefined(activeNetworkData, 'No active network data found');\n\n const url = activeNetworkData.networkData?.rpcUrls.http[0];\n assertDefined(url, 'No RPC URL found for active network');\n\n const tronWeb = new TronWeb({ fullHost: url });\n\n tronWeb.setAddress(walletAccount.address);\n\n tronWeb.trx.sign = (async (transaction: UnsignedTronTransaction) => {\n assertDefined(\n transaction?.raw_data_hex,\n 'Tron transaction is missing raw_data_hex'\n );\n\n const { signature } = await waasProvider.signSerializedTransaction({\n serializedTransaction: transaction.raw_data_hex,\n walletAccount,\n });\n\n return {\n ...transaction,\n signature: [signature],\n };\n }) as unknown as TronWeb['trx']['sign'];\n\n return tronWeb;\n };\n\n const getTronWeb: WaasTronWalletProvider['getTronWeb'] = async ({\n walletAccount,\n }) => buildTronWebForWalletAccount(walletAccount);\n\n const destroy: WaasTronWalletProvider['destroy'] = async (args) =>\n waasProvider.destroy(args);\n\n return {\n ...waasProvider,\n chain: TRON_CHAIN,\n confirmTransaction: (args) => tronConfirmTransaction(args, dynamicClient),\n destroy,\n executeSwapTransaction: (args) =>\n tronExecuteSwapTransaction(args, dynamicClient),\n getActiveNetworkId,\n getConnectedAddresses,\n getTronWeb,\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 signMessage,\n switchActiveNetwork,\n transferAmount: (args) => tronTransferAmount(args, dynamicClient),\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 { registerTronNetworkProviderBuilder } from '../../registerTronNetworkProviderBuilder';\nimport { createWalletProviderForWaasTron } from '../utils/createWalletProviderForWaasTron';\n\nexport const WAAS_TRON_EXTENSION_KEY = 'waasTron';\n\n/**\n * Adds the Dynamic WaaS (Wallet as a Service) Tron extension to the Dynamic client.\n *\n * This extension enables embedded wallet functionality for the Tron 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 addWaasTronExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: WAAS_TRON_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: WAAS_TRON_EXTENSION_KEY }, client);\n registerTronNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = createWalletProviderForWaasTron({\n dynamicClient: client,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n};\n"],"mappings":";;;;;;;;AA0BA,MAAMA,aAAoB;;AAa1B,MAAa,mCAAmC,EAC9C,oBACmE;CACnE,MAAM,qBAAqBC,8CAAmB;CAE9C,MAAM,iEAA8B;EAClC,OAAO;EACP,aAAaC,yDAAsB;EACnC;EACD,CAAC;CAEF,MAAM,0EAAkC;EACtC,OAAO;EACP,WAAW;EACZ,CAAC;CAEF,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,YAAY;AAMV,SAAO,EACL,mFALA,EAAE,OAAO,YAAY,EACrB,cACD,EAIA;;CAGL,MAAMC,cAAqD,OAAO,EAChE,SACA,oBACI;AACJ,mDAAc,eAAe,6BAA6B;AAE1D,SAAO,aAAa,YAAY;GAC9B;GACA;GACD,CAAC;;CAGJ,MAAM,+BAA+B,OACnC,kBACqB;EACrB,MAAM,oBAAoB,yDACxB,EAAE,eAAe,EACjB,cACD;AACD,mDAAc,mBAAmB,+BAA+B;EAEhE,MAAM,MAAM,kBAAkB,aAAa,QAAQ,KAAK;AACxD,mDAAc,KAAK,sCAAsC;EAEzD,MAAM,UAAU,IAAIC,gBAAQ,EAAE,UAAU,KAAK,CAAC;AAE9C,UAAQ,WAAW,cAAc,QAAQ;AAEzC,UAAQ,IAAI,QAAQ,OAAO,gBAAyC;AAClE,oDACE,aAAa,cACb,2CACD;GAED,MAAM,EAAE,cAAc,MAAM,aAAa,0BAA0B;IACjE,uBAAuB,YAAY;IACnC;IACD,CAAC;AAEF,UAAO;IACL,GAAG;IACH,WAAW,CAAC,UAAU;IACvB;;AAGH,SAAO;;CAGT,MAAMC,aAAmD,OAAO,EAC9D,oBACI,6BAA6B,cAAc;CAEjD,MAAMC,UAA6C,OAAO,SACxD,aAAa,QAAQ,KAAK;AAE5B,QAAO;EACL,GAAG;EACH,OAAO;EACP,qBAAqB,SAASC,kDAAuB,MAAM,cAAc;EACzE;EACA,yBAAyB,SACvBC,sDAA2B,MAAM,cAAc;EACjD;EACA;EACA;EACA,0EAAuCT,yDAAsB,YAAY;EACzE;EACA,UAAU;GACR,aAAaA,yDAAsB;GACnC,MAAMA,yDAAsB;GAC7B;EACD;EACA;EACA,iBAAiB,SAASU,8CAAmB,MAAM,cAAc;EACjE;EACD;;;;;AClJH,MAAa,0BAA0B;;;;;;;;;;AAWvC,MAAa,wBAAwB,8DAA2B,KAAW;AACzE,qDAAiB,EAAE,cAAc,yBAAyB,EAAE,OAAO,CACjE;AAGF,sDAAkB,EAAE,cAAc,yBAAyB,EAAE,OAAO;AACpE,+DAAmC,OAAO;CAE1C,MAAM,sFAAmD,OAAO;CAEhE,MAAM,iBAAiB,gCAAgC,EACrD,eAAe,QAChB,CAAC;AAEF,wBAAuB,SAAS;EAC9B,UAAUC,qDAAuB;EACjC;EACD,CAAC"}
@@ -1,4 +1,4 @@
1
- import { i as tronConfirmTransaction, r as tronExecuteSwapTransaction, s as registerTronNetworkProviderBuilder, t as tronTransferAmount } from "./tronTransferAmount-Cjye0AD7.esm.js";
1
+ import { i as tronConfirmTransaction, r as tronExecuteSwapTransaction, s as registerTronNetworkProviderBuilder, t as tronTransferAmount } from "./tronTransferAmount-D6YcQFhZ.esm.js";
2
2
  import { WalletProviderPriority, assertDefined, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getDefaultClient, getWalletProviderRegistry, hasExtension, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
3
3
  import { TronWeb } from "tronweb";
4
4
  import { getActiveNetworkData } from "@dynamic-labs-sdk/client";
@@ -108,4 +108,4 @@ const addWaasTronExtension = (client = getDefaultClient()) => {
108
108
 
109
109
  //#endregion
110
110
  export { addWaasTronExtension as t };
111
- //# sourceMappingURL=addWaasTronExtension-DME6Hc0A.esm.js.map
111
+ //# sourceMappingURL=addWaasTronExtension-tBdm8r9R.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"addWaasTronExtension-DME6Hc0A.esm.js","names":["TRON_CHAIN: Chain","getActiveNetworkId: WaasTronWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasTronWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasTronWalletProvider['getConnectedAddresses']","signMessage: WaasTronWalletProvider['signMessage']","getTronWeb: WaasTronWalletProvider['getTronWeb']","destroy: WaasTronWalletProvider['destroy']"],"sources":["../src/waas/utils/createWalletProviderForWaasTron/createWalletProviderForWaasTron.ts","../src/waas/addWaasTronExtension/addWaasTronExtension.ts"],"sourcesContent":["import {\n type Chain,\n type DynamicClient,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\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 { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { TronWeb } from 'tronweb';\n\nimport type { TronWalletAccount } from '../../../TronWalletAccount.types';\nimport { tronConfirmTransaction } from '../../../utils/tronConfirmTransaction';\nimport { tronExecuteSwapTransaction } from '../../../utils/tronExecuteSwapTransaction';\nimport { tronTransferAmount } from '../../../utils/tronTransferAmount';\nimport type { WaasTronWalletProvider } from '../../WaasTronWalletProvider.types';\n\nconst TRON_CHAIN: Chain = 'TRON';\n\ntype UnsignedTronTransaction = {\n raw_data_hex: string;\n signature?: string[];\n txID?: string;\n};\n\ntype CreateWalletProviderForWaasTronParams = {\n dynamicClient: DynamicClient;\n};\n\n/** @notInstrumented */\nexport const createWalletProviderForWaasTron = ({\n dynamicClient,\n}: CreateWalletProviderForWaasTronParams): WaasTronWalletProvider => {\n const walletProviderType = WalletProviderEnum.EmbeddedWallet;\n\n const key = formatWalletProviderKey({\n chain: TRON_CHAIN,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType,\n });\n\n const waasProvider = createWaasProvider({\n chain: TRON_CHAIN,\n sdkClient: dynamicClient,\n });\n\n const getActiveNetworkId: WaasTronWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: WaasTronWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const getConnectedAddresses: WaasTronWalletProvider['getConnectedAddresses'] =\n async () => {\n const waasTronAddresses = getAllUserWaasAddressesForChain(\n { chain: TRON_CHAIN },\n dynamicClient\n );\n\n return {\n addresses: waasTronAddresses,\n };\n };\n\n const signMessage: WaasTronWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n return waasProvider.signMessage({\n message,\n walletAccount,\n });\n };\n\n const buildTronWebForWalletAccount = async (\n walletAccount: TronWalletAccount\n ): Promise<TronWeb> => {\n const activeNetworkData = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n assertDefined(activeNetworkData, 'No active network data found');\n\n const url = activeNetworkData.networkData?.rpcUrls.http[0];\n assertDefined(url, 'No RPC URL found for active network');\n\n const tronWeb = new TronWeb({ fullHost: url });\n\n tronWeb.setAddress(walletAccount.address);\n\n tronWeb.trx.sign = (async (transaction: UnsignedTronTransaction) => {\n assertDefined(\n transaction?.raw_data_hex,\n 'Tron transaction is missing raw_data_hex'\n );\n\n const { signature } = await waasProvider.signSerializedTransaction({\n serializedTransaction: transaction.raw_data_hex,\n walletAccount,\n });\n\n return {\n ...transaction,\n signature: [signature],\n };\n }) as unknown as TronWeb['trx']['sign'];\n\n return tronWeb;\n };\n\n const getTronWeb: WaasTronWalletProvider['getTronWeb'] = async ({\n walletAccount,\n }) => buildTronWebForWalletAccount(walletAccount);\n\n const destroy: WaasTronWalletProvider['destroy'] = async (args) =>\n waasProvider.destroy(args);\n\n return {\n ...waasProvider,\n chain: TRON_CHAIN,\n confirmTransaction: (args) => tronConfirmTransaction(args, dynamicClient),\n destroy,\n executeSwapTransaction: (args) =>\n tronExecuteSwapTransaction(args, dynamicClient),\n getActiveNetworkId,\n getConnectedAddresses,\n getTronWeb,\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 signMessage,\n switchActiveNetwork,\n transferAmount: (args) => tronTransferAmount(args, dynamicClient),\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 { registerTronNetworkProviderBuilder } from '../../registerTronNetworkProviderBuilder';\nimport { createWalletProviderForWaasTron } from '../utils/createWalletProviderForWaasTron';\n\nexport const WAAS_TRON_EXTENSION_KEY = 'waasTron';\n\n/**\n * Adds the Dynamic WaaS (Wallet as a Service) Tron extension to the Dynamic client.\n *\n * This extension enables embedded wallet functionality for the Tron 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 addWaasTronExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: WAAS_TRON_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: WAAS_TRON_EXTENSION_KEY }, client);\n registerTronNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = createWalletProviderForWaasTron({\n dynamicClient: client,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n};\n"],"mappings":";;;;;;;;AA0BA,MAAMA,aAAoB;;AAa1B,MAAa,mCAAmC,EAC9C,oBACmE;CACnE,MAAM,qBAAqB,mBAAmB;CAE9C,MAAM,MAAM,wBAAwB;EAClC,OAAO;EACP,aAAa,sBAAsB;EACnC;EACD,CAAC;CAEF,MAAM,eAAe,mBAAmB;EACtC,OAAO;EACP,WAAW;EACZ,CAAC;CAEF,MAAMC,qBACJ,YACE,wCAAwC;EACtC,QAAQ;EACR,mBAAmB;EACpB,CAAC;CAEN,MAAMC,sBACJ,OAAO,EAAE,gBACP,uCAAuC;EACrC,QAAQ;EACR;EACA,mBAAmB;EACpB,CAAC;CAEN,MAAMC,wBACJ,YAAY;AAMV,SAAO,EACL,WANwB,gCACxB,EAAE,OAAO,YAAY,EACrB,cACD,EAIA;;CAGL,MAAMC,cAAqD,OAAO,EAChE,SACA,oBACI;AACJ,gBAAc,eAAe,6BAA6B;AAE1D,SAAO,aAAa,YAAY;GAC9B;GACA;GACD,CAAC;;CAGJ,MAAM,+BAA+B,OACnC,kBACqB;EACrB,MAAM,oBAAoB,MAAM,qBAC9B,EAAE,eAAe,EACjB,cACD;AACD,gBAAc,mBAAmB,+BAA+B;EAEhE,MAAM,MAAM,kBAAkB,aAAa,QAAQ,KAAK;AACxD,gBAAc,KAAK,sCAAsC;EAEzD,MAAM,UAAU,IAAI,QAAQ,EAAE,UAAU,KAAK,CAAC;AAE9C,UAAQ,WAAW,cAAc,QAAQ;AAEzC,UAAQ,IAAI,QAAQ,OAAO,gBAAyC;AAClE,iBACE,aAAa,cACb,2CACD;GAED,MAAM,EAAE,cAAc,MAAM,aAAa,0BAA0B;IACjE,uBAAuB,YAAY;IACnC;IACD,CAAC;AAEF,UAAO;IACL,GAAG;IACH,WAAW,CAAC,UAAU;IACvB;;AAGH,SAAO;;CAGT,MAAMC,aAAmD,OAAO,EAC9D,oBACI,6BAA6B,cAAc;CAEjD,MAAMC,UAA6C,OAAO,SACxD,aAAa,QAAQ,KAAK;AAE5B,QAAO;EACL,GAAG;EACH,OAAO;EACP,qBAAqB,SAAS,uBAAuB,MAAM,cAAc;EACzE;EACA,yBAAyB,SACvB,2BAA2B,MAAM,cAAc;EACjD;EACA;EACA;EACA,UAAU,6BAA6B,sBAAsB,YAAY;EACzE;EACA,UAAU;GACR,aAAa,sBAAsB;GACnC,MAAM,sBAAsB;GAC7B;EACD;EACA;EACA,iBAAiB,SAAS,mBAAmB,MAAM,cAAc;EACjE;EACD;;;;;AClJH,MAAa,0BAA0B;;;;;;;;;;AAWvC,MAAa,wBAAwB,SAAS,kBAAkB,KAAW;AACzE,KAAI,aAAa,EAAE,cAAc,yBAAyB,EAAE,OAAO,CACjE;AAGF,mBAAkB,EAAE,cAAc,yBAAyB,EAAE,OAAO;AACpE,oCAAmC,OAAO;CAE1C,MAAM,yBAAyB,0BAA0B,OAAO;CAEhE,MAAM,iBAAiB,gCAAgC,EACrD,eAAe,QAChB,CAAC;AAEF,wBAAuB,SAAS;EAC9B,UAAU,uBAAuB;EACjC;EACD,CAAC"}
1
+ {"version":3,"file":"addWaasTronExtension-tBdm8r9R.esm.js","names":["TRON_CHAIN: Chain","getActiveNetworkId: WaasTronWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasTronWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasTronWalletProvider['getConnectedAddresses']","signMessage: WaasTronWalletProvider['signMessage']","getTronWeb: WaasTronWalletProvider['getTronWeb']","destroy: WaasTronWalletProvider['destroy']"],"sources":["../src/waas/utils/createWalletProviderForWaasTron/createWalletProviderForWaasTron.ts","../src/waas/addWaasTronExtension/addWaasTronExtension.ts"],"sourcesContent":["import {\n type Chain,\n type DynamicClient,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\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 { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { TronWeb } from 'tronweb';\n\nimport type { TronWalletAccount } from '../../../TronWalletAccount.types';\nimport { tronConfirmTransaction } from '../../../utils/tronConfirmTransaction';\nimport { tronExecuteSwapTransaction } from '../../../utils/tronExecuteSwapTransaction';\nimport { tronTransferAmount } from '../../../utils/tronTransferAmount';\nimport type { WaasTronWalletProvider } from '../../WaasTronWalletProvider.types';\n\nconst TRON_CHAIN: Chain = 'TRON';\n\ntype UnsignedTronTransaction = {\n raw_data_hex: string;\n signature?: string[];\n txID?: string;\n};\n\ntype CreateWalletProviderForWaasTronParams = {\n dynamicClient: DynamicClient;\n};\n\n/** @notInstrumented */\nexport const createWalletProviderForWaasTron = ({\n dynamicClient,\n}: CreateWalletProviderForWaasTronParams): WaasTronWalletProvider => {\n const walletProviderType = WalletProviderEnum.EmbeddedWallet;\n\n const key = formatWalletProviderKey({\n chain: TRON_CHAIN,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType,\n });\n\n const waasProvider = createWaasProvider({\n chain: TRON_CHAIN,\n sdkClient: dynamicClient,\n });\n\n const getActiveNetworkId: WaasTronWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: WaasTronWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const getConnectedAddresses: WaasTronWalletProvider['getConnectedAddresses'] =\n async () => {\n const waasTronAddresses = getAllUserWaasAddressesForChain(\n { chain: TRON_CHAIN },\n dynamicClient\n );\n\n return {\n addresses: waasTronAddresses,\n };\n };\n\n const signMessage: WaasTronWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n return waasProvider.signMessage({\n message,\n walletAccount,\n });\n };\n\n const buildTronWebForWalletAccount = async (\n walletAccount: TronWalletAccount\n ): Promise<TronWeb> => {\n const activeNetworkData = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n assertDefined(activeNetworkData, 'No active network data found');\n\n const url = activeNetworkData.networkData?.rpcUrls.http[0];\n assertDefined(url, 'No RPC URL found for active network');\n\n const tronWeb = new TronWeb({ fullHost: url });\n\n tronWeb.setAddress(walletAccount.address);\n\n tronWeb.trx.sign = (async (transaction: UnsignedTronTransaction) => {\n assertDefined(\n transaction?.raw_data_hex,\n 'Tron transaction is missing raw_data_hex'\n );\n\n const { signature } = await waasProvider.signSerializedTransaction({\n serializedTransaction: transaction.raw_data_hex,\n walletAccount,\n });\n\n return {\n ...transaction,\n signature: [signature],\n };\n }) as unknown as TronWeb['trx']['sign'];\n\n return tronWeb;\n };\n\n const getTronWeb: WaasTronWalletProvider['getTronWeb'] = async ({\n walletAccount,\n }) => buildTronWebForWalletAccount(walletAccount);\n\n const destroy: WaasTronWalletProvider['destroy'] = async (args) =>\n waasProvider.destroy(args);\n\n return {\n ...waasProvider,\n chain: TRON_CHAIN,\n confirmTransaction: (args) => tronConfirmTransaction(args, dynamicClient),\n destroy,\n executeSwapTransaction: (args) =>\n tronExecuteSwapTransaction(args, dynamicClient),\n getActiveNetworkId,\n getConnectedAddresses,\n getTronWeb,\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 signMessage,\n switchActiveNetwork,\n transferAmount: (args) => tronTransferAmount(args, dynamicClient),\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 { registerTronNetworkProviderBuilder } from '../../registerTronNetworkProviderBuilder';\nimport { createWalletProviderForWaasTron } from '../utils/createWalletProviderForWaasTron';\n\nexport const WAAS_TRON_EXTENSION_KEY = 'waasTron';\n\n/**\n * Adds the Dynamic WaaS (Wallet as a Service) Tron extension to the Dynamic client.\n *\n * This extension enables embedded wallet functionality for the Tron 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 addWaasTronExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: WAAS_TRON_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: WAAS_TRON_EXTENSION_KEY }, client);\n registerTronNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = createWalletProviderForWaasTron({\n dynamicClient: client,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n};\n"],"mappings":";;;;;;;;AA0BA,MAAMA,aAAoB;;AAa1B,MAAa,mCAAmC,EAC9C,oBACmE;CACnE,MAAM,qBAAqB,mBAAmB;CAE9C,MAAM,MAAM,wBAAwB;EAClC,OAAO;EACP,aAAa,sBAAsB;EACnC;EACD,CAAC;CAEF,MAAM,eAAe,mBAAmB;EACtC,OAAO;EACP,WAAW;EACZ,CAAC;CAEF,MAAMC,qBACJ,YACE,wCAAwC;EACtC,QAAQ;EACR,mBAAmB;EACpB,CAAC;CAEN,MAAMC,sBACJ,OAAO,EAAE,gBACP,uCAAuC;EACrC,QAAQ;EACR;EACA,mBAAmB;EACpB,CAAC;CAEN,MAAMC,wBACJ,YAAY;AAMV,SAAO,EACL,WANwB,gCACxB,EAAE,OAAO,YAAY,EACrB,cACD,EAIA;;CAGL,MAAMC,cAAqD,OAAO,EAChE,SACA,oBACI;AACJ,gBAAc,eAAe,6BAA6B;AAE1D,SAAO,aAAa,YAAY;GAC9B;GACA;GACD,CAAC;;CAGJ,MAAM,+BAA+B,OACnC,kBACqB;EACrB,MAAM,oBAAoB,MAAM,qBAC9B,EAAE,eAAe,EACjB,cACD;AACD,gBAAc,mBAAmB,+BAA+B;EAEhE,MAAM,MAAM,kBAAkB,aAAa,QAAQ,KAAK;AACxD,gBAAc,KAAK,sCAAsC;EAEzD,MAAM,UAAU,IAAI,QAAQ,EAAE,UAAU,KAAK,CAAC;AAE9C,UAAQ,WAAW,cAAc,QAAQ;AAEzC,UAAQ,IAAI,QAAQ,OAAO,gBAAyC;AAClE,iBACE,aAAa,cACb,2CACD;GAED,MAAM,EAAE,cAAc,MAAM,aAAa,0BAA0B;IACjE,uBAAuB,YAAY;IACnC;IACD,CAAC;AAEF,UAAO;IACL,GAAG;IACH,WAAW,CAAC,UAAU;IACvB;;AAGH,SAAO;;CAGT,MAAMC,aAAmD,OAAO,EAC9D,oBACI,6BAA6B,cAAc;CAEjD,MAAMC,UAA6C,OAAO,SACxD,aAAa,QAAQ,KAAK;AAE5B,QAAO;EACL,GAAG;EACH,OAAO;EACP,qBAAqB,SAAS,uBAAuB,MAAM,cAAc;EACzE;EACA,yBAAyB,SACvB,2BAA2B,MAAM,cAAc;EACjD;EACA;EACA;EACA,UAAU,6BAA6B,sBAAsB,YAAY;EACzE;EACA,UAAU;GACR,aAAa,sBAAsB;GACnC,MAAM,sBAAsB;GAC7B;EACD;EACA;EACA,iBAAiB,SAAS,mBAAmB,MAAM,cAAc;EACjE;EACD;;;;;AClJH,MAAa,0BAA0B;;;;;;;;;;AAWvC,MAAa,wBAAwB,SAAS,kBAAkB,KAAW;AACzE,KAAI,aAAa,EAAE,cAAc,yBAAyB,EAAE,OAAO,CACjE;AAGF,mBAAkB,EAAE,cAAc,yBAAyB,EAAE,OAAO;AACpE,oCAAmC,OAAO;CAE1C,MAAM,yBAAyB,0BAA0B,OAAO;CAEhE,MAAM,iBAAiB,gCAAgC,EACrD,eAAe,QAChB,CAAC;AAEF,wBAAuB,SAAS;EAC9B,UAAU,uBAAuB;EACjC;EACD,CAAC"}
@@ -6,11 +6,18 @@ type GetTronWebParams = {
6
6
  /**
7
7
  * Retrieves a TronWeb from a wallet account.
8
8
  *
9
+ * @example
10
+ * ```ts
11
+ * const tronWeb = await getTronWeb({ walletAccount: tronAccount });
12
+ * ```
13
+ *
9
14
  * @param params.walletAccount - The wallet account to get the TronWeb for.
10
15
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
11
- * @returns A promise that resolves to a TronWeb instance
12
- * @throws NotTronProviderError If the wallet account's provider is not a Tron provider
13
- * @notInstrumented
16
+ * @returns A promise that resolves to a TronWeb instance.
17
+ * @throws {NotTronProviderError} If the wallet account's provider is not a Tron provider.
18
+ * @see sendTransaction
19
+ * @see isTronWalletAccount
20
+ * @notInstrumented
14
21
  */
15
22
  export declare const getTronWeb: ({ walletAccount }: GetTronWebParams, client?: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<TronWeb>;
16
23
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"getTronWeb.d.ts","sourceRoot":"","sources":["../../src/getTronWeb/getTronWeb.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,KAAK,gBAAgB,GAAG;IACtB,aAAa,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,sBACF,gBAAgB,gEAElC,OAAO,CAAC,OAAO,CAajB,CAAC"}
1
+ {"version":3,"file":"getTronWeb.d.ts","sourceRoot":"","sources":["../../src/getTronWeb/getTronWeb.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,KAAK,gBAAgB,GAAG;IACtB,aAAa,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU,sBACF,gBAAgB,gEAElC,OAAO,CAAC,OAAO,CAajB,CAAC"}
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
- const require_tronTransferAmount = require('./tronTransferAmount-D47NFqIu.cjs');
2
- const require_addWaasTronExtension = require('./addWaasTronExtension-BsGnwB_I.cjs');
3
- const require_addTronWalletAdaptersExtension = require('./addTronWalletAdaptersExtension-BvtCFk52.cjs');
1
+ const require_tronTransferAmount = require('./tronTransferAmount-C48MZYe2.cjs');
2
+ const require_addWaasTronExtension = require('./addWaasTronExtension-OL6TymZK.cjs');
3
+ const require_addTronWalletAdaptersExtension = require('./addTronWalletAdaptersExtension-O6v6XmV-.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,7 +14,16 @@ let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
14
14
  * including injected wallets (Tronlink, etc.) and embedded wallets managed by
15
15
  * Dynamic's infrastructure.
16
16
  *
17
+ * @example
18
+ * ```ts
19
+ * const client = createDynamicClient({ environmentId: 'env-123' });
20
+ * addTronExtension(client);
21
+ * ```
22
+ *
17
23
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
24
+ * @returns void
25
+ * @see isTronWalletAccount
26
+ * @see isTronNetworkProvider
18
27
  * @notInstrumented
19
28
  */
20
29
  const addTronExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
@@ -66,6 +75,16 @@ const NATIVE_TRANSFER_BANDWIDTH = 270;
66
75
  * EVM/Solana fee estimators — TRC-20 from energy burn, native TRX from
67
76
  * bandwidth.
68
77
  *
78
+ * @example
79
+ * ```ts
80
+ * const fee = await calculateTronTransactionFee({
81
+ * walletAccount: tronAccount,
82
+ * recipient: 'TAddress...',
83
+ * amount: '10',
84
+ * nativeTokenPriceUsd: 0.12,
85
+ * });
86
+ * ```
87
+ *
69
88
  * @param params.amount - Human-readable transfer amount.
70
89
  * @param params.recipient - Destination address.
71
90
  * @param params.token - TRC-20 token (`{ address, decimals }`); omit for native TRX.
@@ -73,9 +92,11 @@ const NATIVE_TRANSFER_BANDWIDTH = 270;
73
92
  * @param params.nativeTokenPriceUsd - Optional TRX price for `usdAmount`.
74
93
  * @param client - The Dynamic client instance.
75
94
  * @returns Fee in SUN (atomic), human-readable TRX, and optional USD.
76
- * @throws InvalidParamError if the wallet account is not Tron.
77
- * @throws NotTronProviderError if the resolved provider is not Tron.
78
- * @throws FeeEstimationFailedError if on-chain estimation fails.
95
+ * @throws {InvalidParamError} If the wallet account is not Tron.
96
+ * @throws {NotTronProviderError} If the resolved provider is not Tron.
97
+ * @throws {FeeEstimationFailedError} If on-chain estimation fails.
98
+ * @see getTronWeb
99
+ * @see sendTransaction
79
100
  * @notInstrumented
80
101
  */
81
102
  const calculateTronTransactionFee = async ({ amount, nativeTokenPriceUsd, recipient, token, walletAccount }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
@@ -128,10 +149,17 @@ const calculateTronTransactionFee = async ({ amount, nativeTokenPriceUsd, recipi
128
149
  /**
129
150
  * Retrieves a TronWeb from a wallet account.
130
151
  *
152
+ * @example
153
+ * ```ts
154
+ * const tronWeb = await getTronWeb({ walletAccount: tronAccount });
155
+ * ```
156
+ *
131
157
  * @param params.walletAccount - The wallet account to get the TronWeb for.
132
158
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
133
- * @returns A promise that resolves to a TronWeb instance
134
- * @throws NotTronProviderError If the wallet account's provider is not a Tron provider
159
+ * @returns A promise that resolves to a TronWeb instance.
160
+ * @throws {NotTronProviderError} If the wallet account's provider is not a Tron provider.
161
+ * @see sendTransaction
162
+ * @see isTronWalletAccount
135
163
  * @notInstrumented
136
164
  */
137
165
  const getTronWeb = async ({ walletAccount }, client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
@@ -142,17 +170,44 @@ const getTronWeb = async ({ walletAccount }, client = (0, _dynamic_labs_sdk_clie
142
170
 
143
171
  //#endregion
144
172
  //#region src/isTronNetworkProvider/isTronNetworkProvider.ts
145
- /** @notInstrumented */
173
+ /**
174
+ * Type guard function to check if a network provider is a Tron network provider.
175
+ *
176
+ * @example
177
+ * ```ts
178
+ * if (isTronNetworkProvider(networkProvider)) {
179
+ * const tronWeb = networkProvider.getTronWeb();
180
+ * }
181
+ * ```
182
+ *
183
+ * @param networkProvider - The network provider to check.
184
+ * @returns True if the network provider is a Tron network provider, false otherwise.
185
+ * @see isTronWalletAccount
186
+ * @see addTronExtension
187
+ * @notInstrumented
188
+ */
146
189
  const isTronNetworkProvider = (networkProvider) => networkProvider.chain === "TRON";
147
190
 
148
191
  //#endregion
149
192
  //#region src/sendTransaction/sendTransaction.ts
150
193
  /**
151
- * Sends a Tron transaction
152
- * @param params.transaction - The transaction to send
153
- * @param params.walletAccount - The wallet account to sign and send the transaction with
194
+ * Sends a Tron transaction.
195
+ *
196
+ * @example
197
+ * ```ts
198
+ * const result = await sendTransaction({
199
+ * walletAccount: tronAccount,
200
+ * transaction: tronTransaction,
201
+ * });
202
+ * ```
203
+ *
204
+ * @param params.transaction - The transaction to send.
205
+ * @param params.walletAccount - The wallet account to sign and send the transaction with.
154
206
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
155
- * @returns A promise that resolves to the broadcast return of the signed transaction
207
+ * @returns A promise that resolves to the broadcast return of the signed transaction.
208
+ * @throws {NotTronProviderError} If the wallet account's provider is not a Tron provider.
209
+ * @see getTronWeb
210
+ * @see isTronWalletAccount
156
211
  * @notInstrumented
157
212
  */
158
213
  const sendTransaction = async ({ walletAccount, transaction }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["TRX_DECIMALS","isTronWalletAccount","InvalidParamError","isTronWalletProvider","NotTronProviderError","resources: {\n EnergyLimit?: number;\n EnergyUsed?: number;\n NetLimit?: number;\n NetUsed?: number;\n freeNetLimit?: number;\n freeNetUsed?: number;\n }","nativeAmount: bigint","FeeEstimationFailedError","isTronWalletProvider","NotTronProviderError","isTronWalletProvider","NotTronProviderError","packageName","packageVersion"],"sources":["../src/addTronExtension/addTronExtension.ts","../src/utils/parseLatestSunPrice/parseLatestSunPrice.ts","../src/utils/sunToTrxString/sunToTrxString.ts","../src/utils/calculateTronTransactionFee/calculateTronTransactionFee.ts","../src/getTronWeb/getTronWeb.ts","../src/isTronNetworkProvider/isTronNetworkProvider.ts","../src/sendTransaction/sendTransaction.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addWaasTronExtension } from '../waas/addWaasTronExtension';\nimport { addTronWalletAdaptersExtension } from '../walletAdapters/addTronWalletAdaptersExtension';\n\n/**\n * Adds the Tron extension to the Dynamic client.\n *\n * This is a convenience function that adds both the Tron Wallet Adapters extension\n * and the Dynamic WaaS Tron extension, enabling support for all Tron wallet types\n * including injected wallets (Tronlink, etc.) and embedded wallets managed by\n * Dynamic's infrastructure.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @notInstrumented\n */\nexport const addTronExtension = (client = getDefaultClient()): void => {\n addTronWalletAdaptersExtension(client);\n addWaasTronExtension(client);\n};\n","/**\n * TronWeb returns resource prices (energy / bandwidth) as a\n * `timestamp:price,...` history string in SUN. The current price is the final\n * entry.\n *\n * @param priceHistory - The raw price-history string from TronWeb.\n * @returns The latest per-unit price in SUN.\n * @notInstrumented\n */\n// eslint-disable-next-line custom-rules/require-single-object-param -- single primitive parser\nexport const parseLatestSunPrice = (priceHistory: string): bigint => {\n const latestPair = priceHistory.split(',').at(-1) ?? '';\n const price = latestPair.split(':').at(-1) ?? '0';\n return BigInt(price);\n};\n","const SUN_PER_TRX = 1_000_000n;\nconst TRX_DECIMALS = 6;\n\n/**\n * Converts an amount in SUN (TRX's atomic unit) to a human-readable TRX string,\n * trimming trailing zeros (e.g. `12_600_000n` → `\"12.6\"`).\n *\n * @param sun - The amount in SUN.\n * @returns The human-readable TRX amount.\n * @notInstrumented\n */\n// eslint-disable-next-line custom-rules/require-single-object-param -- single primitive formatter\nexport const sunToTrxString = (sun: bigint): string => {\n const whole = sun / SUN_PER_TRX;\n let fraction = (sun % SUN_PER_TRX).toString().padStart(TRX_DECIMALS, '0');\n while (fraction.endsWith('0')) {\n fraction = fraction.slice(0, -1);\n }\n return fraction ? `${whole}.${fraction}` : whole.toString();\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n FeeEstimationFailedError,\n InvalidParamError,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client';\nimport {\n type TransferAmountParams,\n getWalletProviderFromWalletAccount,\n parseAmountToSmallestUnit,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { NotTronProviderError } from '../../errors/NotTronProviderError';\nimport { isTronWalletAccount } from '../../isTronWalletAccount';\nimport { isTronWalletProvider } from '../../isTronWalletProvider';\nimport type { TronTransactionFeeData } from '../../transactionSimulation.types';\nimport { parseLatestSunPrice } from '../parseLatestSunPrice';\nimport { sunToTrxString } from '../sunToTrxString';\n\nconst TRX_DECIMALS = 6;\n// A native TRX transfer occupies ~270 bandwidth points on-chain.\nconst NATIVE_TRANSFER_BANDWIDTH = 270;\n\ntype CalculateTronTransactionFeeParams = TransferAmountParams & {\n /** Optional USD price of TRX, used to populate `usdAmount`. */\n nativeTokenPriceUsd?: number;\n};\n\n/**\n * Estimates the network fee (in SUN) for a Tron transfer, mirroring the\n * EVM/Solana fee estimators — TRC-20 from energy burn, native TRX from\n * bandwidth.\n *\n * @param params.amount - Human-readable transfer amount.\n * @param params.recipient - Destination address.\n * @param params.token - TRC-20 token (`{ address, decimals }`); omit for native TRX.\n * @param params.walletAccount - Tron wallet account paying the fee.\n * @param params.nativeTokenPriceUsd - Optional TRX price for `usdAmount`.\n * @param client - The Dynamic client instance.\n * @returns Fee in SUN (atomic), human-readable TRX, and optional USD.\n * @throws InvalidParamError if the wallet account is not Tron.\n * @throws NotTronProviderError if the resolved provider is not Tron.\n * @throws FeeEstimationFailedError if on-chain estimation fails.\n * @notInstrumented\n */\nexport const calculateTronTransactionFee = async (\n {\n amount,\n nativeTokenPriceUsd,\n recipient,\n token,\n walletAccount,\n }: CalculateTronTransactionFeeParams,\n client: DynamicClient = getDefaultClient()\n): Promise<TronTransactionFeeData> => {\n if (!isTronWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account is not a Tron wallet account');\n }\n\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isTronWalletProvider(provider)) {\n throw new NotTronProviderError({ providerKey: provider.key });\n }\n\n const tronWeb = await provider.getTronWeb({ walletAccount });\n\n try {\n // TronGrid omits zero-valued fields, so type them optional and default to 0.\n const resources: {\n EnergyLimit?: number;\n EnergyUsed?: number;\n NetLimit?: number;\n NetUsed?: number;\n freeNetLimit?: number;\n freeNetUsed?: number;\n } = await tronWeb.trx.getAccountResources(walletAccount.address);\n\n let nativeAmount: bigint;\n\n if (token?.address) {\n const smallestUnitAmount = parseAmountToSmallestUnit({\n amount,\n decimals: token.decimals ?? TRX_DECIMALS,\n });\n\n const { energy_used: energyUsed } =\n await tronWeb.transactionBuilder.triggerConstantContract(\n token.address,\n 'transfer(address,uint256)',\n {},\n [\n { type: 'address', value: recipient },\n { type: 'uint256', value: smallestUnitAmount },\n ],\n walletAccount.address\n );\n\n const availableEnergy =\n (resources.EnergyLimit ?? 0) - (resources.EnergyUsed ?? 0);\n const burnedEnergy = Math.max(0, (energyUsed ?? 0) - availableEnergy);\n const energyPrice = parseLatestSunPrice(\n await tronWeb.trx.getEnergyPrices()\n );\n\n nativeAmount = BigInt(burnedEnergy) * energyPrice;\n } else {\n // Tron doesn't combine free + staked bandwidth — a single pool must cover\n // the whole tx, else TRX burns for the full tx (all-or-nothing).\n const freeBandwidth =\n (resources.freeNetLimit ?? 0) - (resources.freeNetUsed ?? 0);\n const stakedBandwidth =\n (resources.NetLimit ?? 0) - (resources.NetUsed ?? 0);\n const coveredByBandwidth =\n freeBandwidth >= NATIVE_TRANSFER_BANDWIDTH ||\n stakedBandwidth >= NATIVE_TRANSFER_BANDWIDTH;\n const bandwidthPrice = parseLatestSunPrice(\n await tronWeb.trx.getBandwidthPrices()\n );\n\n nativeAmount = coveredByBandwidth\n ? 0n\n : BigInt(NATIVE_TRANSFER_BANDWIDTH) * bandwidthPrice;\n }\n\n const humanReadableAmount = sunToTrxString(nativeAmount);\n\n return {\n humanReadableAmount,\n nativeAmount,\n usdAmount: nativeTokenPriceUsd\n ? (Number(humanReadableAmount) * nativeTokenPriceUsd).toFixed(2)\n : undefined,\n };\n } catch (error) {\n throw new FeeEstimationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to estimate Tron transaction fee',\n });\n }\n};\n","import {\n getDefaultClient,\n getWalletProviderFromWalletAccount,\n} from '@dynamic-labs-sdk/client/core';\nimport type { TronWeb } from 'tronweb';\n\nimport { NotTronProviderError } from '../errors/NotTronProviderError';\nimport { isTronWalletProvider } from '../isTronWalletProvider';\nimport type { TronWalletAccount } from '../TronWalletAccount.types';\n\ntype GetTronWebParams = {\n walletAccount: TronWalletAccount;\n};\n\n/**\n * Retrieves a TronWeb from a wallet account.\n *\n * @param params.walletAccount - The wallet account to get the TronWeb for.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to a TronWeb instance\n * @throws NotTronProviderError If the wallet account's provider is not a Tron provider\n * @notInstrumented\n */\nexport const getTronWeb = async (\n { walletAccount }: GetTronWebParams,\n client = getDefaultClient()\n): Promise<TronWeb> => {\n const provider = getWalletProviderFromWalletAccount(\n {\n walletAccount,\n },\n client\n );\n\n if (!isTronWalletProvider(provider)) {\n throw new NotTronProviderError({ providerKey: provider.key });\n }\n\n return provider.getTronWeb({ walletAccount });\n};\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { TronNetworkProvider } from '../TronNetworkProvider.types';\n\n/** @notInstrumented */\nexport const isTronNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is TronNetworkProvider => networkProvider.chain === 'TRON';\n","import {\n assertWalletAccountSigningAvailability,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client';\nimport { getWalletProviderFromWalletAccount } from '@dynamic-labs-sdk/client/core';\n\nimport { NotTronProviderError } from '../errors/NotTronProviderError';\nimport { isTronWalletProvider } from '../isTronWalletProvider';\nimport type { TronWalletAccount } from '../TronWalletAccount.types';\nimport type { TronBroadcastReturnSignedTransaction } from '../TronWalletProvider.types';\n\ntype SendTransactionParams = {\n transaction: {\n amount: number;\n to: string;\n };\n walletAccount: TronWalletAccount;\n};\n\n/**\n * Sends a Tron transaction\n * @param params.transaction - The transaction to send\n * @param params.walletAccount - The wallet account to sign and send the transaction with\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the broadcast return of the signed transaction\n * @notInstrumented\n */\nexport const sendTransaction = async (\n { walletAccount, transaction }: SendTransactionParams,\n client = getDefaultClient()\n): Promise<TronBroadcastReturnSignedTransaction> => {\n await assertWalletAccountSigningAvailability({ walletAccount }, client);\n\n const provider = getWalletProviderFromWalletAccount(\n {\n walletAccount,\n },\n client\n );\n\n if (!isTronWalletProvider(provider)) {\n throw new NotTronProviderError({ providerKey: provider.key });\n }\n\n const tronWeb = await provider.getTronWeb({ walletAccount });\n\n const { amount, to } = transaction;\n const amountInSun = tronWeb.toSun(amount);\n\n return tronWeb.trx.sendTransaction(to, Number(amountInSun), {\n address: walletAccount.address,\n });\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addTronExtension } from '../addTronExtension';\nexport { calculateTronTransactionFee } from '../utils/calculateTronTransactionFee';\nexport { getTronWeb } from '../getTronWeb';\nexport { isTronNetworkProvider } from '../isTronNetworkProvider';\nexport { isTronWalletAccount } from '../isTronWalletAccount';\nexport { sendTransaction } from '../sendTransaction';\nexport type { TronNetworkProvider } from '../TronNetworkProvider.types';\nexport type { TronTransactionFeeData } from '../transactionSimulation.types';\nexport type { TronWalletAccount } from '../TronWalletAccount.types';\nexport type {\n TronBroadcastReturnSignedTransaction,\n TronWeb,\n} from '../TronWalletProvider.types';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["TRX_DECIMALS","isTronWalletAccount","InvalidParamError","isTronWalletProvider","NotTronProviderError","resources: {\n EnergyLimit?: number;\n EnergyUsed?: number;\n NetLimit?: number;\n NetUsed?: number;\n freeNetLimit?: number;\n freeNetUsed?: number;\n }","nativeAmount: bigint","FeeEstimationFailedError","isTronWalletProvider","NotTronProviderError","isTronWalletProvider","NotTronProviderError","packageName","packageVersion"],"sources":["../src/addTronExtension/addTronExtension.ts","../src/utils/parseLatestSunPrice/parseLatestSunPrice.ts","../src/utils/sunToTrxString/sunToTrxString.ts","../src/utils/calculateTronTransactionFee/calculateTronTransactionFee.ts","../src/getTronWeb/getTronWeb.ts","../src/isTronNetworkProvider/isTronNetworkProvider.ts","../src/sendTransaction/sendTransaction.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addWaasTronExtension } from '../waas/addWaasTronExtension';\nimport { addTronWalletAdaptersExtension } from '../walletAdapters/addTronWalletAdaptersExtension';\n\n/**\n * Adds the Tron extension to the Dynamic client.\n *\n * This is a convenience function that adds both the Tron Wallet Adapters extension\n * and the Dynamic WaaS Tron extension, enabling support for all Tron wallet types\n * including injected wallets (Tronlink, etc.) and embedded wallets managed by\n * Dynamic's infrastructure.\n *\n * @example\n * ```ts\n * const client = createDynamicClient({ environmentId: 'env-123' });\n * addTronExtension(client);\n * ```\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns void\n * @see isTronWalletAccount\n * @see isTronNetworkProvider\n * @notInstrumented\n */\nexport const addTronExtension = (client = getDefaultClient()): void => {\n addTronWalletAdaptersExtension(client);\n addWaasTronExtension(client);\n};\n","/**\n * TronWeb returns resource prices (energy / bandwidth) as a\n * `timestamp:price,...` history string in SUN. The current price is the final\n * entry.\n *\n * @param priceHistory - The raw price-history string from TronWeb.\n * @returns The latest per-unit price in SUN.\n * @notInstrumented\n */\n// eslint-disable-next-line custom-rules/require-single-object-param -- single primitive parser\nexport const parseLatestSunPrice = (priceHistory: string): bigint => {\n const latestPair = priceHistory.split(',').at(-1) ?? '';\n const price = latestPair.split(':').at(-1) ?? '0';\n return BigInt(price);\n};\n","const SUN_PER_TRX = 1_000_000n;\nconst TRX_DECIMALS = 6;\n\n/**\n * Converts an amount in SUN (TRX's atomic unit) to a human-readable TRX string,\n * trimming trailing zeros (e.g. `12_600_000n` → `\"12.6\"`).\n *\n * @param sun - The amount in SUN.\n * @returns The human-readable TRX amount.\n * @notInstrumented\n */\n// eslint-disable-next-line custom-rules/require-single-object-param -- single primitive formatter\nexport const sunToTrxString = (sun: bigint): string => {\n const whole = sun / SUN_PER_TRX;\n let fraction = (sun % SUN_PER_TRX).toString().padStart(TRX_DECIMALS, '0');\n while (fraction.endsWith('0')) {\n fraction = fraction.slice(0, -1);\n }\n return fraction ? `${whole}.${fraction}` : whole.toString();\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n FeeEstimationFailedError,\n InvalidParamError,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client';\nimport {\n type TransferAmountParams,\n getWalletProviderFromWalletAccount,\n parseAmountToSmallestUnit,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { NotTronProviderError } from '../../errors/NotTronProviderError';\nimport { isTronWalletAccount } from '../../isTronWalletAccount';\nimport { isTronWalletProvider } from '../../isTronWalletProvider';\nimport type { TronTransactionFeeData } from '../../transactionSimulation.types';\nimport { parseLatestSunPrice } from '../parseLatestSunPrice';\nimport { sunToTrxString } from '../sunToTrxString';\n\nconst TRX_DECIMALS = 6;\n// A native TRX transfer occupies ~270 bandwidth points on-chain.\nconst NATIVE_TRANSFER_BANDWIDTH = 270;\n\ntype CalculateTronTransactionFeeParams = TransferAmountParams & {\n /** Optional USD price of TRX, used to populate `usdAmount`. */\n nativeTokenPriceUsd?: number;\n};\n\n/**\n * Estimates the network fee (in SUN) for a Tron transfer, mirroring the\n * EVM/Solana fee estimators — TRC-20 from energy burn, native TRX from\n * bandwidth.\n *\n * @example\n * ```ts\n * const fee = await calculateTronTransactionFee({\n * walletAccount: tronAccount,\n * recipient: 'TAddress...',\n * amount: '10',\n * nativeTokenPriceUsd: 0.12,\n * });\n * ```\n *\n * @param params.amount - Human-readable transfer amount.\n * @param params.recipient - Destination address.\n * @param params.token - TRC-20 token (`{ address, decimals }`); omit for native TRX.\n * @param params.walletAccount - Tron wallet account paying the fee.\n * @param params.nativeTokenPriceUsd - Optional TRX price for `usdAmount`.\n * @param client - The Dynamic client instance.\n * @returns Fee in SUN (atomic), human-readable TRX, and optional USD.\n * @throws {InvalidParamError} If the wallet account is not Tron.\n * @throws {NotTronProviderError} If the resolved provider is not Tron.\n * @throws {FeeEstimationFailedError} If on-chain estimation fails.\n * @see getTronWeb\n * @see sendTransaction\n * @notInstrumented\n */\nexport const calculateTronTransactionFee = async (\n {\n amount,\n nativeTokenPriceUsd,\n recipient,\n token,\n walletAccount,\n }: CalculateTronTransactionFeeParams,\n client: DynamicClient = getDefaultClient()\n): Promise<TronTransactionFeeData> => {\n if (!isTronWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account is not a Tron wallet account');\n }\n\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isTronWalletProvider(provider)) {\n throw new NotTronProviderError({ providerKey: provider.key });\n }\n\n const tronWeb = await provider.getTronWeb({ walletAccount });\n\n try {\n // TronGrid omits zero-valued fields, so type them optional and default to 0.\n const resources: {\n EnergyLimit?: number;\n EnergyUsed?: number;\n NetLimit?: number;\n NetUsed?: number;\n freeNetLimit?: number;\n freeNetUsed?: number;\n } = await tronWeb.trx.getAccountResources(walletAccount.address);\n\n let nativeAmount: bigint;\n\n if (token?.address) {\n const smallestUnitAmount = parseAmountToSmallestUnit({\n amount,\n decimals: token.decimals ?? TRX_DECIMALS,\n });\n\n const { energy_used: energyUsed } =\n await tronWeb.transactionBuilder.triggerConstantContract(\n token.address,\n 'transfer(address,uint256)',\n {},\n [\n { type: 'address', value: recipient },\n { type: 'uint256', value: smallestUnitAmount },\n ],\n walletAccount.address\n );\n\n const availableEnergy =\n (resources.EnergyLimit ?? 0) - (resources.EnergyUsed ?? 0);\n const burnedEnergy = Math.max(0, (energyUsed ?? 0) - availableEnergy);\n const energyPrice = parseLatestSunPrice(\n await tronWeb.trx.getEnergyPrices()\n );\n\n nativeAmount = BigInt(burnedEnergy) * energyPrice;\n } else {\n // Tron doesn't combine free + staked bandwidth — a single pool must cover\n // the whole tx, else TRX burns for the full tx (all-or-nothing).\n const freeBandwidth =\n (resources.freeNetLimit ?? 0) - (resources.freeNetUsed ?? 0);\n const stakedBandwidth =\n (resources.NetLimit ?? 0) - (resources.NetUsed ?? 0);\n const coveredByBandwidth =\n freeBandwidth >= NATIVE_TRANSFER_BANDWIDTH ||\n stakedBandwidth >= NATIVE_TRANSFER_BANDWIDTH;\n const bandwidthPrice = parseLatestSunPrice(\n await tronWeb.trx.getBandwidthPrices()\n );\n\n nativeAmount = coveredByBandwidth\n ? 0n\n : BigInt(NATIVE_TRANSFER_BANDWIDTH) * bandwidthPrice;\n }\n\n const humanReadableAmount = sunToTrxString(nativeAmount);\n\n return {\n humanReadableAmount,\n nativeAmount,\n usdAmount: nativeTokenPriceUsd\n ? (Number(humanReadableAmount) * nativeTokenPriceUsd).toFixed(2)\n : undefined,\n };\n } catch (error) {\n throw new FeeEstimationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to estimate Tron transaction fee',\n });\n }\n};\n","import {\n getDefaultClient,\n getWalletProviderFromWalletAccount,\n} from '@dynamic-labs-sdk/client/core';\nimport type { TronWeb } from 'tronweb';\n\nimport { NotTronProviderError } from '../errors/NotTronProviderError';\nimport { isTronWalletProvider } from '../isTronWalletProvider';\nimport type { TronWalletAccount } from '../TronWalletAccount.types';\n\ntype GetTronWebParams = {\n walletAccount: TronWalletAccount;\n};\n\n/**\n * Retrieves a TronWeb from a wallet account.\n *\n * @example\n * ```ts\n * const tronWeb = await getTronWeb({ walletAccount: tronAccount });\n * ```\n *\n * @param params.walletAccount - The wallet account to get the TronWeb for.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to a TronWeb instance.\n * @throws {NotTronProviderError} If the wallet account's provider is not a Tron provider.\n * @see sendTransaction\n * @see isTronWalletAccount\n * @notInstrumented\n */\nexport const getTronWeb = async (\n { walletAccount }: GetTronWebParams,\n client = getDefaultClient()\n): Promise<TronWeb> => {\n const provider = getWalletProviderFromWalletAccount(\n {\n walletAccount,\n },\n client\n );\n\n if (!isTronWalletProvider(provider)) {\n throw new NotTronProviderError({ providerKey: provider.key });\n }\n\n return provider.getTronWeb({ walletAccount });\n};\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { TronNetworkProvider } from '../TronNetworkProvider.types';\n\n/**\n * Type guard function to check if a network provider is a Tron network provider.\n *\n * @example\n * ```ts\n * if (isTronNetworkProvider(networkProvider)) {\n * const tronWeb = networkProvider.getTronWeb();\n * }\n * ```\n *\n * @param networkProvider - The network provider to check.\n * @returns True if the network provider is a Tron network provider, false otherwise.\n * @see isTronWalletAccount\n * @see addTronExtension\n * @notInstrumented\n */\nexport const isTronNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is TronNetworkProvider => networkProvider.chain === 'TRON';\n","import {\n assertWalletAccountSigningAvailability,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client';\nimport { getWalletProviderFromWalletAccount } from '@dynamic-labs-sdk/client/core';\n\nimport { NotTronProviderError } from '../errors/NotTronProviderError';\nimport { isTronWalletProvider } from '../isTronWalletProvider';\nimport type { TronWalletAccount } from '../TronWalletAccount.types';\nimport type { TronBroadcastReturnSignedTransaction } from '../TronWalletProvider.types';\n\ntype SendTransactionParams = {\n transaction: {\n amount: number;\n to: string;\n };\n walletAccount: TronWalletAccount;\n};\n\n/**\n * Sends a Tron transaction.\n *\n * @example\n * ```ts\n * const result = await sendTransaction({\n * walletAccount: tronAccount,\n * transaction: tronTransaction,\n * });\n * ```\n *\n * @param params.transaction - The transaction to send.\n * @param params.walletAccount - The wallet account to sign and send the transaction with.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the broadcast return of the signed transaction.\n * @throws {NotTronProviderError} If the wallet account's provider is not a Tron provider.\n * @see getTronWeb\n * @see isTronWalletAccount\n * @notInstrumented\n */\nexport const sendTransaction = async (\n { walletAccount, transaction }: SendTransactionParams,\n client = getDefaultClient()\n): Promise<TronBroadcastReturnSignedTransaction> => {\n await assertWalletAccountSigningAvailability({ walletAccount }, client);\n\n const provider = getWalletProviderFromWalletAccount(\n {\n walletAccount,\n },\n client\n );\n\n if (!isTronWalletProvider(provider)) {\n throw new NotTronProviderError({ providerKey: provider.key });\n }\n\n const tronWeb = await provider.getTronWeb({ walletAccount });\n\n const { amount, to } = transaction;\n const amountInSun = tronWeb.toSun(amount);\n\n return tronWeb.trx.sendTransaction(to, Number(amountInSun), {\n address: walletAccount.address,\n });\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addTronExtension } from '../addTronExtension';\nexport { calculateTronTransactionFee } from '../utils/calculateTronTransactionFee';\nexport { getTronWeb } from '../getTronWeb';\nexport { isTronNetworkProvider } from '../isTronNetworkProvider';\nexport { isTronWalletAccount } from '../isTronWalletAccount';\nexport { sendTransaction } from '../sendTransaction';\nexport type { TronNetworkProvider } from '../TronNetworkProvider.types';\nexport type { TronTransactionFeeData } from '../transactionSimulation.types';\nexport type { TronWalletAccount } from '../TronWalletAccount.types';\nexport type {\n TronBroadcastReturnSignedTransaction,\n TronWeb,\n} from '../TronWalletProvider.types';\n"],"mappings":"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"}