@dynamic-labs-sdk/evm 0.16.1 → 0.16.3

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 (36) hide show
  1. package/dist/{addEIP6963Extension-BunNZdh3.esm.js → addEIP6963Extension-CmcDaEq9.esm.js} +3 -3
  2. package/dist/{addEIP6963Extension-BunNZdh3.esm.js.map → addEIP6963Extension-CmcDaEq9.esm.js.map} +1 -1
  3. package/dist/{addEIP6963Extension-D8nhhoCY.cjs.js → addEIP6963Extension-DTDxIqz3.cjs.js} +3 -3
  4. package/dist/{addEIP6963Extension-D8nhhoCY.cjs.js.map → addEIP6963Extension-DTDxIqz3.cjs.js.map} +1 -1
  5. package/dist/{addWaasEvmExtension-DRHp2A-q.esm.js → addWaasEvmExtension-BgioFqn6.esm.js} +3 -3
  6. package/dist/{addWaasEvmExtension-DRHp2A-q.esm.js.map → addWaasEvmExtension-BgioFqn6.esm.js.map} +1 -1
  7. package/dist/{addWaasEvmExtension-BRZ3HgqT.cjs.js → addWaasEvmExtension-DgYhEVwh.cjs.js} +3 -3
  8. package/dist/{addWaasEvmExtension-BRZ3HgqT.cjs.js.map → addWaasEvmExtension-DgYhEVwh.cjs.js.map} +1 -1
  9. package/dist/{createPublicClientFromNetworkData-DsH91RzR.esm.js → createPublicClientFromNetworkData-Bn9UrWHy.esm.js} +2 -2
  10. package/dist/{createPublicClientFromNetworkData-DsH91RzR.esm.js.map → createPublicClientFromNetworkData-Bn9UrWHy.esm.js.map} +1 -1
  11. package/dist/{createPublicClientFromNetworkData-By2zRes3.cjs.js → createPublicClientFromNetworkData-hhZkO0l4.cjs.js} +2 -2
  12. package/dist/{createPublicClientFromNetworkData-By2zRes3.cjs.js.map → createPublicClientFromNetworkData-hhZkO0l4.cjs.js.map} +1 -1
  13. package/dist/{createWalletProviderFromEIP1193Provider-BZiCEAqd.cjs.js → createWalletProviderFromEIP1193Provider-1equ68nu.cjs.js} +2 -2
  14. package/dist/{createWalletProviderFromEIP1193Provider-BZiCEAqd.cjs.js.map → createWalletProviderFromEIP1193Provider-1equ68nu.cjs.js.map} +1 -1
  15. package/dist/{createWalletProviderFromEIP1193Provider-1LmDV7d1.esm.js → createWalletProviderFromEIP1193Provider-BmU5y-2E.esm.js} +2 -2
  16. package/dist/{createWalletProviderFromEIP1193Provider-1LmDV7d1.esm.js.map → createWalletProviderFromEIP1193Provider-BmU5y-2E.esm.js.map} +1 -1
  17. package/dist/eip6963.cjs.js +4 -4
  18. package/dist/eip6963.esm.js +4 -4
  19. package/dist/{evmTransferAmount-3jbLSvBP.esm.js → evmTransferAmount-DgTyvBgg.esm.js} +7 -2
  20. package/dist/{evmTransferAmount-3jbLSvBP.esm.js.map → evmTransferAmount-DgTyvBgg.esm.js.map} +1 -1
  21. package/dist/{evmTransferAmount-ejFipdzt.cjs.js → evmTransferAmount-DiKxU00B.cjs.js} +7 -2
  22. package/dist/evmTransferAmount-DiKxU00B.cjs.js.map +1 -0
  23. package/dist/index.cjs.js +5 -5
  24. package/dist/index.esm.js +5 -5
  25. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  26. package/dist/utils/evmTransferAmount/evmTransferAmount.d.ts.map +1 -1
  27. package/dist/viem.cjs.js +1 -1
  28. package/dist/viem.esm.js +1 -1
  29. package/dist/waas.cjs.js +3 -3
  30. package/dist/waas.esm.js +3 -3
  31. package/dist/walletConnect.cjs.js +2 -2
  32. package/dist/walletConnect.esm.js +2 -2
  33. package/dist/windowInjected.cjs.js +3 -3
  34. package/dist/windowInjected.esm.js +3 -3
  35. package/package.json +5 -5
  36. package/dist/evmTransferAmount-ejFipdzt.cjs.js.map +0 -1
@@ -1,7 +1,7 @@
1
- const require_createPublicClientFromNetworkData = require('./createPublicClientFromNetworkData-By2zRes3.cjs.js');
2
- require('./evmTransferAmount-ejFipdzt.cjs.js');
3
- require('./createWalletProviderFromEIP1193Provider-BZiCEAqd.cjs.js');
4
- const require_addEIP6963Extension = require('./addEIP6963Extension-D8nhhoCY.cjs.js');
1
+ const require_createPublicClientFromNetworkData = require('./createPublicClientFromNetworkData-hhZkO0l4.cjs.js');
2
+ require('./evmTransferAmount-DiKxU00B.cjs.js');
3
+ require('./createWalletProviderFromEIP1193Provider-1equ68nu.cjs.js');
4
+ const require_addEIP6963Extension = require('./addEIP6963Extension-DTDxIqz3.cjs.js');
5
5
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
6
6
 
7
7
  //#region src/exports/eip6963.ts
@@ -1,7 +1,7 @@
1
- import { a as version, i as name } from "./createPublicClientFromNetworkData-DsH91RzR.esm.js";
2
- import "./evmTransferAmount-3jbLSvBP.esm.js";
3
- import "./createWalletProviderFromEIP1193Provider-1LmDV7d1.esm.js";
4
- import { t as addEIP6963Extension } from "./addEIP6963Extension-BunNZdh3.esm.js";
1
+ import { a as version, i as name } from "./createPublicClientFromNetworkData-Bn9UrWHy.esm.js";
2
+ import "./evmTransferAmount-DgTyvBgg.esm.js";
3
+ import "./createWalletProviderFromEIP1193Provider-BmU5y-2E.esm.js";
4
+ import { t as addEIP6963Extension } from "./addEIP6963Extension-CmcDaEq9.esm.js";
5
5
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
6
6
 
7
7
  //#region src/exports/eip6963.ts
@@ -1,4 +1,4 @@
1
- import { n as createWalletClientForWalletAccount, t as createPublicClientFromNetworkData } from "./createPublicClientFromNetworkData-DsH91RzR.esm.js";
1
+ import { n as createWalletClientForWalletAccount, t as createPublicClientFromNetworkData } from "./createPublicClientFromNetworkData-Bn9UrWHy.esm.js";
2
2
  import { assertDefined, createBaseNetworkProvider, getCore, getNetworkProviderBuilderRegistry } from "@dynamic-labs-sdk/client/core";
3
3
  import { BaseError, InvalidParamError, getActiveNetworkData } from "@dynamic-labs-sdk/client";
4
4
  import { encodeFunctionData, erc20Abi, parseEther, parseUnits } from "viem";
@@ -202,6 +202,9 @@ const evmExecuteCheckoutTransaction = async ({ onStepChange, signingPayload, wal
202
202
  const DEFAULT_DECIMALS = 18;
203
203
  const evmTransferAmount = async ({ amount, recipient, token, walletAccount }, client) => {
204
204
  if (!isEvmWalletAccount(walletAccount)) throw new InvalidParamError("Wallet account is not an EVM wallet account");
205
+ const { networkData } = await getActiveNetworkData({ walletAccount }, client);
206
+ assertDefined(networkData, `No network data found for wallet account ${walletAccount.address}`);
207
+ const nonce = await createPublicClientFromNetworkData({ networkData }).getTransactionCount({ address: walletAccount.address });
205
208
  const walletClient = await createWalletClientForWalletAccount({ walletAccount }, client);
206
209
  if (token) {
207
210
  const data = encodeFunctionData({
@@ -211,10 +214,12 @@ const evmTransferAmount = async ({ amount, recipient, token, walletAccount }, cl
211
214
  });
212
215
  return { transactionHash: await walletClient.sendTransaction({
213
216
  data,
217
+ nonce,
214
218
  to: token.address
215
219
  }) };
216
220
  }
217
221
  return { transactionHash: await walletClient.sendTransaction({
222
+ nonce,
218
223
  to: recipient,
219
224
  value: parseEther(amount)
220
225
  }) };
@@ -222,4 +227,4 @@ const evmTransferAmount = async ({ amount, recipient, token, walletAccount }, cl
222
227
 
223
228
  //#endregion
224
229
  export { RpcError as a, registerEvmNetworkProviderBuilder as i, evmExecuteCheckoutTransaction as n, isEvmWalletAccount as r, evmTransferAmount as t };
225
- //# sourceMappingURL=evmTransferAmount-3jbLSvBP.esm.js.map
230
+ //# sourceMappingURL=evmTransferAmount-DgTyvBgg.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evmTransferAmount-3jbLSvBP.esm.js","names":["approvalTransactionHash: string | undefined"],"sources":["../src/errors/RpcError.ts","../src/utils/fetchEvmBalance/fetchEvmBalance.ts","../src/utils/createEvmNetworkProvider/createEvmNetworkProvider.ts","../src/registerEvmNetworkProviderBuilder/registerEvmNetworkProviderBuilder.ts","../src/utils/approveErc20/approveErc20.ts","../src/utils/getErc20Allowance/getErc20Allowance.ts","../src/utils/isEvmWalletAccount/isEvmWalletAccount.ts","../src/utils/evmExecuteCheckoutTransaction/evmExecuteCheckoutTransaction.ts","../src/utils/evmTransferAmount/evmTransferAmount.ts"],"sourcesContent":["import { BaseError, type BaseErrorParameters } from '@dynamic-labs-sdk/client';\n\nexport type RpcErrorParameters = Pick<BaseErrorParameters, 'shortMessage'> &\n Partial<Omit<BaseErrorParameters, 'shortMessage'>>;\n\nexport class RpcError extends BaseError {\n constructor(args: RpcErrorParameters) {\n super({\n cause: args.cause ?? null,\n code: args.code ?? 'rpc_error',\n details: args.details,\n docsUrl: args.docsUrl ?? null,\n metaMessages: args.metaMessages,\n name: args.name ?? 'RpcError',\n shortMessage: args.shortMessage,\n });\n }\n}\n","import type { DynamicClient, NetworkData } from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\n\nimport { RpcError } from '../../errors/RpcError';\n\ntype FetchEvmBalanceParams = {\n address: string;\n networkData: NetworkData;\n};\n\nexport const fetchEvmBalance = async (\n { address, networkData }: FetchEvmBalanceParams,\n client: DynamicClient\n): Promise<string | null> => {\n const rpcUrl = networkData.rpcUrls.http[0];\n const core = getCore(client);\n\n try {\n // Perform a POST request to the RPC URL with the JSON-RPC payload\n const response = await core.fetch(rpcUrl, {\n /**\n * The JSON-RPC method 'eth_getBalance' takes the address and a block tag ('latest' is the most recent)\n * See EIP-1474: https://eips.ethereum.org/EIPS/eip-1474\n * See eth_getBalance spec: https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance\n */\n body: JSON.stringify({\n id: Math.floor(Date.now() + Math.random() * 1000),\n jsonrpc: '2.0',\n method: 'eth_getBalance',\n params: [address, 'latest'],\n }),\n\n headers: {\n 'Content-Type': 'application/json',\n },\n\n method: 'POST',\n });\n\n // Check if the network response was successful\n if (!response.ok) {\n throw new RpcError({\n code: 'http_error',\n shortMessage: `HTTP error! status: ${response.status}`,\n });\n }\n\n const data = await response.json();\n\n // Check for a JSON-RPC error in the response\n if (data.error) {\n throw new RpcError({\n cause: data.error instanceof Error ? data.error : undefined,\n code: 'json_rpc_error',\n shortMessage: `RPC Error: ${data.error.message}`,\n });\n }\n\n // The result is a hexadecimal string representing the balance in Wei\n const balanceWeiHex = data.result;\n\n // Convert the hexadecimal string to a BigInt\n const balanceWei = BigInt(balanceWeiHex);\n\n // Convert the balance from Wei to Ether (1 Ether = 10^18 Wei)\n // We use a BigInt for the conversion to maintain precision with large numbers\n const oneEther = BigInt(1e18);\n\n // Perform the division and return the result as a number\n // Note: This conversion can lose precision for very small amounts, but is generally fine for display purposes.\n const balanceEther = Number(balanceWei) / Number(oneEther);\n\n return balanceEther.toString();\n } catch (error) {\n if (error instanceof Error) {\n throw new RpcError({\n cause: error,\n code: 'rpc_error',\n shortMessage: `Failed to fetch balance for address ${address}`,\n });\n }\n\n throw error;\n }\n};\n","import type { DynamicClient, NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { EvmNetworkProvider } from '../../EvmNetworkProvider';\nimport { fetchEvmBalance } from '../fetchEvmBalance';\n\nexport const createEvmNetworkProvider = (\n networkData: NetworkData,\n client: DynamicClient\n): EvmNetworkProvider => ({\n ...createBaseNetworkProvider('EVM', networkData),\n\n getBalance: async ({ address }) => ({\n balance: await fetchEvmBalance(\n {\n address,\n networkData,\n },\n client\n ),\n }),\n});\n","import { type DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createEvmNetworkProvider } from '../utils/createEvmNetworkProvider';\n\nexport const registerEvmNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n /**\n * If the Ethereum network provider builder is already registered, return.\n */\n if (networkProviderBuilderRegistry.get().get('EVM')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: (networkData) => createEvmNetworkProvider(networkData, client),\n chain: 'EVM',\n });\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { encodeFunctionData, erc20Abi } from 'viem';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { createWalletClientForWalletAccount } from '../../viem/createWalletClientForWalletAccount';\n\ntype ApproveErc20Params = {\n amount: bigint;\n spenderAddress: string;\n tokenAddress: string;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Sends an ERC-20 `approve` transaction, granting a spender an allowance\n * to transfer tokens on behalf of the wallet account.\n *\n * Encodes the `approve(spender, amount)` call using viem's `encodeFunctionData`\n * and sends it through the wallet account's viem wallet client.\n *\n * @param params.amount - The amount to approve in the token's smallest unit.\n * @param params.spenderAddress - The address being granted the allowance.\n * @param params.tokenAddress - The ERC-20 token contract address.\n * @param params.walletAccount - The EVM wallet account sending the approval.\n * @param client - The Dynamic client instance.\n * @returns The approval transaction hash.\n */\nexport const approveErc20 = async (\n { amount, spenderAddress, tokenAddress, walletAccount }: ApproveErc20Params,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n const walletClient = await createWalletClientForWalletAccount(\n { walletAccount },\n client\n );\n\n const data = encodeFunctionData({\n abi: erc20Abi,\n args: [spenderAddress as `0x${string}`, amount],\n functionName: 'approve',\n });\n\n const hash = await walletClient.sendTransaction({\n data,\n to: tokenAddress as `0x${string}`,\n });\n\n return { transactionHash: hash };\n};\n","import {\n type DynamicClient,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport { erc20Abi } from 'viem';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\n\ntype GetErc20AllowanceParams = {\n ownerAddress: string;\n spenderAddress: string;\n tokenAddress: string;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Reads the current ERC-20 token allowance granted by an owner to a spender.\n *\n * Uses a viem public client derived from the wallet account's active network\n * to call the `allowance(owner, spender)` method on the token contract.\n *\n * @param params.tokenAddress - The ERC-20 token contract address.\n * @param params.ownerAddress - The address that granted the allowance.\n * @param params.spenderAddress - The address allowed to spend the tokens.\n * @param params.walletAccount - The EVM wallet account used to resolve the active network.\n * @param client - The Dynamic client instance.\n * @returns The current allowance as a bigint in the token's smallest unit.\n */\nexport const getErc20Allowance = async (\n {\n ownerAddress,\n spenderAddress,\n tokenAddress,\n walletAccount,\n }: GetErc20AllowanceParams,\n client: DynamicClient\n): Promise<bigint> => {\n const { networkData } = await getActiveNetworkData({ walletAccount }, client);\n\n assertDefined(\n networkData,\n `No network data found for wallet account ${walletAccount.address}`\n );\n\n const publicClient = createPublicClientFromNetworkData({ networkData });\n\n return publicClient.readContract({\n abi: erc20Abi,\n address: tokenAddress as `0x${string}`,\n args: [ownerAddress as `0x${string}`, spenderAddress as `0x${string}`],\n functionName: 'allowance',\n });\n};\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\n\n/**\n * Type guard function to check if a wallet account is an EVM wallet account.\n *\n * @param walletAccount - The wallet account to check.\n * @returns True if the wallet account is an EVM wallet account, false otherwise.\n */\nexport const isEvmWalletAccount = (\n walletAccount: WalletAccount\n): walletAccount is EvmWalletAccount => walletAccount.chain === 'EVM';\n","import {\n type DynamicClient,\n InvalidParamError,\n} from '@dynamic-labs-sdk/client';\nimport type {\n ExecuteCheckoutTransactionParams,\n ExecuteCheckoutTransactionResult,\n} from '@dynamic-labs-sdk/client/core';\n\nimport type { EvmSigningPayload } from '../../checkoutTransaction.types';\nimport { createWalletClientForWalletAccount } from '../../viem/createWalletClientForWalletAccount';\nimport { approveErc20 } from '../approveErc20';\nimport { getErc20Allowance } from '../getErc20Allowance';\nimport { isEvmWalletAccount } from '../isEvmWalletAccount';\n\n/**\n * Executes an EVM checkout transaction by handling optional ERC-20 approval\n * and sending the main swap transaction on-chain.\n *\n * 1. Validates that the wallet account is an EVM wallet account\n * 2. If the signing payload includes an `evmApproval`, checks the current\n * ERC-20 allowance and sends an approve transaction when insufficient\n * 3. Sends the main transaction using the viem wallet client\n *\n * @param params.signingPayload - The chain-aware signing payload containing `evmTransaction` and optional `evmApproval`.\n * @param params.walletAccount - The wallet account used to sign and send transactions.\n * @param params.onStepChange - Optional callback invoked with `'approval'` or `'transaction'` as each step begins.\n * @param client - The Dynamic client instance.\n * @returns The main transaction hash and, if an approval was sent, the approval transaction hash.\n */\nexport const evmExecuteCheckoutTransaction = async (\n {\n onStepChange,\n signingPayload,\n walletAccount,\n }: ExecuteCheckoutTransactionParams,\n client: DynamicClient\n): Promise<ExecuteCheckoutTransactionResult> => {\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account is not an EVM wallet account');\n }\n\n const evmPayload = signingPayload as EvmSigningPayload;\n\n if (!evmPayload.evmTransaction) {\n throw new InvalidParamError(\n 'Signing payload is missing EVM transaction data'\n );\n }\n\n const { evmTransaction, evmApproval } = evmPayload;\n let approvalTransactionHash: string | undefined;\n\n if (evmApproval) {\n onStepChange?.('approval');\n\n const currentAllowance = await getErc20Allowance(\n {\n ownerAddress: walletAccount.address,\n spenderAddress: evmApproval.spenderAddress,\n tokenAddress: evmApproval.tokenAddress,\n walletAccount,\n },\n client\n );\n\n if (currentAllowance < BigInt(evmApproval.amount)) {\n const result = await approveErc20(\n {\n amount: BigInt(evmApproval.amount),\n spenderAddress: evmApproval.spenderAddress,\n tokenAddress: evmApproval.tokenAddress,\n walletAccount,\n },\n client\n );\n approvalTransactionHash = result.transactionHash;\n }\n }\n\n onStepChange?.('transaction');\n\n const walletClient = await createWalletClientForWalletAccount(\n { walletAccount },\n client\n );\n\n const transactionHash = await walletClient.sendTransaction({\n data: evmTransaction.data as `0x${string}`,\n to: evmTransaction.to as `0x${string}`,\n value: evmTransaction.value ? BigInt(evmTransaction.value) : 0n,\n ...(evmTransaction.gasLimit && { gas: BigInt(evmTransaction.gasLimit) }),\n });\n\n return { approvalTransactionHash, transactionHash };\n};\n","import {\n type DynamicClient,\n InvalidParamError,\n} from '@dynamic-labs-sdk/client';\nimport type { TransferAmountParams } from '@dynamic-labs-sdk/client/core';\nimport { encodeFunctionData, erc20Abi, parseEther, parseUnits } from 'viem';\n\nimport { createWalletClientForWalletAccount } from '../../viem/createWalletClientForWalletAccount';\nimport { isEvmWalletAccount } from '../isEvmWalletAccount';\n\nconst DEFAULT_DECIMALS = 18;\n\nexport const evmTransferAmount = async (\n { amount, recipient, token, walletAccount }: TransferAmountParams,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account is not an EVM wallet account');\n }\n\n const walletClient = await createWalletClientForWalletAccount(\n { walletAccount },\n client\n );\n\n // non-native token transfers\n if (token) {\n const decimals = token.decimals ?? DEFAULT_DECIMALS;\n\n const data = encodeFunctionData({\n abi: erc20Abi,\n args: [recipient as `0x${string}`, parseUnits(amount, decimals)],\n functionName: 'transfer',\n });\n\n const hash = await walletClient.sendTransaction({\n data,\n to: token.address as `0x${string}`,\n });\n\n return { transactionHash: hash };\n }\n\n // native token transfers\n const hash = await walletClient.sendTransaction({\n to: recipient as `0x${string}`,\n value: parseEther(amount),\n });\n return { transactionHash: hash };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"evmTransferAmount-DgTyvBgg.esm.js","names":["approvalTransactionHash: string | undefined"],"sources":["../src/errors/RpcError.ts","../src/utils/fetchEvmBalance/fetchEvmBalance.ts","../src/utils/createEvmNetworkProvider/createEvmNetworkProvider.ts","../src/registerEvmNetworkProviderBuilder/registerEvmNetworkProviderBuilder.ts","../src/utils/approveErc20/approveErc20.ts","../src/utils/getErc20Allowance/getErc20Allowance.ts","../src/utils/isEvmWalletAccount/isEvmWalletAccount.ts","../src/utils/evmExecuteCheckoutTransaction/evmExecuteCheckoutTransaction.ts","../src/utils/evmTransferAmount/evmTransferAmount.ts"],"sourcesContent":["import { BaseError, type BaseErrorParameters } from '@dynamic-labs-sdk/client';\n\nexport type RpcErrorParameters = Pick<BaseErrorParameters, 'shortMessage'> &\n Partial<Omit<BaseErrorParameters, 'shortMessage'>>;\n\nexport class RpcError extends BaseError {\n constructor(args: RpcErrorParameters) {\n super({\n cause: args.cause ?? null,\n code: args.code ?? 'rpc_error',\n details: args.details,\n docsUrl: args.docsUrl ?? null,\n metaMessages: args.metaMessages,\n name: args.name ?? 'RpcError',\n shortMessage: args.shortMessage,\n });\n }\n}\n","import type { DynamicClient, NetworkData } from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\n\nimport { RpcError } from '../../errors/RpcError';\n\ntype FetchEvmBalanceParams = {\n address: string;\n networkData: NetworkData;\n};\n\nexport const fetchEvmBalance = async (\n { address, networkData }: FetchEvmBalanceParams,\n client: DynamicClient\n): Promise<string | null> => {\n const rpcUrl = networkData.rpcUrls.http[0];\n const core = getCore(client);\n\n try {\n // Perform a POST request to the RPC URL with the JSON-RPC payload\n const response = await core.fetch(rpcUrl, {\n /**\n * The JSON-RPC method 'eth_getBalance' takes the address and a block tag ('latest' is the most recent)\n * See EIP-1474: https://eips.ethereum.org/EIPS/eip-1474\n * See eth_getBalance spec: https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance\n */\n body: JSON.stringify({\n id: Math.floor(Date.now() + Math.random() * 1000),\n jsonrpc: '2.0',\n method: 'eth_getBalance',\n params: [address, 'latest'],\n }),\n\n headers: {\n 'Content-Type': 'application/json',\n },\n\n method: 'POST',\n });\n\n // Check if the network response was successful\n if (!response.ok) {\n throw new RpcError({\n code: 'http_error',\n shortMessage: `HTTP error! status: ${response.status}`,\n });\n }\n\n const data = await response.json();\n\n // Check for a JSON-RPC error in the response\n if (data.error) {\n throw new RpcError({\n cause: data.error instanceof Error ? data.error : undefined,\n code: 'json_rpc_error',\n shortMessage: `RPC Error: ${data.error.message}`,\n });\n }\n\n // The result is a hexadecimal string representing the balance in Wei\n const balanceWeiHex = data.result;\n\n // Convert the hexadecimal string to a BigInt\n const balanceWei = BigInt(balanceWeiHex);\n\n // Convert the balance from Wei to Ether (1 Ether = 10^18 Wei)\n // We use a BigInt for the conversion to maintain precision with large numbers\n const oneEther = BigInt(1e18);\n\n // Perform the division and return the result as a number\n // Note: This conversion can lose precision for very small amounts, but is generally fine for display purposes.\n const balanceEther = Number(balanceWei) / Number(oneEther);\n\n return balanceEther.toString();\n } catch (error) {\n if (error instanceof Error) {\n throw new RpcError({\n cause: error,\n code: 'rpc_error',\n shortMessage: `Failed to fetch balance for address ${address}`,\n });\n }\n\n throw error;\n }\n};\n","import type { DynamicClient, NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { EvmNetworkProvider } from '../../EvmNetworkProvider';\nimport { fetchEvmBalance } from '../fetchEvmBalance';\n\nexport const createEvmNetworkProvider = (\n networkData: NetworkData,\n client: DynamicClient\n): EvmNetworkProvider => ({\n ...createBaseNetworkProvider('EVM', networkData),\n\n getBalance: async ({ address }) => ({\n balance: await fetchEvmBalance(\n {\n address,\n networkData,\n },\n client\n ),\n }),\n});\n","import { type DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createEvmNetworkProvider } from '../utils/createEvmNetworkProvider';\n\nexport const registerEvmNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n /**\n * If the Ethereum network provider builder is already registered, return.\n */\n if (networkProviderBuilderRegistry.get().get('EVM')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: (networkData) => createEvmNetworkProvider(networkData, client),\n chain: 'EVM',\n });\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { encodeFunctionData, erc20Abi } from 'viem';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { createWalletClientForWalletAccount } from '../../viem/createWalletClientForWalletAccount';\n\ntype ApproveErc20Params = {\n amount: bigint;\n spenderAddress: string;\n tokenAddress: string;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Sends an ERC-20 `approve` transaction, granting a spender an allowance\n * to transfer tokens on behalf of the wallet account.\n *\n * Encodes the `approve(spender, amount)` call using viem's `encodeFunctionData`\n * and sends it through the wallet account's viem wallet client.\n *\n * @param params.amount - The amount to approve in the token's smallest unit.\n * @param params.spenderAddress - The address being granted the allowance.\n * @param params.tokenAddress - The ERC-20 token contract address.\n * @param params.walletAccount - The EVM wallet account sending the approval.\n * @param client - The Dynamic client instance.\n * @returns The approval transaction hash.\n */\nexport const approveErc20 = async (\n { amount, spenderAddress, tokenAddress, walletAccount }: ApproveErc20Params,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n const walletClient = await createWalletClientForWalletAccount(\n { walletAccount },\n client\n );\n\n const data = encodeFunctionData({\n abi: erc20Abi,\n args: [spenderAddress as `0x${string}`, amount],\n functionName: 'approve',\n });\n\n const hash = await walletClient.sendTransaction({\n data,\n to: tokenAddress as `0x${string}`,\n });\n\n return { transactionHash: hash };\n};\n","import {\n type DynamicClient,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport { erc20Abi } from 'viem';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\n\ntype GetErc20AllowanceParams = {\n ownerAddress: string;\n spenderAddress: string;\n tokenAddress: string;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Reads the current ERC-20 token allowance granted by an owner to a spender.\n *\n * Uses a viem public client derived from the wallet account's active network\n * to call the `allowance(owner, spender)` method on the token contract.\n *\n * @param params.tokenAddress - The ERC-20 token contract address.\n * @param params.ownerAddress - The address that granted the allowance.\n * @param params.spenderAddress - The address allowed to spend the tokens.\n * @param params.walletAccount - The EVM wallet account used to resolve the active network.\n * @param client - The Dynamic client instance.\n * @returns The current allowance as a bigint in the token's smallest unit.\n */\nexport const getErc20Allowance = async (\n {\n ownerAddress,\n spenderAddress,\n tokenAddress,\n walletAccount,\n }: GetErc20AllowanceParams,\n client: DynamicClient\n): Promise<bigint> => {\n const { networkData } = await getActiveNetworkData({ walletAccount }, client);\n\n assertDefined(\n networkData,\n `No network data found for wallet account ${walletAccount.address}`\n );\n\n const publicClient = createPublicClientFromNetworkData({ networkData });\n\n return publicClient.readContract({\n abi: erc20Abi,\n address: tokenAddress as `0x${string}`,\n args: [ownerAddress as `0x${string}`, spenderAddress as `0x${string}`],\n functionName: 'allowance',\n });\n};\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\n\n/**\n * Type guard function to check if a wallet account is an EVM wallet account.\n *\n * @param walletAccount - The wallet account to check.\n * @returns True if the wallet account is an EVM wallet account, false otherwise.\n */\nexport const isEvmWalletAccount = (\n walletAccount: WalletAccount\n): walletAccount is EvmWalletAccount => walletAccount.chain === 'EVM';\n","import {\n type DynamicClient,\n InvalidParamError,\n} from '@dynamic-labs-sdk/client';\nimport type {\n ExecuteCheckoutTransactionParams,\n ExecuteCheckoutTransactionResult,\n} from '@dynamic-labs-sdk/client/core';\n\nimport type { EvmSigningPayload } from '../../checkoutTransaction.types';\nimport { createWalletClientForWalletAccount } from '../../viem/createWalletClientForWalletAccount';\nimport { approveErc20 } from '../approveErc20';\nimport { getErc20Allowance } from '../getErc20Allowance';\nimport { isEvmWalletAccount } from '../isEvmWalletAccount';\n\n/**\n * Executes an EVM checkout transaction by handling optional ERC-20 approval\n * and sending the main swap transaction on-chain.\n *\n * 1. Validates that the wallet account is an EVM wallet account\n * 2. If the signing payload includes an `evmApproval`, checks the current\n * ERC-20 allowance and sends an approve transaction when insufficient\n * 3. Sends the main transaction using the viem wallet client\n *\n * @param params.signingPayload - The chain-aware signing payload containing `evmTransaction` and optional `evmApproval`.\n * @param params.walletAccount - The wallet account used to sign and send transactions.\n * @param params.onStepChange - Optional callback invoked with `'approval'` or `'transaction'` as each step begins.\n * @param client - The Dynamic client instance.\n * @returns The main transaction hash and, if an approval was sent, the approval transaction hash.\n */\nexport const evmExecuteCheckoutTransaction = async (\n {\n onStepChange,\n signingPayload,\n walletAccount,\n }: ExecuteCheckoutTransactionParams,\n client: DynamicClient\n): Promise<ExecuteCheckoutTransactionResult> => {\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account is not an EVM wallet account');\n }\n\n const evmPayload = signingPayload as EvmSigningPayload;\n\n if (!evmPayload.evmTransaction) {\n throw new InvalidParamError(\n 'Signing payload is missing EVM transaction data'\n );\n }\n\n const { evmTransaction, evmApproval } = evmPayload;\n let approvalTransactionHash: string | undefined;\n\n if (evmApproval) {\n onStepChange?.('approval');\n\n const currentAllowance = await getErc20Allowance(\n {\n ownerAddress: walletAccount.address,\n spenderAddress: evmApproval.spenderAddress,\n tokenAddress: evmApproval.tokenAddress,\n walletAccount,\n },\n client\n );\n\n if (currentAllowance < BigInt(evmApproval.amount)) {\n const result = await approveErc20(\n {\n amount: BigInt(evmApproval.amount),\n spenderAddress: evmApproval.spenderAddress,\n tokenAddress: evmApproval.tokenAddress,\n walletAccount,\n },\n client\n );\n approvalTransactionHash = result.transactionHash;\n }\n }\n\n onStepChange?.('transaction');\n\n const walletClient = await createWalletClientForWalletAccount(\n { walletAccount },\n client\n );\n\n const transactionHash = await walletClient.sendTransaction({\n data: evmTransaction.data as `0x${string}`,\n to: evmTransaction.to as `0x${string}`,\n value: evmTransaction.value ? BigInt(evmTransaction.value) : 0n,\n ...(evmTransaction.gasLimit && { gas: BigInt(evmTransaction.gasLimit) }),\n });\n\n return { approvalTransactionHash, transactionHash };\n};\n","import {\n type DynamicClient,\n InvalidParamError,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { TransferAmountParams } from '@dynamic-labs-sdk/client/core';\nimport { encodeFunctionData, erc20Abi, parseEther, parseUnits } from 'viem';\n\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\nimport { createWalletClientForWalletAccount } from '../../viem/createWalletClientForWalletAccount';\nimport { isEvmWalletAccount } from '../isEvmWalletAccount';\n\nconst DEFAULT_DECIMALS = 18;\n\nexport const evmTransferAmount = async (\n { amount, recipient, token, walletAccount }: TransferAmountParams,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account is not an EVM wallet account');\n }\n\n const { networkData } = await getActiveNetworkData({ walletAccount }, client);\n\n assertDefined(\n networkData,\n `No network data found for wallet account ${walletAccount.address}`\n );\n\n const publicClient = createPublicClientFromNetworkData({ networkData });\n const nonce = await publicClient.getTransactionCount({\n address: walletAccount.address as `0x${string}`,\n });\n\n const walletClient = await createWalletClientForWalletAccount(\n { walletAccount },\n client\n );\n\n // non-native token transfers\n if (token) {\n const decimals = token.decimals ?? DEFAULT_DECIMALS;\n\n const data = encodeFunctionData({\n abi: erc20Abi,\n args: [recipient as `0x${string}`, parseUnits(amount, decimals)],\n functionName: 'transfer',\n });\n\n const hash = await walletClient.sendTransaction({\n data,\n nonce,\n to: token.address as `0x${string}`,\n });\n\n return { transactionHash: hash };\n }\n\n // native token transfers\n const hash = await walletClient.sendTransaction({\n nonce,\n to: recipient as `0x${string}`,\n value: parseEther(amount),\n });\n\n return { transactionHash: hash };\n};\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- const require_createPublicClientFromNetworkData = require('./createPublicClientFromNetworkData-By2zRes3.cjs.js');
1
+ const require_createPublicClientFromNetworkData = require('./createPublicClientFromNetworkData-hhZkO0l4.cjs.js');
2
2
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
3
3
  let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
4
4
  let viem = require("viem");
@@ -202,6 +202,9 @@ const evmExecuteCheckoutTransaction = async ({ onStepChange, signingPayload, wal
202
202
  const DEFAULT_DECIMALS = 18;
203
203
  const evmTransferAmount = async ({ amount, recipient, token, walletAccount }, client) => {
204
204
  if (!isEvmWalletAccount(walletAccount)) throw new _dynamic_labs_sdk_client.InvalidParamError("Wallet account is not an EVM wallet account");
205
+ const { networkData } = await (0, _dynamic_labs_sdk_client.getActiveNetworkData)({ walletAccount }, client);
206
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(networkData, `No network data found for wallet account ${walletAccount.address}`);
207
+ const nonce = await require_createPublicClientFromNetworkData.createPublicClientFromNetworkData({ networkData }).getTransactionCount({ address: walletAccount.address });
205
208
  const walletClient = await require_createPublicClientFromNetworkData.createWalletClientForWalletAccount({ walletAccount }, client);
206
209
  if (token) {
207
210
  const data = (0, viem.encodeFunctionData)({
@@ -211,10 +214,12 @@ const evmTransferAmount = async ({ amount, recipient, token, walletAccount }, cl
211
214
  });
212
215
  return { transactionHash: await walletClient.sendTransaction({
213
216
  data,
217
+ nonce,
214
218
  to: token.address
215
219
  }) };
216
220
  }
217
221
  return { transactionHash: await walletClient.sendTransaction({
222
+ nonce,
218
223
  to: recipient,
219
224
  value: (0, viem.parseEther)(amount)
220
225
  }) };
@@ -251,4 +256,4 @@ Object.defineProperty(exports, 'registerEvmNetworkProviderBuilder', {
251
256
  return registerEvmNetworkProviderBuilder;
252
257
  }
253
258
  });
254
- //# sourceMappingURL=evmTransferAmount-ejFipdzt.cjs.js.map
259
+ //# sourceMappingURL=evmTransferAmount-DiKxU00B.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evmTransferAmount-DiKxU00B.cjs.js","names":["BaseError","createWalletClientForWalletAccount","erc20Abi","createPublicClientFromNetworkData","erc20Abi","InvalidParamError","approvalTransactionHash: string | undefined","createWalletClientForWalletAccount","InvalidParamError","createPublicClientFromNetworkData","createWalletClientForWalletAccount","erc20Abi"],"sources":["../src/errors/RpcError.ts","../src/utils/fetchEvmBalance/fetchEvmBalance.ts","../src/utils/createEvmNetworkProvider/createEvmNetworkProvider.ts","../src/registerEvmNetworkProviderBuilder/registerEvmNetworkProviderBuilder.ts","../src/utils/approveErc20/approveErc20.ts","../src/utils/getErc20Allowance/getErc20Allowance.ts","../src/utils/isEvmWalletAccount/isEvmWalletAccount.ts","../src/utils/evmExecuteCheckoutTransaction/evmExecuteCheckoutTransaction.ts","../src/utils/evmTransferAmount/evmTransferAmount.ts"],"sourcesContent":["import { BaseError, type BaseErrorParameters } from '@dynamic-labs-sdk/client';\n\nexport type RpcErrorParameters = Pick<BaseErrorParameters, 'shortMessage'> &\n Partial<Omit<BaseErrorParameters, 'shortMessage'>>;\n\nexport class RpcError extends BaseError {\n constructor(args: RpcErrorParameters) {\n super({\n cause: args.cause ?? null,\n code: args.code ?? 'rpc_error',\n details: args.details,\n docsUrl: args.docsUrl ?? null,\n metaMessages: args.metaMessages,\n name: args.name ?? 'RpcError',\n shortMessage: args.shortMessage,\n });\n }\n}\n","import type { DynamicClient, NetworkData } from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\n\nimport { RpcError } from '../../errors/RpcError';\n\ntype FetchEvmBalanceParams = {\n address: string;\n networkData: NetworkData;\n};\n\nexport const fetchEvmBalance = async (\n { address, networkData }: FetchEvmBalanceParams,\n client: DynamicClient\n): Promise<string | null> => {\n const rpcUrl = networkData.rpcUrls.http[0];\n const core = getCore(client);\n\n try {\n // Perform a POST request to the RPC URL with the JSON-RPC payload\n const response = await core.fetch(rpcUrl, {\n /**\n * The JSON-RPC method 'eth_getBalance' takes the address and a block tag ('latest' is the most recent)\n * See EIP-1474: https://eips.ethereum.org/EIPS/eip-1474\n * See eth_getBalance spec: https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance\n */\n body: JSON.stringify({\n id: Math.floor(Date.now() + Math.random() * 1000),\n jsonrpc: '2.0',\n method: 'eth_getBalance',\n params: [address, 'latest'],\n }),\n\n headers: {\n 'Content-Type': 'application/json',\n },\n\n method: 'POST',\n });\n\n // Check if the network response was successful\n if (!response.ok) {\n throw new RpcError({\n code: 'http_error',\n shortMessage: `HTTP error! status: ${response.status}`,\n });\n }\n\n const data = await response.json();\n\n // Check for a JSON-RPC error in the response\n if (data.error) {\n throw new RpcError({\n cause: data.error instanceof Error ? data.error : undefined,\n code: 'json_rpc_error',\n shortMessage: `RPC Error: ${data.error.message}`,\n });\n }\n\n // The result is a hexadecimal string representing the balance in Wei\n const balanceWeiHex = data.result;\n\n // Convert the hexadecimal string to a BigInt\n const balanceWei = BigInt(balanceWeiHex);\n\n // Convert the balance from Wei to Ether (1 Ether = 10^18 Wei)\n // We use a BigInt for the conversion to maintain precision with large numbers\n const oneEther = BigInt(1e18);\n\n // Perform the division and return the result as a number\n // Note: This conversion can lose precision for very small amounts, but is generally fine for display purposes.\n const balanceEther = Number(balanceWei) / Number(oneEther);\n\n return balanceEther.toString();\n } catch (error) {\n if (error instanceof Error) {\n throw new RpcError({\n cause: error,\n code: 'rpc_error',\n shortMessage: `Failed to fetch balance for address ${address}`,\n });\n }\n\n throw error;\n }\n};\n","import type { DynamicClient, NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { EvmNetworkProvider } from '../../EvmNetworkProvider';\nimport { fetchEvmBalance } from '../fetchEvmBalance';\n\nexport const createEvmNetworkProvider = (\n networkData: NetworkData,\n client: DynamicClient\n): EvmNetworkProvider => ({\n ...createBaseNetworkProvider('EVM', networkData),\n\n getBalance: async ({ address }) => ({\n balance: await fetchEvmBalance(\n {\n address,\n networkData,\n },\n client\n ),\n }),\n});\n","import { type DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createEvmNetworkProvider } from '../utils/createEvmNetworkProvider';\n\nexport const registerEvmNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n /**\n * If the Ethereum network provider builder is already registered, return.\n */\n if (networkProviderBuilderRegistry.get().get('EVM')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: (networkData) => createEvmNetworkProvider(networkData, client),\n chain: 'EVM',\n });\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { encodeFunctionData, erc20Abi } from 'viem';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { createWalletClientForWalletAccount } from '../../viem/createWalletClientForWalletAccount';\n\ntype ApproveErc20Params = {\n amount: bigint;\n spenderAddress: string;\n tokenAddress: string;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Sends an ERC-20 `approve` transaction, granting a spender an allowance\n * to transfer tokens on behalf of the wallet account.\n *\n * Encodes the `approve(spender, amount)` call using viem's `encodeFunctionData`\n * and sends it through the wallet account's viem wallet client.\n *\n * @param params.amount - The amount to approve in the token's smallest unit.\n * @param params.spenderAddress - The address being granted the allowance.\n * @param params.tokenAddress - The ERC-20 token contract address.\n * @param params.walletAccount - The EVM wallet account sending the approval.\n * @param client - The Dynamic client instance.\n * @returns The approval transaction hash.\n */\nexport const approveErc20 = async (\n { amount, spenderAddress, tokenAddress, walletAccount }: ApproveErc20Params,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n const walletClient = await createWalletClientForWalletAccount(\n { walletAccount },\n client\n );\n\n const data = encodeFunctionData({\n abi: erc20Abi,\n args: [spenderAddress as `0x${string}`, amount],\n functionName: 'approve',\n });\n\n const hash = await walletClient.sendTransaction({\n data,\n to: tokenAddress as `0x${string}`,\n });\n\n return { transactionHash: hash };\n};\n","import {\n type DynamicClient,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport { erc20Abi } from 'viem';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\n\ntype GetErc20AllowanceParams = {\n ownerAddress: string;\n spenderAddress: string;\n tokenAddress: string;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Reads the current ERC-20 token allowance granted by an owner to a spender.\n *\n * Uses a viem public client derived from the wallet account's active network\n * to call the `allowance(owner, spender)` method on the token contract.\n *\n * @param params.tokenAddress - The ERC-20 token contract address.\n * @param params.ownerAddress - The address that granted the allowance.\n * @param params.spenderAddress - The address allowed to spend the tokens.\n * @param params.walletAccount - The EVM wallet account used to resolve the active network.\n * @param client - The Dynamic client instance.\n * @returns The current allowance as a bigint in the token's smallest unit.\n */\nexport const getErc20Allowance = async (\n {\n ownerAddress,\n spenderAddress,\n tokenAddress,\n walletAccount,\n }: GetErc20AllowanceParams,\n client: DynamicClient\n): Promise<bigint> => {\n const { networkData } = await getActiveNetworkData({ walletAccount }, client);\n\n assertDefined(\n networkData,\n `No network data found for wallet account ${walletAccount.address}`\n );\n\n const publicClient = createPublicClientFromNetworkData({ networkData });\n\n return publicClient.readContract({\n abi: erc20Abi,\n address: tokenAddress as `0x${string}`,\n args: [ownerAddress as `0x${string}`, spenderAddress as `0x${string}`],\n functionName: 'allowance',\n });\n};\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\n\n/**\n * Type guard function to check if a wallet account is an EVM wallet account.\n *\n * @param walletAccount - The wallet account to check.\n * @returns True if the wallet account is an EVM wallet account, false otherwise.\n */\nexport const isEvmWalletAccount = (\n walletAccount: WalletAccount\n): walletAccount is EvmWalletAccount => walletAccount.chain === 'EVM';\n","import {\n type DynamicClient,\n InvalidParamError,\n} from '@dynamic-labs-sdk/client';\nimport type {\n ExecuteCheckoutTransactionParams,\n ExecuteCheckoutTransactionResult,\n} from '@dynamic-labs-sdk/client/core';\n\nimport type { EvmSigningPayload } from '../../checkoutTransaction.types';\nimport { createWalletClientForWalletAccount } from '../../viem/createWalletClientForWalletAccount';\nimport { approveErc20 } from '../approveErc20';\nimport { getErc20Allowance } from '../getErc20Allowance';\nimport { isEvmWalletAccount } from '../isEvmWalletAccount';\n\n/**\n * Executes an EVM checkout transaction by handling optional ERC-20 approval\n * and sending the main swap transaction on-chain.\n *\n * 1. Validates that the wallet account is an EVM wallet account\n * 2. If the signing payload includes an `evmApproval`, checks the current\n * ERC-20 allowance and sends an approve transaction when insufficient\n * 3. Sends the main transaction using the viem wallet client\n *\n * @param params.signingPayload - The chain-aware signing payload containing `evmTransaction` and optional `evmApproval`.\n * @param params.walletAccount - The wallet account used to sign and send transactions.\n * @param params.onStepChange - Optional callback invoked with `'approval'` or `'transaction'` as each step begins.\n * @param client - The Dynamic client instance.\n * @returns The main transaction hash and, if an approval was sent, the approval transaction hash.\n */\nexport const evmExecuteCheckoutTransaction = async (\n {\n onStepChange,\n signingPayload,\n walletAccount,\n }: ExecuteCheckoutTransactionParams,\n client: DynamicClient\n): Promise<ExecuteCheckoutTransactionResult> => {\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account is not an EVM wallet account');\n }\n\n const evmPayload = signingPayload as EvmSigningPayload;\n\n if (!evmPayload.evmTransaction) {\n throw new InvalidParamError(\n 'Signing payload is missing EVM transaction data'\n );\n }\n\n const { evmTransaction, evmApproval } = evmPayload;\n let approvalTransactionHash: string | undefined;\n\n if (evmApproval) {\n onStepChange?.('approval');\n\n const currentAllowance = await getErc20Allowance(\n {\n ownerAddress: walletAccount.address,\n spenderAddress: evmApproval.spenderAddress,\n tokenAddress: evmApproval.tokenAddress,\n walletAccount,\n },\n client\n );\n\n if (currentAllowance < BigInt(evmApproval.amount)) {\n const result = await approveErc20(\n {\n amount: BigInt(evmApproval.amount),\n spenderAddress: evmApproval.spenderAddress,\n tokenAddress: evmApproval.tokenAddress,\n walletAccount,\n },\n client\n );\n approvalTransactionHash = result.transactionHash;\n }\n }\n\n onStepChange?.('transaction');\n\n const walletClient = await createWalletClientForWalletAccount(\n { walletAccount },\n client\n );\n\n const transactionHash = await walletClient.sendTransaction({\n data: evmTransaction.data as `0x${string}`,\n to: evmTransaction.to as `0x${string}`,\n value: evmTransaction.value ? BigInt(evmTransaction.value) : 0n,\n ...(evmTransaction.gasLimit && { gas: BigInt(evmTransaction.gasLimit) }),\n });\n\n return { approvalTransactionHash, transactionHash };\n};\n","import {\n type DynamicClient,\n InvalidParamError,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { TransferAmountParams } from '@dynamic-labs-sdk/client/core';\nimport { encodeFunctionData, erc20Abi, parseEther, parseUnits } from 'viem';\n\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\nimport { createWalletClientForWalletAccount } from '../../viem/createWalletClientForWalletAccount';\nimport { isEvmWalletAccount } from '../isEvmWalletAccount';\n\nconst DEFAULT_DECIMALS = 18;\n\nexport const evmTransferAmount = async (\n { amount, recipient, token, walletAccount }: TransferAmountParams,\n client: DynamicClient\n): Promise<{ transactionHash: string }> => {\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account is not an EVM wallet account');\n }\n\n const { networkData } = await getActiveNetworkData({ walletAccount }, client);\n\n assertDefined(\n networkData,\n `No network data found for wallet account ${walletAccount.address}`\n );\n\n const publicClient = createPublicClientFromNetworkData({ networkData });\n const nonce = await publicClient.getTransactionCount({\n address: walletAccount.address as `0x${string}`,\n });\n\n const walletClient = await createWalletClientForWalletAccount(\n { walletAccount },\n client\n );\n\n // non-native token transfers\n if (token) {\n const decimals = token.decimals ?? DEFAULT_DECIMALS;\n\n const data = encodeFunctionData({\n abi: erc20Abi,\n args: [recipient as `0x${string}`, parseUnits(amount, decimals)],\n functionName: 'transfer',\n });\n\n const hash = await walletClient.sendTransaction({\n data,\n nonce,\n to: token.address as `0x${string}`,\n });\n\n return { transactionHash: hash };\n }\n\n // native token transfers\n const hash = await walletClient.sendTransaction({\n nonce,\n to: recipient as `0x${string}`,\n value: parseEther(amount),\n });\n\n return { transactionHash: hash };\n};\n"],"mappings":"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"}
package/dist/index.cjs.js CHANGED
@@ -1,8 +1,8 @@
1
- const require_createPublicClientFromNetworkData = require('./createPublicClientFromNetworkData-By2zRes3.cjs.js');
2
- const require_evmTransferAmount = require('./evmTransferAmount-ejFipdzt.cjs.js');
3
- require('./createWalletProviderFromEIP1193Provider-BZiCEAqd.cjs.js');
4
- const require_addEIP6963Extension = require('./addEIP6963Extension-D8nhhoCY.cjs.js');
5
- const require_addWaasEvmExtension = require('./addWaasEvmExtension-BRZ3HgqT.cjs.js');
1
+ const require_createPublicClientFromNetworkData = require('./createPublicClientFromNetworkData-hhZkO0l4.cjs.js');
2
+ const require_evmTransferAmount = require('./evmTransferAmount-DiKxU00B.cjs.js');
3
+ require('./createWalletProviderFromEIP1193Provider-1equ68nu.cjs.js');
4
+ const require_addEIP6963Extension = require('./addEIP6963Extension-DTDxIqz3.cjs.js');
5
+ const require_addWaasEvmExtension = require('./addWaasEvmExtension-DgYhEVwh.cjs.js');
6
6
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
7
7
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
8
8
  let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
package/dist/index.esm.js CHANGED
@@ -1,8 +1,8 @@
1
- import { a as version, i as name, t as createPublicClientFromNetworkData } from "./createPublicClientFromNetworkData-DsH91RzR.esm.js";
2
- import { a as RpcError, r as isEvmWalletAccount } from "./evmTransferAmount-3jbLSvBP.esm.js";
3
- import "./createWalletProviderFromEIP1193Provider-1LmDV7d1.esm.js";
4
- import { t as addEIP6963Extension } from "./addEIP6963Extension-BunNZdh3.esm.js";
5
- import { t as addWaasEvmExtension } from "./addWaasEvmExtension-DRHp2A-q.esm.js";
1
+ import { a as version, i as name, t as createPublicClientFromNetworkData } from "./createPublicClientFromNetworkData-Bn9UrWHy.esm.js";
2
+ import { a as RpcError, r as isEvmWalletAccount } from "./evmTransferAmount-DgTyvBgg.esm.js";
3
+ import "./createWalletProviderFromEIP1193Provider-BmU5y-2E.esm.js";
4
+ import { t as addEIP6963Extension } from "./addEIP6963Extension-CmcDaEq9.esm.js";
5
+ import { t as addWaasEvmExtension } from "./addWaasEvmExtension-BgioFqn6.esm.js";
6
6
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
7
7
  import { createApiClient, getCore, getDefaultClient } from "@dynamic-labs-sdk/client/core";
8
8
  import { FeeEstimationFailedError, InvalidParamError, SimulationFailedError, getDefaultClient as getDefaultClient$1, getNetworksData } from "@dynamic-labs-sdk/client";