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