@dynamic-labs-sdk/tron 1.8.1 → 1.11.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 (46) hide show
  1. package/dist/{addTronWalletAdaptersExtension-B4L33g_D.esm.js → addTronWalletAdaptersExtension-CDFDTatp.esm.js} +2 -2
  2. package/dist/{addTronWalletAdaptersExtension-B4L33g_D.esm.js.map → addTronWalletAdaptersExtension-CDFDTatp.esm.js.map} +1 -1
  3. package/dist/{addTronWalletAdaptersExtension-EzLJH1Ei.cjs → addTronWalletAdaptersExtension-cFPShC28.cjs} +2 -2
  4. package/dist/{addTronWalletAdaptersExtension-EzLJH1Ei.cjs.map → addTronWalletAdaptersExtension-cFPShC28.cjs.map} +1 -1
  5. package/dist/{addWaasTronExtension-BuKITyEA.cjs → addWaasTronExtension-CJovJQcg.cjs} +2 -2
  6. package/dist/{addWaasTronExtension-BuKITyEA.cjs.map → addWaasTronExtension-CJovJQcg.cjs.map} +1 -1
  7. package/dist/{addWaasTronExtension-CK24lmvu.esm.js → addWaasTronExtension-N3CEdziN.esm.js} +2 -2
  8. package/dist/{addWaasTronExtension-CK24lmvu.esm.js.map → addWaasTronExtension-N3CEdziN.esm.js.map} +1 -1
  9. package/dist/exports/index.d.ts +2 -0
  10. package/dist/exports/index.d.ts.map +1 -1
  11. package/dist/index.cjs +105 -3
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.esm.js +107 -6
  14. package/dist/index.esm.js.map +1 -1
  15. package/dist/transactionSimulation.types.d.ts +8 -0
  16. package/dist/transactionSimulation.types.d.ts.map +1 -0
  17. package/dist/{tronTransferAmount-BdFQuQ6n.cjs → tronTransferAmount-B3pRUJMP.cjs} +43 -10
  18. package/dist/tronTransferAmount-B3pRUJMP.cjs.map +1 -0
  19. package/dist/{tronTransferAmount-BVmQpnTS.esm.js → tronTransferAmount-BQdhlaSo.esm.js} +44 -11
  20. package/dist/tronTransferAmount-BQdhlaSo.esm.js.map +1 -0
  21. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  22. package/dist/utils/buildUnsignedTronSwapTransaction/buildUnsignedTronSwapTransaction.d.ts +21 -0
  23. package/dist/utils/buildUnsignedTronSwapTransaction/buildUnsignedTronSwapTransaction.d.ts.map +1 -0
  24. package/dist/utils/buildUnsignedTronSwapTransaction/index.d.ts +3 -0
  25. package/dist/utils/buildUnsignedTronSwapTransaction/index.d.ts.map +1 -0
  26. package/dist/utils/calculateTronTransactionFee/calculateTronTransactionFee.d.ts +27 -0
  27. package/dist/utils/calculateTronTransactionFee/calculateTronTransactionFee.d.ts.map +1 -0
  28. package/dist/utils/calculateTronTransactionFee/index.d.ts +2 -0
  29. package/dist/utils/calculateTronTransactionFee/index.d.ts.map +1 -0
  30. package/dist/utils/parseLatestSunPrice/index.d.ts +2 -0
  31. package/dist/utils/parseLatestSunPrice/index.d.ts.map +1 -0
  32. package/dist/utils/parseLatestSunPrice/parseLatestSunPrice.d.ts +11 -0
  33. package/dist/utils/parseLatestSunPrice/parseLatestSunPrice.d.ts.map +1 -0
  34. package/dist/utils/sunToTrxString/index.d.ts +2 -0
  35. package/dist/utils/sunToTrxString/index.d.ts.map +1 -0
  36. package/dist/utils/sunToTrxString/sunToTrxString.d.ts +10 -0
  37. package/dist/utils/sunToTrxString/sunToTrxString.d.ts.map +1 -0
  38. package/dist/utils/tronExecuteSwapTransaction/tronExecuteSwapTransaction.d.ts +7 -5
  39. package/dist/utils/tronExecuteSwapTransaction/tronExecuteSwapTransaction.d.ts.map +1 -1
  40. package/dist/waas.cjs +2 -2
  41. package/dist/waas.esm.js +2 -2
  42. package/dist/walletAdapters.cjs +2 -2
  43. package/dist/walletAdapters.esm.js +2 -2
  44. package/package.json +5 -4
  45. package/dist/tronTransferAmount-BVmQpnTS.esm.js.map +0 -1
  46. package/dist/tronTransferAmount-BdFQuQ6n.cjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { i as tronConfirmTransaction, r as tronExecuteSwapTransaction, s as registerTronNetworkProviderBuilder, t as tronTransferAmount } from "./tronTransferAmount-BVmQpnTS.esm.js";
1
+ import { i as tronConfirmTransaction, r as tronExecuteSwapTransaction, s as registerTronNetworkProviderBuilder, t as tronTransferAmount } from "./tronTransferAmount-BQdhlaSo.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-B4L33g_D.esm.js.map
134
+ //# sourceMappingURL=addTronWalletAdaptersExtension-CDFDTatp.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"addTronWalletAdaptersExtension-B4L33g_D.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":["/** @not-instrumented */\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/** @not-instrumented */\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 * @not-instrumented\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-CDFDTatp.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":["/** @not-instrumented */\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/** @not-instrumented */\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 * @not-instrumented\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-BdFQuQ6n.cjs');
1
+ const require_tronTransferAmount = require('./tronTransferAmount-B3pRUJMP.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-EzLJH1Ei.cjs.map
139
+ //# sourceMappingURL=addTronWalletAdaptersExtension-cFPShC28.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"addTronWalletAdaptersExtension-EzLJH1Ei.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":["/** @not-instrumented */\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/** @not-instrumented */\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 * @not-instrumented\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-cFPShC28.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":["/** @not-instrumented */\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/** @not-instrumented */\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 * @not-instrumented\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-BdFQuQ6n.cjs');
1
+ const require_tronTransferAmount = require('./tronTransferAmount-B3pRUJMP.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-BuKITyEA.cjs.map
116
+ //# sourceMappingURL=addWaasTronExtension-CJovJQcg.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"addWaasTronExtension-BuKITyEA.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/** @not-instrumented */\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 * * @not-instrumented\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-CJovJQcg.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/** @not-instrumented */\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 * * @not-instrumented\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-BVmQpnTS.esm.js";
1
+ import { i as tronConfirmTransaction, r as tronExecuteSwapTransaction, s as registerTronNetworkProviderBuilder, t as tronTransferAmount } from "./tronTransferAmount-BQdhlaSo.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-CK24lmvu.esm.js.map
111
+ //# sourceMappingURL=addWaasTronExtension-N3CEdziN.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"addWaasTronExtension-CK24lmvu.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/** @not-instrumented */\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 * * @not-instrumented\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-N3CEdziN.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/** @not-instrumented */\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 * * @not-instrumented\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,9 +1,11 @@
1
1
  export { addTronExtension } from '../addTronExtension';
2
+ export { calculateTronTransactionFee } from '../utils/calculateTronTransactionFee';
2
3
  export { getTronWeb } from '../getTronWeb';
3
4
  export { isTronNetworkProvider } from '../isTronNetworkProvider';
4
5
  export { isTronWalletAccount } from '../isTronWalletAccount';
5
6
  export { sendTransaction } from '../sendTransaction';
6
7
  export type { TronNetworkProvider } from '../TronNetworkProvider.types';
8
+ export type { TronTransactionFeeData } from '../transactionSimulation.types';
7
9
  export type { TronWalletAccount } from '../TronWalletAccount.types';
8
10
  export type { TronBroadcastReturnSignedTransaction, TronWeb, } from '../TronWalletProvider.types';
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exports/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,YAAY,EACV,oCAAoC,EACpC,OAAO,GACR,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exports/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,YAAY,EACV,oCAAoC,EACpC,OAAO,GACR,MAAM,6BAA6B,CAAC"}
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
- const require_tronTransferAmount = require('./tronTransferAmount-BdFQuQ6n.cjs');
2
- const require_addWaasTronExtension = require('./addWaasTronExtension-BuKITyEA.cjs');
3
- const require_addTronWalletAdaptersExtension = require('./addTronWalletAdaptersExtension-EzLJH1Ei.cjs');
1
+ const require_tronTransferAmount = require('./tronTransferAmount-B3pRUJMP.cjs');
2
+ const require_addWaasTronExtension = require('./addWaasTronExtension-CJovJQcg.cjs');
3
+ const require_addTronWalletAdaptersExtension = require('./addTronWalletAdaptersExtension-cFPShC28.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");
@@ -22,6 +22,107 @@ const addTronExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultC
22
22
  require_addWaasTronExtension.addWaasTronExtension(client);
23
23
  };
24
24
 
25
+ //#endregion
26
+ //#region src/utils/parseLatestSunPrice/parseLatestSunPrice.ts
27
+ /**
28
+ * TronWeb returns resource prices (energy / bandwidth) as a
29
+ * `timestamp:price,...` history string in SUN. The current price is the final
30
+ * entry.
31
+ *
32
+ * @param priceHistory - The raw price-history string from TronWeb.
33
+ * @returns The latest per-unit price in SUN.
34
+ * @not-instrumented
35
+ */
36
+ const parseLatestSunPrice = (priceHistory) => {
37
+ const price = (priceHistory.split(",").at(-1) ?? "").split(":").at(-1) ?? "0";
38
+ return BigInt(price);
39
+ };
40
+
41
+ //#endregion
42
+ //#region src/utils/sunToTrxString/sunToTrxString.ts
43
+ const SUN_PER_TRX = 1000000n;
44
+ const TRX_DECIMALS$1 = 6;
45
+ /**
46
+ * Converts an amount in SUN (TRX's atomic unit) to a human-readable TRX string,
47
+ * trimming trailing zeros (e.g. `12_600_000n` → `"12.6"`).
48
+ *
49
+ * @param sun - The amount in SUN.
50
+ * @returns The human-readable TRX amount.
51
+ * @not-instrumented
52
+ */
53
+ const sunToTrxString = (sun) => {
54
+ const whole = sun / SUN_PER_TRX;
55
+ let fraction = (sun % SUN_PER_TRX).toString().padStart(TRX_DECIMALS$1, "0");
56
+ while (fraction.endsWith("0")) fraction = fraction.slice(0, -1);
57
+ return fraction ? `${whole}.${fraction}` : whole.toString();
58
+ };
59
+
60
+ //#endregion
61
+ //#region src/utils/calculateTronTransactionFee/calculateTronTransactionFee.ts
62
+ const TRX_DECIMALS = 6;
63
+ const NATIVE_TRANSFER_BANDWIDTH = 270;
64
+ /**
65
+ * Estimates the network fee (in SUN) for a Tron transfer, mirroring the
66
+ * EVM/Solana fee estimators — TRC-20 from energy burn, native TRX from
67
+ * bandwidth.
68
+ *
69
+ * @param params.amount - Human-readable transfer amount.
70
+ * @param params.recipient - Destination address.
71
+ * @param params.token - TRC-20 token (`{ address, decimals }`); omit for native TRX.
72
+ * @param params.walletAccount - Tron wallet account paying the fee.
73
+ * @param params.nativeTokenPriceUsd - Optional TRX price for `usdAmount`.
74
+ * @param client - The Dynamic client instance.
75
+ * @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.
79
+ * @not-instrumented
80
+ */
81
+ const calculateTronTransactionFee = async ({ amount, nativeTokenPriceUsd, recipient, token, walletAccount }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
82
+ if (!require_tronTransferAmount.isTronWalletAccount(walletAccount)) throw new _dynamic_labs_sdk_client.InvalidParamError("Wallet account is not a Tron wallet account");
83
+ const provider = (0, _dynamic_labs_sdk_client_core.getWalletProviderFromWalletAccount)({ walletAccount }, client);
84
+ if (!require_tronTransferAmount.isTronWalletProvider(provider)) throw new require_tronTransferAmount.NotTronProviderError({ providerKey: provider.key });
85
+ const tronWeb = await provider.getTronWeb({ walletAccount });
86
+ try {
87
+ const resources = await tronWeb.trx.getAccountResources(walletAccount.address);
88
+ let nativeAmount;
89
+ if (token?.address) {
90
+ const smallestUnitAmount = (0, _dynamic_labs_sdk_client_core.parseAmountToSmallestUnit)({
91
+ amount,
92
+ decimals: token.decimals ?? TRX_DECIMALS
93
+ });
94
+ const { energy_used: energyUsed } = await tronWeb.transactionBuilder.triggerConstantContract(token.address, "transfer(address,uint256)", {}, [{
95
+ type: "address",
96
+ value: recipient
97
+ }, {
98
+ type: "uint256",
99
+ value: smallestUnitAmount
100
+ }], walletAccount.address);
101
+ const availableEnergy = (resources.EnergyLimit ?? 0) - (resources.EnergyUsed ?? 0);
102
+ const burnedEnergy = Math.max(0, (energyUsed ?? 0) - availableEnergy);
103
+ const energyPrice = parseLatestSunPrice(await tronWeb.trx.getEnergyPrices());
104
+ nativeAmount = BigInt(burnedEnergy) * energyPrice;
105
+ } else {
106
+ const freeBandwidth = (resources.freeNetLimit ?? 0) - (resources.freeNetUsed ?? 0);
107
+ const stakedBandwidth = (resources.NetLimit ?? 0) - (resources.NetUsed ?? 0);
108
+ const coveredByBandwidth = freeBandwidth >= NATIVE_TRANSFER_BANDWIDTH || stakedBandwidth >= NATIVE_TRANSFER_BANDWIDTH;
109
+ const bandwidthPrice = parseLatestSunPrice(await tronWeb.trx.getBandwidthPrices());
110
+ nativeAmount = coveredByBandwidth ? 0n : BigInt(NATIVE_TRANSFER_BANDWIDTH) * bandwidthPrice;
111
+ }
112
+ const humanReadableAmount = sunToTrxString(nativeAmount);
113
+ return {
114
+ humanReadableAmount,
115
+ nativeAmount,
116
+ usdAmount: nativeTokenPriceUsd ? (Number(humanReadableAmount) * nativeTokenPriceUsd).toFixed(2) : void 0
117
+ };
118
+ } catch (error) {
119
+ throw new _dynamic_labs_sdk_client.FeeEstimationFailedError({
120
+ cause: error instanceof Error ? error : void 0,
121
+ message: "Failed to estimate Tron transaction fee"
122
+ });
123
+ }
124
+ };
125
+
25
126
  //#endregion
26
127
  //#region src/getTronWeb/getTronWeb.ts
27
128
  /**
@@ -70,6 +171,7 @@ const sendTransaction = async ({ walletAccount, transaction }, client = (0, _dyn
70
171
 
71
172
  //#endregion
72
173
  exports.addTronExtension = addTronExtension;
174
+ exports.calculateTronTransactionFee = calculateTronTransactionFee;
73
175
  exports.getTronWeb = getTronWeb;
74
176
  exports.isTronNetworkProvider = isTronNetworkProvider;
75
177
  exports.isTronWalletAccount = require_tronTransferAmount.isTronWalletAccount;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["isTronWalletProvider","NotTronProviderError","isTronWalletProvider","NotTronProviderError","packageName","packageVersion"],"sources":["../src/addTronExtension/addTronExtension.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 * @not-instrumented\n */\nexport const addTronExtension = (client = getDefaultClient()): void => {\n addTronWalletAdaptersExtension(client);\n addWaasTronExtension(client);\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 * @not-instrumented\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/** @not-instrumented */\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 * @not-instrumented\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 { getTronWeb } from '../getTronWeb';\nexport { isTronNetworkProvider } from '../isTronNetworkProvider';\nexport { isTronWalletAccount } from '../isTronWalletAccount';\nexport { sendTransaction } from '../sendTransaction';\nexport type { TronNetworkProvider } from '../TronNetworkProvider.types';\nexport type { TronWalletAccount } from '../TronWalletAccount.types';\nexport type {\n TronBroadcastReturnSignedTransaction,\n TronWeb,\n} from '../TronWalletProvider.types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAgBA,MAAa,oBAAoB,8DAA2B,KAAW;AACrE,uEAA+B,OAAO;AACtC,mDAAqB,OAAO;;;;;;;;;;;;;;ACK9B,MAAa,aAAa,OACxB,EAAE,iBACF,8DAA2B,KACN;CACrB,MAAM,iFACJ,EACE,eACD,EACD,OACD;AAED,KAAI,CAACA,gDAAqB,SAAS,CACjC,OAAM,IAAIC,gDAAqB,EAAE,aAAa,SAAS,KAAK,CAAC;AAG/D,QAAO,SAAS,WAAW,EAAE,eAAe,CAAC;;;;;;ACjC/C,MAAa,yBACX,oBAC2C,gBAAgB,UAAU;;;;;;;;;;;;ACoBvE,MAAa,kBAAkB,OAC7B,EAAE,eAAe,eACjB,yDAA2B,KACuB;AAClD,4EAA6C,EAAE,eAAe,EAAE,OAAO;CAEvE,MAAM,iFACJ,EACE,eACD,EACD,OACD;AAED,KAAI,CAACC,gDAAqB,SAAS,CACjC,OAAM,IAAIC,gDAAqB,EAAE,aAAa,SAAS,KAAK,CAAC;CAG/D,MAAM,UAAU,MAAM,SAAS,WAAW,EAAE,eAAe,CAAC;CAE5D,MAAM,EAAE,QAAQ,OAAO;CACvB,MAAM,cAAc,QAAQ,MAAM,OAAO;AAEzC,QAAO,QAAQ,IAAI,gBAAgB,IAAI,OAAO,YAAY,EAAE,EAC1D,SAAS,cAAc,SACxB,CAAC;;;;;mEC7CiBC,iCAAaC,mCAAe"}
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 * @not-instrumented\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 * @not-instrumented\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 * @not-instrumented\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 * @not-instrumented\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 * @not-instrumented\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/** @not-instrumented */\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 * @not-instrumented\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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"}
package/dist/index.esm.js CHANGED
@@ -1,9 +1,9 @@
1
- import { a as isTronWalletProvider, c as name, l as version, n as NotTronProviderError, o as isTronWalletAccount } from "./tronTransferAmount-BVmQpnTS.esm.js";
2
- import { t as addWaasTronExtension } from "./addWaasTronExtension-CK24lmvu.esm.js";
3
- import { t as addTronWalletAdaptersExtension } from "./addTronWalletAdaptersExtension-B4L33g_D.esm.js";
1
+ import { a as isTronWalletProvider, c as name, l as version, n as NotTronProviderError, o as isTronWalletAccount } from "./tronTransferAmount-BQdhlaSo.esm.js";
2
+ import { t as addWaasTronExtension } from "./addWaasTronExtension-N3CEdziN.esm.js";
3
+ import { t as addTronWalletAdaptersExtension } from "./addTronWalletAdaptersExtension-CDFDTatp.esm.js";
4
4
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
5
- import { getDefaultClient, getWalletProviderFromWalletAccount } from "@dynamic-labs-sdk/client/core";
6
- import { assertWalletAccountSigningAvailability, getDefaultClient as getDefaultClient$1 } from "@dynamic-labs-sdk/client";
5
+ import { getDefaultClient, getWalletProviderFromWalletAccount, parseAmountToSmallestUnit } from "@dynamic-labs-sdk/client/core";
6
+ import { FeeEstimationFailedError, InvalidParamError, assertWalletAccountSigningAvailability, getDefaultClient as getDefaultClient$1 } from "@dynamic-labs-sdk/client";
7
7
 
8
8
  //#region src/addTronExtension/addTronExtension.ts
9
9
  /**
@@ -22,6 +22,107 @@ const addTronExtension = (client = getDefaultClient()) => {
22
22
  addWaasTronExtension(client);
23
23
  };
24
24
 
25
+ //#endregion
26
+ //#region src/utils/parseLatestSunPrice/parseLatestSunPrice.ts
27
+ /**
28
+ * TronWeb returns resource prices (energy / bandwidth) as a
29
+ * `timestamp:price,...` history string in SUN. The current price is the final
30
+ * entry.
31
+ *
32
+ * @param priceHistory - The raw price-history string from TronWeb.
33
+ * @returns The latest per-unit price in SUN.
34
+ * @not-instrumented
35
+ */
36
+ const parseLatestSunPrice = (priceHistory) => {
37
+ const price = (priceHistory.split(",").at(-1) ?? "").split(":").at(-1) ?? "0";
38
+ return BigInt(price);
39
+ };
40
+
41
+ //#endregion
42
+ //#region src/utils/sunToTrxString/sunToTrxString.ts
43
+ const SUN_PER_TRX = 1000000n;
44
+ const TRX_DECIMALS$1 = 6;
45
+ /**
46
+ * Converts an amount in SUN (TRX's atomic unit) to a human-readable TRX string,
47
+ * trimming trailing zeros (e.g. `12_600_000n` → `"12.6"`).
48
+ *
49
+ * @param sun - The amount in SUN.
50
+ * @returns The human-readable TRX amount.
51
+ * @not-instrumented
52
+ */
53
+ const sunToTrxString = (sun) => {
54
+ const whole = sun / SUN_PER_TRX;
55
+ let fraction = (sun % SUN_PER_TRX).toString().padStart(TRX_DECIMALS$1, "0");
56
+ while (fraction.endsWith("0")) fraction = fraction.slice(0, -1);
57
+ return fraction ? `${whole}.${fraction}` : whole.toString();
58
+ };
59
+
60
+ //#endregion
61
+ //#region src/utils/calculateTronTransactionFee/calculateTronTransactionFee.ts
62
+ const TRX_DECIMALS = 6;
63
+ const NATIVE_TRANSFER_BANDWIDTH = 270;
64
+ /**
65
+ * Estimates the network fee (in SUN) for a Tron transfer, mirroring the
66
+ * EVM/Solana fee estimators — TRC-20 from energy burn, native TRX from
67
+ * bandwidth.
68
+ *
69
+ * @param params.amount - Human-readable transfer amount.
70
+ * @param params.recipient - Destination address.
71
+ * @param params.token - TRC-20 token (`{ address, decimals }`); omit for native TRX.
72
+ * @param params.walletAccount - Tron wallet account paying the fee.
73
+ * @param params.nativeTokenPriceUsd - Optional TRX price for `usdAmount`.
74
+ * @param client - The Dynamic client instance.
75
+ * @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.
79
+ * @not-instrumented
80
+ */
81
+ const calculateTronTransactionFee = async ({ amount, nativeTokenPriceUsd, recipient, token, walletAccount }, client = getDefaultClient$1()) => {
82
+ if (!isTronWalletAccount(walletAccount)) throw new InvalidParamError("Wallet account is not a Tron wallet account");
83
+ const provider = getWalletProviderFromWalletAccount({ walletAccount }, client);
84
+ if (!isTronWalletProvider(provider)) throw new NotTronProviderError({ providerKey: provider.key });
85
+ const tronWeb = await provider.getTronWeb({ walletAccount });
86
+ try {
87
+ const resources = await tronWeb.trx.getAccountResources(walletAccount.address);
88
+ let nativeAmount;
89
+ if (token?.address) {
90
+ const smallestUnitAmount = parseAmountToSmallestUnit({
91
+ amount,
92
+ decimals: token.decimals ?? TRX_DECIMALS
93
+ });
94
+ const { energy_used: energyUsed } = await tronWeb.transactionBuilder.triggerConstantContract(token.address, "transfer(address,uint256)", {}, [{
95
+ type: "address",
96
+ value: recipient
97
+ }, {
98
+ type: "uint256",
99
+ value: smallestUnitAmount
100
+ }], walletAccount.address);
101
+ const availableEnergy = (resources.EnergyLimit ?? 0) - (resources.EnergyUsed ?? 0);
102
+ const burnedEnergy = Math.max(0, (energyUsed ?? 0) - availableEnergy);
103
+ const energyPrice = parseLatestSunPrice(await tronWeb.trx.getEnergyPrices());
104
+ nativeAmount = BigInt(burnedEnergy) * energyPrice;
105
+ } else {
106
+ const freeBandwidth = (resources.freeNetLimit ?? 0) - (resources.freeNetUsed ?? 0);
107
+ const stakedBandwidth = (resources.NetLimit ?? 0) - (resources.NetUsed ?? 0);
108
+ const coveredByBandwidth = freeBandwidth >= NATIVE_TRANSFER_BANDWIDTH || stakedBandwidth >= NATIVE_TRANSFER_BANDWIDTH;
109
+ const bandwidthPrice = parseLatestSunPrice(await tronWeb.trx.getBandwidthPrices());
110
+ nativeAmount = coveredByBandwidth ? 0n : BigInt(NATIVE_TRANSFER_BANDWIDTH) * bandwidthPrice;
111
+ }
112
+ const humanReadableAmount = sunToTrxString(nativeAmount);
113
+ return {
114
+ humanReadableAmount,
115
+ nativeAmount,
116
+ usdAmount: nativeTokenPriceUsd ? (Number(humanReadableAmount) * nativeTokenPriceUsd).toFixed(2) : void 0
117
+ };
118
+ } catch (error) {
119
+ throw new FeeEstimationFailedError({
120
+ cause: error instanceof Error ? error : void 0,
121
+ message: "Failed to estimate Tron transaction fee"
122
+ });
123
+ }
124
+ };
125
+
25
126
  //#endregion
26
127
  //#region src/getTronWeb/getTronWeb.ts
27
128
  /**
@@ -69,5 +170,5 @@ const sendTransaction = async ({ walletAccount, transaction }, client = getDefau
69
170
  assertPackageVersion(name, version);
70
171
 
71
172
  //#endregion
72
- export { addTronExtension, getTronWeb, isTronNetworkProvider, isTronWalletAccount, sendTransaction };
173
+ export { addTronExtension, calculateTronTransactionFee, getTronWeb, isTronNetworkProvider, isTronWalletAccount, sendTransaction };
73
174
  //# sourceMappingURL=index.esm.js.map