@dynamic-labs-sdk/evm 0.27.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/{addEIP6963Extension-D09Ioc99.esm.js → addEIP6963Extension-1jrwxkRl.esm.js} +3 -3
  2. package/dist/{addEIP6963Extension-D09Ioc99.esm.js.map → addEIP6963Extension-1jrwxkRl.esm.js.map} +1 -1
  3. package/dist/{addEIP6963Extension-HPnHA0d8.cjs → addEIP6963Extension-6WKcoc6j.cjs} +3 -3
  4. package/dist/{addEIP6963Extension-HPnHA0d8.cjs.map → addEIP6963Extension-6WKcoc6j.cjs.map} +1 -1
  5. package/dist/{addWaasEvmExtension-f5Qv09Pu.cjs → addWaasEvmExtension-BPKFUV3U.cjs} +3 -3
  6. package/dist/{addWaasEvmExtension-f5Qv09Pu.cjs.map → addWaasEvmExtension-BPKFUV3U.cjs.map} +1 -1
  7. package/dist/{addWaasEvmExtension-mTxnxKO8.esm.js → addWaasEvmExtension-CctMlyNt.esm.js} +3 -3
  8. package/dist/{addWaasEvmExtension-mTxnxKO8.esm.js.map → addWaasEvmExtension-CctMlyNt.esm.js.map} +1 -1
  9. package/dist/baseAccount.cjs +3 -3
  10. package/dist/baseAccount.esm.js +3 -3
  11. package/dist/baseAccount.native.esm.js +1 -1
  12. package/dist/{createWalletClientForWalletAccount-CKQM4-tg.esm.js → createWalletClientForWalletAccount-2HJ_yeO9.esm.js} +2 -2
  13. package/dist/{createWalletClientForWalletAccount-CKQM4-tg.esm.js.map → createWalletClientForWalletAccount-2HJ_yeO9.esm.js.map} +1 -1
  14. package/dist/{createWalletClientForWalletAccount-hfa304I7.cjs → createWalletClientForWalletAccount-BKMV0WzZ.cjs} +2 -2
  15. package/dist/{createWalletClientForWalletAccount-hfa304I7.cjs.map → createWalletClientForWalletAccount-BKMV0WzZ.cjs.map} +1 -1
  16. package/dist/{createWalletProviderFromEIP1193Provider-BzaCdNCG.esm.js → createWalletProviderFromEIP1193Provider-BdZcBFWx.esm.js} +2 -2
  17. package/dist/{createWalletProviderFromEIP1193Provider-BzaCdNCG.esm.js.map → createWalletProviderFromEIP1193Provider-BdZcBFWx.esm.js.map} +1 -1
  18. package/dist/{createWalletProviderFromEIP1193Provider-BFLUndHN.cjs → createWalletProviderFromEIP1193Provider-CBbP9cb2.cjs} +2 -2
  19. package/dist/{createWalletProviderFromEIP1193Provider-BFLUndHN.cjs.map → createWalletProviderFromEIP1193Provider-CBbP9cb2.cjs.map} +1 -1
  20. package/dist/eip6963.cjs +4 -4
  21. package/dist/eip6963.esm.js +4 -4
  22. package/dist/eip6963.native.esm.js +1 -1
  23. package/dist/{evmTransferAmount-DPTOoBNU.cjs → evmTransferAmount-BA5VR2bh.cjs} +2 -2
  24. package/dist/{evmTransferAmount-DPTOoBNU.cjs.map → evmTransferAmount-BA5VR2bh.cjs.map} +1 -1
  25. package/dist/{evmTransferAmount-rO28oU5o.esm.js → evmTransferAmount-D1PZCZks.esm.js} +2 -2
  26. package/dist/{evmTransferAmount-rO28oU5o.esm.js.map → evmTransferAmount-D1PZCZks.esm.js.map} +1 -1
  27. package/dist/gasless/getEVMSponsoredTransactionStatus/getEVMSponsoredTransactionStatus.d.ts.map +1 -1
  28. package/dist/index.cjs +5 -5
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.esm.js +5 -5
  31. package/dist/index.esm.js.map +1 -1
  32. package/dist/index.native.esm.js +1 -1
  33. package/dist/index.native.esm.js.map +1 -1
  34. package/dist/{package-BI9t_Zep.native.esm.js → package-BxZgKgaF.native.esm.js} +2 -2
  35. package/dist/package-BxZgKgaF.native.esm.js.map +1 -0
  36. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  37. package/dist/viem.cjs +1 -1
  38. package/dist/viem.esm.js +1 -1
  39. package/dist/viem.native.esm.js +1 -1
  40. package/dist/waas.cjs +3 -3
  41. package/dist/waas.esm.js +3 -3
  42. package/dist/waas.native.esm.js +1 -1
  43. package/dist/walletConnect.cjs +2 -2
  44. package/dist/walletConnect.esm.js +2 -2
  45. package/dist/walletConnect.native.esm.js +1 -1
  46. package/dist/windowInjected.cjs +3 -3
  47. package/dist/windowInjected.esm.js +3 -3
  48. package/dist/windowInjected.native.esm.js +1 -1
  49. package/package.json +5 -5
  50. package/dist/package-BI9t_Zep.native.esm.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.native.esm.js","names":["data: {\n errorMessage?: string;\n status: SponsoredTransactionStatus;\n transactionHash?: string;\n }","getDefaultClient","maxFeePerGas: bigint | undefined","maxPriorityFeePerGas: bigint | undefined","gasPrice: bigint | undefined","nativeAmount: bigint","getDefaultClient","feeData: EvmSimulationResult['feeData']","DELEGATION_CONTRACT_ADDRESS: Hex","RELAYER_CONTRACT_ADDRESS: Hex","BATCH_CALL_OPDATA_AUTH_MODE: Hex","data: { requestId?: string }","getDefaultClient","getDefaultClient","packageName","packageVersion"],"sources":["../src/addEvmExtension/addEvmExtension.ts","../src/errors/EvmGasSponsorshipNotEnabledError/EvmGasSponsorshipNotEnabledError.ts","../src/errors/SponsorTransactionError/SponsorTransactionError.ts","../src/gasless/getEVMSponsoredTransactionStatus/getEVMSponsoredTransactionStatus.ts","../src/gasless/isEvmGasSponsorshipEnabled/isEvmGasSponsorshipEnabled.ts","../src/isEvmNetworkProvider/isEvmNetworkProvider.ts","../src/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.ts","../src/simulateEvmTransaction/simulateEvmTransaction.ts","../src/gasless/constants.ts","../src/gasless/generateRandomNonce/generateRandomNonce.ts","../src/gasless/generateIntentNonce/generateIntentNonce.ts","../src/gasless/toSerializedAuthorization/toSerializedAuthorization.ts","../src/gasless/signSponsoredTransaction/signSponsoredTransaction.ts","../src/gasless/relaySponsoredTransaction/relaySponsoredTransaction.ts","../src/gasless/waitForSponsoredTransaction/waitForSponsoredTransaction.ts","../src/gasless/sendSponsoredTransaction/sendSponsoredTransaction.ts","../src/exports/index.ts"],"sourcesContent":["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 * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @not-instrumented\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 { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class SponsorTransactionError extends BaseError {\n // eslint-disable-next-line custom-rules/require-single-object-param -- mirrors viem-style error constructors: (cause, details)\n constructor(cause?: Error | null, details?: string) {\n super({\n cause: cause ?? null,\n code: 'sponsor_transaction_error',\n details,\n docsUrl: null,\n name: 'SponsorTransactionError',\n shortMessage: 'Failed to sponsor EVM transaction',\n });\n }\n}\n","import {\n createApiClient,\n getCore,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client/core';\nimport type { Hex } from 'viem';\n\nimport { SponsorTransactionError } from '../../errors/SponsorTransactionError';\nimport type {\n SponsoredTransactionStatus,\n SponsoredTransactionStatusResult,\n} from '../gasless.types';\n\ntype GetEVMSponsoredTransactionStatusParams = {\n /** The request ID returned by `relaySponsoredTransaction` / `sendSponsoredTransaction`. */\n requestId: string;\n};\n\n/**\n * Fetches the current relay state for a sponsored EVM transaction.\n *\n * Returns the lifecycle status, the on-chain transaction hash (when the relay\n * has broadcast it), and any terminal-failure error message. Use this as the\n * building block for custom polling flows; for the common \"wait until done\"\n * case prefer `waitForSponsoredTransaction`.\n *\n * @param params.requestId - The request ID returned when the transaction was relayed.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns The current status, optional transaction hash, and optional error message.\n * @throws {SponsorTransactionError} If the API call fails.\n * @not-instrumented\n */\nexport const getEVMSponsoredTransactionStatus = async (\n { requestId }: GetEVMSponsoredTransactionStatusParams,\n client = getDefaultClient(),\n): Promise<SponsoredTransactionStatusResult> => {\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n let data: {\n errorMessage?: string;\n status: SponsoredTransactionStatus;\n transactionHash?: string;\n };\n\n try {\n // Remove this once @dynamic-labs/sdk-api-core ships getEVMSponsoredTransactionStatus\n // @ts-expect-error - method exists in redcoast source but not yet in published SDK\n data = await apiClient.getEVMSponsoredTransactionStatus({\n environmentId: core.environmentId,\n requestId,\n });\n } catch (error) {\n const cause = error instanceof Error ? error : null;\n throw new SponsorTransactionError(cause);\n }\n\n return {\n errorMessage: data.errorMessage,\n status: data.status,\n transactionHash: data.transactionHash as Hex | undefined,\n };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\n\n/**\n * Checks if EVM gas sponsorship is enabled for the current project.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns True if EVM gas sponsorship is enabled, false otherwise.\n * @not-instrumented\n */\nexport const isEvmGasSponsorshipEnabled = (\n client = getDefaultClient()\n): boolean => {\n assertDefined(client.projectSettings, 'Project settings are not defined');\n\n return (\n client.projectSettings.sdk.embeddedWallets?.evmGasSponsorshipEnabled ??\n false\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 * @param networkProvider - The network provider to check.\n * @returns True if the network provider is an EVM network provider, false otherwise.\n * @not-instrumented\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 * @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 * @not-instrumented\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 * @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 * @not-instrumented\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 type { Hex } from 'viem';\n\n/** The Fireblocks Universal Gasless Delegate (UGD) contract address used for EIP-7702 delegation. */\nexport const DELEGATION_CONTRACT_ADDRESS: Hex =\n '0x0000Fb7702036ff9f76044a501ac1aA74cbab16b';\n\n/** The ERC-7821 Forwarder contract address that relays calls to the delegated wallet. */\nexport const RELAYER_CONTRACT_ADDRESS: Hex =\n '0x0fb50CBAd1B82005628bc8aF0f7A6D81Bf74cDCe';\n\n/** Default sponsored transaction validity duration in seconds (10 minutes). */\nexport const DEFAULT_VALID_FOR_SECONDS = 600;\n\n/** EIP-7702 delegation code prefix used to identify delegated accounts. */\nexport const DELEGATION_CODE_PREFIX = '0xef0100';\n\n/** ERC-7579 batch call with opData and auth mode identifier. */\nexport const BATCH_CALL_OPDATA_AUTH_MODE: Hex =\n '0x0100000000007821000100000000000000000000000000000000000000000000';\n\n/** EIP-712 typed data types for UGD AuthorizedExecutions signing. */\nexport const AUTHORIZED_EXECUTIONS_TYPES = {\n AuthorizedExecutions: [\n { name: 'calls', type: 'Execution[]' },\n { name: 'deadline', type: 'uint256' },\n { name: 'mode', type: 'bytes32' },\n { name: 'nonce', type: 'uint256' },\n { name: 'relayer', type: 'address' },\n ],\n Execution: [\n { name: 'target', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'data', type: 'bytes' },\n ],\n} as const;\n\n/** Minimal ABI for the UGD contract's nonce validation function. */\nexport const UGD_ABI = [\n {\n inputs: [{ name: 'nonce', type: 'uint256' }],\n name: 'isNonceUsed',\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const;\n","/**\n * Generates a cryptographically random 256-bit nonce.\n *\n * @returns A random bigint nonce.\n * @not-instrumented\n */\nexport const generateRandomNonce = (): bigint => {\n const bytes = new Uint8Array(32);\n crypto.getRandomValues(bytes);\n\n return bytes.reduce((acc, byte) => (acc << 8n) | BigInt(byte), 0n);\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getActiveNetworkData } from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { Hex } from 'viem';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\nimport { UGD_ABI } from '../constants';\nimport { generateRandomNonce } from '../generateRandomNonce';\n\ntype GenerateIntentNonceParams = {\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Generates a random bitmap nonce for UGD AuthorizedExecutions signing.\n *\n * Uses crypto.getRandomValues() for 256-bit randomness. Validates against\n * the on-chain isNonceUsed check as a safety measure, although collision\n * is essentially impossible with 256-bit random values.\n *\n * @param params.walletAccount - The wallet account whose delegation contract is checked.\n * @param [client] - The Dynamic client instance.\n * @returns A unique bigint nonce for the EIP-712 intent.\n * @not-instrumented\n */\nexport const generateIntentNonce = async (\n { walletAccount }: GenerateIntentNonceParams,\n client: DynamicClient\n): Promise<bigint> => {\n const nonce = generateRandomNonce();\n\n const { networkData } = await getActiveNetworkData(\n { walletAccount },\n client\n );\n\n assertDefined(\n networkData,\n `No network data found for wallet account ${walletAccount.address}`\n );\n\n const publicClient = createPublicClientFromNetworkData({ networkData });\n\n try {\n // Call isNonceUsed on the wallet address because UGD code is\n // delegated to the EOA via EIP-7702\n const isUsed = await publicClient.readContract({\n abi: UGD_ABI,\n address: walletAccount.address as Hex,\n args: [nonce],\n functionName: 'isNonceUsed',\n });\n\n if (isUsed) {\n return generateRandomNonce();\n }\n } catch {\n // Contract call may fail if delegation is not yet active —\n // the nonce is still safe to use since it was randomly generated\n }\n\n return nonce;\n};\n","import { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { Hex } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { SerializedAuthorization } from '../gasless.types';\n\n/**\n * Converts a viem SignAuthorizationReturnType into a plain serializable object\n * suitable for JSON transport to the sponsorship API.\n *\n * @not-instrumented\n */\nexport const toSerializedAuthorization = (\n auth: SignAuthorizationReturnType\n): SerializedAuthorization => {\n // viem's Signature type allows legacy v-only signatures without yParity.\n // Our signing flow should always produce yParity, but a wrong value would silently produce invalid authorizations.\n assertDefined(auth.yParity, 'Signed authorization is missing yParity');\n\n return {\n address: auth.address,\n chainId: auth.chainId,\n nonce: auth.nonce,\n r: auth.r as Hex,\n s: auth.s as Hex,\n yParity: auth.yParity,\n };\n};\n","import { getActiveNetworkData } from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client/core';\nimport type { Hex } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport {\n AUTHORIZED_EXECUTIONS_TYPES,\n BATCH_CALL_OPDATA_AUTH_MODE,\n DEFAULT_VALID_FOR_SECONDS,\n DELEGATION_CONTRACT_ADDRESS,\n RELAYER_CONTRACT_ADDRESS,\n} from '../constants';\nimport { generateIntentNonce } from '../generateIntentNonce';\nimport { toSerializedAuthorization } from '../toSerializedAuthorization';\nimport type {\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n} from '../gasless.types';\nimport { createWalletClientForWalletAccount } from '../../viem/createWalletClientForWalletAccount';\nimport { mapNetworkDataToViemChain } from '../../viem/utils/mapNetworkDataToViemChain';\n\ntype SignSponsoredTransactionParams = {\n /** Pre-signed EIP-7702 authorization to include in the payload. */\n authorization?: SignAuthorizationReturnType;\n /** The batch of calls to execute. */\n calls: SponsoredTransactionCall[];\n /** How long the signed intent remains valid, in seconds. Defaults to 600 (10 minutes). */\n validForSeconds?: number;\n /** The EVM wallet account to sign the transaction for. */\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Signs a sponsored transaction by creating an EIP-712 intent signature.\n *\n * If an authorization is provided, it is serialized and included in the\n * payload. Otherwise the intent is signed without any authorization\n * (caller manages delegation separately).\n *\n * @param params.walletAccount - The EVM wallet account to sign with.\n * @param params.calls - The batch of calls to execute.\n * @param [params.authorization] - Pre-signed EIP-7702 authorization to include.\n * @param [params.validForSeconds] - How long the signed intent remains valid, in seconds. Defaults to 600 (10 minutes).\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns The signed sponsored transaction payload ready to be sent to the API.\n * @not-instrumented\n */\nexport const signSponsoredTransaction = async (\n {\n walletAccount,\n calls,\n authorization,\n validForSeconds = DEFAULT_VALID_FOR_SECONDS,\n }: SignSponsoredTransactionParams,\n client = getDefaultClient()\n): Promise<SignedSponsoredTransaction> => {\n const { networkData } = await getActiveNetworkData(\n { walletAccount },\n client\n );\n\n assertDefined(\n networkData,\n `No network data found for wallet account ${walletAccount.address}`\n );\n\n const nonce = await generateIntentNonce({ walletAccount }, client);\n\n const deadline = BigInt(\n Math.floor(Date.now() / 1000) + validForSeconds\n );\n\n const chainId = mapNetworkDataToViemChain(networkData).id;\n\n const walletClient = await createWalletClientForWalletAccount(\n { walletAccount },\n client\n );\n\n const signature = await walletClient.signTypedData({\n domain: {\n chainId,\n verifyingContract: DELEGATION_CONTRACT_ADDRESS,\n },\n message: {\n calls: calls.map((c) => ({\n data: c.data,\n target: c.target,\n value: c.value,\n })),\n deadline,\n mode: BATCH_CALL_OPDATA_AUTH_MODE,\n nonce,\n relayer: RELAYER_CONTRACT_ADDRESS,\n },\n primaryType: 'AuthorizedExecutions',\n types: AUTHORIZED_EXECUTIONS_TYPES,\n });\n\n return {\n authorization: authorization\n ? toSerializedAuthorization(authorization)\n : undefined,\n calls,\n chainId,\n deadline: deadline.toString(),\n nonce: nonce.toString(),\n relayer: RELAYER_CONTRACT_ADDRESS,\n signature: signature as Hex,\n walletAddress: walletAccount.address as Hex,\n };\n};\n","import {\n createApiClient,\n getCore,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client/core';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { SponsorTransactionError } from '../../errors/SponsorTransactionError';\nimport { DEFAULT_VALID_FOR_SECONDS } from '../constants';\nimport type {\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n} from '../gasless.types';\nimport { signSponsoredTransaction } from '../signSponsoredTransaction';\n\ntype RelaySponsoredTransactionWithCallsParams = {\n /** Pre-signed EIP-7702 authorization to include in the payload. */\n authorization?: SignAuthorizationReturnType;\n /** The batch of calls to execute. */\n calls: SponsoredTransactionCall[];\n /** How long the signed intent remains valid, in seconds. Defaults to 600 (10 minutes). */\n validForSeconds?: number;\n /** The EVM wallet account to sign and relay the transaction for. */\n walletAccount: EvmWalletAccount;\n};\n\ntype RelaySponsoredTransactionWithSignedTxParams = {\n /** A pre-signed sponsored transaction payload from signSponsoredTransaction. */\n signedTransaction: SignedSponsoredTransaction;\n};\n\ntype RelaySponsoredTransactionParams =\n | RelaySponsoredTransactionWithCallsParams\n | RelaySponsoredTransactionWithSignedTxParams;\n\nconst isSignedTransactionParams = (\n params: RelaySponsoredTransactionParams,\n): params is RelaySponsoredTransactionWithSignedTxParams =>\n 'signedTransaction' in params;\n\n/**\n * Relays a sponsored EVM transaction to the Dynamic backend.\n *\n * Accepts either a pre-signed transaction or unsigned calls. When given\n * unsigned calls, signs the transaction first via signSponsoredTransaction.\n *\n * The backend encodes the transaction, submits it to the relay provider,\n * and returns a request ID for tracking. The relay may retry the on-chain\n * submission, so the request ID (not a transaction hash) is the stable\n * identifier for the sponsored transaction.\n *\n * @param params - Either { signedTransaction } or { walletAccount, calls, ... }.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the request ID for tracking the relayed transaction.\n * @throws {SponsorTransactionError} If the API call fails or returns an unexpected response.\n * @not-instrumented\n */\nexport const relaySponsoredTransaction = async (\n params: RelaySponsoredTransactionParams,\n client = getDefaultClient(),\n): Promise<{ requestId: string }> => {\n const signedTransaction = isSignedTransactionParams(params)\n ? params.signedTransaction\n : await signSponsoredTransaction(\n {\n authorization: params.authorization,\n calls: params.calls,\n validForSeconds: params.validForSeconds ?? DEFAULT_VALID_FOR_SECONDS,\n walletAccount: params.walletAccount,\n },\n client,\n );\n\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n let data: { requestId?: string };\n\n try {\n data = await apiClient.sponsorEVMTransaction({\n environmentId: core.environmentId,\n sponsorEVMTransactionRequest: {\n authorization: signedTransaction.authorization,\n calls: signedTransaction.calls.map((c) => ({\n data: c.data,\n target: c.target,\n value: c.value.toString(),\n })),\n chainId: signedTransaction.chainId,\n deadline: signedTransaction.deadline,\n nonce: signedTransaction.nonce,\n relayer: signedTransaction.relayer,\n signature: signedTransaction.signature,\n walletAddress: signedTransaction.walletAddress,\n },\n });\n } catch (error) {\n const cause = error instanceof Error ? error : null;\n throw new SponsorTransactionError(cause);\n }\n\n if (!data.requestId) {\n throw new SponsorTransactionError();\n }\n\n return { requestId: data.requestId };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport type { Hex } from 'viem';\n\nimport { SponsorTransactionError } from '../../errors/SponsorTransactionError';\nimport { getEVMSponsoredTransactionStatus } from '../getEVMSponsoredTransactionStatus';\n\nconst POLL_INTERVAL_MS = 2_000;\nconst TIMEOUT_MS = 60_000;\nconst MAX_POLLING_ATTEMPTS = TIMEOUT_MS / POLL_INTERVAL_MS;\n\ntype WaitForSponsoredTransactionParams = {\n /** The request ID returned by `relaySponsoredTransaction` / `sendSponsoredTransaction`. */\n requestId: string;\n};\n\n/**\n * Polls `getEVMSponsoredTransactionStatus` until the relay reaches a terminal\n * state and returns the on-chain transaction hash.\n *\n * Resolves on `CONFIRMED`. Throws `SponsorTransactionError` on terminal\n * failure statuses (`FAILED`, `CANCELED`, `EXPIRED`, `REJECTED`) or after a\n * 60s timeout.\n *\n * @param params.requestId - The request ID returned when the transaction was relayed.\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 * @not-instrumented\n */\nexport const waitForSponsoredTransaction = async (\n { requestId }: WaitForSponsoredTransactionParams,\n client = getDefaultClient(),\n): Promise<{ transactionHash: Hex }> => {\n for (let attempt = 0; attempt < MAX_POLLING_ATTEMPTS; attempt++) {\n const result = await getEVMSponsoredTransactionStatus(\n { requestId },\n client,\n );\n\n switch (result.status) {\n case 'CONFIRMED':\n if (!result.transactionHash) {\n throw new SponsorTransactionError();\n }\n return { transactionHash: result.transactionHash };\n\n case 'CANCELED':\n case 'EXPIRED':\n case 'FAILED':\n case 'REJECTED':\n throw new SponsorTransactionError(null, result.errorMessage);\n\n case 'PENDING':\n case 'SENT':\n case 'SUBMITTED':\n break;\n }\n\n if (attempt < MAX_POLLING_ATTEMPTS - 1) {\n await new Promise<void>((resolve) =>\n setTimeout(resolve, POLL_INTERVAL_MS),\n );\n }\n }\n\n throw new SponsorTransactionError(\n null,\n `Timed out waiting for sponsored transaction ${requestId}`,\n );\n};\n","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 type {\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n} from '../gasless.types';\nimport { relaySponsoredTransaction } from '../relaySponsoredTransaction';\nimport { waitForSponsoredTransaction } from '../waitForSponsoredTransaction';\n\ntype SendSponsoredTransactionWithCallsParams = {\n /** Pre-signed EIP-7702 authorization to include in the payload. */\n authorization?: SignAuthorizationReturnType;\n /** The batch of calls to execute. */\n calls: SponsoredTransactionCall[];\n /** How long the signed intent remains valid, in seconds. Defaults to 600 (10 minutes). */\n validForSeconds?: number;\n /** The EVM wallet account to sign and send the transaction for. */\n walletAccount: EvmWalletAccount;\n};\n\ntype SendSponsoredTransactionWithSignedTxParams = {\n /** A pre-signed sponsored transaction payload from signSponsoredTransaction. */\n signedTransaction: SignedSponsoredTransaction;\n};\n\ntype SendSponsoredTransactionParams =\n | SendSponsoredTransactionWithCallsParams\n | SendSponsoredTransactionWithSignedTxParams;\n\n/**\n * Sends a sponsored EVM transaction and waits for the on-chain transaction hash.\n *\n * Accepts either a pre-signed transaction or unsigned calls. When given\n * unsigned calls, signs the transaction first via signSponsoredTransaction.\n * Relays the transaction and polls until the relay reports a CONFIRMED\n * status, then returns the resulting transaction hash.\n *\n * @param params - Either { signedTransaction } or { walletAccount, calls, ... }.\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 * @not-instrumented\n */\nexport const sendSponsoredTransaction = async (\n params: SendSponsoredTransactionParams,\n client = getDefaultClient(),\n): Promise<{ transactionHash: Hex }> => {\n const { requestId } = await relaySponsoredTransaction(params, client);\n return waitForSponsoredTransaction({ requestId }, client);\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 { 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 { 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 { signSponsoredTransaction } from '../gasless/signSponsoredTransaction';\nexport { waitForSponsoredTransaction } from '../gasless/waitForSponsoredTransaction';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.native.esm.js","names":["data: {\n errorMessage?: string;\n status: SponsoredTransactionStatus;\n transactionHash?: string;\n }","getDefaultClient","maxFeePerGas: bigint | undefined","maxPriorityFeePerGas: bigint | undefined","gasPrice: bigint | undefined","nativeAmount: bigint","getDefaultClient","feeData: EvmSimulationResult['feeData']","DELEGATION_CONTRACT_ADDRESS: Hex","RELAYER_CONTRACT_ADDRESS: Hex","BATCH_CALL_OPDATA_AUTH_MODE: Hex","data: { requestId?: string }","getDefaultClient","getDefaultClient","packageName","packageVersion"],"sources":["../src/addEvmExtension/addEvmExtension.ts","../src/errors/EvmGasSponsorshipNotEnabledError/EvmGasSponsorshipNotEnabledError.ts","../src/errors/SponsorTransactionError/SponsorTransactionError.ts","../src/gasless/getEVMSponsoredTransactionStatus/getEVMSponsoredTransactionStatus.ts","../src/gasless/isEvmGasSponsorshipEnabled/isEvmGasSponsorshipEnabled.ts","../src/isEvmNetworkProvider/isEvmNetworkProvider.ts","../src/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.ts","../src/simulateEvmTransaction/simulateEvmTransaction.ts","../src/gasless/constants.ts","../src/gasless/generateRandomNonce/generateRandomNonce.ts","../src/gasless/generateIntentNonce/generateIntentNonce.ts","../src/gasless/toSerializedAuthorization/toSerializedAuthorization.ts","../src/gasless/signSponsoredTransaction/signSponsoredTransaction.ts","../src/gasless/relaySponsoredTransaction/relaySponsoredTransaction.ts","../src/gasless/waitForSponsoredTransaction/waitForSponsoredTransaction.ts","../src/gasless/sendSponsoredTransaction/sendSponsoredTransaction.ts","../src/exports/index.ts"],"sourcesContent":["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 * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @not-instrumented\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 { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class SponsorTransactionError extends BaseError {\n // eslint-disable-next-line custom-rules/require-single-object-param -- mirrors viem-style error constructors: (cause, details)\n constructor(cause?: Error | null, details?: string) {\n super({\n cause: cause ?? null,\n code: 'sponsor_transaction_error',\n details,\n docsUrl: null,\n name: 'SponsorTransactionError',\n shortMessage: 'Failed to sponsor EVM transaction',\n });\n }\n}\n","import {\n createApiClient,\n getCore,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client/core';\nimport type { Hex } from 'viem';\n\nimport { SponsorTransactionError } from '../../errors/SponsorTransactionError';\nimport type {\n SponsoredTransactionStatus,\n SponsoredTransactionStatusResult,\n} from '../gasless.types';\n\ntype GetEVMSponsoredTransactionStatusParams = {\n /** The request ID returned by `relaySponsoredTransaction` / `sendSponsoredTransaction`. */\n requestId: string;\n};\n\n/**\n * Fetches the current relay state for a sponsored EVM transaction.\n *\n * Returns the lifecycle status, the on-chain transaction hash (when the relay\n * has broadcast it), and any terminal-failure error message. Use this as the\n * building block for custom polling flows; for the common \"wait until done\"\n * case prefer `waitForSponsoredTransaction`.\n *\n * @param params.requestId - The request ID returned when the transaction was relayed.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns The current status, optional transaction hash, and optional error message.\n * @throws {SponsorTransactionError} If the API call fails.\n * @not-instrumented\n */\nexport const getEVMSponsoredTransactionStatus = async (\n { requestId }: GetEVMSponsoredTransactionStatusParams,\n client = getDefaultClient(),\n): Promise<SponsoredTransactionStatusResult> => {\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n let data: {\n errorMessage?: string;\n status: SponsoredTransactionStatus;\n transactionHash?: string;\n };\n\n try {\n data = await apiClient.getEVMSponsoredTransactionStatus({\n environmentId: core.environmentId,\n requestId,\n });\n } catch (error) {\n const cause = error instanceof Error ? error : null;\n throw new SponsorTransactionError(cause);\n }\n\n return {\n errorMessage: data.errorMessage,\n status: data.status,\n transactionHash: data.transactionHash as Hex | undefined,\n };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\n\n/**\n * Checks if EVM gas sponsorship is enabled for the current project.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns True if EVM gas sponsorship is enabled, false otherwise.\n * @not-instrumented\n */\nexport const isEvmGasSponsorshipEnabled = (\n client = getDefaultClient()\n): boolean => {\n assertDefined(client.projectSettings, 'Project settings are not defined');\n\n return (\n client.projectSettings.sdk.embeddedWallets?.evmGasSponsorshipEnabled ??\n false\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 * @param networkProvider - The network provider to check.\n * @returns True if the network provider is an EVM network provider, false otherwise.\n * @not-instrumented\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 * @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 * @not-instrumented\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 * @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 * @not-instrumented\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 type { Hex } from 'viem';\n\n/** The Fireblocks Universal Gasless Delegate (UGD) contract address used for EIP-7702 delegation. */\nexport const DELEGATION_CONTRACT_ADDRESS: Hex =\n '0x0000Fb7702036ff9f76044a501ac1aA74cbab16b';\n\n/** The ERC-7821 Forwarder contract address that relays calls to the delegated wallet. */\nexport const RELAYER_CONTRACT_ADDRESS: Hex =\n '0x0fb50CBAd1B82005628bc8aF0f7A6D81Bf74cDCe';\n\n/** Default sponsored transaction validity duration in seconds (10 minutes). */\nexport const DEFAULT_VALID_FOR_SECONDS = 600;\n\n/** EIP-7702 delegation code prefix used to identify delegated accounts. */\nexport const DELEGATION_CODE_PREFIX = '0xef0100';\n\n/** ERC-7579 batch call with opData and auth mode identifier. */\nexport const BATCH_CALL_OPDATA_AUTH_MODE: Hex =\n '0x0100000000007821000100000000000000000000000000000000000000000000';\n\n/** EIP-712 typed data types for UGD AuthorizedExecutions signing. */\nexport const AUTHORIZED_EXECUTIONS_TYPES = {\n AuthorizedExecutions: [\n { name: 'calls', type: 'Execution[]' },\n { name: 'deadline', type: 'uint256' },\n { name: 'mode', type: 'bytes32' },\n { name: 'nonce', type: 'uint256' },\n { name: 'relayer', type: 'address' },\n ],\n Execution: [\n { name: 'target', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'data', type: 'bytes' },\n ],\n} as const;\n\n/** Minimal ABI for the UGD contract's nonce validation function. */\nexport const UGD_ABI = [\n {\n inputs: [{ name: 'nonce', type: 'uint256' }],\n name: 'isNonceUsed',\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const;\n","/**\n * Generates a cryptographically random 256-bit nonce.\n *\n * @returns A random bigint nonce.\n * @not-instrumented\n */\nexport const generateRandomNonce = (): bigint => {\n const bytes = new Uint8Array(32);\n crypto.getRandomValues(bytes);\n\n return bytes.reduce((acc, byte) => (acc << 8n) | BigInt(byte), 0n);\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getActiveNetworkData } from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { Hex } from 'viem';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\nimport { UGD_ABI } from '../constants';\nimport { generateRandomNonce } from '../generateRandomNonce';\n\ntype GenerateIntentNonceParams = {\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Generates a random bitmap nonce for UGD AuthorizedExecutions signing.\n *\n * Uses crypto.getRandomValues() for 256-bit randomness. Validates against\n * the on-chain isNonceUsed check as a safety measure, although collision\n * is essentially impossible with 256-bit random values.\n *\n * @param params.walletAccount - The wallet account whose delegation contract is checked.\n * @param [client] - The Dynamic client instance.\n * @returns A unique bigint nonce for the EIP-712 intent.\n * @not-instrumented\n */\nexport const generateIntentNonce = async (\n { walletAccount }: GenerateIntentNonceParams,\n client: DynamicClient\n): Promise<bigint> => {\n const nonce = generateRandomNonce();\n\n const { networkData } = await getActiveNetworkData(\n { walletAccount },\n client\n );\n\n assertDefined(\n networkData,\n `No network data found for wallet account ${walletAccount.address}`\n );\n\n const publicClient = createPublicClientFromNetworkData({ networkData });\n\n try {\n // Call isNonceUsed on the wallet address because UGD code is\n // delegated to the EOA via EIP-7702\n const isUsed = await publicClient.readContract({\n abi: UGD_ABI,\n address: walletAccount.address as Hex,\n args: [nonce],\n functionName: 'isNonceUsed',\n });\n\n if (isUsed) {\n return generateRandomNonce();\n }\n } catch {\n // Contract call may fail if delegation is not yet active —\n // the nonce is still safe to use since it was randomly generated\n }\n\n return nonce;\n};\n","import { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { Hex } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { SerializedAuthorization } from '../gasless.types';\n\n/**\n * Converts a viem SignAuthorizationReturnType into a plain serializable object\n * suitable for JSON transport to the sponsorship API.\n *\n * @not-instrumented\n */\nexport const toSerializedAuthorization = (\n auth: SignAuthorizationReturnType\n): SerializedAuthorization => {\n // viem's Signature type allows legacy v-only signatures without yParity.\n // Our signing flow should always produce yParity, but a wrong value would silently produce invalid authorizations.\n assertDefined(auth.yParity, 'Signed authorization is missing yParity');\n\n return {\n address: auth.address,\n chainId: auth.chainId,\n nonce: auth.nonce,\n r: auth.r as Hex,\n s: auth.s as Hex,\n yParity: auth.yParity,\n };\n};\n","import { getActiveNetworkData } from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client/core';\nimport type { Hex } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport {\n AUTHORIZED_EXECUTIONS_TYPES,\n BATCH_CALL_OPDATA_AUTH_MODE,\n DEFAULT_VALID_FOR_SECONDS,\n DELEGATION_CONTRACT_ADDRESS,\n RELAYER_CONTRACT_ADDRESS,\n} from '../constants';\nimport { generateIntentNonce } from '../generateIntentNonce';\nimport { toSerializedAuthorization } from '../toSerializedAuthorization';\nimport type {\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n} from '../gasless.types';\nimport { createWalletClientForWalletAccount } from '../../viem/createWalletClientForWalletAccount';\nimport { mapNetworkDataToViemChain } from '../../viem/utils/mapNetworkDataToViemChain';\n\ntype SignSponsoredTransactionParams = {\n /** Pre-signed EIP-7702 authorization to include in the payload. */\n authorization?: SignAuthorizationReturnType;\n /** The batch of calls to execute. */\n calls: SponsoredTransactionCall[];\n /** How long the signed intent remains valid, in seconds. Defaults to 600 (10 minutes). */\n validForSeconds?: number;\n /** The EVM wallet account to sign the transaction for. */\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Signs a sponsored transaction by creating an EIP-712 intent signature.\n *\n * If an authorization is provided, it is serialized and included in the\n * payload. Otherwise the intent is signed without any authorization\n * (caller manages delegation separately).\n *\n * @param params.walletAccount - The EVM wallet account to sign with.\n * @param params.calls - The batch of calls to execute.\n * @param [params.authorization] - Pre-signed EIP-7702 authorization to include.\n * @param [params.validForSeconds] - How long the signed intent remains valid, in seconds. Defaults to 600 (10 minutes).\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns The signed sponsored transaction payload ready to be sent to the API.\n * @not-instrumented\n */\nexport const signSponsoredTransaction = async (\n {\n walletAccount,\n calls,\n authorization,\n validForSeconds = DEFAULT_VALID_FOR_SECONDS,\n }: SignSponsoredTransactionParams,\n client = getDefaultClient()\n): Promise<SignedSponsoredTransaction> => {\n const { networkData } = await getActiveNetworkData(\n { walletAccount },\n client\n );\n\n assertDefined(\n networkData,\n `No network data found for wallet account ${walletAccount.address}`\n );\n\n const nonce = await generateIntentNonce({ walletAccount }, client);\n\n const deadline = BigInt(\n Math.floor(Date.now() / 1000) + validForSeconds\n );\n\n const chainId = mapNetworkDataToViemChain(networkData).id;\n\n const walletClient = await createWalletClientForWalletAccount(\n { walletAccount },\n client\n );\n\n const signature = await walletClient.signTypedData({\n domain: {\n chainId,\n verifyingContract: DELEGATION_CONTRACT_ADDRESS,\n },\n message: {\n calls: calls.map((c) => ({\n data: c.data,\n target: c.target,\n value: c.value,\n })),\n deadline,\n mode: BATCH_CALL_OPDATA_AUTH_MODE,\n nonce,\n relayer: RELAYER_CONTRACT_ADDRESS,\n },\n primaryType: 'AuthorizedExecutions',\n types: AUTHORIZED_EXECUTIONS_TYPES,\n });\n\n return {\n authorization: authorization\n ? toSerializedAuthorization(authorization)\n : undefined,\n calls,\n chainId,\n deadline: deadline.toString(),\n nonce: nonce.toString(),\n relayer: RELAYER_CONTRACT_ADDRESS,\n signature: signature as Hex,\n walletAddress: walletAccount.address as Hex,\n };\n};\n","import {\n createApiClient,\n getCore,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client/core';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { SponsorTransactionError } from '../../errors/SponsorTransactionError';\nimport { DEFAULT_VALID_FOR_SECONDS } from '../constants';\nimport type {\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n} from '../gasless.types';\nimport { signSponsoredTransaction } from '../signSponsoredTransaction';\n\ntype RelaySponsoredTransactionWithCallsParams = {\n /** Pre-signed EIP-7702 authorization to include in the payload. */\n authorization?: SignAuthorizationReturnType;\n /** The batch of calls to execute. */\n calls: SponsoredTransactionCall[];\n /** How long the signed intent remains valid, in seconds. Defaults to 600 (10 minutes). */\n validForSeconds?: number;\n /** The EVM wallet account to sign and relay the transaction for. */\n walletAccount: EvmWalletAccount;\n};\n\ntype RelaySponsoredTransactionWithSignedTxParams = {\n /** A pre-signed sponsored transaction payload from signSponsoredTransaction. */\n signedTransaction: SignedSponsoredTransaction;\n};\n\ntype RelaySponsoredTransactionParams =\n | RelaySponsoredTransactionWithCallsParams\n | RelaySponsoredTransactionWithSignedTxParams;\n\nconst isSignedTransactionParams = (\n params: RelaySponsoredTransactionParams,\n): params is RelaySponsoredTransactionWithSignedTxParams =>\n 'signedTransaction' in params;\n\n/**\n * Relays a sponsored EVM transaction to the Dynamic backend.\n *\n * Accepts either a pre-signed transaction or unsigned calls. When given\n * unsigned calls, signs the transaction first via signSponsoredTransaction.\n *\n * The backend encodes the transaction, submits it to the relay provider,\n * and returns a request ID for tracking. The relay may retry the on-chain\n * submission, so the request ID (not a transaction hash) is the stable\n * identifier for the sponsored transaction.\n *\n * @param params - Either { signedTransaction } or { walletAccount, calls, ... }.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the request ID for tracking the relayed transaction.\n * @throws {SponsorTransactionError} If the API call fails or returns an unexpected response.\n * @not-instrumented\n */\nexport const relaySponsoredTransaction = async (\n params: RelaySponsoredTransactionParams,\n client = getDefaultClient(),\n): Promise<{ requestId: string }> => {\n const signedTransaction = isSignedTransactionParams(params)\n ? params.signedTransaction\n : await signSponsoredTransaction(\n {\n authorization: params.authorization,\n calls: params.calls,\n validForSeconds: params.validForSeconds ?? DEFAULT_VALID_FOR_SECONDS,\n walletAccount: params.walletAccount,\n },\n client,\n );\n\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n let data: { requestId?: string };\n\n try {\n data = await apiClient.sponsorEVMTransaction({\n environmentId: core.environmentId,\n sponsorEVMTransactionRequest: {\n authorization: signedTransaction.authorization,\n calls: signedTransaction.calls.map((c) => ({\n data: c.data,\n target: c.target,\n value: c.value.toString(),\n })),\n chainId: signedTransaction.chainId,\n deadline: signedTransaction.deadline,\n nonce: signedTransaction.nonce,\n relayer: signedTransaction.relayer,\n signature: signedTransaction.signature,\n walletAddress: signedTransaction.walletAddress,\n },\n });\n } catch (error) {\n const cause = error instanceof Error ? error : null;\n throw new SponsorTransactionError(cause);\n }\n\n if (!data.requestId) {\n throw new SponsorTransactionError();\n }\n\n return { requestId: data.requestId };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport type { Hex } from 'viem';\n\nimport { SponsorTransactionError } from '../../errors/SponsorTransactionError';\nimport { getEVMSponsoredTransactionStatus } from '../getEVMSponsoredTransactionStatus';\n\nconst POLL_INTERVAL_MS = 2_000;\nconst TIMEOUT_MS = 60_000;\nconst MAX_POLLING_ATTEMPTS = TIMEOUT_MS / POLL_INTERVAL_MS;\n\ntype WaitForSponsoredTransactionParams = {\n /** The request ID returned by `relaySponsoredTransaction` / `sendSponsoredTransaction`. */\n requestId: string;\n};\n\n/**\n * Polls `getEVMSponsoredTransactionStatus` until the relay reaches a terminal\n * state and returns the on-chain transaction hash.\n *\n * Resolves on `CONFIRMED`. Throws `SponsorTransactionError` on terminal\n * failure statuses (`FAILED`, `CANCELED`, `EXPIRED`, `REJECTED`) or after a\n * 60s timeout.\n *\n * @param params.requestId - The request ID returned when the transaction was relayed.\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 * @not-instrumented\n */\nexport const waitForSponsoredTransaction = async (\n { requestId }: WaitForSponsoredTransactionParams,\n client = getDefaultClient(),\n): Promise<{ transactionHash: Hex }> => {\n for (let attempt = 0; attempt < MAX_POLLING_ATTEMPTS; attempt++) {\n const result = await getEVMSponsoredTransactionStatus(\n { requestId },\n client,\n );\n\n switch (result.status) {\n case 'CONFIRMED':\n if (!result.transactionHash) {\n throw new SponsorTransactionError();\n }\n return { transactionHash: result.transactionHash };\n\n case 'CANCELED':\n case 'EXPIRED':\n case 'FAILED':\n case 'REJECTED':\n throw new SponsorTransactionError(null, result.errorMessage);\n\n case 'PENDING':\n case 'SENT':\n case 'SUBMITTED':\n break;\n }\n\n if (attempt < MAX_POLLING_ATTEMPTS - 1) {\n await new Promise<void>((resolve) =>\n setTimeout(resolve, POLL_INTERVAL_MS),\n );\n }\n }\n\n throw new SponsorTransactionError(\n null,\n `Timed out waiting for sponsored transaction ${requestId}`,\n );\n};\n","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 type {\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n} from '../gasless.types';\nimport { relaySponsoredTransaction } from '../relaySponsoredTransaction';\nimport { waitForSponsoredTransaction } from '../waitForSponsoredTransaction';\n\ntype SendSponsoredTransactionWithCallsParams = {\n /** Pre-signed EIP-7702 authorization to include in the payload. */\n authorization?: SignAuthorizationReturnType;\n /** The batch of calls to execute. */\n calls: SponsoredTransactionCall[];\n /** How long the signed intent remains valid, in seconds. Defaults to 600 (10 minutes). */\n validForSeconds?: number;\n /** The EVM wallet account to sign and send the transaction for. */\n walletAccount: EvmWalletAccount;\n};\n\ntype SendSponsoredTransactionWithSignedTxParams = {\n /** A pre-signed sponsored transaction payload from signSponsoredTransaction. */\n signedTransaction: SignedSponsoredTransaction;\n};\n\ntype SendSponsoredTransactionParams =\n | SendSponsoredTransactionWithCallsParams\n | SendSponsoredTransactionWithSignedTxParams;\n\n/**\n * Sends a sponsored EVM transaction and waits for the on-chain transaction hash.\n *\n * Accepts either a pre-signed transaction or unsigned calls. When given\n * unsigned calls, signs the transaction first via signSponsoredTransaction.\n * Relays the transaction and polls until the relay reports a CONFIRMED\n * status, then returns the resulting transaction hash.\n *\n * @param params - Either { signedTransaction } or { walletAccount, calls, ... }.\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 * @not-instrumented\n */\nexport const sendSponsoredTransaction = async (\n params: SendSponsoredTransactionParams,\n client = getDefaultClient(),\n): Promise<{ transactionHash: Hex }> => {\n const { requestId } = await relaySponsoredTransaction(params, client);\n return waitForSponsoredTransaction({ requestId }, client);\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 { 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 { 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 { signSponsoredTransaction } from '../gasless/signSponsoredTransaction';\nexport { waitForSponsoredTransaction } from '../gasless/waitForSponsoredTransaction';\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  //#region package.json
2
2
  var name = "@dynamic-labs-sdk/evm";
3
- var version = "0.27.3";
3
+ var version = "1.0.0";
4
4
 
5
5
  //#endregion
6
6
  export { version as n, name as t };
7
- //# sourceMappingURL=package-BI9t_Zep.native.esm.js.map
7
+ //# sourceMappingURL=package-BxZgKgaF.native.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-BxZgKgaF.native.esm.js","names":[],"sources":["../package.json"],"sourcesContent":[""],"mappings":""}