@dynamic-labs-sdk/evm 1.27.1 → 1.28.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/{addEIP6963Extension-CqYzvsGf.esm.js → addEIP6963Extension-B3sd-Ie6.esm.js} +3 -3
- package/dist/{addEIP6963Extension-CqYzvsGf.esm.js.map → addEIP6963Extension-B3sd-Ie6.esm.js.map} +1 -1
- package/dist/{addEIP6963Extension-BY2IMjHz.cjs → addEIP6963Extension-D2jcmZ9I.cjs} +3 -3
- package/dist/{addEIP6963Extension-BY2IMjHz.cjs.map → addEIP6963Extension-D2jcmZ9I.cjs.map} +1 -1
- package/dist/{addEIP6963Extension-h10IapXB.native.esm.js → addEIP6963Extension-ZpGdqv-5.native.esm.js} +1 -1
- package/dist/{addEIP6963Extension-h10IapXB.native.esm.js.map → addEIP6963Extension-ZpGdqv-5.native.esm.js.map} +1 -1
- package/dist/{addWaasEvmExtension-BTtNSDF0.cjs → addWaasEvmExtension-B9ahfRe5.cjs} +3 -3
- package/dist/{addWaasEvmExtension-BTtNSDF0.cjs.map → addWaasEvmExtension-B9ahfRe5.cjs.map} +1 -1
- package/dist/{addWaasEvmExtension-V3vwSfx0.native.esm.js → addWaasEvmExtension-C1AU3Ds3.native.esm.js} +3 -3
- package/dist/{addWaasEvmExtension-V3vwSfx0.native.esm.js.map → addWaasEvmExtension-C1AU3Ds3.native.esm.js.map} +1 -1
- package/dist/{addWaasEvmExtension-Dski1NZH.esm.js → addWaasEvmExtension-DJBVs4SM.esm.js} +3 -3
- package/dist/{addWaasEvmExtension-Dski1NZH.esm.js.map → addWaasEvmExtension-DJBVs4SM.esm.js.map} +1 -1
- package/dist/baseAccount.cjs +5 -5
- package/dist/baseAccount.cjs.map +1 -1
- package/dist/baseAccount.esm.js +4 -4
- package/dist/baseAccount.native.esm.js +4 -4
- package/dist/core.cjs +10 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.esm.js +10 -0
- package/dist/core.esm.js.map +1 -0
- package/dist/core.native.esm.js +10 -0
- package/dist/core.native.esm.js.map +1 -0
- package/dist/{createWalletClientForWalletAccount-CqjIUBZX.esm.js → createPublicClientFromNetworkData-9g8Hsu4A.native.esm.js} +25 -29
- package/dist/createPublicClientFromNetworkData-9g8Hsu4A.native.esm.js.map +1 -0
- package/dist/{createWalletClientForWalletAccount-IAS-SU0s.cjs → createPublicClientFromNetworkData-BAC8YTrK.cjs} +25 -29
- package/dist/createPublicClientFromNetworkData-BAC8YTrK.cjs.map +1 -0
- package/dist/{createWalletClientForWalletAccount-CsfxMvvD.native.esm.js → createPublicClientFromNetworkData-CKikh3WW.esm.js} +25 -29
- package/dist/createPublicClientFromNetworkData-CKikh3WW.esm.js.map +1 -0
- package/dist/{createWalletProviderFromEIP1193Provider-CFFt6Rgh.esm.js → createWalletProviderFromEIP1193Provider-4MMiSqMQ.esm.js} +2 -2
- package/dist/{createWalletProviderFromEIP1193Provider-CFFt6Rgh.esm.js.map → createWalletProviderFromEIP1193Provider-4MMiSqMQ.esm.js.map} +1 -1
- package/dist/{createWalletProviderFromEIP1193Provider-CTTBCAO9.cjs → createWalletProviderFromEIP1193Provider-D3aj3d2V.cjs} +2 -2
- package/dist/{createWalletProviderFromEIP1193Provider-CTTBCAO9.cjs.map → createWalletProviderFromEIP1193Provider-D3aj3d2V.cjs.map} +1 -1
- package/dist/{createWalletProviderFromEIP1193Provider-BoNh5_kO.native.esm.js → createWalletProviderFromEIP1193Provider-Hvo5XS3P.native.esm.js} +2 -2
- package/dist/{createWalletProviderFromEIP1193Provider-BoNh5_kO.native.esm.js.map → createWalletProviderFromEIP1193Provider-Hvo5XS3P.native.esm.js.map} +1 -1
- package/dist/eip6963.cjs +6 -6
- package/dist/eip6963.cjs.map +1 -1
- package/dist/eip6963.esm.js +5 -5
- package/dist/eip6963.native.esm.js +2 -2
- package/dist/{evmTransferAmount-D9Sygfbl.native.esm.js → evmTransferAmount-CdNpxpcI.native.esm.js} +85 -39
- package/dist/evmTransferAmount-CdNpxpcI.native.esm.js.map +1 -0
- package/dist/{evmTransferAmount-Dl8nJwIB.esm.js → evmTransferAmount-DOof5Y3i.esm.js} +85 -39
- package/dist/evmTransferAmount-DOof5Y3i.esm.js.map +1 -0
- package/dist/{evmTransferAmount-B2v3F1K-.cjs → evmTransferAmount-DdPV2GBu.cjs} +100 -48
- package/dist/evmTransferAmount-DdPV2GBu.cjs.map +1 -0
- package/dist/exports/core.d.ts +10 -0
- package/dist/exports/core.d.ts.map +1 -0
- package/dist/exports/index.d.ts +1 -0
- package/dist/exports/index.d.ts.map +1 -1
- package/dist/gasless/generateSponsoredTransactionNonce/generateSponsoredTransactionNonce.d.ts +35 -0
- package/dist/gasless/generateSponsoredTransactionNonce/generateSponsoredTransactionNonce.d.ts.map +1 -0
- package/dist/gasless/generateSponsoredTransactionNonce/index.d.ts +2 -0
- package/dist/gasless/generateSponsoredTransactionNonce/index.d.ts.map +1 -0
- package/dist/gasless/isWaasEvmWalletProvider/index.d.ts +2 -0
- package/dist/gasless/isWaasEvmWalletProvider/index.d.ts.map +1 -0
- package/dist/gasless/isWaasEvmWalletProvider/isWaasEvmWalletProvider.d.ts +5 -0
- package/dist/gasless/isWaasEvmWalletProvider/isWaasEvmWalletProvider.d.ts.map +1 -0
- package/dist/gasless/signSponsoredTransaction/signSponsoredTransaction.d.ts.map +1 -1
- package/dist/{getEvmNetworksData-LjMufQCF.native.esm.js → getEvmNetworksData-CGZjI4hV.native.esm.js} +1 -1
- package/dist/{getEvmNetworksData-LjMufQCF.native.esm.js.map → getEvmNetworksData-CGZjI4hV.native.esm.js.map} +1 -1
- package/dist/{getEvmNetworksData-CJZCYx1s.esm.js → getEvmNetworksData-ChkgLvCg.esm.js} +1 -1
- package/dist/{getEvmNetworksData-CJZCYx1s.esm.js.map → getEvmNetworksData-ChkgLvCg.esm.js.map} +1 -1
- package/dist/{getEvmNetworksData-DeTFPFv4.cjs → getEvmNetworksData-DBJIMiOH.cjs} +1 -1
- package/dist/{getEvmNetworksData-DeTFPFv4.cjs.map → getEvmNetworksData-DBJIMiOH.cjs.map} +1 -1
- package/dist/index.cjs +9 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +7 -7
- package/dist/index.esm.js.map +1 -1
- package/dist/index.native.esm.js +6 -6
- package/dist/index.native.esm.js.map +1 -1
- package/dist/isEvmWalletProvider/isEvmWalletProvider.d.ts +19 -1
- package/dist/isEvmWalletProvider/isEvmWalletProvider.d.ts.map +1 -1
- package/dist/isEvmWalletProvider-BbWMsj-k.esm.js +25 -0
- package/dist/isEvmWalletProvider-BbWMsj-k.esm.js.map +1 -0
- package/dist/isEvmWalletProvider-CPLo4h33.native.esm.js +25 -0
- package/dist/isEvmWalletProvider-CPLo4h33.native.esm.js.map +1 -0
- package/dist/isEvmWalletProvider-pIGuzazF.cjs +31 -0
- package/dist/isEvmWalletProvider-pIGuzazF.cjs.map +1 -0
- package/dist/{mapNetworkDataToViemChain-C9086tZ-.native.esm.js → mapNetworkDataToViemChain-BOVFIupF.native.esm.js} +1 -1
- package/dist/{mapNetworkDataToViemChain-C9086tZ-.native.esm.js.map → mapNetworkDataToViemChain-BOVFIupF.native.esm.js.map} +1 -1
- package/dist/{mapNetworkDataToViemChain-LEfz7R8b.esm.js → mapNetworkDataToViemChain-BoRJEvJf.cjs} +7 -6
- package/dist/mapNetworkDataToViemChain-BoRJEvJf.cjs.map +1 -0
- package/dist/{mapNetworkDataToViemChain-CkTa7r8_.cjs → mapNetworkDataToViemChain-Dr5Vws1-.esm.js} +2 -25
- package/dist/mapNetworkDataToViemChain-Dr5Vws1-.esm.js.map +1 -0
- package/dist/metamask/createMetaMaskEvmWalletProvider/createMetaMaskEvmWalletProvider.d.ts +4 -1
- package/dist/metamask/createMetaMaskEvmWalletProvider/createMetaMaskEvmWalletProvider.d.ts.map +1 -1
- package/dist/metamask/utils/createMetaMaskEvmController/createMetaMaskEvmController.d.ts +3 -0
- package/dist/metamask/utils/createMetaMaskEvmController/createMetaMaskEvmController.d.ts.map +1 -1
- package/dist/metamask/utils/warnWhenChainNotConfigured/index.d.ts +3 -0
- package/dist/metamask/utils/warnWhenChainNotConfigured/index.d.ts.map +1 -0
- package/dist/metamask/utils/warnWhenChainNotConfigured/warnWhenChainNotConfigured.d.ts +28 -0
- package/dist/metamask/utils/warnWhenChainNotConfigured/warnWhenChainNotConfigured.d.ts.map +1 -0
- package/dist/metamask.cjs +70 -15
- package/dist/metamask.cjs.map +1 -1
- package/dist/metamask.esm.js +69 -14
- package/dist/metamask.esm.js.map +1 -1
- package/dist/metamask.native.esm.js +69 -14
- package/dist/metamask.native.esm.js.map +1 -1
- package/dist/{package-Dfs9JHUk.native.esm.js → package-BFPtIID5.native.esm.js} +2 -2
- package/dist/package-BFPtIID5.native.esm.js.map +1 -0
- package/dist/package-CYgL-jHE.cjs +19 -0
- package/dist/package-CYgL-jHE.cjs.map +1 -0
- package/dist/package-DHBQhe-i.esm.js +7 -0
- package/dist/package-DHBQhe-i.esm.js.map +1 -0
- package/dist/tempo.cjs +3 -2
- package/dist/tempo.cjs.map +1 -1
- package/dist/tempo.esm.js +2 -1
- package/dist/tempo.esm.js.map +1 -1
- package/dist/tempo.native.esm.js +2 -2
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/utils/approveErc20IfRequiredAndWaitReceipt/approveErc20IfRequiredAndWaitReceipt.d.ts +1 -1
- package/dist/utils/approveErc20IfRequiredAndWaitReceipt/approveErc20IfRequiredAndWaitReceipt.d.ts.map +1 -1
- package/dist/utils/evmExecuteSwapTransaction/evmExecuteSwapTransaction.d.ts +2 -1
- package/dist/utils/evmExecuteSwapTransaction/evmExecuteSwapTransaction.d.ts.map +1 -1
- package/dist/viem.cjs +6 -5
- package/dist/viem.cjs.map +1 -1
- package/dist/viem.esm.js +3 -2
- package/dist/viem.esm.js.map +1 -1
- package/dist/viem.native.esm.js +3 -3
- package/dist/waas.cjs +5 -5
- package/dist/waas.cjs.map +1 -1
- package/dist/waas.esm.js +4 -4
- package/dist/waas.native.esm.js +4 -4
- package/dist/walletConnect.cjs +5 -5
- package/dist/walletConnect.cjs.map +1 -1
- package/dist/walletConnect.esm.js +4 -4
- package/dist/walletConnect.native.esm.js +4 -4
- package/dist/windowInjected.cjs +5 -5
- package/dist/windowInjected.cjs.map +1 -1
- package/dist/windowInjected.esm.js +4 -4
- package/dist/windowInjected.native.esm.js +4 -4
- package/package.json +13 -6
- package/dist/createWalletClientForWalletAccount-CqjIUBZX.esm.js.map +0 -1
- package/dist/createWalletClientForWalletAccount-CsfxMvvD.native.esm.js.map +0 -1
- package/dist/createWalletClientForWalletAccount-IAS-SU0s.cjs.map +0 -1
- package/dist/evmTransferAmount-B2v3F1K-.cjs.map +0 -1
- package/dist/evmTransferAmount-D9Sygfbl.native.esm.js.map +0 -1
- package/dist/evmTransferAmount-Dl8nJwIB.esm.js.map +0 -1
- package/dist/gasless/generateIntentNonce/generateIntentNonce.d.ts +0 -20
- package/dist/gasless/generateIntentNonce/generateIntentNonce.d.ts.map +0 -1
- package/dist/gasless/generateIntentNonce/index.d.ts +0 -2
- package/dist/gasless/generateIntentNonce/index.d.ts.map +0 -1
- package/dist/mapNetworkDataToViemChain-CkTa7r8_.cjs.map +0 -1
- package/dist/mapNetworkDataToViemChain-LEfz7R8b.esm.js.map +0 -1
- package/dist/package-Dfs9JHUk.native.esm.js.map +0 -1
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","names":["getDefaultClient","maxFeePerGas: bigint | undefined","maxPriorityFeePerGas: bigint | undefined","gasPrice: bigint | undefined","nativeAmount: bigint","feeData: EvmSimulationResult['feeData']","packageName","packageVersion"],"sources":["../src/gasless/activate7702Delegation/activate7702Delegation.ts","../src/addEvmExtension/addEvmExtension.ts","../src/errors/EvmGasSponsorshipNotEnabledError/EvmGasSponsorshipNotEnabledError.ts","../src/isEvmNetworkProvider/isEvmNetworkProvider.ts","../src/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.ts","../src/simulateEvmTransaction/simulateEvmTransaction.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport type { Hex } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { sendSponsoredTransaction } from '../sendSponsoredTransaction';\n\ntype Activate7702DelegationParams = {\n /** Pre-signed EIP-7702 authorization. If not provided, one will be signed automatically. */\n authorization?: SignAuthorizationReturnType;\n /** The EVM wallet account to activate delegation for. */\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Activates EIP-7702 delegation for a wallet by sending a sponsored\n * transaction that only contains the 7702 authorization.\n *\n * After activation, the wallet's delegation is persisted on-chain and\n * subsequent sponsored transactions no longer need to include the\n * authorization.\n *\n * @example\n * ```ts\n * const { transactionHash } = await activate7702Delegation({\n * walletAccount: evmAccount,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account to activate delegation for.\n * @param [params.authorization] - Pre-signed authorization. If omitted, signs one automatically.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the on-chain transaction hash.\n * @throws {SponsorTransactionError} If the relay returns a terminal failure or polling times out.\n * @see is7702DelegationActive\n * @see sign7702Authorization\n * @notInstrumented\n */\nexport const activate7702Delegation = async (\n { walletAccount, authorization }: Activate7702DelegationParams,\n client = getDefaultClient()\n): Promise<{ transactionHash: Hex }> =>\n sendSponsoredTransaction(\n { authorization, calls: [], walletAccount },\n client\n );\n","import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addEIP6963Extension } from '../eip6963/addEIP6963Extension';\nimport { addWaasEvmExtension } from '../waas/addWaasEvmExtension';\n\n/**\n * Adds the EVM extension to the Dynamic client.\n *\n * This is a convenience function that adds both the EIP-6963 extension\n * and the Dynamic WaaS EVM extension, enabling support for all EVM wallet types\n * including standard wallets and embedded wallets managed by Dynamic's infrastructure.\n *\n * @example\n * ```ts\n * const client = createDynamicClient({ environmentId: 'env-123' });\n * addEvmExtension(client);\n * ```\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns void\n * @see isEvmWalletAccount\n * @see isEvmNetworkProvider\n * @notInstrumented\n */\nexport const addEvmExtension = (client = getDefaultClient()): void => {\n addEIP6963Extension(client);\n addWaasEvmExtension(client);\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class EvmGasSponsorshipNotEnabledError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'evm_gas_sponsorship_not_enabled_error',\n docsUrl: null,\n name: 'EvmGasSponsorshipNotEnabledError',\n shortMessage: 'EVM gas sponsorship is not enabled for this project',\n });\n }\n}\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { EvmNetworkProvider } from '../EvmNetworkProvider';\n\n/**\n * Type guard function to check if a network provider is an EVM network provider.\n *\n * @example\n * ```ts\n * if (isEvmNetworkProvider(networkProvider)) {\n * const publicClient = networkProvider.getPublicClient();\n * }\n * ```\n *\n * @param networkProvider - The network provider to check.\n * @returns True if the network provider is an EVM network provider, false otherwise.\n * @see isEvmWalletAccount\n * @see addEvmExtension\n * @notInstrumented\n */\nexport const isEvmNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is EvmNetworkProvider => networkProvider.chain === 'EVM';\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { FeeEstimationFailedError } from '@dynamic-labs-sdk/client';\nimport { formatEther } from 'viem';\n\nimport type {\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../../transactionSimulation.types';\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\n\ntype CalculateEvmTransactionFeeParams = {\n nativeTokenPriceUsd?: number;\n networkData: NetworkData;\n transaction: EvmTransactionToSimulate;\n};\n\n/**\n * Calculates the estimated fee for an EVM transaction.\n *\n * This function estimates gas usage and calculates the total transaction fee\n * using either legacy gas pricing or EIP-1559 pricing. The fee is returned\n * in both native units (wei) and human-readable format (ETH).\n *\n * @example\n * ```ts\n * const feeData = await calculateEvmTransactionFee({\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * networkData,\n * nativeTokenPriceUsd: 3500,\n * });\n * ```\n *\n * @param params.transaction - The transaction to estimate fees for.\n * @param params.networkData - Network configuration for RPC connection.\n * @param params.nativeTokenPriceUsd - Optional USD price of the native token for fee conversion.\n * @returns Fee data including gas estimates and human-readable amounts.\n * @throws {FeeEstimationFailedError} If gas estimation or fee retrieval fails.\n * @see simulateEvmTransaction\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const calculateEvmTransactionFee = async ({\n transaction,\n networkData,\n nativeTokenPriceUsd,\n}: CalculateEvmTransactionFeeParams): Promise<EvmTransactionFeeData> => {\n try {\n const publicClient = createPublicClientFromNetworkData({ networkData });\n\n // Estimate gas for the transaction\n const gasEstimate = await publicClient.estimateGas({\n account: transaction.from,\n data: transaction.data,\n to: transaction.to,\n value: transaction.value,\n });\n\n // Try to get EIP-1559 fees first, fallback to legacy gas price\n let maxFeePerGas: bigint | undefined;\n let maxPriorityFeePerGas: bigint | undefined;\n let gasPrice: bigint | undefined;\n let nativeAmount: bigint;\n\n try {\n const feeData = await publicClient.estimateFeesPerGas();\n maxFeePerGas = feeData.maxFeePerGas;\n maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n\n // Calculate fee using EIP-1559 pricing\n nativeAmount = gasEstimate * maxFeePerGas;\n } catch {\n // Fallback to legacy gas pricing\n gasPrice = await publicClient.getGasPrice();\n nativeAmount = gasEstimate * gasPrice;\n }\n\n // Format to human-readable ETH\n const humanReadableAmount = formatEther(nativeAmount);\n\n // Calculate USD amount if price data available\n const usdAmount = nativeTokenPriceUsd\n ? (Number(humanReadableAmount) * nativeTokenPriceUsd).toFixed(2)\n : undefined;\n\n return {\n gasEstimate,\n gasPrice,\n humanReadableAmount,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nativeAmount,\n usdAmount,\n };\n } catch (error) {\n throw new FeeEstimationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to estimate EVM transaction fee',\n });\n }\n};\n","import {\n FeeEstimationFailedError,\n InvalidParamError,\n SimulationFailedError,\n getDefaultClient,\n getNetworksData,\n} from '@dynamic-labs-sdk/client';\nimport { createApiClient, getCore } from '@dynamic-labs-sdk/client/core';\nimport type { SimulateEVMTransactionRequest } from '@dynamic-labs/sdk-api-core';\n\nimport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nimport type {\n EvmSimulationResult,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nimport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nimport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\n\ntype SimulateEvmTransactionParams = {\n includeFees?: boolean;\n transaction: EvmTransactionToSimulate;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Simulates an EVM transaction to preview its effects before execution.\n *\n * This function uses the Blockaid API to analyze the transaction and returns\n * information about asset transfers, security validation, and optionally fee estimates.\n * The simulation shows what will happen when the transaction is executed without\n * actually sending it to the blockchain.\n *\n * @example\n * ```ts\n * const result = await simulateEvmTransaction({\n * walletAccount: evmAccount,\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * includeFees: true,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account that will sign the transaction.\n * @param params.transaction - The transaction to simulate, including network ID.\n * @param params.includeFees - Whether to calculate transaction fees (default: false).\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns Simulation result with asset diffs, security validation, and optional fee data.\n * @throws {InvalidParamError} If wallet account is not an EVM account or network ID is not configured.\n * @throws {SimulationFailedError} If the simulation API call fails.\n * @throws {FeeEstimationFailedError} If includeFees is true and fee calculation fails.\n * @see calculateEvmTransactionFee\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const simulateEvmTransaction = async (\n {\n walletAccount,\n transaction,\n includeFees = false,\n }: SimulateEvmTransactionParams,\n client = getDefaultClient()\n): Promise<EvmSimulationResult> => {\n // Validate wallet account type\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account must be an EVM wallet account');\n }\n\n // Get network data for the specified network\n const networksData = getNetworksData(client);\n const networkData = networksData.find(\n (data) => data.networkId === transaction.networkId && data.chain === 'EVM'\n );\n\n if (!networkData) {\n throw new InvalidParamError(\n `Network with ID ${transaction.networkId} is not configured in project settings`\n );\n }\n\n try {\n // Create API client and call simulation endpoint\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const simulateEVMTransactionRequest = {\n chainId: transaction.networkId,\n data: transaction.data || '0x',\n from: transaction.from,\n to: transaction.to,\n } as SimulateEVMTransactionRequest;\n\n if (transaction.value !== undefined) {\n simulateEVMTransactionRequest.value = transaction.value.toString();\n }\n\n const response = await apiClient.simulateEVMTransaction({\n environmentId: core.environmentId,\n simulateEVMTransactionRequest,\n });\n\n // Calculate fees if requested\n let feeData: EvmSimulationResult['feeData'];\n\n if (includeFees) {\n feeData = await calculateEvmTransactionFee({\n nativeTokenPriceUsd: response.priceData?.nativeTokenUsdPrice,\n networkData,\n transaction,\n });\n }\n\n // Map API response to simulation result\n return {\n counterparties: response.counterparties,\n feeData,\n inAssets: response.inAssets || [],\n outAssets: response.outAssets || [],\n priceData: response.priceData,\n showTotalFiat: response.showTotalFiat,\n validation: response.validation\n ? {\n description: response.validation.description,\n reason: response.validation.reason,\n result: response.validation.result as\n | 'benign'\n | 'warning'\n | 'malicious',\n }\n : undefined,\n };\n } catch (error) {\n // Re-throw FeeEstimationFailedError as-is\n if (error instanceof FeeEstimationFailedError) {\n throw error;\n }\n\n throw new SimulationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to simulate EVM transaction',\n });\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 { activate7702Delegation } from '../gasless/activate7702Delegation';\nexport { addEvmExtension } from '../addEvmExtension';\nexport { EvmGasSponsorshipNotEnabledError } from '../errors/EvmGasSponsorshipNotEnabledError';\nexport { RpcError } from '../errors/RpcError';\nexport { SponsorTransactionError } from '../errors/SponsorTransactionError';\nexport type { EvmNetworkProvider } from '../EvmNetworkProvider';\nexport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nexport type { EvmWalletProvider } from '../EvmWalletProvider.types';\nexport type {\n SerializedAuthorization,\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n SponsoredTransactionStatus,\n SponsoredTransactionStatusResult,\n} from '../gasless/gasless.types';\nexport { getEVMSponsoredTransactionStatus } from '../gasless/getEVMSponsoredTransactionStatus';\nexport { is7702DelegationActive } from '../gasless/is7702DelegationActive';\nexport { isEvmGasSponsorshipEnabled } from '../gasless/isEvmGasSponsorshipEnabled';\nexport { isEvmNetworkProvider } from '../isEvmNetworkProvider';\nexport { simulateEvmTransaction } from '../simulateEvmTransaction';\nexport type {\n EvmSimulationResult,\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nexport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nexport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\nexport { relaySponsoredTransaction } from '../gasless/relaySponsoredTransaction';\nexport { sendSponsoredTransaction } from '../gasless/sendSponsoredTransaction';\nexport { sign7702Authorization } from '../gasless/sign7702Authorization';\nexport { signSponsoredTransaction } from '../gasless/signSponsoredTransaction';\nexport { waitForSponsoredTransaction } from '../gasless/waitForSponsoredTransaction';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","names":["getDefaultClient","maxFeePerGas: bigint | undefined","maxPriorityFeePerGas: bigint | undefined","gasPrice: bigint | undefined","nativeAmount: bigint","feeData: EvmSimulationResult['feeData']","packageName","packageVersion"],"sources":["../src/gasless/activate7702Delegation/activate7702Delegation.ts","../src/addEvmExtension/addEvmExtension.ts","../src/errors/EvmGasSponsorshipNotEnabledError/EvmGasSponsorshipNotEnabledError.ts","../src/isEvmNetworkProvider/isEvmNetworkProvider.ts","../src/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.ts","../src/simulateEvmTransaction/simulateEvmTransaction.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport type { Hex } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { sendSponsoredTransaction } from '../sendSponsoredTransaction';\n\ntype Activate7702DelegationParams = {\n /** Pre-signed EIP-7702 authorization. If not provided, one will be signed automatically. */\n authorization?: SignAuthorizationReturnType;\n /** The EVM wallet account to activate delegation for. */\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Activates EIP-7702 delegation for a wallet by sending a sponsored\n * transaction that only contains the 7702 authorization.\n *\n * After activation, the wallet's delegation is persisted on-chain and\n * subsequent sponsored transactions no longer need to include the\n * authorization.\n *\n * @example\n * ```ts\n * const { transactionHash } = await activate7702Delegation({\n * walletAccount: evmAccount,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account to activate delegation for.\n * @param [params.authorization] - Pre-signed authorization. If omitted, signs one automatically.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the on-chain transaction hash.\n * @throws {SponsorTransactionError} If the relay returns a terminal failure or polling times out.\n * @see is7702DelegationActive\n * @see sign7702Authorization\n * @notInstrumented\n */\nexport const activate7702Delegation = async (\n { walletAccount, authorization }: Activate7702DelegationParams,\n client = getDefaultClient()\n): Promise<{ transactionHash: Hex }> =>\n sendSponsoredTransaction(\n { authorization, calls: [], walletAccount },\n client\n );\n","import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addEIP6963Extension } from '../eip6963/addEIP6963Extension';\nimport { addWaasEvmExtension } from '../waas/addWaasEvmExtension';\n\n/**\n * Adds the EVM extension to the Dynamic client.\n *\n * This is a convenience function that adds both the EIP-6963 extension\n * and the Dynamic WaaS EVM extension, enabling support for all EVM wallet types\n * including standard wallets and embedded wallets managed by Dynamic's infrastructure.\n *\n * @example\n * ```ts\n * const client = createDynamicClient({ environmentId: 'env-123' });\n * addEvmExtension(client);\n * ```\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns void\n * @see isEvmWalletAccount\n * @see isEvmNetworkProvider\n * @notInstrumented\n */\nexport const addEvmExtension = (client = getDefaultClient()): void => {\n addEIP6963Extension(client);\n addWaasEvmExtension(client);\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class EvmGasSponsorshipNotEnabledError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'evm_gas_sponsorship_not_enabled_error',\n docsUrl: null,\n name: 'EvmGasSponsorshipNotEnabledError',\n shortMessage: 'EVM gas sponsorship is not enabled for this project',\n });\n }\n}\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { EvmNetworkProvider } from '../EvmNetworkProvider';\n\n/**\n * Type guard function to check if a network provider is an EVM network provider.\n *\n * @example\n * ```ts\n * if (isEvmNetworkProvider(networkProvider)) {\n * const publicClient = networkProvider.getPublicClient();\n * }\n * ```\n *\n * @param networkProvider - The network provider to check.\n * @returns True if the network provider is an EVM network provider, false otherwise.\n * @see isEvmWalletAccount\n * @see addEvmExtension\n * @notInstrumented\n */\nexport const isEvmNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is EvmNetworkProvider => networkProvider.chain === 'EVM';\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { FeeEstimationFailedError } from '@dynamic-labs-sdk/client';\nimport { formatEther } from 'viem';\n\nimport type {\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../../transactionSimulation.types';\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\n\ntype CalculateEvmTransactionFeeParams = {\n nativeTokenPriceUsd?: number;\n networkData: NetworkData;\n transaction: EvmTransactionToSimulate;\n};\n\n/**\n * Calculates the estimated fee for an EVM transaction.\n *\n * This function estimates gas usage and calculates the total transaction fee\n * using either legacy gas pricing or EIP-1559 pricing. The fee is returned\n * in both native units (wei) and human-readable format (ETH).\n *\n * @example\n * ```ts\n * const feeData = await calculateEvmTransactionFee({\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * networkData,\n * nativeTokenPriceUsd: 3500,\n * });\n * ```\n *\n * @param params.transaction - The transaction to estimate fees for.\n * @param params.networkData - Network configuration for RPC connection.\n * @param params.nativeTokenPriceUsd - Optional USD price of the native token for fee conversion.\n * @returns Fee data including gas estimates and human-readable amounts.\n * @throws {FeeEstimationFailedError} If gas estimation or fee retrieval fails.\n * @see simulateEvmTransaction\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const calculateEvmTransactionFee = async ({\n transaction,\n networkData,\n nativeTokenPriceUsd,\n}: CalculateEvmTransactionFeeParams): Promise<EvmTransactionFeeData> => {\n try {\n const publicClient = createPublicClientFromNetworkData({ networkData });\n\n // Estimate gas for the transaction\n const gasEstimate = await publicClient.estimateGas({\n account: transaction.from,\n data: transaction.data,\n to: transaction.to,\n value: transaction.value,\n });\n\n // Try to get EIP-1559 fees first, fallback to legacy gas price\n let maxFeePerGas: bigint | undefined;\n let maxPriorityFeePerGas: bigint | undefined;\n let gasPrice: bigint | undefined;\n let nativeAmount: bigint;\n\n try {\n const feeData = await publicClient.estimateFeesPerGas();\n maxFeePerGas = feeData.maxFeePerGas;\n maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n\n // Calculate fee using EIP-1559 pricing\n nativeAmount = gasEstimate * maxFeePerGas;\n } catch {\n // Fallback to legacy gas pricing\n gasPrice = await publicClient.getGasPrice();\n nativeAmount = gasEstimate * gasPrice;\n }\n\n // Format to human-readable ETH\n const humanReadableAmount = formatEther(nativeAmount);\n\n // Calculate USD amount if price data available\n const usdAmount = nativeTokenPriceUsd\n ? (Number(humanReadableAmount) * nativeTokenPriceUsd).toFixed(2)\n : undefined;\n\n return {\n gasEstimate,\n gasPrice,\n humanReadableAmount,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nativeAmount,\n usdAmount,\n };\n } catch (error) {\n throw new FeeEstimationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to estimate EVM transaction fee',\n });\n }\n};\n","import {\n FeeEstimationFailedError,\n InvalidParamError,\n SimulationFailedError,\n getDefaultClient,\n getNetworksData,\n} from '@dynamic-labs-sdk/client';\nimport { createApiClient, getCore } from '@dynamic-labs-sdk/client/core';\nimport type { SimulateEVMTransactionRequest } from '@dynamic-labs/sdk-api-core';\n\nimport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nimport type {\n EvmSimulationResult,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nimport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nimport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\n\ntype SimulateEvmTransactionParams = {\n includeFees?: boolean;\n transaction: EvmTransactionToSimulate;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Simulates an EVM transaction to preview its effects before execution.\n *\n * This function uses the Blockaid API to analyze the transaction and returns\n * information about asset transfers, security validation, and optionally fee estimates.\n * The simulation shows what will happen when the transaction is executed without\n * actually sending it to the blockchain.\n *\n * @example\n * ```ts\n * const result = await simulateEvmTransaction({\n * walletAccount: evmAccount,\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * includeFees: true,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account that will sign the transaction.\n * @param params.transaction - The transaction to simulate, including network ID.\n * @param params.includeFees - Whether to calculate transaction fees (default: false).\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns Simulation result with asset diffs, security validation, and optional fee data.\n * @throws {InvalidParamError} If wallet account is not an EVM account or network ID is not configured.\n * @throws {SimulationFailedError} If the simulation API call fails.\n * @throws {FeeEstimationFailedError} If includeFees is true and fee calculation fails.\n * @see calculateEvmTransactionFee\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const simulateEvmTransaction = async (\n {\n walletAccount,\n transaction,\n includeFees = false,\n }: SimulateEvmTransactionParams,\n client = getDefaultClient()\n): Promise<EvmSimulationResult> => {\n // Validate wallet account type\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account must be an EVM wallet account');\n }\n\n // Get network data for the specified network\n const networksData = getNetworksData(client);\n const networkData = networksData.find(\n (data) => data.networkId === transaction.networkId && data.chain === 'EVM'\n );\n\n if (!networkData) {\n throw new InvalidParamError(\n `Network with ID ${transaction.networkId} is not configured in project settings`\n );\n }\n\n try {\n // Create API client and call simulation endpoint\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const simulateEVMTransactionRequest = {\n chainId: transaction.networkId,\n data: transaction.data || '0x',\n from: transaction.from,\n to: transaction.to,\n } as SimulateEVMTransactionRequest;\n\n if (transaction.value !== undefined) {\n simulateEVMTransactionRequest.value = transaction.value.toString();\n }\n\n const response = await apiClient.simulateEVMTransaction({\n environmentId: core.environmentId,\n simulateEVMTransactionRequest,\n });\n\n // Calculate fees if requested\n let feeData: EvmSimulationResult['feeData'];\n\n if (includeFees) {\n feeData = await calculateEvmTransactionFee({\n nativeTokenPriceUsd: response.priceData?.nativeTokenUsdPrice,\n networkData,\n transaction,\n });\n }\n\n // Map API response to simulation result\n return {\n counterparties: response.counterparties,\n feeData,\n inAssets: response.inAssets || [],\n outAssets: response.outAssets || [],\n priceData: response.priceData,\n showTotalFiat: response.showTotalFiat,\n validation: response.validation\n ? {\n description: response.validation.description,\n reason: response.validation.reason,\n result: response.validation.result as\n | 'benign'\n | 'warning'\n | 'malicious',\n }\n : undefined,\n };\n } catch (error) {\n // Re-throw FeeEstimationFailedError as-is\n if (error instanceof FeeEstimationFailedError) {\n throw error;\n }\n\n throw new SimulationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to simulate EVM transaction',\n });\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 { activate7702Delegation } from '../gasless/activate7702Delegation';\nexport { addEvmExtension } from '../addEvmExtension';\nexport { EvmGasSponsorshipNotEnabledError } from '../errors/EvmGasSponsorshipNotEnabledError';\nexport { RpcError } from '../errors/RpcError';\nexport { SponsorTransactionError } from '../errors/SponsorTransactionError';\nexport type { EvmNetworkProvider } from '../EvmNetworkProvider';\nexport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nexport type { EvmWalletProvider } from '../EvmWalletProvider.types';\nexport type {\n SerializedAuthorization,\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n SponsoredTransactionStatus,\n SponsoredTransactionStatusResult,\n} from '../gasless/gasless.types';\nexport { generateSponsoredTransactionNonce } from '../gasless/generateSponsoredTransactionNonce';\nexport { getEVMSponsoredTransactionStatus } from '../gasless/getEVMSponsoredTransactionStatus';\nexport { is7702DelegationActive } from '../gasless/is7702DelegationActive';\nexport { isEvmGasSponsorshipEnabled } from '../gasless/isEvmGasSponsorshipEnabled';\nexport { isEvmNetworkProvider } from '../isEvmNetworkProvider';\nexport { simulateEvmTransaction } from '../simulateEvmTransaction';\nexport type {\n EvmSimulationResult,\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nexport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nexport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\nexport { relaySponsoredTransaction } from '../gasless/relaySponsoredTransaction';\nexport { sendSponsoredTransaction } from '../gasless/sendSponsoredTransaction';\nexport { sign7702Authorization } from '../gasless/sign7702Authorization';\nexport { signSponsoredTransaction } from '../gasless/signSponsoredTransaction';\nexport { waitForSponsoredTransaction } from '../gasless/waitForSponsoredTransaction';\n"],"mappings":"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"}
|
package/dist/index.native.esm.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { n as version, t as name } from "./package-
|
|
2
|
-
import { a as isEvmWalletAccount, c as sendSponsoredTransaction, d as relaySponsoredTransaction, f as signSponsoredTransaction,
|
|
3
|
-
import {
|
|
4
|
-
import { t as addEIP6963Extension } from "./addEIP6963Extension-
|
|
5
|
-
import { t as addWaasEvmExtension } from "./addWaasEvmExtension-
|
|
1
|
+
import { n as version, t as name } from "./package-BFPtIID5.native.esm.js";
|
|
2
|
+
import { a as isEvmWalletAccount, c as sendSponsoredTransaction, d as relaySponsoredTransaction, f as signSponsoredTransaction, g as SponsorTransactionError, h as generateSponsoredTransactionNonce, l as waitForSponsoredTransaction, m as is7702DelegationActive, p as sign7702Authorization, r as isEvmGasSponsorshipEnabled, s as RpcError, u as getEVMSponsoredTransactionStatus } from "./evmTransferAmount-CdNpxpcI.native.esm.js";
|
|
3
|
+
import { t as createPublicClientFromNetworkData } from "./createPublicClientFromNetworkData-9g8Hsu4A.native.esm.js";
|
|
4
|
+
import { t as addEIP6963Extension } from "./addEIP6963Extension-ZpGdqv-5.native.esm.js";
|
|
5
|
+
import { t as addWaasEvmExtension } from "./addWaasEvmExtension-C1AU3Ds3.native.esm.js";
|
|
6
6
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
|
7
7
|
import { BaseError, FeeEstimationFailedError, InvalidParamError, SimulationFailedError, getDefaultClient, getNetworksData } from "@dynamic-labs-sdk/client";
|
|
8
8
|
import { createApiClient, getCore, getDefaultClient as getDefaultClient$1 } from "@dynamic-labs-sdk/client/core";
|
|
@@ -249,5 +249,5 @@ const simulateEvmTransaction = async ({ walletAccount, transaction, includeFees
|
|
|
249
249
|
assertPackageVersion(name, version);
|
|
250
250
|
|
|
251
251
|
//#endregion
|
|
252
|
-
export { EvmGasSponsorshipNotEnabledError, RpcError, SponsorTransactionError, activate7702Delegation, addEvmExtension, calculateEvmTransactionFee, getEVMSponsoredTransactionStatus, is7702DelegationActive, isEvmGasSponsorshipEnabled, isEvmNetworkProvider, isEvmWalletAccount, relaySponsoredTransaction, sendSponsoredTransaction, sign7702Authorization, signSponsoredTransaction, simulateEvmTransaction, waitForSponsoredTransaction };
|
|
252
|
+
export { EvmGasSponsorshipNotEnabledError, RpcError, SponsorTransactionError, activate7702Delegation, addEvmExtension, calculateEvmTransactionFee, generateSponsoredTransactionNonce, getEVMSponsoredTransactionStatus, is7702DelegationActive, isEvmGasSponsorshipEnabled, isEvmNetworkProvider, isEvmWalletAccount, relaySponsoredTransaction, sendSponsoredTransaction, sign7702Authorization, signSponsoredTransaction, simulateEvmTransaction, waitForSponsoredTransaction };
|
|
253
253
|
//# sourceMappingURL=index.native.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.native.esm.js","names":["getDefaultClient","maxFeePerGas: bigint | undefined","maxPriorityFeePerGas: bigint | undefined","gasPrice: bigint | undefined","nativeAmount: bigint","feeData: EvmSimulationResult['feeData']","packageName","packageVersion"],"sources":["../src/gasless/activate7702Delegation/activate7702Delegation.ts","../src/addEvmExtension/addEvmExtension.ts","../src/errors/EvmGasSponsorshipNotEnabledError/EvmGasSponsorshipNotEnabledError.ts","../src/isEvmNetworkProvider/isEvmNetworkProvider.ts","../src/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.ts","../src/simulateEvmTransaction/simulateEvmTransaction.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport type { Hex } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { sendSponsoredTransaction } from '../sendSponsoredTransaction';\n\ntype Activate7702DelegationParams = {\n /** Pre-signed EIP-7702 authorization. If not provided, one will be signed automatically. */\n authorization?: SignAuthorizationReturnType;\n /** The EVM wallet account to activate delegation for. */\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Activates EIP-7702 delegation for a wallet by sending a sponsored\n * transaction that only contains the 7702 authorization.\n *\n * After activation, the wallet's delegation is persisted on-chain and\n * subsequent sponsored transactions no longer need to include the\n * authorization.\n *\n * @example\n * ```ts\n * const { transactionHash } = await activate7702Delegation({\n * walletAccount: evmAccount,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account to activate delegation for.\n * @param [params.authorization] - Pre-signed authorization. If omitted, signs one automatically.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the on-chain transaction hash.\n * @throws {SponsorTransactionError} If the relay returns a terminal failure or polling times out.\n * @see is7702DelegationActive\n * @see sign7702Authorization\n * @notInstrumented\n */\nexport const activate7702Delegation = async (\n { walletAccount, authorization }: Activate7702DelegationParams,\n client = getDefaultClient()\n): Promise<{ transactionHash: Hex }> =>\n sendSponsoredTransaction(\n { authorization, calls: [], walletAccount },\n client\n );\n","import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addEIP6963Extension } from '../eip6963/addEIP6963Extension';\nimport { addWaasEvmExtension } from '../waas/addWaasEvmExtension';\n\n/**\n * Adds the EVM extension to the Dynamic client.\n *\n * This is a convenience function that adds both the EIP-6963 extension\n * and the Dynamic WaaS EVM extension, enabling support for all EVM wallet types\n * including standard wallets and embedded wallets managed by Dynamic's infrastructure.\n *\n * @example\n * ```ts\n * const client = createDynamicClient({ environmentId: 'env-123' });\n * addEvmExtension(client);\n * ```\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns void\n * @see isEvmWalletAccount\n * @see isEvmNetworkProvider\n * @notInstrumented\n */\nexport const addEvmExtension = (client = getDefaultClient()): void => {\n addEIP6963Extension(client);\n addWaasEvmExtension(client);\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class EvmGasSponsorshipNotEnabledError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'evm_gas_sponsorship_not_enabled_error',\n docsUrl: null,\n name: 'EvmGasSponsorshipNotEnabledError',\n shortMessage: 'EVM gas sponsorship is not enabled for this project',\n });\n }\n}\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { EvmNetworkProvider } from '../EvmNetworkProvider';\n\n/**\n * Type guard function to check if a network provider is an EVM network provider.\n *\n * @example\n * ```ts\n * if (isEvmNetworkProvider(networkProvider)) {\n * const publicClient = networkProvider.getPublicClient();\n * }\n * ```\n *\n * @param networkProvider - The network provider to check.\n * @returns True if the network provider is an EVM network provider, false otherwise.\n * @see isEvmWalletAccount\n * @see addEvmExtension\n * @notInstrumented\n */\nexport const isEvmNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is EvmNetworkProvider => networkProvider.chain === 'EVM';\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { FeeEstimationFailedError } from '@dynamic-labs-sdk/client';\nimport { formatEther } from 'viem';\n\nimport type {\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../../transactionSimulation.types';\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\n\ntype CalculateEvmTransactionFeeParams = {\n nativeTokenPriceUsd?: number;\n networkData: NetworkData;\n transaction: EvmTransactionToSimulate;\n};\n\n/**\n * Calculates the estimated fee for an EVM transaction.\n *\n * This function estimates gas usage and calculates the total transaction fee\n * using either legacy gas pricing or EIP-1559 pricing. The fee is returned\n * in both native units (wei) and human-readable format (ETH).\n *\n * @example\n * ```ts\n * const feeData = await calculateEvmTransactionFee({\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * networkData,\n * nativeTokenPriceUsd: 3500,\n * });\n * ```\n *\n * @param params.transaction - The transaction to estimate fees for.\n * @param params.networkData - Network configuration for RPC connection.\n * @param params.nativeTokenPriceUsd - Optional USD price of the native token for fee conversion.\n * @returns Fee data including gas estimates and human-readable amounts.\n * @throws {FeeEstimationFailedError} If gas estimation or fee retrieval fails.\n * @see simulateEvmTransaction\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const calculateEvmTransactionFee = async ({\n transaction,\n networkData,\n nativeTokenPriceUsd,\n}: CalculateEvmTransactionFeeParams): Promise<EvmTransactionFeeData> => {\n try {\n const publicClient = createPublicClientFromNetworkData({ networkData });\n\n // Estimate gas for the transaction\n const gasEstimate = await publicClient.estimateGas({\n account: transaction.from,\n data: transaction.data,\n to: transaction.to,\n value: transaction.value,\n });\n\n // Try to get EIP-1559 fees first, fallback to legacy gas price\n let maxFeePerGas: bigint | undefined;\n let maxPriorityFeePerGas: bigint | undefined;\n let gasPrice: bigint | undefined;\n let nativeAmount: bigint;\n\n try {\n const feeData = await publicClient.estimateFeesPerGas();\n maxFeePerGas = feeData.maxFeePerGas;\n maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n\n // Calculate fee using EIP-1559 pricing\n nativeAmount = gasEstimate * maxFeePerGas;\n } catch {\n // Fallback to legacy gas pricing\n gasPrice = await publicClient.getGasPrice();\n nativeAmount = gasEstimate * gasPrice;\n }\n\n // Format to human-readable ETH\n const humanReadableAmount = formatEther(nativeAmount);\n\n // Calculate USD amount if price data available\n const usdAmount = nativeTokenPriceUsd\n ? (Number(humanReadableAmount) * nativeTokenPriceUsd).toFixed(2)\n : undefined;\n\n return {\n gasEstimate,\n gasPrice,\n humanReadableAmount,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nativeAmount,\n usdAmount,\n };\n } catch (error) {\n throw new FeeEstimationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to estimate EVM transaction fee',\n });\n }\n};\n","import {\n FeeEstimationFailedError,\n InvalidParamError,\n SimulationFailedError,\n getDefaultClient,\n getNetworksData,\n} from '@dynamic-labs-sdk/client';\nimport { createApiClient, getCore } from '@dynamic-labs-sdk/client/core';\nimport type { SimulateEVMTransactionRequest } from '@dynamic-labs/sdk-api-core';\n\nimport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nimport type {\n EvmSimulationResult,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nimport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nimport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\n\ntype SimulateEvmTransactionParams = {\n includeFees?: boolean;\n transaction: EvmTransactionToSimulate;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Simulates an EVM transaction to preview its effects before execution.\n *\n * This function uses the Blockaid API to analyze the transaction and returns\n * information about asset transfers, security validation, and optionally fee estimates.\n * The simulation shows what will happen when the transaction is executed without\n * actually sending it to the blockchain.\n *\n * @example\n * ```ts\n * const result = await simulateEvmTransaction({\n * walletAccount: evmAccount,\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * includeFees: true,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account that will sign the transaction.\n * @param params.transaction - The transaction to simulate, including network ID.\n * @param params.includeFees - Whether to calculate transaction fees (default: false).\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns Simulation result with asset diffs, security validation, and optional fee data.\n * @throws {InvalidParamError} If wallet account is not an EVM account or network ID is not configured.\n * @throws {SimulationFailedError} If the simulation API call fails.\n * @throws {FeeEstimationFailedError} If includeFees is true and fee calculation fails.\n * @see calculateEvmTransactionFee\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const simulateEvmTransaction = async (\n {\n walletAccount,\n transaction,\n includeFees = false,\n }: SimulateEvmTransactionParams,\n client = getDefaultClient()\n): Promise<EvmSimulationResult> => {\n // Validate wallet account type\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account must be an EVM wallet account');\n }\n\n // Get network data for the specified network\n const networksData = getNetworksData(client);\n const networkData = networksData.find(\n (data) => data.networkId === transaction.networkId && data.chain === 'EVM'\n );\n\n if (!networkData) {\n throw new InvalidParamError(\n `Network with ID ${transaction.networkId} is not configured in project settings`\n );\n }\n\n try {\n // Create API client and call simulation endpoint\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const simulateEVMTransactionRequest = {\n chainId: transaction.networkId,\n data: transaction.data || '0x',\n from: transaction.from,\n to: transaction.to,\n } as SimulateEVMTransactionRequest;\n\n if (transaction.value !== undefined) {\n simulateEVMTransactionRequest.value = transaction.value.toString();\n }\n\n const response = await apiClient.simulateEVMTransaction({\n environmentId: core.environmentId,\n simulateEVMTransactionRequest,\n });\n\n // Calculate fees if requested\n let feeData: EvmSimulationResult['feeData'];\n\n if (includeFees) {\n feeData = await calculateEvmTransactionFee({\n nativeTokenPriceUsd: response.priceData?.nativeTokenUsdPrice,\n networkData,\n transaction,\n });\n }\n\n // Map API response to simulation result\n return {\n counterparties: response.counterparties,\n feeData,\n inAssets: response.inAssets || [],\n outAssets: response.outAssets || [],\n priceData: response.priceData,\n showTotalFiat: response.showTotalFiat,\n validation: response.validation\n ? {\n description: response.validation.description,\n reason: response.validation.reason,\n result: response.validation.result as\n | 'benign'\n | 'warning'\n | 'malicious',\n }\n : undefined,\n };\n } catch (error) {\n // Re-throw FeeEstimationFailedError as-is\n if (error instanceof FeeEstimationFailedError) {\n throw error;\n }\n\n throw new SimulationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to simulate EVM transaction',\n });\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 { activate7702Delegation } from '../gasless/activate7702Delegation';\nexport { addEvmExtension } from '../addEvmExtension';\nexport { EvmGasSponsorshipNotEnabledError } from '../errors/EvmGasSponsorshipNotEnabledError';\nexport { RpcError } from '../errors/RpcError';\nexport { SponsorTransactionError } from '../errors/SponsorTransactionError';\nexport type { EvmNetworkProvider } from '../EvmNetworkProvider';\nexport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nexport type { EvmWalletProvider } from '../EvmWalletProvider.types';\nexport type {\n SerializedAuthorization,\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n SponsoredTransactionStatus,\n SponsoredTransactionStatusResult,\n} from '../gasless/gasless.types';\nexport { getEVMSponsoredTransactionStatus } from '../gasless/getEVMSponsoredTransactionStatus';\nexport { is7702DelegationActive } from '../gasless/is7702DelegationActive';\nexport { isEvmGasSponsorshipEnabled } from '../gasless/isEvmGasSponsorshipEnabled';\nexport { isEvmNetworkProvider } from '../isEvmNetworkProvider';\nexport { simulateEvmTransaction } from '../simulateEvmTransaction';\nexport type {\n EvmSimulationResult,\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nexport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nexport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\nexport { relaySponsoredTransaction } from '../gasless/relaySponsoredTransaction';\nexport { sendSponsoredTransaction } from '../gasless/sendSponsoredTransaction';\nexport { sign7702Authorization } from '../gasless/sign7702Authorization';\nexport { signSponsoredTransaction } from '../gasless/signSponsoredTransaction';\nexport { waitForSponsoredTransaction } from '../gasless/waitForSponsoredTransaction';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.native.esm.js","names":["getDefaultClient","maxFeePerGas: bigint | undefined","maxPriorityFeePerGas: bigint | undefined","gasPrice: bigint | undefined","nativeAmount: bigint","feeData: EvmSimulationResult['feeData']","packageName","packageVersion"],"sources":["../src/gasless/activate7702Delegation/activate7702Delegation.ts","../src/addEvmExtension/addEvmExtension.ts","../src/errors/EvmGasSponsorshipNotEnabledError/EvmGasSponsorshipNotEnabledError.ts","../src/isEvmNetworkProvider/isEvmNetworkProvider.ts","../src/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.ts","../src/simulateEvmTransaction/simulateEvmTransaction.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport type { Hex } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { sendSponsoredTransaction } from '../sendSponsoredTransaction';\n\ntype Activate7702DelegationParams = {\n /** Pre-signed EIP-7702 authorization. If not provided, one will be signed automatically. */\n authorization?: SignAuthorizationReturnType;\n /** The EVM wallet account to activate delegation for. */\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Activates EIP-7702 delegation for a wallet by sending a sponsored\n * transaction that only contains the 7702 authorization.\n *\n * After activation, the wallet's delegation is persisted on-chain and\n * subsequent sponsored transactions no longer need to include the\n * authorization.\n *\n * @example\n * ```ts\n * const { transactionHash } = await activate7702Delegation({\n * walletAccount: evmAccount,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account to activate delegation for.\n * @param [params.authorization] - Pre-signed authorization. If omitted, signs one automatically.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the on-chain transaction hash.\n * @throws {SponsorTransactionError} If the relay returns a terminal failure or polling times out.\n * @see is7702DelegationActive\n * @see sign7702Authorization\n * @notInstrumented\n */\nexport const activate7702Delegation = async (\n { walletAccount, authorization }: Activate7702DelegationParams,\n client = getDefaultClient()\n): Promise<{ transactionHash: Hex }> =>\n sendSponsoredTransaction(\n { authorization, calls: [], walletAccount },\n client\n );\n","import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addEIP6963Extension } from '../eip6963/addEIP6963Extension';\nimport { addWaasEvmExtension } from '../waas/addWaasEvmExtension';\n\n/**\n * Adds the EVM extension to the Dynamic client.\n *\n * This is a convenience function that adds both the EIP-6963 extension\n * and the Dynamic WaaS EVM extension, enabling support for all EVM wallet types\n * including standard wallets and embedded wallets managed by Dynamic's infrastructure.\n *\n * @example\n * ```ts\n * const client = createDynamicClient({ environmentId: 'env-123' });\n * addEvmExtension(client);\n * ```\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns void\n * @see isEvmWalletAccount\n * @see isEvmNetworkProvider\n * @notInstrumented\n */\nexport const addEvmExtension = (client = getDefaultClient()): void => {\n addEIP6963Extension(client);\n addWaasEvmExtension(client);\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class EvmGasSponsorshipNotEnabledError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'evm_gas_sponsorship_not_enabled_error',\n docsUrl: null,\n name: 'EvmGasSponsorshipNotEnabledError',\n shortMessage: 'EVM gas sponsorship is not enabled for this project',\n });\n }\n}\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { EvmNetworkProvider } from '../EvmNetworkProvider';\n\n/**\n * Type guard function to check if a network provider is an EVM network provider.\n *\n * @example\n * ```ts\n * if (isEvmNetworkProvider(networkProvider)) {\n * const publicClient = networkProvider.getPublicClient();\n * }\n * ```\n *\n * @param networkProvider - The network provider to check.\n * @returns True if the network provider is an EVM network provider, false otherwise.\n * @see isEvmWalletAccount\n * @see addEvmExtension\n * @notInstrumented\n */\nexport const isEvmNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is EvmNetworkProvider => networkProvider.chain === 'EVM';\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { FeeEstimationFailedError } from '@dynamic-labs-sdk/client';\nimport { formatEther } from 'viem';\n\nimport type {\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../../transactionSimulation.types';\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\n\ntype CalculateEvmTransactionFeeParams = {\n nativeTokenPriceUsd?: number;\n networkData: NetworkData;\n transaction: EvmTransactionToSimulate;\n};\n\n/**\n * Calculates the estimated fee for an EVM transaction.\n *\n * This function estimates gas usage and calculates the total transaction fee\n * using either legacy gas pricing or EIP-1559 pricing. The fee is returned\n * in both native units (wei) and human-readable format (ETH).\n *\n * @example\n * ```ts\n * const feeData = await calculateEvmTransactionFee({\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * networkData,\n * nativeTokenPriceUsd: 3500,\n * });\n * ```\n *\n * @param params.transaction - The transaction to estimate fees for.\n * @param params.networkData - Network configuration for RPC connection.\n * @param params.nativeTokenPriceUsd - Optional USD price of the native token for fee conversion.\n * @returns Fee data including gas estimates and human-readable amounts.\n * @throws {FeeEstimationFailedError} If gas estimation or fee retrieval fails.\n * @see simulateEvmTransaction\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const calculateEvmTransactionFee = async ({\n transaction,\n networkData,\n nativeTokenPriceUsd,\n}: CalculateEvmTransactionFeeParams): Promise<EvmTransactionFeeData> => {\n try {\n const publicClient = createPublicClientFromNetworkData({ networkData });\n\n // Estimate gas for the transaction\n const gasEstimate = await publicClient.estimateGas({\n account: transaction.from,\n data: transaction.data,\n to: transaction.to,\n value: transaction.value,\n });\n\n // Try to get EIP-1559 fees first, fallback to legacy gas price\n let maxFeePerGas: bigint | undefined;\n let maxPriorityFeePerGas: bigint | undefined;\n let gasPrice: bigint | undefined;\n let nativeAmount: bigint;\n\n try {\n const feeData = await publicClient.estimateFeesPerGas();\n maxFeePerGas = feeData.maxFeePerGas;\n maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n\n // Calculate fee using EIP-1559 pricing\n nativeAmount = gasEstimate * maxFeePerGas;\n } catch {\n // Fallback to legacy gas pricing\n gasPrice = await publicClient.getGasPrice();\n nativeAmount = gasEstimate * gasPrice;\n }\n\n // Format to human-readable ETH\n const humanReadableAmount = formatEther(nativeAmount);\n\n // Calculate USD amount if price data available\n const usdAmount = nativeTokenPriceUsd\n ? (Number(humanReadableAmount) * nativeTokenPriceUsd).toFixed(2)\n : undefined;\n\n return {\n gasEstimate,\n gasPrice,\n humanReadableAmount,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nativeAmount,\n usdAmount,\n };\n } catch (error) {\n throw new FeeEstimationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to estimate EVM transaction fee',\n });\n }\n};\n","import {\n FeeEstimationFailedError,\n InvalidParamError,\n SimulationFailedError,\n getDefaultClient,\n getNetworksData,\n} from '@dynamic-labs-sdk/client';\nimport { createApiClient, getCore } from '@dynamic-labs-sdk/client/core';\nimport type { SimulateEVMTransactionRequest } from '@dynamic-labs/sdk-api-core';\n\nimport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nimport type {\n EvmSimulationResult,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nimport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nimport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\n\ntype SimulateEvmTransactionParams = {\n includeFees?: boolean;\n transaction: EvmTransactionToSimulate;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Simulates an EVM transaction to preview its effects before execution.\n *\n * This function uses the Blockaid API to analyze the transaction and returns\n * information about asset transfers, security validation, and optionally fee estimates.\n * The simulation shows what will happen when the transaction is executed without\n * actually sending it to the blockchain.\n *\n * @example\n * ```ts\n * const result = await simulateEvmTransaction({\n * walletAccount: evmAccount,\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * includeFees: true,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account that will sign the transaction.\n * @param params.transaction - The transaction to simulate, including network ID.\n * @param params.includeFees - Whether to calculate transaction fees (default: false).\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns Simulation result with asset diffs, security validation, and optional fee data.\n * @throws {InvalidParamError} If wallet account is not an EVM account or network ID is not configured.\n * @throws {SimulationFailedError} If the simulation API call fails.\n * @throws {FeeEstimationFailedError} If includeFees is true and fee calculation fails.\n * @see calculateEvmTransactionFee\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const simulateEvmTransaction = async (\n {\n walletAccount,\n transaction,\n includeFees = false,\n }: SimulateEvmTransactionParams,\n client = getDefaultClient()\n): Promise<EvmSimulationResult> => {\n // Validate wallet account type\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account must be an EVM wallet account');\n }\n\n // Get network data for the specified network\n const networksData = getNetworksData(client);\n const networkData = networksData.find(\n (data) => data.networkId === transaction.networkId && data.chain === 'EVM'\n );\n\n if (!networkData) {\n throw new InvalidParamError(\n `Network with ID ${transaction.networkId} is not configured in project settings`\n );\n }\n\n try {\n // Create API client and call simulation endpoint\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const simulateEVMTransactionRequest = {\n chainId: transaction.networkId,\n data: transaction.data || '0x',\n from: transaction.from,\n to: transaction.to,\n } as SimulateEVMTransactionRequest;\n\n if (transaction.value !== undefined) {\n simulateEVMTransactionRequest.value = transaction.value.toString();\n }\n\n const response = await apiClient.simulateEVMTransaction({\n environmentId: core.environmentId,\n simulateEVMTransactionRequest,\n });\n\n // Calculate fees if requested\n let feeData: EvmSimulationResult['feeData'];\n\n if (includeFees) {\n feeData = await calculateEvmTransactionFee({\n nativeTokenPriceUsd: response.priceData?.nativeTokenUsdPrice,\n networkData,\n transaction,\n });\n }\n\n // Map API response to simulation result\n return {\n counterparties: response.counterparties,\n feeData,\n inAssets: response.inAssets || [],\n outAssets: response.outAssets || [],\n priceData: response.priceData,\n showTotalFiat: response.showTotalFiat,\n validation: response.validation\n ? {\n description: response.validation.description,\n reason: response.validation.reason,\n result: response.validation.result as\n | 'benign'\n | 'warning'\n | 'malicious',\n }\n : undefined,\n };\n } catch (error) {\n // Re-throw FeeEstimationFailedError as-is\n if (error instanceof FeeEstimationFailedError) {\n throw error;\n }\n\n throw new SimulationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to simulate EVM transaction',\n });\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 { activate7702Delegation } from '../gasless/activate7702Delegation';\nexport { addEvmExtension } from '../addEvmExtension';\nexport { EvmGasSponsorshipNotEnabledError } from '../errors/EvmGasSponsorshipNotEnabledError';\nexport { RpcError } from '../errors/RpcError';\nexport { SponsorTransactionError } from '../errors/SponsorTransactionError';\nexport type { EvmNetworkProvider } from '../EvmNetworkProvider';\nexport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nexport type { EvmWalletProvider } from '../EvmWalletProvider.types';\nexport type {\n SerializedAuthorization,\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n SponsoredTransactionStatus,\n SponsoredTransactionStatusResult,\n} from '../gasless/gasless.types';\nexport { generateSponsoredTransactionNonce } from '../gasless/generateSponsoredTransactionNonce';\nexport { getEVMSponsoredTransactionStatus } from '../gasless/getEVMSponsoredTransactionStatus';\nexport { is7702DelegationActive } from '../gasless/is7702DelegationActive';\nexport { isEvmGasSponsorshipEnabled } from '../gasless/isEvmGasSponsorshipEnabled';\nexport { isEvmNetworkProvider } from '../isEvmNetworkProvider';\nexport { simulateEvmTransaction } from '../simulateEvmTransaction';\nexport type {\n EvmSimulationResult,\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nexport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nexport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\nexport { relaySponsoredTransaction } from '../gasless/relaySponsoredTransaction';\nexport { sendSponsoredTransaction } from '../gasless/sendSponsoredTransaction';\nexport { sign7702Authorization } from '../gasless/sign7702Authorization';\nexport { signSponsoredTransaction } from '../gasless/signSponsoredTransaction';\nexport { waitForSponsoredTransaction } from '../gasless/waitForSponsoredTransaction';\n"],"mappings":"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"}
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
import type { WalletProvider } from '@dynamic-labs-sdk/client/core';
|
|
2
2
|
import type { EvmWalletProvider } from '../EvmWalletProvider.types';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Type guard that narrows a {@link WalletProvider} to an {@link EvmWalletProvider}
|
|
5
|
+
* by checking its `chain`. Useful when code holds a generic wallet provider but
|
|
6
|
+
* needs EVM-only capabilities (EIP-1193 `request`, network switching, etc.).
|
|
7
|
+
*
|
|
8
|
+
* @param walletProvider - The wallet provider to check.
|
|
9
|
+
* @returns `true` (narrowing to {@link EvmWalletProvider}) when the provider's
|
|
10
|
+
* chain is EVM, otherwise `false`.
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const walletProvider = getWalletProviderFromWalletAccount({ walletAccount });
|
|
14
|
+
* if (isEvmWalletProvider(walletProvider)) {
|
|
15
|
+
* await walletProvider.getActiveNetworkId();
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
* @see {@link isEvmWalletAccount}
|
|
19
|
+
* @see {@link EvmWalletProvider}
|
|
20
|
+
* @notInstrumented
|
|
21
|
+
*/
|
|
4
22
|
export declare const isEvmWalletProvider: (walletProvider: WalletProvider) => walletProvider is EvmWalletProvider;
|
|
5
23
|
//# sourceMappingURL=isEvmWalletProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isEvmWalletProvider.d.ts","sourceRoot":"","sources":["../../src/isEvmWalletProvider/isEvmWalletProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE
|
|
1
|
+
{"version":3,"file":"isEvmWalletProvider.d.ts","sourceRoot":"","sources":["../../src/isEvmWalletProvider/isEvmWalletProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB,GAC9B,gBAAgB,cAAc,KAC7B,cAAc,IAAI,iBAAmD,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/isEvmWalletProvider/isEvmWalletProvider.ts
|
|
2
|
+
/**
|
|
3
|
+
* Type guard that narrows a {@link WalletProvider} to an {@link EvmWalletProvider}
|
|
4
|
+
* by checking its `chain`. Useful when code holds a generic wallet provider but
|
|
5
|
+
* needs EVM-only capabilities (EIP-1193 `request`, network switching, etc.).
|
|
6
|
+
*
|
|
7
|
+
* @param walletProvider - The wallet provider to check.
|
|
8
|
+
* @returns `true` (narrowing to {@link EvmWalletProvider}) when the provider's
|
|
9
|
+
* chain is EVM, otherwise `false`.
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const walletProvider = getWalletProviderFromWalletAccount({ walletAccount });
|
|
13
|
+
* if (isEvmWalletProvider(walletProvider)) {
|
|
14
|
+
* await walletProvider.getActiveNetworkId();
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
* @see {@link isEvmWalletAccount}
|
|
18
|
+
* @see {@link EvmWalletProvider}
|
|
19
|
+
* @notInstrumented
|
|
20
|
+
*/
|
|
21
|
+
const isEvmWalletProvider = (walletProvider) => walletProvider.chain === "EVM";
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
export { isEvmWalletProvider as t };
|
|
25
|
+
//# sourceMappingURL=isEvmWalletProvider-BbWMsj-k.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEvmWalletProvider-BbWMsj-k.esm.js","names":[],"sources":["../src/isEvmWalletProvider/isEvmWalletProvider.ts"],"sourcesContent":["import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { EvmWalletProvider } from '../EvmWalletProvider.types';\n\n/**\n * Type guard that narrows a {@link WalletProvider} to an {@link EvmWalletProvider}\n * by checking its `chain`. Useful when code holds a generic wallet provider but\n * needs EVM-only capabilities (EIP-1193 `request`, network switching, etc.).\n *\n * @param walletProvider - The wallet provider to check.\n * @returns `true` (narrowing to {@link EvmWalletProvider}) when the provider's\n * chain is EVM, otherwise `false`.\n * @example\n * ```ts\n * const walletProvider = getWalletProviderFromWalletAccount({ walletAccount });\n * if (isEvmWalletProvider(walletProvider)) {\n * await walletProvider.getActiveNetworkId();\n * }\n * ```\n * @see {@link isEvmWalletAccount}\n * @see {@link EvmWalletProvider}\n * @notInstrumented\n */\nexport const isEvmWalletProvider = (\n walletProvider: WalletProvider\n): walletProvider is EvmWalletProvider => walletProvider.chain === 'EVM';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuBA,MAAa,uBACX,mBACwC,eAAe,UAAU"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/isEvmWalletProvider/isEvmWalletProvider.ts
|
|
2
|
+
/**
|
|
3
|
+
* Type guard that narrows a {@link WalletProvider} to an {@link EvmWalletProvider}
|
|
4
|
+
* by checking its `chain`. Useful when code holds a generic wallet provider but
|
|
5
|
+
* needs EVM-only capabilities (EIP-1193 `request`, network switching, etc.).
|
|
6
|
+
*
|
|
7
|
+
* @param walletProvider - The wallet provider to check.
|
|
8
|
+
* @returns `true` (narrowing to {@link EvmWalletProvider}) when the provider's
|
|
9
|
+
* chain is EVM, otherwise `false`.
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const walletProvider = getWalletProviderFromWalletAccount({ walletAccount });
|
|
13
|
+
* if (isEvmWalletProvider(walletProvider)) {
|
|
14
|
+
* await walletProvider.getActiveNetworkId();
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
* @see {@link isEvmWalletAccount}
|
|
18
|
+
* @see {@link EvmWalletProvider}
|
|
19
|
+
* @notInstrumented
|
|
20
|
+
*/
|
|
21
|
+
const isEvmWalletProvider = (walletProvider) => walletProvider.chain === "EVM";
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
export { isEvmWalletProvider as t };
|
|
25
|
+
//# sourceMappingURL=isEvmWalletProvider-CPLo4h33.native.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEvmWalletProvider-CPLo4h33.native.esm.js","names":[],"sources":["../src/isEvmWalletProvider/isEvmWalletProvider.ts"],"sourcesContent":["import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { EvmWalletProvider } from '../EvmWalletProvider.types';\n\n/**\n * Type guard that narrows a {@link WalletProvider} to an {@link EvmWalletProvider}\n * by checking its `chain`. Useful when code holds a generic wallet provider but\n * needs EVM-only capabilities (EIP-1193 `request`, network switching, etc.).\n *\n * @param walletProvider - The wallet provider to check.\n * @returns `true` (narrowing to {@link EvmWalletProvider}) when the provider's\n * chain is EVM, otherwise `false`.\n * @example\n * ```ts\n * const walletProvider = getWalletProviderFromWalletAccount({ walletAccount });\n * if (isEvmWalletProvider(walletProvider)) {\n * await walletProvider.getActiveNetworkId();\n * }\n * ```\n * @see {@link isEvmWalletAccount}\n * @see {@link EvmWalletProvider}\n * @notInstrumented\n */\nexport const isEvmWalletProvider = (\n walletProvider: WalletProvider\n): walletProvider is EvmWalletProvider => walletProvider.chain === 'EVM';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuBA,MAAa,uBACX,mBACwC,eAAe,UAAU"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/isEvmWalletProvider/isEvmWalletProvider.ts
|
|
3
|
+
/**
|
|
4
|
+
* Type guard that narrows a {@link WalletProvider} to an {@link EvmWalletProvider}
|
|
5
|
+
* by checking its `chain`. Useful when code holds a generic wallet provider but
|
|
6
|
+
* needs EVM-only capabilities (EIP-1193 `request`, network switching, etc.).
|
|
7
|
+
*
|
|
8
|
+
* @param walletProvider - The wallet provider to check.
|
|
9
|
+
* @returns `true` (narrowing to {@link EvmWalletProvider}) when the provider's
|
|
10
|
+
* chain is EVM, otherwise `false`.
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const walletProvider = getWalletProviderFromWalletAccount({ walletAccount });
|
|
14
|
+
* if (isEvmWalletProvider(walletProvider)) {
|
|
15
|
+
* await walletProvider.getActiveNetworkId();
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
* @see {@link isEvmWalletAccount}
|
|
19
|
+
* @see {@link EvmWalletProvider}
|
|
20
|
+
* @notInstrumented
|
|
21
|
+
*/
|
|
22
|
+
const isEvmWalletProvider = (walletProvider) => walletProvider.chain === "EVM";
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
Object.defineProperty(exports, 'isEvmWalletProvider', {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () {
|
|
28
|
+
return isEvmWalletProvider;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=isEvmWalletProvider-pIGuzazF.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEvmWalletProvider-pIGuzazF.cjs","names":[],"sources":["../src/isEvmWalletProvider/isEvmWalletProvider.ts"],"sourcesContent":["import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { EvmWalletProvider } from '../EvmWalletProvider.types';\n\n/**\n * Type guard that narrows a {@link WalletProvider} to an {@link EvmWalletProvider}\n * by checking its `chain`. Useful when code holds a generic wallet provider but\n * needs EVM-only capabilities (EIP-1193 `request`, network switching, etc.).\n *\n * @param walletProvider - The wallet provider to check.\n * @returns `true` (narrowing to {@link EvmWalletProvider}) when the provider's\n * chain is EVM, otherwise `false`.\n * @example\n * ```ts\n * const walletProvider = getWalletProviderFromWalletAccount({ walletAccount });\n * if (isEvmWalletProvider(walletProvider)) {\n * await walletProvider.getActiveNetworkId();\n * }\n * ```\n * @see {@link isEvmWalletAccount}\n * @see {@link EvmWalletProvider}\n * @notInstrumented\n */\nexport const isEvmWalletProvider = (\n walletProvider: WalletProvider\n): walletProvider is EvmWalletProvider => walletProvider.chain === 'EVM';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAuBA,MAAa,uBACX,mBACwC,eAAe,UAAU"}
|
|
@@ -16,4 +16,4 @@ const mapNetworkDataToViemChain = (networkData) => ({
|
|
|
16
16
|
|
|
17
17
|
//#endregion
|
|
18
18
|
export { mapNetworkDataToViemChain as t };
|
|
19
|
-
//# sourceMappingURL=mapNetworkDataToViemChain-
|
|
19
|
+
//# sourceMappingURL=mapNetworkDataToViemChain-BOVFIupF.native.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapNetworkDataToViemChain-
|
|
1
|
+
{"version":3,"file":"mapNetworkDataToViemChain-BOVFIupF.native.esm.js","names":[],"sources":["../src/viem/utils/mapNetworkDataToViemChain/mapNetworkDataToViemChain.ts"],"sourcesContent":["import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport type { Chain } from 'viem';\n\n/**\n * Created a viem Chain object from a NetworkData object.\n * @notInstrumented\n */\nexport const mapNetworkDataToViemChain = (networkData: NetworkData): Chain => ({\n blockExplorers: networkData.blockExplorerUrls?.[0]\n ? {\n default: {\n name: networkData.blockExplorerUrls[0],\n url: networkData.blockExplorerUrls[0],\n },\n }\n : undefined,\n id: Number(networkData.networkId),\n name: networkData.displayName,\n nativeCurrency: networkData.nativeCurrency,\n rpcUrls: {\n default: { http: networkData.rpcUrls.http },\n },\n});\n"],"mappings":";;;;;AAOA,MAAa,6BAA6B,iBAAqC;CAC7E,gBAAgB,YAAY,oBAAoB,KAC5C,EACE,SAAS;EACP,MAAM,YAAY,kBAAkB;EACpC,KAAK,YAAY,kBAAkB;EACpC,EACF,GACD;CACJ,IAAI,OAAO,YAAY,UAAU;CACjC,MAAM,YAAY;CAClB,gBAAgB,YAAY;CAC5B,SAAS,EACP,SAAS,EAAE,MAAM,YAAY,QAAQ,MAAM,EAC5C;CACF"}
|
package/dist/{mapNetworkDataToViemChain-LEfz7R8b.esm.js → mapNetworkDataToViemChain-BoRJEvJf.cjs}
RENAMED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
//#region package.json
|
|
2
|
-
var name = "@dynamic-labs-sdk/evm";
|
|
3
|
-
var version = "1.27.1";
|
|
4
1
|
|
|
5
|
-
//#endregion
|
|
6
2
|
//#region src/viem/utils/mapNetworkDataToViemChain/mapNetworkDataToViemChain.ts
|
|
7
3
|
/**
|
|
8
4
|
* Created a viem Chain object from a NetworkData object.
|
|
@@ -20,5 +16,10 @@ const mapNetworkDataToViemChain = (networkData) => ({
|
|
|
20
16
|
});
|
|
21
17
|
|
|
22
18
|
//#endregion
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
Object.defineProperty(exports, 'mapNetworkDataToViemChain', {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () {
|
|
22
|
+
return mapNetworkDataToViemChain;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=mapNetworkDataToViemChain-BoRJEvJf.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapNetworkDataToViemChain-BoRJEvJf.cjs","names":[],"sources":["../src/viem/utils/mapNetworkDataToViemChain/mapNetworkDataToViemChain.ts"],"sourcesContent":["import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport type { Chain } from 'viem';\n\n/**\n * Created a viem Chain object from a NetworkData object.\n * @notInstrumented\n */\nexport const mapNetworkDataToViemChain = (networkData: NetworkData): Chain => ({\n blockExplorers: networkData.blockExplorerUrls?.[0]\n ? {\n default: {\n name: networkData.blockExplorerUrls[0],\n url: networkData.blockExplorerUrls[0],\n },\n }\n : undefined,\n id: Number(networkData.networkId),\n name: networkData.displayName,\n nativeCurrency: networkData.nativeCurrency,\n rpcUrls: {\n default: { http: networkData.rpcUrls.http },\n },\n});\n"],"mappings":";;;;;;AAOA,MAAa,6BAA6B,iBAAqC;CAC7E,gBAAgB,YAAY,oBAAoB,KAC5C,EACE,SAAS;EACP,MAAM,YAAY,kBAAkB;EACpC,KAAK,YAAY,kBAAkB;EACpC,EACF,GACD;CACJ,IAAI,OAAO,YAAY,UAAU;CACjC,MAAM,YAAY;CAClB,gBAAgB,YAAY;CAC5B,SAAS,EACP,SAAS,EAAE,MAAM,YAAY,QAAQ,MAAM,EAC5C;CACF"}
|
package/dist/{mapNetworkDataToViemChain-CkTa7r8_.cjs → mapNetworkDataToViemChain-Dr5Vws1-.esm.js}
RENAMED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
//#region package.json
|
|
3
|
-
var name = "@dynamic-labs-sdk/evm";
|
|
4
|
-
var version = "1.27.1";
|
|
5
|
-
|
|
6
|
-
//#endregion
|
|
7
1
|
//#region src/viem/utils/mapNetworkDataToViemChain/mapNetworkDataToViemChain.ts
|
|
8
2
|
/**
|
|
9
3
|
* Created a viem Chain object from a NetworkData object.
|
|
@@ -21,22 +15,5 @@ const mapNetworkDataToViemChain = (networkData) => ({
|
|
|
21
15
|
});
|
|
22
16
|
|
|
23
17
|
//#endregion
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
get: function () {
|
|
27
|
-
return mapNetworkDataToViemChain;
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
Object.defineProperty(exports, 'name', {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: function () {
|
|
33
|
-
return name;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
Object.defineProperty(exports, 'version', {
|
|
37
|
-
enumerable: true,
|
|
38
|
-
get: function () {
|
|
39
|
-
return version;
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
//# sourceMappingURL=mapNetworkDataToViemChain-CkTa7r8_.cjs.map
|
|
18
|
+
export { mapNetworkDataToViemChain as t };
|
|
19
|
+
//# sourceMappingURL=mapNetworkDataToViemChain-Dr5Vws1-.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapNetworkDataToViemChain-Dr5Vws1-.esm.js","names":[],"sources":["../src/viem/utils/mapNetworkDataToViemChain/mapNetworkDataToViemChain.ts"],"sourcesContent":["import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport type { Chain } from 'viem';\n\n/**\n * Created a viem Chain object from a NetworkData object.\n * @notInstrumented\n */\nexport const mapNetworkDataToViemChain = (networkData: NetworkData): Chain => ({\n blockExplorers: networkData.blockExplorerUrls?.[0]\n ? {\n default: {\n name: networkData.blockExplorerUrls[0],\n url: networkData.blockExplorerUrls[0],\n },\n }\n : undefined,\n id: Number(networkData.networkId),\n name: networkData.displayName,\n nativeCurrency: networkData.nativeCurrency,\n rpcUrls: {\n default: { http: networkData.rpcUrls.http },\n },\n});\n"],"mappings":";;;;;AAOA,MAAa,6BAA6B,iBAAqC;CAC7E,gBAAgB,YAAY,oBAAoB,KAC5C,EACE,SAAS;EACP,MAAM,YAAY,kBAAkB;EACpC,KAAK,YAAY,kBAAkB;EACpC,EACF,GACD;CACJ,IAAI,OAAO,YAAY,UAAU;CACjC,MAAM,YAAY;CAClB,gBAAgB,YAAY;CAC5B,SAAS,EACP,SAAS,EAAE,MAAM,YAAY,QAAQ,MAAM,EAC5C;CACF"}
|
|
@@ -6,7 +6,10 @@ import type { EvmWalletProvider } from '../../EvmWalletProvider.types';
|
|
|
6
6
|
* facade (`disconnect` → `disconnected` event bridge, `removeAllListeners`
|
|
7
7
|
* shim) and drops `connect` so the provider is filtered out of the
|
|
8
8
|
* wallet picker by `getAvailableWalletProvidersData` — mirroring how
|
|
9
|
-
* WalletConnect URI sessions register a signing-only provider.
|
|
9
|
+
* WalletConnect URI sessions register a signing-only provider. The facade's
|
|
10
|
+
* `request` also traces dispatch/resolution at debug level, since a signing
|
|
11
|
+
* request that never gets a deep-link back to the wallet otherwise leaves
|
|
12
|
+
* no signal on the Dynamic side.
|
|
10
13
|
*
|
|
11
14
|
* @notInstrumented
|
|
12
15
|
*/
|
package/dist/metamask/createMetaMaskEvmWalletProvider/createMetaMaskEvmWalletProvider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMetaMaskEvmWalletProvider.d.ts","sourceRoot":"","sources":["../../../src/metamask/createMetaMaskEvmWalletProvider/createMetaMaskEvmWalletProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAQ9D,OAAO,KAAK,EAIV,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AASvC
|
|
1
|
+
{"version":3,"file":"createMetaMaskEvmWalletProvider.d.ts","sourceRoot":"","sources":["../../../src/metamask/createMetaMaskEvmWalletProvider/createMetaMaskEvmWalletProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAQ9D,OAAO,KAAK,EAIV,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AASvC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,+BAA+B,GAC1C,QAAQ,aAAa,KACpB,OAAO,CAAC,iBAAiB,CAmF3B,CAAC"}
|
|
@@ -8,6 +8,9 @@ import type { MetaMaskEvmController } from '../../metamask.types';
|
|
|
8
8
|
* cannot be lost to a subscription race. Dapp metadata is sourced from the
|
|
9
9
|
* client's `getAppMetadata`. The MWP deep-link hand-off is routed through the
|
|
10
10
|
* client's configured `openDeeplink`, so this works on both web and native.
|
|
11
|
+
* The MetaMask SDK's own verbose logging is tied to the Dynamic client's log
|
|
12
|
+
* level, so turning on `debug` logging for the Dynamic SDK also surfaces
|
|
13
|
+
* MetaMask's internal SDK trace output.
|
|
11
14
|
*
|
|
12
15
|
* @notInstrumented
|
|
13
16
|
*/
|
package/dist/metamask/utils/createMetaMaskEvmController/createMetaMaskEvmController.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMetaMaskEvmController.d.ts","sourceRoot":"","sources":["../../../../src/metamask/utils/createMetaMaskEvmController/createMetaMaskEvmController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAW9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"createMetaMaskEvmController.d.ts","sourceRoot":"","sources":["../../../../src/metamask/utils/createMetaMaskEvmController/createMetaMaskEvmController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAW9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAIlE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,2BAA2B,GACtC,QAAQ,aAAa,KACpB,OAAO,CAAC,qBAAqB,CA8J/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/metamask/utils/warnWhenChainNotConfigured/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { DynamicClient } from '@dynamic-labs-sdk/client';
|
|
2
|
+
/**
|
|
3
|
+
* Params for {@link warnWhenChainNotConfigured}. `supportedNetworks` is the
|
|
4
|
+
* exact map passed to `@metamask/connect-evm`'s `api.supportedNetworks` --
|
|
5
|
+
* only its keys are read here, the RPC URL values must never be logged
|
|
6
|
+
* since they can embed credentials/API keys.
|
|
7
|
+
*/
|
|
8
|
+
export type WarnWhenChainNotConfiguredParams = {
|
|
9
|
+
/** The hex chain id MetaMask reports, e.g. `0x1`. */
|
|
10
|
+
chainId: string;
|
|
11
|
+
/** The project's configured EVM networks, keyed by hex chain id (e.g. `0x1`). */
|
|
12
|
+
supportedNetworks: Record<string, string>;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Warns when the chain MetaMask reports -- via its `connect` or
|
|
16
|
+
* `chainChanged` events -- is not among the project's configured EVM
|
|
17
|
+
* networks. MetaMask's SDK gates every signing request
|
|
18
|
+
* (`personal_sign`, `eth_sendTransaction`, `eth_signTypedData_v4`) on
|
|
19
|
+
* `supportedNetworks` and throws before the wallet is ever contacted when
|
|
20
|
+
* the chain isn't listed, while `eth_accounts`/`eth_chainId` bypass that
|
|
21
|
+
* gate entirely -- so connect appears to succeed and only signing fails,
|
|
22
|
+
* with no deeplink and no obvious cause. This warn surfaces the mismatch
|
|
23
|
+
* the moment it arises instead of leaving it to be diagnosed from a
|
|
24
|
+
* cryptic signing failure.
|
|
25
|
+
* @notInstrumented
|
|
26
|
+
*/
|
|
27
|
+
export declare const warnWhenChainNotConfigured: ({ chainId, supportedNetworks }: WarnWhenChainNotConfiguredParams, client: DynamicClient) => void;
|
|
28
|
+
//# sourceMappingURL=warnWhenChainNotConfigured.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warnWhenChainNotConfigured.d.ts","sourceRoot":"","sources":["../../../../src/metamask/utils/warnWhenChainNotConfigured/warnWhenChainNotConfigured.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D;;;;;GAKG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC7C,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,0BAA0B,GACrC,gCAAgC,gCAAgC,EAChE,QAAQ,aAAa,KACpB,IAgBF,CAAC"}
|