@dynamic-labs-sdk/evm 1.28.0 → 1.30.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 (124) hide show
  1. package/dist/{addEIP6963Extension-B3sd-Ie6.esm.js → addEIP6963Extension-g4FOMl7A.esm.js} +3 -3
  2. package/dist/{addEIP6963Extension-B3sd-Ie6.esm.js.map → addEIP6963Extension-g4FOMl7A.esm.js.map} +1 -1
  3. package/dist/{addEIP6963Extension-D2jcmZ9I.cjs → addEIP6963Extension-gjlsf_jt.cjs} +3 -3
  4. package/dist/{addEIP6963Extension-D2jcmZ9I.cjs.map → addEIP6963Extension-gjlsf_jt.cjs.map} +1 -1
  5. package/dist/{addWaasEvmExtension-B9ahfRe5.cjs → addWaasEvmExtension-CP2ibnvq.cjs} +3 -2
  6. package/dist/addWaasEvmExtension-CP2ibnvq.cjs.map +1 -0
  7. package/dist/{addWaasEvmExtension-DJBVs4SM.esm.js → addWaasEvmExtension-CyXCTxGv.esm.js} +3 -2
  8. package/dist/addWaasEvmExtension-CyXCTxGv.esm.js.map +1 -0
  9. package/dist/{addWaasEvmExtension-C1AU3Ds3.native.esm.js → addWaasEvmExtension-DYKWl5DG.native.esm.js} +3 -2
  10. package/dist/addWaasEvmExtension-DYKWl5DG.native.esm.js.map +1 -0
  11. package/dist/baseAccount.cjs +3 -3
  12. package/dist/baseAccount.esm.js +3 -3
  13. package/dist/baseAccount.native.esm.js +3 -3
  14. package/dist/core.cjs +1 -1
  15. package/dist/core.esm.js +1 -1
  16. package/dist/core.native.esm.js +1 -1
  17. package/dist/{createWalletProviderFromEIP1193Provider-4MMiSqMQ.esm.js → createWalletProviderFromEIP1193Provider-CDRA4dpW.native.esm.js} +3 -2
  18. package/dist/createWalletProviderFromEIP1193Provider-CDRA4dpW.native.esm.js.map +1 -0
  19. package/dist/{createWalletProviderFromEIP1193Provider-D3aj3d2V.cjs → createWalletProviderFromEIP1193Provider-E1WbEBET.cjs} +3 -2
  20. package/dist/createWalletProviderFromEIP1193Provider-E1WbEBET.cjs.map +1 -0
  21. package/dist/{createWalletProviderFromEIP1193Provider-Hvo5XS3P.native.esm.js → createWalletProviderFromEIP1193Provider-HOkyZ1dS.esm.js} +3 -2
  22. package/dist/createWalletProviderFromEIP1193Provider-HOkyZ1dS.esm.js.map +1 -0
  23. package/dist/eip6963.cjs +4 -4
  24. package/dist/eip6963.esm.js +4 -4
  25. package/dist/eip6963.native.esm.js +1 -1
  26. package/dist/{evmTransferAmount-DOof5Y3i.esm.js → evmTransferAmount-BQy79Fgj.esm.js} +84 -11
  27. package/dist/evmTransferAmount-BQy79Fgj.esm.js.map +1 -0
  28. package/dist/{evmTransferAmount-CdNpxpcI.native.esm.js → evmTransferAmount-BftkuI-H.native.esm.js} +84 -11
  29. package/dist/evmTransferAmount-BftkuI-H.native.esm.js.map +1 -0
  30. package/dist/{evmTransferAmount-DdPV2GBu.cjs → evmTransferAmount-Ddvx91b0.cjs} +89 -10
  31. package/dist/evmTransferAmount-Ddvx91b0.cjs.map +1 -0
  32. package/dist/exports/index.d.ts +1 -0
  33. package/dist/exports/index.d.ts.map +1 -1
  34. package/dist/exports/walletConnect.d.ts.map +1 -1
  35. package/dist/gasless/activate7702Delegation/activate7702Delegation.d.ts +4 -3
  36. package/dist/gasless/activate7702Delegation/activate7702Delegation.d.ts.map +1 -1
  37. package/dist/gasless/generateSponsoredTransactionNonce/generateSponsoredTransactionNonce.d.ts +1 -0
  38. package/dist/gasless/generateSponsoredTransactionNonce/generateSponsoredTransactionNonce.d.ts.map +1 -1
  39. package/dist/gasless/getEVMSponsoredTransactionStatus/getEVMSponsoredTransactionStatus.d.ts +8 -1
  40. package/dist/gasless/getEVMSponsoredTransactionStatus/getEVMSponsoredTransactionStatus.d.ts.map +1 -1
  41. package/dist/gasless/is7702DelegationActive/is7702DelegationActive.d.ts +1 -0
  42. package/dist/gasless/is7702DelegationActive/is7702DelegationActive.d.ts.map +1 -1
  43. package/dist/gasless/isEvmGasSponsorshipEnabled/isEvmGasSponsorshipEnabled.d.ts +1 -0
  44. package/dist/gasless/isEvmGasSponsorshipEnabled/isEvmGasSponsorshipEnabled.d.ts.map +1 -1
  45. package/dist/gasless/relaySponsoredTransaction/relaySponsoredTransaction.d.ts +4 -3
  46. package/dist/gasless/relaySponsoredTransaction/relaySponsoredTransaction.d.ts.map +1 -1
  47. package/dist/gasless/sendSponsoredTransaction/sendSponsoredTransaction.d.ts +4 -3
  48. package/dist/gasless/sendSponsoredTransaction/sendSponsoredTransaction.d.ts.map +1 -1
  49. package/dist/gasless/signSponsoredTransaction/signSponsoredTransaction.d.ts +1 -0
  50. package/dist/gasless/signSponsoredTransaction/signSponsoredTransaction.d.ts.map +1 -1
  51. package/dist/gasless/waitForSponsoredTransaction/waitForSponsoredTransaction.d.ts +9 -5
  52. package/dist/gasless/waitForSponsoredTransaction/waitForSponsoredTransaction.d.ts.map +1 -1
  53. package/dist/index.cjs +54 -5
  54. package/dist/index.cjs.map +1 -1
  55. package/dist/index.esm.js +56 -8
  56. package/dist/index.esm.js.map +1 -1
  57. package/dist/index.native.esm.js +54 -6
  58. package/dist/index.native.esm.js.map +1 -1
  59. package/dist/metamask.cjs +3 -3
  60. package/dist/metamask.esm.js +3 -3
  61. package/dist/metamask.native.esm.js +3 -3
  62. package/dist/{package-BFPtIID5.native.esm.js → package-B7usQR9C.native.esm.js} +2 -2
  63. package/dist/package-B7usQR9C.native.esm.js.map +1 -0
  64. package/dist/{package-DHBQhe-i.esm.js → package-DZWMDfH9.esm.js} +2 -2
  65. package/dist/package-DZWMDfH9.esm.js.map +1 -0
  66. package/dist/{package-CYgL-jHE.cjs → package-Ju_0VcJL.cjs} +2 -2
  67. package/dist/package-Ju_0VcJL.cjs.map +1 -0
  68. package/dist/screenEvmTransactions/index.d.ts +2 -0
  69. package/dist/screenEvmTransactions/index.d.ts.map +1 -0
  70. package/dist/screenEvmTransactions/screenEvmTransactions.d.ts +48 -0
  71. package/dist/screenEvmTransactions/screenEvmTransactions.d.ts.map +1 -0
  72. package/dist/tempo.cjs +1 -1
  73. package/dist/tempo.esm.js +1 -1
  74. package/dist/tempo.native.esm.js +1 -1
  75. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  76. package/dist/utils/approveErc20/approveErc20.d.ts +4 -3
  77. package/dist/utils/approveErc20/approveErc20.d.ts.map +1 -1
  78. package/dist/utils/approveErc20IfRequiredAndWaitReceipt/approveErc20IfRequiredAndWaitReceipt.d.ts +4 -3
  79. package/dist/utils/approveErc20IfRequiredAndWaitReceipt/approveErc20IfRequiredAndWaitReceipt.d.ts.map +1 -1
  80. package/dist/utils/createWalletProviderFromEIP1193Provider/createWalletProviderFromEIP1193Provider.d.ts.map +1 -1
  81. package/dist/utils/createWalletProviderFromEIP1193Provider/isUnrecognizedChainError/isUnrecognizedChainError.d.ts.map +1 -1
  82. package/dist/utils/evmExecuteYieldTransaction/evmExecuteYieldTransaction.d.ts +21 -0
  83. package/dist/utils/evmExecuteYieldTransaction/evmExecuteYieldTransaction.d.ts.map +1 -0
  84. package/dist/utils/evmExecuteYieldTransaction/index.d.ts +2 -0
  85. package/dist/utils/evmExecuteYieldTransaction/index.d.ts.map +1 -0
  86. package/dist/utils/evmTransferAmount/evmTransferAmount.d.ts +5 -3
  87. package/dist/utils/evmTransferAmount/evmTransferAmount.d.ts.map +1 -1
  88. package/dist/viem.cjs +1 -1
  89. package/dist/viem.esm.js +1 -1
  90. package/dist/viem.native.esm.js +1 -1
  91. package/dist/waas/utils/createWalletProviderForWaasEvm/createWalletProviderForWaasEvm.d.ts.map +1 -1
  92. package/dist/waas/utils/createWalletProviderForWaasEvm/signTypedData/signTypedData.d.ts.map +1 -1
  93. package/dist/waas.cjs +3 -3
  94. package/dist/waas.esm.js +3 -3
  95. package/dist/waas.native.esm.js +3 -3
  96. package/dist/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.d.ts.map +1 -1
  97. package/dist/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.d.ts.map +1 -1
  98. package/dist/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.d.ts.map +1 -1
  99. package/dist/walletConnect.cjs +3 -2
  100. package/dist/walletConnect.cjs.map +1 -1
  101. package/dist/walletConnect.esm.js +3 -2
  102. package/dist/walletConnect.esm.js.map +1 -1
  103. package/dist/walletConnect.native.esm.js +3 -2
  104. package/dist/walletConnect.native.esm.js.map +1 -1
  105. package/dist/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.d.ts.map +1 -1
  106. package/dist/windowInjected.cjs +3 -3
  107. package/dist/windowInjected.cjs.map +1 -1
  108. package/dist/windowInjected.esm.js +3 -3
  109. package/dist/windowInjected.esm.js.map +1 -1
  110. package/dist/windowInjected.native.esm.js +3 -3
  111. package/dist/windowInjected.native.esm.js.map +1 -1
  112. package/package.json +9 -9
  113. package/dist/addWaasEvmExtension-B9ahfRe5.cjs.map +0 -1
  114. package/dist/addWaasEvmExtension-C1AU3Ds3.native.esm.js.map +0 -1
  115. package/dist/addWaasEvmExtension-DJBVs4SM.esm.js.map +0 -1
  116. package/dist/createWalletProviderFromEIP1193Provider-4MMiSqMQ.esm.js.map +0 -1
  117. package/dist/createWalletProviderFromEIP1193Provider-D3aj3d2V.cjs.map +0 -1
  118. package/dist/createWalletProviderFromEIP1193Provider-Hvo5XS3P.native.esm.js.map +0 -1
  119. package/dist/evmTransferAmount-CdNpxpcI.native.esm.js.map +0 -1
  120. package/dist/evmTransferAmount-DOof5Y3i.esm.js.map +0 -1
  121. package/dist/evmTransferAmount-DdPV2GBu.cjs.map +0 -1
  122. package/dist/package-BFPtIID5.native.esm.js.map +0 -1
  123. package/dist/package-CYgL-jHE.cjs.map +0 -1
  124. package/dist/package-DHBQhe-i.esm.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exports/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,gCAAgC,GACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exports/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,gCAAgC,GACjC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"walletConnect.d.ts","sourceRoot":"","sources":["../../src/exports/walletConnect.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAC7F,OAAO,EAAE,oCAAoC,EAAE,MAAM,uDAAuD,CAAC;AAC7G,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAC3F,YAAY,EAAE,8BAA8B,EAAE,MAAM,uDAAuD,CAAC"}
1
+ {"version":3,"file":"walletConnect.d.ts","sourceRoot":"","sources":["../../src/exports/walletConnect.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAC7F,OAAO,EAAE,oCAAoC,EAAE,MAAM,uDAAuD,CAAC;AAC7G,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAC3F,YAAY,EAAE,8BAA8B,EAAE,MAAM,uDAAuD,CAAC"}
@@ -7,6 +7,9 @@ type Activate7702DelegationParams = {
7
7
  /** The EVM wallet account to activate delegation for. */
8
8
  walletAccount: EvmWalletAccount;
9
9
  };
10
+ type Activate7702DelegationResult = {
11
+ transactionHash: Hex;
12
+ };
10
13
  /**
11
14
  * Activates EIP-7702 delegation for a wallet by sending a sponsored
12
15
  * transaction that only contains the 7702 authorization.
@@ -31,8 +34,6 @@ type Activate7702DelegationParams = {
31
34
  * @see sign7702Authorization
32
35
  * @notInstrumented
33
36
  */
34
- export declare const activate7702Delegation: ({ walletAccount, authorization }: Activate7702DelegationParams, client?: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<{
35
- transactionHash: Hex;
36
- }>;
37
+ export declare const activate7702Delegation: ({ walletAccount, authorization }: Activate7702DelegationParams, client?: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<Activate7702DelegationResult>;
37
38
  export {};
38
39
  //# sourceMappingURL=activate7702Delegation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"activate7702Delegation.d.ts","sourceRoot":"","sources":["../../../src/gasless/activate7702Delegation/activate7702Delegation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,KAAK,4BAA4B,GAAG;IAClC,4FAA4F;IAC5F,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAC5C,yDAAyD;IACzD,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,sBAAsB,GACjC,kCAAkC,4BAA4B,EAC9D,yDAA2B,KAC1B,OAAO,CAAC;IAAE,eAAe,EAAE,GAAG,CAAA;CAAE,CAIhC,CAAC"}
1
+ {"version":3,"file":"activate7702Delegation.d.ts","sourceRoot":"","sources":["../../../src/gasless/activate7702Delegation/activate7702Delegation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,KAAK,4BAA4B,GAAG;IAClC,4FAA4F;IAC5F,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAC5C,yDAAyD;IACzD,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAAE,eAAe,EAAE,GAAG,CAAA;CAAE,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,sBAAsB,GACjC,kCAAkC,4BAA4B,EAC9D,yDAA2B,KAC1B,OAAO,CAAC,4BAA4B,CAIpC,CAAC"}
@@ -26,6 +26,7 @@ type GenerateSponsoredTransactionNonceParams = {
26
26
  * @param params.walletAccount - The wallet account whose delegation contract is checked.
27
27
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
28
28
  * @returns A unique bigint nonce for the EIP-712 intent.
29
+ * @throws {ValueMustBeDefinedError} If network data is unavailable for the wallet account.
29
30
  * @see signSponsoredTransaction
30
31
  * @see sendSponsoredTransaction
31
32
  * @notInstrumented
@@ -1 +1 @@
1
- {"version":3,"file":"generateSponsoredTransactionNonce.d.ts","sourceRoot":"","sources":["../../../src/gasless/generateSponsoredTransactionNonce/generateSponsoredTransactionNonce.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKrE,KAAK,uCAAuC,GAAG;IAC7C,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,iCAAiC,GAC5C,mBAAmB,uCAAuC,EAC1D,yDAA2B,KAC1B,OAAO,CAAC,MAAM,CA+BhB,CAAC"}
1
+ {"version":3,"file":"generateSponsoredTransactionNonce.d.ts","sourceRoot":"","sources":["../../../src/gasless/generateSponsoredTransactionNonce/generateSponsoredTransactionNonce.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKrE,KAAK,uCAAuC,GAAG;IAC7C,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,iCAAiC,GAC5C,mBAAmB,uCAAuC,EAC1D,yDAA2B,KAC1B,OAAO,CAAC,MAAM,CA+BhB,CAAC"}
@@ -2,6 +2,12 @@ import type { SponsoredTransactionStatusResult } from '../gasless.types';
2
2
  type GetEVMSponsoredTransactionStatusParams = {
3
3
  /** The request ID returned by `relaySponsoredTransaction` / `sendSponsoredTransaction`. */
4
4
  requestId: string;
5
+ /**
6
+ * Seconds to let the API hold the response open while the transaction is
7
+ * still unresolved, so the hash comes back as soon as it exists instead of on
8
+ * a later call. Omitted or `0` responds immediately.
9
+ */
10
+ waitSeconds?: number;
5
11
  };
6
12
  /**
7
13
  * Fetches the current relay state for a sponsored EVM transaction.
@@ -20,6 +26,7 @@ type GetEVMSponsoredTransactionStatusParams = {
20
26
  * ```
21
27
  *
22
28
  * @param params.requestId - The request ID returned when the transaction was relayed.
29
+ * @param [params.waitSeconds] - Seconds to let the API hold the response open while the transaction is unresolved.
23
30
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
24
31
  * @returns The current status, optional transaction hash, and optional error message.
25
32
  * @throws {SponsorTransactionError} If the API call fails.
@@ -27,6 +34,6 @@ type GetEVMSponsoredTransactionStatusParams = {
27
34
  * @see relaySponsoredTransaction
28
35
  * @notInstrumented
29
36
  */
30
- export declare const getEVMSponsoredTransactionStatus: ({ requestId }: GetEVMSponsoredTransactionStatusParams, client?: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<SponsoredTransactionStatusResult>;
37
+ export declare const getEVMSponsoredTransactionStatus: ({ requestId, waitSeconds }: GetEVMSponsoredTransactionStatusParams, client?: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<SponsoredTransactionStatusResult>;
31
38
  export {};
32
39
  //# sourceMappingURL=getEVMSponsoredTransactionStatus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getEVMSponsoredTransactionStatus.d.ts","sourceRoot":"","sources":["../../../src/gasless/getEVMSponsoredTransactionStatus/getEVMSponsoredTransactionStatus.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAEV,gCAAgC,EACjC,MAAM,kBAAkB,CAAC;AAE1B,KAAK,sCAAsC,GAAG;IAC5C,2FAA2F;IAC3F,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,gCAAgC,GAC3C,eAAe,sCAAsC,EACrD,yDAA2B,KAC1B,OAAO,CAAC,gCAAgC,CAyB1C,CAAC"}
1
+ {"version":3,"file":"getEVMSponsoredTransactionStatus.d.ts","sourceRoot":"","sources":["../../../src/gasless/getEVMSponsoredTransactionStatus/getEVMSponsoredTransactionStatus.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAEV,gCAAgC,EACjC,MAAM,kBAAkB,CAAC;AAE1B,KAAK,sCAAsC,GAAG;IAC5C,2FAA2F;IAC3F,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,gCAAgC,GAC3C,4BAA4B,sCAAsC,EAClE,yDAA2B,KAC1B,OAAO,CAAC,gCAAgC,CA0B1C,CAAC"}
@@ -19,6 +19,7 @@ type Is7702DelegationActiveParams = {
19
19
  * @param params.walletAccount - The EVM wallet account to check delegation status for.
20
20
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
21
21
  * @returns True if the wallet has an active delegation to the gasless contract.
22
+ * @throws {ValueMustBeDefinedError} If network data is unavailable for the wallet account.
22
23
  * @see activate7702Delegation
23
24
  * @see sign7702Authorization
24
25
  * @notInstrumented
@@ -1 +1 @@
1
- {"version":3,"file":"is7702DelegationActive.d.ts","sourceRoot":"","sources":["../../../src/gasless/is7702DelegationActive/is7702DelegationActive.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AASrE,KAAK,4BAA4B,GAAG;IAClC,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB,GACjC,mBAAmB,4BAA4B,EAC/C,yDAA2B,KAC1B,OAAO,CAAC,OAAO,CAmCjB,CAAC"}
1
+ {"version":3,"file":"is7702DelegationActive.d.ts","sourceRoot":"","sources":["../../../src/gasless/is7702DelegationActive/is7702DelegationActive.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AASrE,KAAK,4BAA4B,GAAG;IAClC,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,sBAAsB,GACjC,mBAAmB,4BAA4B,EAC/C,yDAA2B,KAC1B,OAAO,CAAC,OAAO,CAmCjB,CAAC"}
@@ -10,6 +10,7 @@
10
10
  *
11
11
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
12
12
  * @returns True if EVM gas sponsorship is enabled, false otherwise.
13
+ * @throws {ValueMustBeDefinedError} If project settings are unavailable.
13
14
  * @see sendSponsoredTransaction
14
15
  * @see activate7702Delegation
15
16
  * @notInstrumented
@@ -1 +1 @@
1
- {"version":3,"file":"isEvmGasSponsorshipEnabled.d.ts","sourceRoot":"","sources":["../../../src/gasless/isEvmGasSponsorshipEnabled/isEvmGasSponsorshipEnabled.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,0BAA0B,GACrC,yDAA2B,KAC1B,OAOF,CAAC"}
1
+ {"version":3,"file":"isEvmGasSponsorshipEnabled.d.ts","sourceRoot":"","sources":["../../../src/gasless/isEvmGasSponsorshipEnabled/isEvmGasSponsorshipEnabled.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,0BAA0B,GACrC,yDAA2B,KAC1B,OAOF,CAAC"}
@@ -24,6 +24,9 @@ type RelaySponsoredTransactionWithSignedTxParams = {
24
24
  signedTransaction: SignedSponsoredTransaction;
25
25
  };
26
26
  type RelaySponsoredTransactionParams = RelaySponsoredTransactionWithCallsParams | RelaySponsoredTransactionWithSignedTxParams;
27
+ type RelaySponsoredTransactionResult = {
28
+ requestId: string;
29
+ };
27
30
  /**
28
31
  * Relays a sponsored EVM transaction to the Dynamic backend.
29
32
  *
@@ -52,8 +55,6 @@ type RelaySponsoredTransactionParams = RelaySponsoredTransactionWithCallsParams
52
55
  * @see signSponsoredTransaction
53
56
  * @notInstrumented
54
57
  */
55
- export declare const relaySponsoredTransaction: (params: RelaySponsoredTransactionParams, client?: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<{
56
- requestId: string;
57
- }>;
58
+ export declare const relaySponsoredTransaction: (params: RelaySponsoredTransactionParams, client?: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<RelaySponsoredTransactionResult>;
58
59
  export {};
59
60
  //# sourceMappingURL=relaySponsoredTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relaySponsoredTransaction.d.ts","sourceRoot":"","sources":["../../../src/gasless/relaySponsoredTransaction/relaySponsoredTransaction.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,kBAAkB,CAAC;AAG1B,KAAK,wCAAwC,GAAG;IAC9C,2EAA2E;IAC3E,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAC5C,2FAA2F;IAC3F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF,KAAK,2CAA2C,GAAG;IACjD,gFAAgF;IAChF,iBAAiB,EAAE,0BAA0B,CAAC;CAC/C,CAAC;AAEF,KAAK,+BAA+B,GAChC,wCAAwC,GACxC,2CAA2C,CAAC;AAOhD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,+BAA+B,EACvC,yDAA2B,KAC1B,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAgD/B,CAAC"}
1
+ {"version":3,"file":"relaySponsoredTransaction.d.ts","sourceRoot":"","sources":["../../../src/gasless/relaySponsoredTransaction/relaySponsoredTransaction.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,kBAAkB,CAAC;AAG1B,KAAK,wCAAwC,GAAG;IAC9C,2EAA2E;IAC3E,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAC5C,2FAA2F;IAC3F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF,KAAK,2CAA2C,GAAG;IACjD,gFAAgF;IAChF,iBAAiB,EAAE,0BAA0B,CAAC;CAC/C,CAAC;AAEF,KAAK,+BAA+B,GAChC,wCAAwC,GACxC,2CAA2C,CAAC;AAOhD,KAAK,+BAA+B,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,yBAAyB,GACpC,QAAQ,+BAA+B,EACvC,yDAA2B,KAC1B,OAAO,CAAC,+BAA+B,CAgDzC,CAAC"}
@@ -25,6 +25,9 @@ type SendSponsoredTransactionWithSignedTxParams = {
25
25
  signedTransaction: SignedSponsoredTransaction;
26
26
  };
27
27
  type SendSponsoredTransactionParams = SendSponsoredTransactionWithCallsParams | SendSponsoredTransactionWithSignedTxParams;
28
+ type SendSponsoredTransactionResult = {
29
+ transactionHash: Hex;
30
+ };
28
31
  /**
29
32
  * Sends a sponsored EVM transaction and waits for on-chain inclusion.
30
33
  *
@@ -49,8 +52,6 @@ type SendSponsoredTransactionParams = SendSponsoredTransactionWithCallsParams |
49
52
  * @see relaySponsoredTransaction
50
53
  * @notInstrumented
51
54
  */
52
- export declare const sendSponsoredTransaction: (params: SendSponsoredTransactionParams, client?: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<{
53
- transactionHash: Hex;
54
- }>;
55
+ export declare const sendSponsoredTransaction: (params: SendSponsoredTransactionParams, client?: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<SendSponsoredTransactionResult>;
55
56
  export {};
56
57
  //# sourceMappingURL=sendSponsoredTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sendSponsoredTransaction.d.ts","sourceRoot":"","sources":["../../../src/gasless/sendSponsoredTransaction/sendSponsoredTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,kBAAkB,CAAC;AAI1B,KAAK,uCAAuC,GAAG;IAC7C,2EAA2E;IAC3E,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAC5C,2FAA2F;IAC3F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF,KAAK,0CAA0C,GAAG;IAChD,gFAAgF;IAChF,iBAAiB,EAAE,0BAA0B,CAAC;CAC/C,CAAC;AAEF,KAAK,8BAA8B,GAC/B,uCAAuC,GACvC,0CAA0C,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,wBAAwB,GACnC,QAAQ,8BAA8B,EACtC,yDAA2B,KAC1B,OAAO,CAAC;IAAE,eAAe,EAAE,GAAG,CAAA;CAAE,CAGlC,CAAC"}
1
+ {"version":3,"file":"sendSponsoredTransaction.d.ts","sourceRoot":"","sources":["../../../src/gasless/sendSponsoredTransaction/sendSponsoredTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,kBAAkB,CAAC;AAI1B,KAAK,uCAAuC,GAAG;IAC7C,2EAA2E;IAC3E,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAC5C,2FAA2F;IAC3F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF,KAAK,0CAA0C,GAAG;IAChD,gFAAgF;IAChF,iBAAiB,EAAE,0BAA0B,CAAC;CAC/C,CAAC;AAEF,KAAK,8BAA8B,GAC/B,uCAAuC,GACvC,0CAA0C,CAAC;AAE/C,KAAK,8BAA8B,GAAG;IAAE,eAAe,EAAE,GAAG,CAAA;CAAE,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,wBAAwB,GACnC,QAAQ,8BAA8B,EACtC,yDAA2B,KAC1B,OAAO,CAAC,8BAA8B,CAGxC,CAAC"}
@@ -49,6 +49,7 @@ type SignSponsoredTransactionParams = {
49
49
  * @param [params.validForSeconds] - How long the signed intent remains valid, in seconds. Defaults to 600 (10 minutes).
50
50
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
51
51
  * @returns The signed sponsored transaction payload ready to be sent to the API.
52
+ * @throws {ValueMustBeDefinedError} If network data is unavailable for the wallet account.
52
53
  * @see sendSponsoredTransaction
53
54
  * @see relaySponsoredTransaction
54
55
  * @notInstrumented
@@ -1 +1 @@
1
- {"version":3,"file":"signSponsoredTransaction.d.ts","sourceRoot":"","sources":["../../../src/gasless/signSponsoredTransaction/signSponsoredTransaction.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AASrE,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,kBAAkB,CAAC;AAO1B,KAAK,8BAA8B,GAAG;IACpC,2EAA2E;IAC3E,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAC5C,2FAA2F;IAC3F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,wBAAwB,GACnC,+FAOG,8BAA8B,EACjC,yDAA2B,KAC1B,OAAO,CAAC,0BAA0B,CA+EpC,CAAC"}
1
+ {"version":3,"file":"signSponsoredTransaction.d.ts","sourceRoot":"","sources":["../../../src/gasless/signSponsoredTransaction/signSponsoredTransaction.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AASrE,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,kBAAkB,CAAC;AAO1B,KAAK,8BAA8B,GAAG;IACpC,2EAA2E;IAC3E,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAC5C,2FAA2F;IAC3F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,aAAa,EAAE,gBAAgB,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,wBAAwB,GACnC,+FAOG,8BAA8B,EACjC,yDAA2B,KAC1B,OAAO,CAAC,0BAA0B,CA+EpC,CAAC"}
@@ -3,9 +3,15 @@ type WaitForSponsoredTransactionParams = {
3
3
  /** The request ID returned by `relaySponsoredTransaction` / `sendSponsoredTransaction`. */
4
4
  requestId: string;
5
5
  };
6
+ type WaitForSponsoredTransactionResult = {
7
+ transactionHash: Hex;
8
+ };
6
9
  /**
7
- * Polls `getEVMSponsoredTransactionStatus` until the relay reports the
8
- * transaction has been included on-chain, then returns the transaction hash.
10
+ * Waits until the relay reports the transaction has been included on-chain,
11
+ * then returns the transaction hash.
12
+ *
13
+ * Each request asks the API to hold the response open until the transaction
14
+ * resolves, so the hash comes back as soon as it exists.
9
15
  *
10
16
  * @example
11
17
  * ```ts
@@ -21,8 +27,6 @@ type WaitForSponsoredTransactionParams = {
21
27
  * @see getEVMSponsoredTransactionStatus
22
28
  * @notInstrumented
23
29
  */
24
- export declare const waitForSponsoredTransaction: ({ requestId }: WaitForSponsoredTransactionParams, client?: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<{
25
- transactionHash: Hex;
26
- }>;
30
+ export declare const waitForSponsoredTransaction: ({ requestId }: WaitForSponsoredTransactionParams, client?: import("@dynamic-labs-sdk/client").DynamicClient) => Promise<WaitForSponsoredTransactionResult>;
27
31
  export {};
28
32
  //# sourceMappingURL=waitForSponsoredTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"waitForSponsoredTransaction.d.ts","sourceRoot":"","sources":["../../../src/gasless/waitForSponsoredTransaction/waitForSponsoredTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAchC,KAAK,iCAAiC,GAAG;IACvC,2FAA2F;IAC3F,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,2BAA2B,GACtC,eAAe,iCAAiC,EAChD,yDAA2B,KAC1B,OAAO,CAAC;IAAE,eAAe,EAAE,GAAG,CAAA;CAAE,CA0BlC,CAAC"}
1
+ {"version":3,"file":"waitForSponsoredTransaction.d.ts","sourceRoot":"","sources":["../../../src/gasless/waitForSponsoredTransaction/waitForSponsoredTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAiBhC,KAAK,iCAAiC,GAAG;IACvC,2FAA2F;IAC3F,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,iCAAiC,GAAG;IAAE,eAAe,EAAE,GAAG,CAAA;CAAE,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,2BAA2B,GACtC,eAAe,iCAAiC,EAChD,yDAA2B,KAC1B,OAAO,CAAC,iCAAiC,CA0C3C,CAAC"}
package/dist/index.cjs CHANGED
@@ -1,13 +1,14 @@
1
- const require_package = require('./package-CYgL-jHE.cjs');
2
- const require_evmTransferAmount = require('./evmTransferAmount-DdPV2GBu.cjs');
1
+ const require_package = require('./package-Ju_0VcJL.cjs');
2
+ const require_evmTransferAmount = require('./evmTransferAmount-Ddvx91b0.cjs');
3
3
  const require_createPublicClientFromNetworkData = require('./createPublicClientFromNetworkData-BAC8YTrK.cjs');
4
- require('./createWalletProviderFromEIP1193Provider-D3aj3d2V.cjs');
5
- const require_addEIP6963Extension = require('./addEIP6963Extension-D2jcmZ9I.cjs');
6
- const require_addWaasEvmExtension = require('./addWaasEvmExtension-B9ahfRe5.cjs');
4
+ require('./createWalletProviderFromEIP1193Provider-E1WbEBET.cjs');
5
+ const require_addEIP6963Extension = require('./addEIP6963Extension-gjlsf_jt.cjs');
6
+ const require_addWaasEvmExtension = require('./addWaasEvmExtension-CP2ibnvq.cjs');
7
7
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
8
8
  let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
9
9
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
10
10
  let viem = require("viem");
11
+ let _dynamic_labs_sdk_client_waas = require("@dynamic-labs-sdk/client/waas");
11
12
 
12
13
  //#region src/gasless/activate7702Delegation/activate7702Delegation.ts
13
14
  /**
@@ -100,6 +101,53 @@ var EvmGasSponsorshipNotEnabledError = class extends _dynamic_labs_sdk_client.Ba
100
101
  */
101
102
  const isEvmNetworkProvider = (networkProvider) => networkProvider.chain === "EVM";
102
103
 
104
+ //#endregion
105
+ //#region src/screenEvmTransactions/screenEvmTransactions.ts
106
+ /**
107
+ * Screens EVM transactions' destinations against the environment's sanctions
108
+ * providers and returns one verdict per transaction.
109
+ *
110
+ * @example
111
+ * ```ts
112
+ * if (isExternalWalletScreeningEnabled()) {
113
+ * const results = await screenEvmTransactions({
114
+ * transactions: [{ to }],
115
+ * walletAccount,
116
+ * });
117
+ *
118
+ * if (results.some(({ decision }) => decision === 'block')) return;
119
+ * }
120
+ *
121
+ * await walletClient.sendTransaction(transaction);
122
+ * ```
123
+ *
124
+ * @param params.transactions - The transactions about to be signed.
125
+ * @param params.walletAccount - The wallet account that would be prompted to sign.
126
+ * @param [params.networkId] - The network to record. Resolved from the wallet's active network when omitted.
127
+ * @param [params.senderAddress] - The sender to screen alongside the destinations. Defaults to the wallet account's address.
128
+ * @param [params.signal] - Cancels the in-flight requests, e.g. `AbortSignal.timeout(2000)`.
129
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
130
+ * @returns One verdict per transaction, in the order the transactions were given.
131
+ * @throws {ScreeningNotRequiredError} If the wallet account is a Dynamic embedded wallet, which signing already screens.
132
+ * @throws {InvalidParamError} If the wallet account is not an EVM wallet account.
133
+ * @see screenTransaction
134
+ * @see isExternalWalletScreeningEnabled
135
+ * @notInstrumented
136
+ */
137
+ const screenEvmTransactions = async ({ networkId, senderAddress, signal, transactions, walletAccount }, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
138
+ if (!require_evmTransferAmount.isEvmWalletAccount(walletAccount)) throw new _dynamic_labs_sdk_client.InvalidParamError("Wallet account is not an EVM wallet account");
139
+ if ((0, _dynamic_labs_sdk_client_waas.isWaasWalletAccount)({ walletAccount })) throw new _dynamic_labs_sdk_client.ScreeningNotRequiredError();
140
+ const provider = (0, _dynamic_labs_sdk_client_core.getWalletProviderFromWalletAccount)({ walletAccount }, client);
141
+ const activeNetworkId = networkId ?? (await provider.getActiveNetworkId()).networkId;
142
+ return Promise.all(transactions.map(({ to }) => (0, _dynamic_labs_sdk_client.screenTransaction)({
143
+ chain: "EVM",
144
+ context: { evmTransaction: { to } },
145
+ networkId: activeNetworkId,
146
+ senderAddress: senderAddress ?? walletAccount.address,
147
+ signal
148
+ }, client)));
149
+ };
150
+
103
151
  //#endregion
104
152
  //#region src/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.ts
105
153
  /**
@@ -263,6 +311,7 @@ exports.isEvmGasSponsorshipEnabled = require_evmTransferAmount.isEvmGasSponsorsh
263
311
  exports.isEvmNetworkProvider = isEvmNetworkProvider;
264
312
  exports.isEvmWalletAccount = require_evmTransferAmount.isEvmWalletAccount;
265
313
  exports.relaySponsoredTransaction = require_evmTransferAmount.relaySponsoredTransaction;
314
+ exports.screenEvmTransactions = screenEvmTransactions;
266
315
  exports.sendSponsoredTransaction = require_evmTransferAmount.sendSponsoredTransaction;
267
316
  exports.sign7702Authorization = require_evmTransferAmount.sign7702Authorization;
268
317
  exports.signSponsoredTransaction = require_evmTransferAmount.signSponsoredTransaction;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["sendSponsoredTransaction","BaseError","createPublicClientFromNetworkData","maxFeePerGas: bigint | undefined","maxPriorityFeePerGas: bigint | undefined","gasPrice: bigint | undefined","nativeAmount: bigint","FeeEstimationFailedError","isEvmWalletAccount","InvalidParamError","feeData: EvmSimulationResult['feeData']","FeeEstimationFailedError","SimulationFailedError","packageName","packageVersion"],"sources":["../src/gasless/activate7702Delegation/activate7702Delegation.ts","../src/addEvmExtension/addEvmExtension.ts","../src/errors/EvmGasSponsorshipNotEnabledError/EvmGasSponsorshipNotEnabledError.ts","../src/isEvmNetworkProvider/isEvmNetworkProvider.ts","../src/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.ts","../src/simulateEvmTransaction/simulateEvmTransaction.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport type { Hex } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { sendSponsoredTransaction } from '../sendSponsoredTransaction';\n\ntype Activate7702DelegationParams = {\n /** Pre-signed EIP-7702 authorization. If not provided, one will be signed automatically. */\n authorization?: SignAuthorizationReturnType;\n /** The EVM wallet account to activate delegation for. */\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Activates EIP-7702 delegation for a wallet by sending a sponsored\n * transaction that only contains the 7702 authorization.\n *\n * After activation, the wallet's delegation is persisted on-chain and\n * subsequent sponsored transactions no longer need to include the\n * authorization.\n *\n * @example\n * ```ts\n * const { transactionHash } = await activate7702Delegation({\n * walletAccount: evmAccount,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account to activate delegation for.\n * @param [params.authorization] - Pre-signed authorization. If omitted, signs one automatically.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the on-chain transaction hash.\n * @throws {SponsorTransactionError} If the relay returns a terminal failure or polling times out.\n * @see is7702DelegationActive\n * @see sign7702Authorization\n * @notInstrumented\n */\nexport const activate7702Delegation = async (\n { walletAccount, authorization }: Activate7702DelegationParams,\n client = getDefaultClient()\n): Promise<{ transactionHash: Hex }> =>\n sendSponsoredTransaction(\n { authorization, calls: [], walletAccount },\n client\n );\n","import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addEIP6963Extension } from '../eip6963/addEIP6963Extension';\nimport { addWaasEvmExtension } from '../waas/addWaasEvmExtension';\n\n/**\n * Adds the EVM extension to the Dynamic client.\n *\n * This is a convenience function that adds both the EIP-6963 extension\n * and the Dynamic WaaS EVM extension, enabling support for all EVM wallet types\n * including standard wallets and embedded wallets managed by Dynamic's infrastructure.\n *\n * @example\n * ```ts\n * const client = createDynamicClient({ environmentId: 'env-123' });\n * addEvmExtension(client);\n * ```\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns void\n * @see isEvmWalletAccount\n * @see isEvmNetworkProvider\n * @notInstrumented\n */\nexport const addEvmExtension = (client = getDefaultClient()): void => {\n addEIP6963Extension(client);\n addWaasEvmExtension(client);\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class EvmGasSponsorshipNotEnabledError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'evm_gas_sponsorship_not_enabled_error',\n docsUrl: null,\n name: 'EvmGasSponsorshipNotEnabledError',\n shortMessage: 'EVM gas sponsorship is not enabled for this project',\n });\n }\n}\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { EvmNetworkProvider } from '../EvmNetworkProvider';\n\n/**\n * Type guard function to check if a network provider is an EVM network provider.\n *\n * @example\n * ```ts\n * if (isEvmNetworkProvider(networkProvider)) {\n * const publicClient = networkProvider.getPublicClient();\n * }\n * ```\n *\n * @param networkProvider - The network provider to check.\n * @returns True if the network provider is an EVM network provider, false otherwise.\n * @see isEvmWalletAccount\n * @see addEvmExtension\n * @notInstrumented\n */\nexport const isEvmNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is EvmNetworkProvider => networkProvider.chain === 'EVM';\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { FeeEstimationFailedError } from '@dynamic-labs-sdk/client';\nimport { formatEther } from 'viem';\n\nimport type {\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../../transactionSimulation.types';\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\n\ntype CalculateEvmTransactionFeeParams = {\n nativeTokenPriceUsd?: number;\n networkData: NetworkData;\n transaction: EvmTransactionToSimulate;\n};\n\n/**\n * Calculates the estimated fee for an EVM transaction.\n *\n * This function estimates gas usage and calculates the total transaction fee\n * using either legacy gas pricing or EIP-1559 pricing. The fee is returned\n * in both native units (wei) and human-readable format (ETH).\n *\n * @example\n * ```ts\n * const feeData = await calculateEvmTransactionFee({\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * networkData,\n * nativeTokenPriceUsd: 3500,\n * });\n * ```\n *\n * @param params.transaction - The transaction to estimate fees for.\n * @param params.networkData - Network configuration for RPC connection.\n * @param params.nativeTokenPriceUsd - Optional USD price of the native token for fee conversion.\n * @returns Fee data including gas estimates and human-readable amounts.\n * @throws {FeeEstimationFailedError} If gas estimation or fee retrieval fails.\n * @see simulateEvmTransaction\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const calculateEvmTransactionFee = async ({\n transaction,\n networkData,\n nativeTokenPriceUsd,\n}: CalculateEvmTransactionFeeParams): Promise<EvmTransactionFeeData> => {\n try {\n const publicClient = createPublicClientFromNetworkData({ networkData });\n\n // Estimate gas for the transaction\n const gasEstimate = await publicClient.estimateGas({\n account: transaction.from,\n data: transaction.data,\n to: transaction.to,\n value: transaction.value,\n });\n\n // Try to get EIP-1559 fees first, fallback to legacy gas price\n let maxFeePerGas: bigint | undefined;\n let maxPriorityFeePerGas: bigint | undefined;\n let gasPrice: bigint | undefined;\n let nativeAmount: bigint;\n\n try {\n const feeData = await publicClient.estimateFeesPerGas();\n maxFeePerGas = feeData.maxFeePerGas;\n maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n\n // Calculate fee using EIP-1559 pricing\n nativeAmount = gasEstimate * maxFeePerGas;\n } catch {\n // Fallback to legacy gas pricing\n gasPrice = await publicClient.getGasPrice();\n nativeAmount = gasEstimate * gasPrice;\n }\n\n // Format to human-readable ETH\n const humanReadableAmount = formatEther(nativeAmount);\n\n // Calculate USD amount if price data available\n const usdAmount = nativeTokenPriceUsd\n ? (Number(humanReadableAmount) * nativeTokenPriceUsd).toFixed(2)\n : undefined;\n\n return {\n gasEstimate,\n gasPrice,\n humanReadableAmount,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nativeAmount,\n usdAmount,\n };\n } catch (error) {\n throw new FeeEstimationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to estimate EVM transaction fee',\n });\n }\n};\n","import {\n FeeEstimationFailedError,\n InvalidParamError,\n SimulationFailedError,\n getDefaultClient,\n getNetworksData,\n} from '@dynamic-labs-sdk/client';\nimport { createApiClient, getCore } from '@dynamic-labs-sdk/client/core';\nimport type { SimulateEVMTransactionRequest } from '@dynamic-labs/sdk-api-core';\n\nimport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nimport type {\n EvmSimulationResult,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nimport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nimport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\n\ntype SimulateEvmTransactionParams = {\n includeFees?: boolean;\n transaction: EvmTransactionToSimulate;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Simulates an EVM transaction to preview its effects before execution.\n *\n * This function uses the Blockaid API to analyze the transaction and returns\n * information about asset transfers, security validation, and optionally fee estimates.\n * The simulation shows what will happen when the transaction is executed without\n * actually sending it to the blockchain.\n *\n * @example\n * ```ts\n * const result = await simulateEvmTransaction({\n * walletAccount: evmAccount,\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * includeFees: true,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account that will sign the transaction.\n * @param params.transaction - The transaction to simulate, including network ID.\n * @param params.includeFees - Whether to calculate transaction fees (default: false).\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns Simulation result with asset diffs, security validation, and optional fee data.\n * @throws {InvalidParamError} If wallet account is not an EVM account or network ID is not configured.\n * @throws {SimulationFailedError} If the simulation API call fails.\n * @throws {FeeEstimationFailedError} If includeFees is true and fee calculation fails.\n * @see calculateEvmTransactionFee\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const simulateEvmTransaction = async (\n {\n walletAccount,\n transaction,\n includeFees = false,\n }: SimulateEvmTransactionParams,\n client = getDefaultClient()\n): Promise<EvmSimulationResult> => {\n // Validate wallet account type\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account must be an EVM wallet account');\n }\n\n // Get network data for the specified network\n const networksData = getNetworksData(client);\n const networkData = networksData.find(\n (data) => data.networkId === transaction.networkId && data.chain === 'EVM'\n );\n\n if (!networkData) {\n throw new InvalidParamError(\n `Network with ID ${transaction.networkId} is not configured in project settings`\n );\n }\n\n try {\n // Create API client and call simulation endpoint\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const simulateEVMTransactionRequest = {\n chainId: transaction.networkId,\n data: transaction.data || '0x',\n from: transaction.from,\n to: transaction.to,\n } as SimulateEVMTransactionRequest;\n\n if (transaction.value !== undefined) {\n simulateEVMTransactionRequest.value = transaction.value.toString();\n }\n\n const response = await apiClient.simulateEVMTransaction({\n environmentId: core.environmentId,\n simulateEVMTransactionRequest,\n });\n\n // Calculate fees if requested\n let feeData: EvmSimulationResult['feeData'];\n\n if (includeFees) {\n feeData = await calculateEvmTransactionFee({\n nativeTokenPriceUsd: response.priceData?.nativeTokenUsdPrice,\n networkData,\n transaction,\n });\n }\n\n // Map API response to simulation result\n return {\n counterparties: response.counterparties,\n feeData,\n inAssets: response.inAssets || [],\n outAssets: response.outAssets || [],\n priceData: response.priceData,\n showTotalFiat: response.showTotalFiat,\n validation: response.validation\n ? {\n description: response.validation.description,\n reason: response.validation.reason,\n result: response.validation.result as\n | 'benign'\n | 'warning'\n | 'malicious',\n }\n : undefined,\n };\n } catch (error) {\n // Re-throw FeeEstimationFailedError as-is\n if (error instanceof FeeEstimationFailedError) {\n throw error;\n }\n\n throw new SimulationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to simulate EVM transaction',\n });\n }\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { activate7702Delegation } from '../gasless/activate7702Delegation';\nexport { addEvmExtension } from '../addEvmExtension';\nexport { EvmGasSponsorshipNotEnabledError } from '../errors/EvmGasSponsorshipNotEnabledError';\nexport { RpcError } from '../errors/RpcError';\nexport { SponsorTransactionError } from '../errors/SponsorTransactionError';\nexport type { EvmNetworkProvider } from '../EvmNetworkProvider';\nexport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nexport type { EvmWalletProvider } from '../EvmWalletProvider.types';\nexport type {\n SerializedAuthorization,\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n SponsoredTransactionStatus,\n SponsoredTransactionStatusResult,\n} from '../gasless/gasless.types';\nexport { generateSponsoredTransactionNonce } from '../gasless/generateSponsoredTransactionNonce';\nexport { getEVMSponsoredTransactionStatus } from '../gasless/getEVMSponsoredTransactionStatus';\nexport { is7702DelegationActive } from '../gasless/is7702DelegationActive';\nexport { isEvmGasSponsorshipEnabled } from '../gasless/isEvmGasSponsorshipEnabled';\nexport { isEvmNetworkProvider } from '../isEvmNetworkProvider';\nexport { simulateEvmTransaction } from '../simulateEvmTransaction';\nexport type {\n EvmSimulationResult,\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nexport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nexport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\nexport { relaySponsoredTransaction } from '../gasless/relaySponsoredTransaction';\nexport { sendSponsoredTransaction } from '../gasless/sendSponsoredTransaction';\nexport { sign7702Authorization } from '../gasless/sign7702Authorization';\nexport { signSponsoredTransaction } from '../gasless/signSponsoredTransaction';\nexport { waitForSponsoredTransaction } from '../gasless/waitForSponsoredTransaction';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["sendSponsoredTransaction","BaseError","isEvmWalletAccount","InvalidParamError","ScreeningNotRequiredError","createPublicClientFromNetworkData","maxFeePerGas: bigint | undefined","maxPriorityFeePerGas: bigint | undefined","gasPrice: bigint | undefined","nativeAmount: bigint","FeeEstimationFailedError","isEvmWalletAccount","InvalidParamError","feeData: EvmSimulationResult['feeData']","FeeEstimationFailedError","SimulationFailedError","packageName","packageVersion"],"sources":["../src/gasless/activate7702Delegation/activate7702Delegation.ts","../src/addEvmExtension/addEvmExtension.ts","../src/errors/EvmGasSponsorshipNotEnabledError/EvmGasSponsorshipNotEnabledError.ts","../src/isEvmNetworkProvider/isEvmNetworkProvider.ts","../src/screenEvmTransactions/screenEvmTransactions.ts","../src/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.ts","../src/simulateEvmTransaction/simulateEvmTransaction.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport type { Hex } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { sendSponsoredTransaction } from '../sendSponsoredTransaction';\n\ntype Activate7702DelegationParams = {\n /** Pre-signed EIP-7702 authorization. If not provided, one will be signed automatically. */\n authorization?: SignAuthorizationReturnType;\n /** The EVM wallet account to activate delegation for. */\n walletAccount: EvmWalletAccount;\n};\n\ntype Activate7702DelegationResult = { transactionHash: Hex };\n\n/**\n * Activates EIP-7702 delegation for a wallet by sending a sponsored\n * transaction that only contains the 7702 authorization.\n *\n * After activation, the wallet's delegation is persisted on-chain and\n * subsequent sponsored transactions no longer need to include the\n * authorization.\n *\n * @example\n * ```ts\n * const { transactionHash } = await activate7702Delegation({\n * walletAccount: evmAccount,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account to activate delegation for.\n * @param [params.authorization] - Pre-signed authorization. If omitted, signs one automatically.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the on-chain transaction hash.\n * @throws {SponsorTransactionError} If the relay returns a terminal failure or polling times out.\n * @see is7702DelegationActive\n * @see sign7702Authorization\n * @notInstrumented\n */\nexport const activate7702Delegation = async (\n { walletAccount, authorization }: Activate7702DelegationParams,\n client = getDefaultClient()\n): Promise<Activate7702DelegationResult> =>\n sendSponsoredTransaction(\n { authorization, calls: [], walletAccount },\n client\n );\n","import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addEIP6963Extension } from '../eip6963/addEIP6963Extension';\nimport { addWaasEvmExtension } from '../waas/addWaasEvmExtension';\n\n/**\n * Adds the EVM extension to the Dynamic client.\n *\n * This is a convenience function that adds both the EIP-6963 extension\n * and the Dynamic WaaS EVM extension, enabling support for all EVM wallet types\n * including standard wallets and embedded wallets managed by Dynamic's infrastructure.\n *\n * @example\n * ```ts\n * const client = createDynamicClient({ environmentId: 'env-123' });\n * addEvmExtension(client);\n * ```\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns void\n * @see isEvmWalletAccount\n * @see isEvmNetworkProvider\n * @notInstrumented\n */\nexport const addEvmExtension = (client = getDefaultClient()): void => {\n addEIP6963Extension(client);\n addWaasEvmExtension(client);\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class EvmGasSponsorshipNotEnabledError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'evm_gas_sponsorship_not_enabled_error',\n docsUrl: null,\n name: 'EvmGasSponsorshipNotEnabledError',\n shortMessage: 'EVM gas sponsorship is not enabled for this project',\n });\n }\n}\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { EvmNetworkProvider } from '../EvmNetworkProvider';\n\n/**\n * Type guard function to check if a network provider is an EVM network provider.\n *\n * @example\n * ```ts\n * if (isEvmNetworkProvider(networkProvider)) {\n * const publicClient = networkProvider.getPublicClient();\n * }\n * ```\n *\n * @param networkProvider - The network provider to check.\n * @returns True if the network provider is an EVM network provider, false otherwise.\n * @see isEvmWalletAccount\n * @see addEvmExtension\n * @notInstrumented\n */\nexport const isEvmNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is EvmNetworkProvider => networkProvider.chain === 'EVM';\n","import type { ScreenTransactionResponse } from '@dynamic-labs/sdk-api-core';\nimport {\n InvalidParamError,\n ScreeningNotRequiredError,\n getDefaultClient,\n screenTransaction,\n} from '@dynamic-labs-sdk/client';\nimport { getWalletProviderFromWalletAccount } from '@dynamic-labs-sdk/client/core';\nimport { isWaasWalletAccount } from '@dynamic-labs-sdk/client/waas';\n\nimport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nimport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\n\ntype ScreenEvmTransactionsParams = {\n /** The network to record. Resolved from the wallet's active network when omitted. */\n networkId?: string;\n senderAddress?: string;\n /** Cancels the in-flight requests, e.g. `AbortSignal.timeout(2000)`. */\n signal?: AbortSignal;\n /** The destination of each transaction. */\n transactions: { to?: string }[];\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Screens EVM transactions' destinations against the environment's sanctions\n * providers and returns one verdict per transaction.\n *\n * @example\n * ```ts\n * if (isExternalWalletScreeningEnabled()) {\n * const results = await screenEvmTransactions({\n * transactions: [{ to }],\n * walletAccount,\n * });\n *\n * if (results.some(({ decision }) => decision === 'block')) return;\n * }\n *\n * await walletClient.sendTransaction(transaction);\n * ```\n *\n * @param params.transactions - The transactions about to be signed.\n * @param params.walletAccount - The wallet account that would be prompted to sign.\n * @param [params.networkId] - The network to record. Resolved from the wallet's active network when omitted.\n * @param [params.senderAddress] - The sender to screen alongside the destinations. Defaults to the wallet account's address.\n * @param [params.signal] - Cancels the in-flight requests, e.g. `AbortSignal.timeout(2000)`.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns One verdict per transaction, in the order the transactions were given.\n * @throws {ScreeningNotRequiredError} If the wallet account is a Dynamic embedded wallet, which signing already screens.\n * @throws {InvalidParamError} If the wallet account is not an EVM wallet account.\n * @see screenTransaction\n * @see isExternalWalletScreeningEnabled\n * @notInstrumented\n */\nexport const screenEvmTransactions = async (\n {\n networkId,\n senderAddress,\n signal,\n transactions,\n walletAccount,\n }: ScreenEvmTransactionsParams,\n client = getDefaultClient()\n): Promise<ScreenTransactionResponse[]> => {\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account is not an EVM wallet account');\n }\n\n // Refused rather than screened: the signing ceremony already screens these\n // server-side, so going ahead would bill the project for a redundant screen.\n if (isWaasWalletAccount({ walletAccount })) {\n throw new ScreeningNotRequiredError();\n }\n\n // Read from the provider rather than getActiveNetworkData: that filters\n // against the project's configured networks, so a wallet on an unconfigured\n // chain would record no network at all — and it asserts on projectSettings,\n // which would fail the screen for a reason unrelated to screening.\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n const activeNetworkId =\n networkId ?? (await provider.getActiveNetworkId()).networkId;\n\n return Promise.all(\n transactions.map(({ to }) =>\n screenTransaction(\n {\n chain: 'EVM',\n context: { evmTransaction: { to } },\n networkId: activeNetworkId,\n senderAddress: senderAddress ?? walletAccount.address,\n signal,\n },\n client\n )\n )\n );\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { FeeEstimationFailedError } from '@dynamic-labs-sdk/client';\nimport { formatEther } from 'viem';\n\nimport type {\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../../transactionSimulation.types';\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\n\ntype CalculateEvmTransactionFeeParams = {\n nativeTokenPriceUsd?: number;\n networkData: NetworkData;\n transaction: EvmTransactionToSimulate;\n};\n\n/**\n * Calculates the estimated fee for an EVM transaction.\n *\n * This function estimates gas usage and calculates the total transaction fee\n * using either legacy gas pricing or EIP-1559 pricing. The fee is returned\n * in both native units (wei) and human-readable format (ETH).\n *\n * @example\n * ```ts\n * const feeData = await calculateEvmTransactionFee({\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * networkData,\n * nativeTokenPriceUsd: 3500,\n * });\n * ```\n *\n * @param params.transaction - The transaction to estimate fees for.\n * @param params.networkData - Network configuration for RPC connection.\n * @param params.nativeTokenPriceUsd - Optional USD price of the native token for fee conversion.\n * @returns Fee data including gas estimates and human-readable amounts.\n * @throws {FeeEstimationFailedError} If gas estimation or fee retrieval fails.\n * @see simulateEvmTransaction\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const calculateEvmTransactionFee = async ({\n transaction,\n networkData,\n nativeTokenPriceUsd,\n}: CalculateEvmTransactionFeeParams): Promise<EvmTransactionFeeData> => {\n try {\n const publicClient = createPublicClientFromNetworkData({ networkData });\n\n // Estimate gas for the transaction\n const gasEstimate = await publicClient.estimateGas({\n account: transaction.from,\n data: transaction.data,\n to: transaction.to,\n value: transaction.value,\n });\n\n // Try to get EIP-1559 fees first, fallback to legacy gas price\n let maxFeePerGas: bigint | undefined;\n let maxPriorityFeePerGas: bigint | undefined;\n let gasPrice: bigint | undefined;\n let nativeAmount: bigint;\n\n try {\n const feeData = await publicClient.estimateFeesPerGas();\n maxFeePerGas = feeData.maxFeePerGas;\n maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n\n // Calculate fee using EIP-1559 pricing\n nativeAmount = gasEstimate * maxFeePerGas;\n } catch {\n // Fallback to legacy gas pricing\n gasPrice = await publicClient.getGasPrice();\n nativeAmount = gasEstimate * gasPrice;\n }\n\n // Format to human-readable ETH\n const humanReadableAmount = formatEther(nativeAmount);\n\n // Calculate USD amount if price data available\n const usdAmount = nativeTokenPriceUsd\n ? (Number(humanReadableAmount) * nativeTokenPriceUsd).toFixed(2)\n : undefined;\n\n return {\n gasEstimate,\n gasPrice,\n humanReadableAmount,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nativeAmount,\n usdAmount,\n };\n } catch (error) {\n throw new FeeEstimationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to estimate EVM transaction fee',\n });\n }\n};\n","import {\n FeeEstimationFailedError,\n InvalidParamError,\n SimulationFailedError,\n getDefaultClient,\n getNetworksData,\n} from '@dynamic-labs-sdk/client';\nimport { createApiClient, getCore } from '@dynamic-labs-sdk/client/core';\nimport type { SimulateEVMTransactionRequest } from '@dynamic-labs/sdk-api-core';\n\nimport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nimport type {\n EvmSimulationResult,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nimport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nimport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\n\ntype SimulateEvmTransactionParams = {\n includeFees?: boolean;\n transaction: EvmTransactionToSimulate;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Simulates an EVM transaction to preview its effects before execution.\n *\n * This function uses the Blockaid API to analyze the transaction and returns\n * information about asset transfers, security validation, and optionally fee estimates.\n * The simulation shows what will happen when the transaction is executed without\n * actually sending it to the blockchain.\n *\n * @example\n * ```ts\n * const result = await simulateEvmTransaction({\n * walletAccount: evmAccount,\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * includeFees: true,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account that will sign the transaction.\n * @param params.transaction - The transaction to simulate, including network ID.\n * @param params.includeFees - Whether to calculate transaction fees (default: false).\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns Simulation result with asset diffs, security validation, and optional fee data.\n * @throws {InvalidParamError} If wallet account is not an EVM account or network ID is not configured.\n * @throws {SimulationFailedError} If the simulation API call fails.\n * @throws {FeeEstimationFailedError} If includeFees is true and fee calculation fails.\n * @see calculateEvmTransactionFee\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const simulateEvmTransaction = async (\n {\n walletAccount,\n transaction,\n includeFees = false,\n }: SimulateEvmTransactionParams,\n client = getDefaultClient()\n): Promise<EvmSimulationResult> => {\n // Validate wallet account type\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account must be an EVM wallet account');\n }\n\n // Get network data for the specified network\n const networksData = getNetworksData(client);\n const networkData = networksData.find(\n (data) => data.networkId === transaction.networkId && data.chain === 'EVM'\n );\n\n if (!networkData) {\n throw new InvalidParamError(\n `Network with ID ${transaction.networkId} is not configured in project settings`\n );\n }\n\n try {\n // Create API client and call simulation endpoint\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const simulateEVMTransactionRequest = {\n chainId: transaction.networkId,\n data: transaction.data || '0x',\n from: transaction.from,\n to: transaction.to,\n } as SimulateEVMTransactionRequest;\n\n if (transaction.value !== undefined) {\n simulateEVMTransactionRequest.value = transaction.value.toString();\n }\n\n const response = await apiClient.simulateEVMTransaction({\n environmentId: core.environmentId,\n simulateEVMTransactionRequest,\n });\n\n // Calculate fees if requested\n let feeData: EvmSimulationResult['feeData'];\n\n if (includeFees) {\n feeData = await calculateEvmTransactionFee({\n nativeTokenPriceUsd: response.priceData?.nativeTokenUsdPrice,\n networkData,\n transaction,\n });\n }\n\n // Map API response to simulation result\n return {\n counterparties: response.counterparties,\n feeData,\n inAssets: response.inAssets || [],\n outAssets: response.outAssets || [],\n priceData: response.priceData,\n showTotalFiat: response.showTotalFiat,\n validation: response.validation\n ? {\n description: response.validation.description,\n reason: response.validation.reason,\n result: response.validation.result as\n | 'benign'\n | 'warning'\n | 'malicious',\n }\n : undefined,\n };\n } catch (error) {\n // Re-throw FeeEstimationFailedError as-is\n if (error instanceof FeeEstimationFailedError) {\n throw error;\n }\n\n throw new SimulationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to simulate EVM transaction',\n });\n }\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { activate7702Delegation } from '../gasless/activate7702Delegation';\nexport { addEvmExtension } from '../addEvmExtension';\nexport { EvmGasSponsorshipNotEnabledError } from '../errors/EvmGasSponsorshipNotEnabledError';\nexport { RpcError } from '../errors/RpcError';\nexport { SponsorTransactionError } from '../errors/SponsorTransactionError';\nexport type { EvmNetworkProvider } from '../EvmNetworkProvider';\nexport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nexport type { EvmWalletProvider } from '../EvmWalletProvider.types';\nexport type {\n SerializedAuthorization,\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n SponsoredTransactionStatus,\n SponsoredTransactionStatusResult,\n} from '../gasless/gasless.types';\nexport { generateSponsoredTransactionNonce } from '../gasless/generateSponsoredTransactionNonce';\nexport { getEVMSponsoredTransactionStatus } from '../gasless/getEVMSponsoredTransactionStatus';\nexport { is7702DelegationActive } from '../gasless/is7702DelegationActive';\nexport { isEvmGasSponsorshipEnabled } from '../gasless/isEvmGasSponsorshipEnabled';\nexport { isEvmNetworkProvider } from '../isEvmNetworkProvider';\nexport { screenEvmTransactions } from '../screenEvmTransactions';\nexport { simulateEvmTransaction } from '../simulateEvmTransaction';\nexport type {\n EvmSimulationResult,\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nexport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nexport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\nexport { relaySponsoredTransaction } from '../gasless/relaySponsoredTransaction';\nexport { sendSponsoredTransaction } from '../gasless/sendSponsoredTransaction';\nexport { sign7702Authorization } from '../gasless/sign7702Authorization';\nexport { signSponsoredTransaction } from '../gasless/signSponsoredTransaction';\nexport { waitForSponsoredTransaction } from '../gasless/waitForSponsoredTransaction';\n"],"mappings":"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"}
package/dist/index.esm.js CHANGED
@@ -1,13 +1,14 @@
1
- import { n as version, t as name } from "./package-DHBQhe-i.esm.js";
2
- import { a as isEvmWalletAccount, c as sendSponsoredTransaction, d as relaySponsoredTransaction, f as signSponsoredTransaction, g as SponsorTransactionError, h as generateSponsoredTransactionNonce, l as waitForSponsoredTransaction, m as is7702DelegationActive, p as sign7702Authorization, r as isEvmGasSponsorshipEnabled, s as RpcError, u as getEVMSponsoredTransactionStatus } from "./evmTransferAmount-DOof5Y3i.esm.js";
1
+ import { n as version, t as name } from "./package-DZWMDfH9.esm.js";
2
+ import { _ as SponsorTransactionError, c as RpcError, d as getEVMSponsoredTransactionStatus, f as relaySponsoredTransaction, g as generateSponsoredTransactionNonce, h as is7702DelegationActive, i as isEvmGasSponsorshipEnabled, l as sendSponsoredTransaction, m as sign7702Authorization, o as isEvmWalletAccount, p as signSponsoredTransaction, u as waitForSponsoredTransaction } from "./evmTransferAmount-BQy79Fgj.esm.js";
3
3
  import { t as createPublicClientFromNetworkData } from "./createPublicClientFromNetworkData-CKikh3WW.esm.js";
4
- import "./createWalletProviderFromEIP1193Provider-4MMiSqMQ.esm.js";
5
- import { t as addEIP6963Extension } from "./addEIP6963Extension-B3sd-Ie6.esm.js";
6
- import { t as addWaasEvmExtension } from "./addWaasEvmExtension-DJBVs4SM.esm.js";
4
+ import "./createWalletProviderFromEIP1193Provider-HOkyZ1dS.esm.js";
5
+ import { t as addEIP6963Extension } from "./addEIP6963Extension-g4FOMl7A.esm.js";
6
+ import { t as addWaasEvmExtension } from "./addWaasEvmExtension-CyXCTxGv.esm.js";
7
7
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
8
- import { BaseError, FeeEstimationFailedError, InvalidParamError, SimulationFailedError, getDefaultClient, getNetworksData } from "@dynamic-labs-sdk/client";
9
- import { createApiClient, getCore, getDefaultClient as getDefaultClient$1 } from "@dynamic-labs-sdk/client/core";
8
+ import { BaseError, FeeEstimationFailedError, InvalidParamError, ScreeningNotRequiredError, SimulationFailedError, getDefaultClient, getNetworksData, screenTransaction } from "@dynamic-labs-sdk/client";
9
+ import { createApiClient, getCore, getDefaultClient as getDefaultClient$1, getWalletProviderFromWalletAccount } from "@dynamic-labs-sdk/client/core";
10
10
  import { formatEther } from "viem";
11
+ import { isWaasWalletAccount } from "@dynamic-labs-sdk/client/waas";
11
12
 
12
13
  //#region src/gasless/activate7702Delegation/activate7702Delegation.ts
13
14
  /**
@@ -100,6 +101,53 @@ var EvmGasSponsorshipNotEnabledError = class extends BaseError {
100
101
  */
101
102
  const isEvmNetworkProvider = (networkProvider) => networkProvider.chain === "EVM";
102
103
 
104
+ //#endregion
105
+ //#region src/screenEvmTransactions/screenEvmTransactions.ts
106
+ /**
107
+ * Screens EVM transactions' destinations against the environment's sanctions
108
+ * providers and returns one verdict per transaction.
109
+ *
110
+ * @example
111
+ * ```ts
112
+ * if (isExternalWalletScreeningEnabled()) {
113
+ * const results = await screenEvmTransactions({
114
+ * transactions: [{ to }],
115
+ * walletAccount,
116
+ * });
117
+ *
118
+ * if (results.some(({ decision }) => decision === 'block')) return;
119
+ * }
120
+ *
121
+ * await walletClient.sendTransaction(transaction);
122
+ * ```
123
+ *
124
+ * @param params.transactions - The transactions about to be signed.
125
+ * @param params.walletAccount - The wallet account that would be prompted to sign.
126
+ * @param [params.networkId] - The network to record. Resolved from the wallet's active network when omitted.
127
+ * @param [params.senderAddress] - The sender to screen alongside the destinations. Defaults to the wallet account's address.
128
+ * @param [params.signal] - Cancels the in-flight requests, e.g. `AbortSignal.timeout(2000)`.
129
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
130
+ * @returns One verdict per transaction, in the order the transactions were given.
131
+ * @throws {ScreeningNotRequiredError} If the wallet account is a Dynamic embedded wallet, which signing already screens.
132
+ * @throws {InvalidParamError} If the wallet account is not an EVM wallet account.
133
+ * @see screenTransaction
134
+ * @see isExternalWalletScreeningEnabled
135
+ * @notInstrumented
136
+ */
137
+ const screenEvmTransactions = async ({ networkId, senderAddress, signal, transactions, walletAccount }, client = getDefaultClient()) => {
138
+ if (!isEvmWalletAccount(walletAccount)) throw new InvalidParamError("Wallet account is not an EVM wallet account");
139
+ if (isWaasWalletAccount({ walletAccount })) throw new ScreeningNotRequiredError();
140
+ const provider = getWalletProviderFromWalletAccount({ walletAccount }, client);
141
+ const activeNetworkId = networkId ?? (await provider.getActiveNetworkId()).networkId;
142
+ return Promise.all(transactions.map(({ to }) => screenTransaction({
143
+ chain: "EVM",
144
+ context: { evmTransaction: { to } },
145
+ networkId: activeNetworkId,
146
+ senderAddress: senderAddress ?? walletAccount.address,
147
+ signal
148
+ }, client)));
149
+ };
150
+
103
151
  //#endregion
104
152
  //#region src/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.ts
105
153
  /**
@@ -250,5 +298,5 @@ const simulateEvmTransaction = async ({ walletAccount, transaction, includeFees
250
298
  assertPackageVersion(name, version);
251
299
 
252
300
  //#endregion
253
- export { EvmGasSponsorshipNotEnabledError, RpcError, SponsorTransactionError, activate7702Delegation, addEvmExtension, calculateEvmTransactionFee, generateSponsoredTransactionNonce, getEVMSponsoredTransactionStatus, is7702DelegationActive, isEvmGasSponsorshipEnabled, isEvmNetworkProvider, isEvmWalletAccount, relaySponsoredTransaction, sendSponsoredTransaction, sign7702Authorization, signSponsoredTransaction, simulateEvmTransaction, waitForSponsoredTransaction };
301
+ export { EvmGasSponsorshipNotEnabledError, RpcError, SponsorTransactionError, activate7702Delegation, addEvmExtension, calculateEvmTransactionFee, generateSponsoredTransactionNonce, getEVMSponsoredTransactionStatus, is7702DelegationActive, isEvmGasSponsorshipEnabled, isEvmNetworkProvider, isEvmWalletAccount, relaySponsoredTransaction, screenEvmTransactions, sendSponsoredTransaction, sign7702Authorization, signSponsoredTransaction, simulateEvmTransaction, waitForSponsoredTransaction };
254
302
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","names":["getDefaultClient","maxFeePerGas: bigint | undefined","maxPriorityFeePerGas: bigint | undefined","gasPrice: bigint | undefined","nativeAmount: bigint","feeData: EvmSimulationResult['feeData']","packageName","packageVersion"],"sources":["../src/gasless/activate7702Delegation/activate7702Delegation.ts","../src/addEvmExtension/addEvmExtension.ts","../src/errors/EvmGasSponsorshipNotEnabledError/EvmGasSponsorshipNotEnabledError.ts","../src/isEvmNetworkProvider/isEvmNetworkProvider.ts","../src/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.ts","../src/simulateEvmTransaction/simulateEvmTransaction.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport type { Hex } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { sendSponsoredTransaction } from '../sendSponsoredTransaction';\n\ntype Activate7702DelegationParams = {\n /** Pre-signed EIP-7702 authorization. If not provided, one will be signed automatically. */\n authorization?: SignAuthorizationReturnType;\n /** The EVM wallet account to activate delegation for. */\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Activates EIP-7702 delegation for a wallet by sending a sponsored\n * transaction that only contains the 7702 authorization.\n *\n * After activation, the wallet's delegation is persisted on-chain and\n * subsequent sponsored transactions no longer need to include the\n * authorization.\n *\n * @example\n * ```ts\n * const { transactionHash } = await activate7702Delegation({\n * walletAccount: evmAccount,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account to activate delegation for.\n * @param [params.authorization] - Pre-signed authorization. If omitted, signs one automatically.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the on-chain transaction hash.\n * @throws {SponsorTransactionError} If the relay returns a terminal failure or polling times out.\n * @see is7702DelegationActive\n * @see sign7702Authorization\n * @notInstrumented\n */\nexport const activate7702Delegation = async (\n { walletAccount, authorization }: Activate7702DelegationParams,\n client = getDefaultClient()\n): Promise<{ transactionHash: Hex }> =>\n sendSponsoredTransaction(\n { authorization, calls: [], walletAccount },\n client\n );\n","import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addEIP6963Extension } from '../eip6963/addEIP6963Extension';\nimport { addWaasEvmExtension } from '../waas/addWaasEvmExtension';\n\n/**\n * Adds the EVM extension to the Dynamic client.\n *\n * This is a convenience function that adds both the EIP-6963 extension\n * and the Dynamic WaaS EVM extension, enabling support for all EVM wallet types\n * including standard wallets and embedded wallets managed by Dynamic's infrastructure.\n *\n * @example\n * ```ts\n * const client = createDynamicClient({ environmentId: 'env-123' });\n * addEvmExtension(client);\n * ```\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns void\n * @see isEvmWalletAccount\n * @see isEvmNetworkProvider\n * @notInstrumented\n */\nexport const addEvmExtension = (client = getDefaultClient()): void => {\n addEIP6963Extension(client);\n addWaasEvmExtension(client);\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class EvmGasSponsorshipNotEnabledError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'evm_gas_sponsorship_not_enabled_error',\n docsUrl: null,\n name: 'EvmGasSponsorshipNotEnabledError',\n shortMessage: 'EVM gas sponsorship is not enabled for this project',\n });\n }\n}\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { EvmNetworkProvider } from '../EvmNetworkProvider';\n\n/**\n * Type guard function to check if a network provider is an EVM network provider.\n *\n * @example\n * ```ts\n * if (isEvmNetworkProvider(networkProvider)) {\n * const publicClient = networkProvider.getPublicClient();\n * }\n * ```\n *\n * @param networkProvider - The network provider to check.\n * @returns True if the network provider is an EVM network provider, false otherwise.\n * @see isEvmWalletAccount\n * @see addEvmExtension\n * @notInstrumented\n */\nexport const isEvmNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is EvmNetworkProvider => networkProvider.chain === 'EVM';\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { FeeEstimationFailedError } from '@dynamic-labs-sdk/client';\nimport { formatEther } from 'viem';\n\nimport type {\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../../transactionSimulation.types';\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\n\ntype CalculateEvmTransactionFeeParams = {\n nativeTokenPriceUsd?: number;\n networkData: NetworkData;\n transaction: EvmTransactionToSimulate;\n};\n\n/**\n * Calculates the estimated fee for an EVM transaction.\n *\n * This function estimates gas usage and calculates the total transaction fee\n * using either legacy gas pricing or EIP-1559 pricing. The fee is returned\n * in both native units (wei) and human-readable format (ETH).\n *\n * @example\n * ```ts\n * const feeData = await calculateEvmTransactionFee({\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * networkData,\n * nativeTokenPriceUsd: 3500,\n * });\n * ```\n *\n * @param params.transaction - The transaction to estimate fees for.\n * @param params.networkData - Network configuration for RPC connection.\n * @param params.nativeTokenPriceUsd - Optional USD price of the native token for fee conversion.\n * @returns Fee data including gas estimates and human-readable amounts.\n * @throws {FeeEstimationFailedError} If gas estimation or fee retrieval fails.\n * @see simulateEvmTransaction\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const calculateEvmTransactionFee = async ({\n transaction,\n networkData,\n nativeTokenPriceUsd,\n}: CalculateEvmTransactionFeeParams): Promise<EvmTransactionFeeData> => {\n try {\n const publicClient = createPublicClientFromNetworkData({ networkData });\n\n // Estimate gas for the transaction\n const gasEstimate = await publicClient.estimateGas({\n account: transaction.from,\n data: transaction.data,\n to: transaction.to,\n value: transaction.value,\n });\n\n // Try to get EIP-1559 fees first, fallback to legacy gas price\n let maxFeePerGas: bigint | undefined;\n let maxPriorityFeePerGas: bigint | undefined;\n let gasPrice: bigint | undefined;\n let nativeAmount: bigint;\n\n try {\n const feeData = await publicClient.estimateFeesPerGas();\n maxFeePerGas = feeData.maxFeePerGas;\n maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n\n // Calculate fee using EIP-1559 pricing\n nativeAmount = gasEstimate * maxFeePerGas;\n } catch {\n // Fallback to legacy gas pricing\n gasPrice = await publicClient.getGasPrice();\n nativeAmount = gasEstimate * gasPrice;\n }\n\n // Format to human-readable ETH\n const humanReadableAmount = formatEther(nativeAmount);\n\n // Calculate USD amount if price data available\n const usdAmount = nativeTokenPriceUsd\n ? (Number(humanReadableAmount) * nativeTokenPriceUsd).toFixed(2)\n : undefined;\n\n return {\n gasEstimate,\n gasPrice,\n humanReadableAmount,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nativeAmount,\n usdAmount,\n };\n } catch (error) {\n throw new FeeEstimationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to estimate EVM transaction fee',\n });\n }\n};\n","import {\n FeeEstimationFailedError,\n InvalidParamError,\n SimulationFailedError,\n getDefaultClient,\n getNetworksData,\n} from '@dynamic-labs-sdk/client';\nimport { createApiClient, getCore } from '@dynamic-labs-sdk/client/core';\nimport type { SimulateEVMTransactionRequest } from '@dynamic-labs/sdk-api-core';\n\nimport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nimport type {\n EvmSimulationResult,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nimport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nimport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\n\ntype SimulateEvmTransactionParams = {\n includeFees?: boolean;\n transaction: EvmTransactionToSimulate;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Simulates an EVM transaction to preview its effects before execution.\n *\n * This function uses the Blockaid API to analyze the transaction and returns\n * information about asset transfers, security validation, and optionally fee estimates.\n * The simulation shows what will happen when the transaction is executed without\n * actually sending it to the blockchain.\n *\n * @example\n * ```ts\n * const result = await simulateEvmTransaction({\n * walletAccount: evmAccount,\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * includeFees: true,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account that will sign the transaction.\n * @param params.transaction - The transaction to simulate, including network ID.\n * @param params.includeFees - Whether to calculate transaction fees (default: false).\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns Simulation result with asset diffs, security validation, and optional fee data.\n * @throws {InvalidParamError} If wallet account is not an EVM account or network ID is not configured.\n * @throws {SimulationFailedError} If the simulation API call fails.\n * @throws {FeeEstimationFailedError} If includeFees is true and fee calculation fails.\n * @see calculateEvmTransactionFee\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const simulateEvmTransaction = async (\n {\n walletAccount,\n transaction,\n includeFees = false,\n }: SimulateEvmTransactionParams,\n client = getDefaultClient()\n): Promise<EvmSimulationResult> => {\n // Validate wallet account type\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account must be an EVM wallet account');\n }\n\n // Get network data for the specified network\n const networksData = getNetworksData(client);\n const networkData = networksData.find(\n (data) => data.networkId === transaction.networkId && data.chain === 'EVM'\n );\n\n if (!networkData) {\n throw new InvalidParamError(\n `Network with ID ${transaction.networkId} is not configured in project settings`\n );\n }\n\n try {\n // Create API client and call simulation endpoint\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const simulateEVMTransactionRequest = {\n chainId: transaction.networkId,\n data: transaction.data || '0x',\n from: transaction.from,\n to: transaction.to,\n } as SimulateEVMTransactionRequest;\n\n if (transaction.value !== undefined) {\n simulateEVMTransactionRequest.value = transaction.value.toString();\n }\n\n const response = await apiClient.simulateEVMTransaction({\n environmentId: core.environmentId,\n simulateEVMTransactionRequest,\n });\n\n // Calculate fees if requested\n let feeData: EvmSimulationResult['feeData'];\n\n if (includeFees) {\n feeData = await calculateEvmTransactionFee({\n nativeTokenPriceUsd: response.priceData?.nativeTokenUsdPrice,\n networkData,\n transaction,\n });\n }\n\n // Map API response to simulation result\n return {\n counterparties: response.counterparties,\n feeData,\n inAssets: response.inAssets || [],\n outAssets: response.outAssets || [],\n priceData: response.priceData,\n showTotalFiat: response.showTotalFiat,\n validation: response.validation\n ? {\n description: response.validation.description,\n reason: response.validation.reason,\n result: response.validation.result as\n | 'benign'\n | 'warning'\n | 'malicious',\n }\n : undefined,\n };\n } catch (error) {\n // Re-throw FeeEstimationFailedError as-is\n if (error instanceof FeeEstimationFailedError) {\n throw error;\n }\n\n throw new SimulationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to simulate EVM transaction',\n });\n }\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { activate7702Delegation } from '../gasless/activate7702Delegation';\nexport { addEvmExtension } from '../addEvmExtension';\nexport { EvmGasSponsorshipNotEnabledError } from '../errors/EvmGasSponsorshipNotEnabledError';\nexport { RpcError } from '../errors/RpcError';\nexport { SponsorTransactionError } from '../errors/SponsorTransactionError';\nexport type { EvmNetworkProvider } from '../EvmNetworkProvider';\nexport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nexport type { EvmWalletProvider } from '../EvmWalletProvider.types';\nexport type {\n SerializedAuthorization,\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n SponsoredTransactionStatus,\n SponsoredTransactionStatusResult,\n} from '../gasless/gasless.types';\nexport { generateSponsoredTransactionNonce } from '../gasless/generateSponsoredTransactionNonce';\nexport { getEVMSponsoredTransactionStatus } from '../gasless/getEVMSponsoredTransactionStatus';\nexport { is7702DelegationActive } from '../gasless/is7702DelegationActive';\nexport { isEvmGasSponsorshipEnabled } from '../gasless/isEvmGasSponsorshipEnabled';\nexport { isEvmNetworkProvider } from '../isEvmNetworkProvider';\nexport { simulateEvmTransaction } from '../simulateEvmTransaction';\nexport type {\n EvmSimulationResult,\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nexport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nexport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\nexport { relaySponsoredTransaction } from '../gasless/relaySponsoredTransaction';\nexport { sendSponsoredTransaction } from '../gasless/sendSponsoredTransaction';\nexport { sign7702Authorization } from '../gasless/sign7702Authorization';\nexport { signSponsoredTransaction } from '../gasless/signSponsoredTransaction';\nexport { waitForSponsoredTransaction } from '../gasless/waitForSponsoredTransaction';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","names":["getDefaultClient","maxFeePerGas: bigint | undefined","maxPriorityFeePerGas: bigint | undefined","gasPrice: bigint | undefined","nativeAmount: bigint","feeData: EvmSimulationResult['feeData']","packageName","packageVersion"],"sources":["../src/gasless/activate7702Delegation/activate7702Delegation.ts","../src/addEvmExtension/addEvmExtension.ts","../src/errors/EvmGasSponsorshipNotEnabledError/EvmGasSponsorshipNotEnabledError.ts","../src/isEvmNetworkProvider/isEvmNetworkProvider.ts","../src/screenEvmTransactions/screenEvmTransactions.ts","../src/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.ts","../src/simulateEvmTransaction/simulateEvmTransaction.ts","../src/exports/index.ts"],"sourcesContent":["import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport type { Hex } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\n\nimport type { EvmWalletAccount } from '../../EvmWalletAccount.types';\nimport { sendSponsoredTransaction } from '../sendSponsoredTransaction';\n\ntype Activate7702DelegationParams = {\n /** Pre-signed EIP-7702 authorization. If not provided, one will be signed automatically. */\n authorization?: SignAuthorizationReturnType;\n /** The EVM wallet account to activate delegation for. */\n walletAccount: EvmWalletAccount;\n};\n\ntype Activate7702DelegationResult = { transactionHash: Hex };\n\n/**\n * Activates EIP-7702 delegation for a wallet by sending a sponsored\n * transaction that only contains the 7702 authorization.\n *\n * After activation, the wallet's delegation is persisted on-chain and\n * subsequent sponsored transactions no longer need to include the\n * authorization.\n *\n * @example\n * ```ts\n * const { transactionHash } = await activate7702Delegation({\n * walletAccount: evmAccount,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account to activate delegation for.\n * @param [params.authorization] - Pre-signed authorization. If omitted, signs one automatically.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns An object containing the on-chain transaction hash.\n * @throws {SponsorTransactionError} If the relay returns a terminal failure or polling times out.\n * @see is7702DelegationActive\n * @see sign7702Authorization\n * @notInstrumented\n */\nexport const activate7702Delegation = async (\n { walletAccount, authorization }: Activate7702DelegationParams,\n client = getDefaultClient()\n): Promise<Activate7702DelegationResult> =>\n sendSponsoredTransaction(\n { authorization, calls: [], walletAccount },\n client\n );\n","import { getDefaultClient } from '@dynamic-labs-sdk/client/core';\n\nimport { addEIP6963Extension } from '../eip6963/addEIP6963Extension';\nimport { addWaasEvmExtension } from '../waas/addWaasEvmExtension';\n\n/**\n * Adds the EVM extension to the Dynamic client.\n *\n * This is a convenience function that adds both the EIP-6963 extension\n * and the Dynamic WaaS EVM extension, enabling support for all EVM wallet types\n * including standard wallets and embedded wallets managed by Dynamic's infrastructure.\n *\n * @example\n * ```ts\n * const client = createDynamicClient({ environmentId: 'env-123' });\n * addEvmExtension(client);\n * ```\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns void\n * @see isEvmWalletAccount\n * @see isEvmNetworkProvider\n * @notInstrumented\n */\nexport const addEvmExtension = (client = getDefaultClient()): void => {\n addEIP6963Extension(client);\n addWaasEvmExtension(client);\n};\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class EvmGasSponsorshipNotEnabledError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'evm_gas_sponsorship_not_enabled_error',\n docsUrl: null,\n name: 'EvmGasSponsorshipNotEnabledError',\n shortMessage: 'EVM gas sponsorship is not enabled for this project',\n });\n }\n}\n","import type { NetworkProvider } from '@dynamic-labs-sdk/client';\n\nimport type { EvmNetworkProvider } from '../EvmNetworkProvider';\n\n/**\n * Type guard function to check if a network provider is an EVM network provider.\n *\n * @example\n * ```ts\n * if (isEvmNetworkProvider(networkProvider)) {\n * const publicClient = networkProvider.getPublicClient();\n * }\n * ```\n *\n * @param networkProvider - The network provider to check.\n * @returns True if the network provider is an EVM network provider, false otherwise.\n * @see isEvmWalletAccount\n * @see addEvmExtension\n * @notInstrumented\n */\nexport const isEvmNetworkProvider = (\n networkProvider: NetworkProvider\n): networkProvider is EvmNetworkProvider => networkProvider.chain === 'EVM';\n","import type { ScreenTransactionResponse } from '@dynamic-labs/sdk-api-core';\nimport {\n InvalidParamError,\n ScreeningNotRequiredError,\n getDefaultClient,\n screenTransaction,\n} from '@dynamic-labs-sdk/client';\nimport { getWalletProviderFromWalletAccount } from '@dynamic-labs-sdk/client/core';\nimport { isWaasWalletAccount } from '@dynamic-labs-sdk/client/waas';\n\nimport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nimport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\n\ntype ScreenEvmTransactionsParams = {\n /** The network to record. Resolved from the wallet's active network when omitted. */\n networkId?: string;\n senderAddress?: string;\n /** Cancels the in-flight requests, e.g. `AbortSignal.timeout(2000)`. */\n signal?: AbortSignal;\n /** The destination of each transaction. */\n transactions: { to?: string }[];\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Screens EVM transactions' destinations against the environment's sanctions\n * providers and returns one verdict per transaction.\n *\n * @example\n * ```ts\n * if (isExternalWalletScreeningEnabled()) {\n * const results = await screenEvmTransactions({\n * transactions: [{ to }],\n * walletAccount,\n * });\n *\n * if (results.some(({ decision }) => decision === 'block')) return;\n * }\n *\n * await walletClient.sendTransaction(transaction);\n * ```\n *\n * @param params.transactions - The transactions about to be signed.\n * @param params.walletAccount - The wallet account that would be prompted to sign.\n * @param [params.networkId] - The network to record. Resolved from the wallet's active network when omitted.\n * @param [params.senderAddress] - The sender to screen alongside the destinations. Defaults to the wallet account's address.\n * @param [params.signal] - Cancels the in-flight requests, e.g. `AbortSignal.timeout(2000)`.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns One verdict per transaction, in the order the transactions were given.\n * @throws {ScreeningNotRequiredError} If the wallet account is a Dynamic embedded wallet, which signing already screens.\n * @throws {InvalidParamError} If the wallet account is not an EVM wallet account.\n * @see screenTransaction\n * @see isExternalWalletScreeningEnabled\n * @notInstrumented\n */\nexport const screenEvmTransactions = async (\n {\n networkId,\n senderAddress,\n signal,\n transactions,\n walletAccount,\n }: ScreenEvmTransactionsParams,\n client = getDefaultClient()\n): Promise<ScreenTransactionResponse[]> => {\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account is not an EVM wallet account');\n }\n\n // Refused rather than screened: the signing ceremony already screens these\n // server-side, so going ahead would bill the project for a redundant screen.\n if (isWaasWalletAccount({ walletAccount })) {\n throw new ScreeningNotRequiredError();\n }\n\n // Read from the provider rather than getActiveNetworkData: that filters\n // against the project's configured networks, so a wallet on an unconfigured\n // chain would record no network at all — and it asserts on projectSettings,\n // which would fail the screen for a reason unrelated to screening.\n const provider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n const activeNetworkId =\n networkId ?? (await provider.getActiveNetworkId()).networkId;\n\n return Promise.all(\n transactions.map(({ to }) =>\n screenTransaction(\n {\n chain: 'EVM',\n context: { evmTransaction: { to } },\n networkId: activeNetworkId,\n senderAddress: senderAddress ?? walletAccount.address,\n signal,\n },\n client\n )\n )\n );\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport { FeeEstimationFailedError } from '@dynamic-labs-sdk/client';\nimport { formatEther } from 'viem';\n\nimport type {\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../../transactionSimulation.types';\nimport { createPublicClientFromNetworkData } from '../../viem/createPublicClientFromNetworkData';\n\ntype CalculateEvmTransactionFeeParams = {\n nativeTokenPriceUsd?: number;\n networkData: NetworkData;\n transaction: EvmTransactionToSimulate;\n};\n\n/**\n * Calculates the estimated fee for an EVM transaction.\n *\n * This function estimates gas usage and calculates the total transaction fee\n * using either legacy gas pricing or EIP-1559 pricing. The fee is returned\n * in both native units (wei) and human-readable format (ETH).\n *\n * @example\n * ```ts\n * const feeData = await calculateEvmTransactionFee({\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * networkData,\n * nativeTokenPriceUsd: 3500,\n * });\n * ```\n *\n * @param params.transaction - The transaction to estimate fees for.\n * @param params.networkData - Network configuration for RPC connection.\n * @param params.nativeTokenPriceUsd - Optional USD price of the native token for fee conversion.\n * @returns Fee data including gas estimates and human-readable amounts.\n * @throws {FeeEstimationFailedError} If gas estimation or fee retrieval fails.\n * @see simulateEvmTransaction\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const calculateEvmTransactionFee = async ({\n transaction,\n networkData,\n nativeTokenPriceUsd,\n}: CalculateEvmTransactionFeeParams): Promise<EvmTransactionFeeData> => {\n try {\n const publicClient = createPublicClientFromNetworkData({ networkData });\n\n // Estimate gas for the transaction\n const gasEstimate = await publicClient.estimateGas({\n account: transaction.from,\n data: transaction.data,\n to: transaction.to,\n value: transaction.value,\n });\n\n // Try to get EIP-1559 fees first, fallback to legacy gas price\n let maxFeePerGas: bigint | undefined;\n let maxPriorityFeePerGas: bigint | undefined;\n let gasPrice: bigint | undefined;\n let nativeAmount: bigint;\n\n try {\n const feeData = await publicClient.estimateFeesPerGas();\n maxFeePerGas = feeData.maxFeePerGas;\n maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n\n // Calculate fee using EIP-1559 pricing\n nativeAmount = gasEstimate * maxFeePerGas;\n } catch {\n // Fallback to legacy gas pricing\n gasPrice = await publicClient.getGasPrice();\n nativeAmount = gasEstimate * gasPrice;\n }\n\n // Format to human-readable ETH\n const humanReadableAmount = formatEther(nativeAmount);\n\n // Calculate USD amount if price data available\n const usdAmount = nativeTokenPriceUsd\n ? (Number(humanReadableAmount) * nativeTokenPriceUsd).toFixed(2)\n : undefined;\n\n return {\n gasEstimate,\n gasPrice,\n humanReadableAmount,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nativeAmount,\n usdAmount,\n };\n } catch (error) {\n throw new FeeEstimationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to estimate EVM transaction fee',\n });\n }\n};\n","import {\n FeeEstimationFailedError,\n InvalidParamError,\n SimulationFailedError,\n getDefaultClient,\n getNetworksData,\n} from '@dynamic-labs-sdk/client';\nimport { createApiClient, getCore } from '@dynamic-labs-sdk/client/core';\nimport type { SimulateEVMTransactionRequest } from '@dynamic-labs/sdk-api-core';\n\nimport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nimport type {\n EvmSimulationResult,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nimport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nimport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\n\ntype SimulateEvmTransactionParams = {\n includeFees?: boolean;\n transaction: EvmTransactionToSimulate;\n walletAccount: EvmWalletAccount;\n};\n\n/**\n * Simulates an EVM transaction to preview its effects before execution.\n *\n * This function uses the Blockaid API to analyze the transaction and returns\n * information about asset transfers, security validation, and optionally fee estimates.\n * The simulation shows what will happen when the transaction is executed without\n * actually sending it to the blockchain.\n *\n * @example\n * ```ts\n * const result = await simulateEvmTransaction({\n * walletAccount: evmAccount,\n * transaction: { from: '0x...', to: '0x...', value: 1000000000000000000n, networkId: '1' },\n * includeFees: true,\n * });\n * ```\n *\n * @param params.walletAccount - The EVM wallet account that will sign the transaction.\n * @param params.transaction - The transaction to simulate, including network ID.\n * @param params.includeFees - Whether to calculate transaction fees (default: false).\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns Simulation result with asset diffs, security validation, and optional fee data.\n * @throws {InvalidParamError} If wallet account is not an EVM account or network ID is not configured.\n * @throws {SimulationFailedError} If the simulation API call fails.\n * @throws {FeeEstimationFailedError} If includeFees is true and fee calculation fails.\n * @see calculateEvmTransactionFee\n * @see isEvmWalletAccount\n * @notInstrumented\n */\nexport const simulateEvmTransaction = async (\n {\n walletAccount,\n transaction,\n includeFees = false,\n }: SimulateEvmTransactionParams,\n client = getDefaultClient()\n): Promise<EvmSimulationResult> => {\n // Validate wallet account type\n if (!isEvmWalletAccount(walletAccount)) {\n throw new InvalidParamError('Wallet account must be an EVM wallet account');\n }\n\n // Get network data for the specified network\n const networksData = getNetworksData(client);\n const networkData = networksData.find(\n (data) => data.networkId === transaction.networkId && data.chain === 'EVM'\n );\n\n if (!networkData) {\n throw new InvalidParamError(\n `Network with ID ${transaction.networkId} is not configured in project settings`\n );\n }\n\n try {\n // Create API client and call simulation endpoint\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const simulateEVMTransactionRequest = {\n chainId: transaction.networkId,\n data: transaction.data || '0x',\n from: transaction.from,\n to: transaction.to,\n } as SimulateEVMTransactionRequest;\n\n if (transaction.value !== undefined) {\n simulateEVMTransactionRequest.value = transaction.value.toString();\n }\n\n const response = await apiClient.simulateEVMTransaction({\n environmentId: core.environmentId,\n simulateEVMTransactionRequest,\n });\n\n // Calculate fees if requested\n let feeData: EvmSimulationResult['feeData'];\n\n if (includeFees) {\n feeData = await calculateEvmTransactionFee({\n nativeTokenPriceUsd: response.priceData?.nativeTokenUsdPrice,\n networkData,\n transaction,\n });\n }\n\n // Map API response to simulation result\n return {\n counterparties: response.counterparties,\n feeData,\n inAssets: response.inAssets || [],\n outAssets: response.outAssets || [],\n priceData: response.priceData,\n showTotalFiat: response.showTotalFiat,\n validation: response.validation\n ? {\n description: response.validation.description,\n reason: response.validation.reason,\n result: response.validation.result as\n | 'benign'\n | 'warning'\n | 'malicious',\n }\n : undefined,\n };\n } catch (error) {\n // Re-throw FeeEstimationFailedError as-is\n if (error instanceof FeeEstimationFailedError) {\n throw error;\n }\n\n throw new SimulationFailedError({\n cause: error instanceof Error ? error : undefined,\n message: 'Failed to simulate EVM transaction',\n });\n }\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { activate7702Delegation } from '../gasless/activate7702Delegation';\nexport { addEvmExtension } from '../addEvmExtension';\nexport { EvmGasSponsorshipNotEnabledError } from '../errors/EvmGasSponsorshipNotEnabledError';\nexport { RpcError } from '../errors/RpcError';\nexport { SponsorTransactionError } from '../errors/SponsorTransactionError';\nexport type { EvmNetworkProvider } from '../EvmNetworkProvider';\nexport type { EvmWalletAccount } from '../EvmWalletAccount.types';\nexport type { EvmWalletProvider } from '../EvmWalletProvider.types';\nexport type {\n SerializedAuthorization,\n SignedSponsoredTransaction,\n SponsoredTransactionCall,\n SponsoredTransactionStatus,\n SponsoredTransactionStatusResult,\n} from '../gasless/gasless.types';\nexport { generateSponsoredTransactionNonce } from '../gasless/generateSponsoredTransactionNonce';\nexport { getEVMSponsoredTransactionStatus } from '../gasless/getEVMSponsoredTransactionStatus';\nexport { is7702DelegationActive } from '../gasless/is7702DelegationActive';\nexport { isEvmGasSponsorshipEnabled } from '../gasless/isEvmGasSponsorshipEnabled';\nexport { isEvmNetworkProvider } from '../isEvmNetworkProvider';\nexport { screenEvmTransactions } from '../screenEvmTransactions';\nexport { simulateEvmTransaction } from '../simulateEvmTransaction';\nexport type {\n EvmSimulationResult,\n EvmTransactionFeeData,\n EvmTransactionToSimulate,\n} from '../transactionSimulation.types';\nexport { calculateEvmTransactionFee } from '../utils/calculateEvmTransactionFee';\nexport { isEvmWalletAccount } from '../utils/isEvmWalletAccount';\nexport { relaySponsoredTransaction } from '../gasless/relaySponsoredTransaction';\nexport { sendSponsoredTransaction } from '../gasless/sendSponsoredTransaction';\nexport { sign7702Authorization } from '../gasless/sign7702Authorization';\nexport { signSponsoredTransaction } from '../gasless/signSponsoredTransaction';\nexport { waitForSponsoredTransaction } from '../gasless/waitForSponsoredTransaction';\n"],"mappings":"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"}