@circle-fin/usdckit 0.21.1 → 0.23.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 (741) hide show
  1. package/dist/cjs/abis/EIP2612.d.ts +197 -0
  2. package/dist/cjs/abis/EIP2612.js +78 -0
  3. package/dist/cjs/actions/generateTransferLink.d.ts +3 -3
  4. package/dist/cjs/actions/generateTransferLink.js +3 -0
  5. package/dist/cjs/actions/generateTransferLink.test.js +17 -0
  6. package/dist/cjs/actions/getSwapExactInQuote.d.ts +3 -3
  7. package/dist/cjs/actions/getTokenBalance.d.ts +30 -0
  8. package/dist/cjs/actions/getTokenBalance.js +51 -0
  9. package/dist/cjs/actions/getTokenBalance.test.js +165 -0
  10. package/dist/cjs/actions/index.d.ts +75 -1
  11. package/dist/cjs/actions/index.js +19 -9
  12. package/dist/cjs/actions/index.test.js +6 -0
  13. package/dist/cjs/actions/permit.d.ts +19 -0
  14. package/dist/cjs/actions/permit.js +50 -0
  15. package/dist/cjs/actions/permit.test.js +652 -0
  16. package/dist/cjs/actions/signEIP2612Permit.d.ts +130 -0
  17. package/dist/cjs/actions/signEIP2612Permit.js +128 -0
  18. package/dist/cjs/actions/signEIP2612Permit.test.js +434 -0
  19. package/dist/cjs/actions/swapExactIn.d.ts +3 -3
  20. package/dist/cjs/actions/sweep.d.ts +3 -2
  21. package/dist/cjs/actions/sweep.js +5 -5
  22. package/dist/cjs/actions/sweep.test.js +13 -10
  23. package/dist/cjs/actions/transfer.d.ts +2 -2
  24. package/dist/cjs/actions/transfer.js +58 -30
  25. package/dist/cjs/actions/transfer.test.js +334 -135
  26. package/dist/cjs/chains/ARC_TESTNET.d.ts +180 -0
  27. package/dist/cjs/chains/ARC_TESTNET.js +57 -0
  28. package/dist/cjs/chains/index.d.ts +1 -0
  29. package/dist/cjs/chains/index.js +3 -1
  30. package/dist/cjs/chains/index.test.js +1 -0
  31. package/dist/cjs/chains.d.ts +2 -0
  32. package/dist/cjs/chains.js +12 -0
  33. package/dist/cjs/client.d.ts +35 -0
  34. package/dist/cjs/client.js +12 -0
  35. package/dist/cjs/extractChain.d.ts +288 -109
  36. package/dist/cjs/extractChain.test.js +1 -0
  37. package/dist/cjs/index.d.ts +4 -1
  38. package/dist/cjs/index.js +56 -10
  39. package/dist/cjs/index.test.js +1 -0
  40. package/dist/cjs/metadata.js +1 -1
  41. package/dist/cjs/onResponse.d.ts +1 -1
  42. package/dist/cjs/onResponse.js +3 -0
  43. package/dist/cjs/providers/circle-wallets/actions/createAccount.d.ts +181 -1
  44. package/dist/cjs/providers/circle-wallets/actions/createAccount.js +3 -0
  45. package/dist/cjs/providers/circle-wallets/actions/createContractExecutionTransaction.d.ts +9 -1
  46. package/dist/cjs/providers/circle-wallets/actions/createContractExecutionTransaction.js +8 -0
  47. package/dist/cjs/providers/circle-wallets/actions/createTransaction.d.ts +4 -1
  48. package/dist/cjs/providers/circle-wallets/actions/createTransaction.js +3 -0
  49. package/dist/cjs/providers/circle-wallets/actions/createWalletSet.d.ts +1 -1
  50. package/dist/cjs/providers/circle-wallets/actions/createWallets.d.ts +1 -1
  51. package/dist/cjs/providers/circle-wallets/actions/deriveWallet.d.ts +1 -1
  52. package/dist/cjs/providers/circle-wallets/actions/drip.d.ts +2 -1
  53. package/dist/cjs/providers/circle-wallets/actions/estimateContractExecutionFee.d.ts +7 -1
  54. package/dist/cjs/providers/circle-wallets/actions/estimateTransferFee.d.ts +8 -1
  55. package/dist/cjs/providers/circle-wallets/actions/estimateTransferFee.js +2 -3
  56. package/dist/cjs/providers/circle-wallets/actions/estimateTransferFee.test.js +1 -20
  57. package/dist/cjs/providers/circle-wallets/actions/getAccounts.d.ts +181 -1
  58. package/dist/cjs/providers/circle-wallets/actions/getNotificationSignature.d.ts +1 -1
  59. package/dist/cjs/providers/circle-wallets/actions/getTokenBalances.d.ts +4 -15
  60. package/dist/cjs/providers/circle-wallets/actions/getTransactionById.d.ts +1 -1
  61. package/dist/cjs/providers/circle-wallets/actions/getWallet.d.ts +1 -1
  62. package/dist/cjs/providers/circle-wallets/actions/getWalletTokenBalance.d.ts +1 -1
  63. package/dist/cjs/providers/circle-wallets/actions/getWalletsWithBalances.d.ts +1 -1
  64. package/dist/cjs/providers/circle-wallets/actions/importContract.d.ts +1 -1
  65. package/dist/cjs/providers/circle-wallets/actions/index.d.ts +0 -8
  66. package/dist/cjs/providers/circle-wallets/actions/index.js +0 -8
  67. package/dist/cjs/providers/circle-wallets/actions/index.test.js +0 -4
  68. package/dist/cjs/providers/circle-wallets/actions/listTransactions.d.ts +1 -1
  69. package/dist/cjs/providers/circle-wallets/actions/listWallets.d.ts +1 -1
  70. package/dist/cjs/providers/circle-wallets/actions/requestTestnetTokens.d.ts +1 -1
  71. package/dist/cjs/providers/circle-wallets/actions/signTransaction.d.ts +1 -1
  72. package/dist/cjs/providers/circle-wallets/actions/verifyNotification.d.ts +1 -1
  73. package/dist/cjs/providers/circle-wallets/actions/writeContract.d.ts +2 -1
  74. package/dist/cjs/providers/circle-wallets/actions/writeContract.js +2 -5
  75. package/dist/cjs/providers/circle-wallets/actions/writeContract.test.js +9 -18
  76. package/dist/cjs/providers/circle-wallets/index.d.ts +4906 -67
  77. package/dist/cjs/providers/circle-wallets/index.js +42 -3
  78. package/dist/cjs/providers/circle-wallets/index.test.js +52 -3
  79. package/dist/cjs/providers/circle-wallets/transports/http.d.ts +19 -1
  80. package/dist/cjs/providers/circle-wallets/transports/http.js +2 -2
  81. package/dist/cjs/providers/circle-wallets/transports/http.test.js +24 -4
  82. package/dist/cjs/providers/circle-wallets/transports/index.d.ts +114 -22
  83. package/dist/cjs/providers/circle-wallets/transports/index.js +255 -1
  84. package/dist/cjs/providers/circle-wallets/transports/index.test.js +1623 -183
  85. package/dist/cjs/providers/circle-wallets/utils/index.d.ts +1 -0
  86. package/dist/cjs/providers/circle-wallets/utils/index.js +27 -0
  87. package/dist/cjs/providers/circle-wallets/utils/toSolanaSigner.d.ts +4 -0
  88. package/dist/cjs/providers/circle-wallets/utils/toSolanaSigner.js +33 -0
  89. package/dist/cjs/providers/circle-wallets/utils/toSolanaSigner.test.js +129 -0
  90. package/dist/cjs/providers/cross-chain-transfer-protocol/actions/approve.d.ts +3 -3
  91. package/dist/cjs/providers/cross-chain-transfer-protocol/actions/approve.js +5 -8
  92. package/dist/cjs/providers/cross-chain-transfer-protocol/actions/bridge.d.ts +3 -3
  93. package/dist/cjs/providers/cross-chain-transfer-protocol/actions/bridge.js +0 -3
  94. package/dist/cjs/providers/cross-chain-transfer-protocol/actions/depositForBurn.d.ts +3 -3
  95. package/dist/cjs/providers/cross-chain-transfer-protocol/actions/depositForBurn.js +5 -9
  96. package/dist/cjs/providers/cross-chain-transfer-protocol/actions/index.js +6 -7
  97. package/dist/cjs/providers/cross-chain-transfer-protocol/actions/listMessages.d.ts +3 -3
  98. package/dist/cjs/providers/cross-chain-transfer-protocol/actions/receiveMessage.d.ts +3 -3
  99. package/dist/cjs/providers/cross-chain-transfer-protocol/actions/receiveMessage.js +5 -9
  100. package/dist/cjs/providers/cross-chain-transfer-protocol/actions/waitForAttestationMessage.d.ts +3 -2
  101. package/dist/cjs/providers/cross-chain-transfer-protocol/transports/http.d.ts +0 -1
  102. package/dist/cjs/providers/cross-chain-transfer-protocol/transports/index.d.ts +1 -1
  103. package/dist/cjs/providers/cross-chain-transfer-protocol/transports/index.test.js +2 -2
  104. package/dist/cjs/providers/solana/actions/getAccountInfo.d.ts +23 -0
  105. package/dist/cjs/providers/{circle-wallets/actions/signTypedData.js → solana/actions/getAccountInfo.js} +7 -5
  106. package/dist/cjs/providers/solana/actions/getAccountInfo.test.d.ts +1 -0
  107. package/dist/cjs/providers/solana/actions/getAccountInfo.test.js +39 -0
  108. package/dist/cjs/providers/solana/actions/getBalance.d.ts +15 -0
  109. package/dist/cjs/providers/solana/actions/getBalance.js +23 -0
  110. package/dist/cjs/providers/solana/actions/getBalance.test.d.ts +1 -0
  111. package/dist/cjs/providers/solana/actions/getBalance.test.js +35 -0
  112. package/dist/cjs/providers/solana/actions/getBlock.d.ts +60 -0
  113. package/dist/{esm/providers/circle-wallets/actions/signTypedData.js → cjs/providers/solana/actions/getBlock.js} +9 -4
  114. package/dist/cjs/providers/solana/actions/getBlock.test.d.ts +1 -0
  115. package/dist/cjs/providers/solana/actions/getBlock.test.js +34 -0
  116. package/dist/cjs/providers/solana/actions/getBlockCommitment.d.ts +13 -0
  117. package/dist/cjs/providers/solana/actions/getBlockCommitment.js +23 -0
  118. package/dist/cjs/providers/solana/actions/getBlockCommitment.test.d.ts +1 -0
  119. package/dist/cjs/providers/solana/actions/getBlockCommitment.test.js +36 -0
  120. package/dist/cjs/providers/solana/actions/getBlockHeight.d.ts +10 -0
  121. package/dist/cjs/providers/solana/actions/getBlockHeight.js +23 -0
  122. package/dist/cjs/providers/solana/actions/getBlockHeight.test.d.ts +1 -0
  123. package/dist/cjs/providers/solana/actions/getBlockHeight.test.js +33 -0
  124. package/dist/cjs/providers/solana/actions/getBlockProduction.d.ts +23 -0
  125. package/dist/cjs/providers/solana/actions/getBlockProduction.js +23 -0
  126. package/dist/cjs/providers/solana/actions/getBlockProduction.test.d.ts +1 -0
  127. package/dist/cjs/providers/solana/actions/getBlockProduction.test.js +40 -0
  128. package/dist/cjs/providers/solana/actions/getBlockTime.d.ts +10 -0
  129. package/dist/cjs/providers/solana/actions/getBlockTime.js +23 -0
  130. package/dist/cjs/providers/solana/actions/getBlockTime.test.d.ts +1 -0
  131. package/dist/cjs/providers/solana/actions/getBlockTime.test.js +33 -0
  132. package/dist/cjs/providers/solana/actions/getBlocks.d.ts +10 -0
  133. package/dist/cjs/providers/solana/actions/getBlocks.js +23 -0
  134. package/dist/cjs/providers/solana/actions/getBlocks.test.d.ts +1 -0
  135. package/dist/cjs/providers/solana/actions/getBlocks.test.js +35 -0
  136. package/dist/cjs/providers/solana/actions/getBlocksWithLimit.d.ts +10 -0
  137. package/dist/cjs/providers/solana/actions/getBlocksWithLimit.js +23 -0
  138. package/dist/cjs/providers/solana/actions/getBlocksWithLimit.test.d.ts +1 -0
  139. package/dist/cjs/providers/solana/actions/getBlocksWithLimit.test.js +34 -0
  140. package/dist/cjs/providers/solana/actions/getClusterName.d.ts +8 -0
  141. package/dist/cjs/providers/solana/actions/getClusterName.js +25 -0
  142. package/dist/cjs/providers/solana/actions/getClusterName.test.d.ts +1 -0
  143. package/dist/cjs/providers/solana/actions/getClusterName.test.js +32 -0
  144. package/dist/cjs/providers/solana/actions/getClusterNodes.d.ts +25 -0
  145. package/dist/cjs/providers/solana/actions/getClusterNodes.js +23 -0
  146. package/dist/cjs/providers/solana/actions/getClusterNodes.test.d.ts +1 -0
  147. package/dist/cjs/providers/solana/actions/getClusterNodes.test.js +32 -0
  148. package/dist/cjs/providers/solana/actions/getEpochInfo.d.ts +17 -0
  149. package/dist/cjs/providers/solana/actions/getEpochInfo.js +23 -0
  150. package/dist/cjs/providers/solana/actions/getEpochInfo.test.d.ts +1 -0
  151. package/dist/cjs/providers/solana/actions/getEpochInfo.test.js +39 -0
  152. package/dist/cjs/providers/solana/actions/getEpochSchedule.d.ts +16 -0
  153. package/dist/cjs/providers/solana/actions/getEpochSchedule.js +23 -0
  154. package/dist/cjs/providers/solana/actions/getEpochSchedule.test.d.ts +1 -0
  155. package/dist/cjs/providers/solana/actions/getEpochSchedule.test.js +32 -0
  156. package/dist/cjs/providers/solana/actions/getFeeForMessage.d.ts +15 -0
  157. package/dist/cjs/providers/solana/actions/getFeeForMessage.js +23 -0
  158. package/dist/cjs/providers/solana/actions/getFeeForMessage.test.d.ts +1 -0
  159. package/dist/cjs/providers/solana/actions/getFeeForMessage.test.js +33 -0
  160. package/dist/cjs/providers/solana/actions/getFirstAvailableBlock.d.ts +10 -0
  161. package/dist/cjs/providers/solana/actions/getFirstAvailableBlock.js +23 -0
  162. package/dist/cjs/providers/solana/actions/getFirstAvailableBlock.test.d.ts +1 -0
  163. package/dist/cjs/providers/solana/actions/getFirstAvailableBlock.test.js +32 -0
  164. package/dist/cjs/providers/solana/actions/getGenesisHash.d.ts +10 -0
  165. package/dist/cjs/providers/solana/actions/getGenesisHash.js +23 -0
  166. package/dist/cjs/providers/solana/actions/getGenesisHash.test.d.ts +1 -0
  167. package/dist/cjs/providers/solana/actions/getGenesisHash.test.js +32 -0
  168. package/dist/cjs/providers/solana/actions/getHealth.d.ts +10 -0
  169. package/dist/cjs/providers/solana/actions/getHealth.js +23 -0
  170. package/dist/cjs/providers/solana/actions/getHealth.test.d.ts +1 -0
  171. package/dist/cjs/providers/solana/actions/getHealth.test.js +32 -0
  172. package/dist/cjs/providers/solana/actions/getHighestSnapshotSlot.d.ts +13 -0
  173. package/dist/cjs/providers/solana/actions/getHighestSnapshotSlot.js +23 -0
  174. package/dist/cjs/providers/solana/actions/getHighestSnapshotSlot.test.d.ts +1 -0
  175. package/dist/cjs/providers/solana/actions/getHighestSnapshotSlot.test.js +32 -0
  176. package/dist/cjs/providers/solana/actions/getIdentity.d.ts +12 -0
  177. package/dist/cjs/providers/solana/actions/getIdentity.js +23 -0
  178. package/dist/cjs/providers/solana/actions/getIdentity.test.d.ts +1 -0
  179. package/dist/cjs/providers/solana/actions/getIdentity.test.js +32 -0
  180. package/dist/cjs/providers/solana/actions/getInflationGovernor.d.ts +16 -0
  181. package/dist/cjs/providers/solana/actions/getInflationGovernor.js +23 -0
  182. package/dist/cjs/providers/solana/actions/getInflationGovernor.test.d.ts +1 -0
  183. package/dist/cjs/providers/solana/actions/getInflationGovernor.test.js +33 -0
  184. package/dist/cjs/providers/solana/actions/getInflationRate.d.ts +15 -0
  185. package/dist/cjs/providers/solana/actions/getInflationRate.js +23 -0
  186. package/dist/cjs/providers/solana/actions/getInflationRate.test.d.ts +1 -0
  187. package/dist/cjs/providers/solana/actions/getInflationRate.test.js +39 -0
  188. package/dist/cjs/providers/solana/actions/getInflationReward.d.ts +16 -0
  189. package/dist/cjs/providers/solana/actions/getInflationReward.js +23 -0
  190. package/dist/cjs/providers/solana/actions/getInflationReward.test.d.ts +1 -0
  191. package/dist/cjs/providers/solana/actions/getInflationReward.test.js +35 -0
  192. package/dist/cjs/providers/solana/actions/getLargestAccounts.d.ts +18 -0
  193. package/dist/cjs/providers/solana/actions/getLargestAccounts.js +23 -0
  194. package/dist/cjs/providers/solana/actions/getLargestAccounts.test.d.ts +1 -0
  195. package/dist/cjs/providers/solana/actions/getLargestAccounts.test.js +33 -0
  196. package/dist/cjs/providers/solana/actions/getLatestBlockhash.d.ts +18 -0
  197. package/dist/cjs/providers/solana/actions/getLatestBlockhash.js +23 -0
  198. package/dist/cjs/providers/solana/actions/getLatestBlockhash.test.d.ts +1 -0
  199. package/dist/cjs/providers/solana/actions/getLatestBlockhash.test.js +33 -0
  200. package/dist/cjs/providers/solana/actions/getLeaderSchedule.d.ts +12 -0
  201. package/dist/cjs/providers/solana/actions/getLeaderSchedule.js +23 -0
  202. package/dist/cjs/providers/solana/actions/getLeaderSchedule.test.d.ts +1 -0
  203. package/dist/cjs/providers/solana/actions/getLeaderSchedule.test.js +34 -0
  204. package/dist/cjs/providers/solana/actions/getMaxRetransmitSlot.d.ts +10 -0
  205. package/dist/cjs/providers/solana/actions/getMaxRetransmitSlot.js +23 -0
  206. package/dist/cjs/providers/solana/actions/getMaxRetransmitSlot.test.d.ts +1 -0
  207. package/dist/cjs/providers/solana/actions/getMaxRetransmitSlot.test.js +32 -0
  208. package/dist/cjs/providers/solana/actions/getMaxShredInsertSlot.d.ts +10 -0
  209. package/dist/cjs/providers/solana/actions/getMaxShredInsertSlot.js +23 -0
  210. package/dist/cjs/providers/solana/actions/getMaxShredInsertSlot.test.d.ts +1 -0
  211. package/dist/cjs/providers/solana/actions/getMaxShredInsertSlot.test.js +32 -0
  212. package/dist/cjs/providers/solana/actions/getMinimumBalanceForRentExemption.d.ts +10 -0
  213. package/dist/cjs/providers/solana/actions/getMinimumBalanceForRentExemption.js +23 -0
  214. package/dist/cjs/providers/solana/actions/getMinimumBalanceForRentExemption.test.d.ts +1 -0
  215. package/dist/cjs/providers/solana/actions/getMinimumBalanceForRentExemption.test.js +34 -0
  216. package/dist/cjs/providers/solana/actions/getMultipleAccounts.d.ts +23 -0
  217. package/dist/cjs/providers/solana/actions/getMultipleAccounts.js +23 -0
  218. package/dist/cjs/providers/solana/actions/getMultipleAccounts.test.d.ts +1 -0
  219. package/dist/cjs/providers/solana/actions/getMultipleAccounts.test.js +43 -0
  220. package/dist/cjs/providers/solana/actions/getProgramAccounts.d.ts +21 -0
  221. package/dist/cjs/providers/solana/actions/getProgramAccounts.js +23 -0
  222. package/dist/cjs/providers/solana/actions/getProgramAccounts.test.d.ts +1 -0
  223. package/dist/cjs/providers/solana/actions/getProgramAccounts.test.js +39 -0
  224. package/dist/cjs/providers/solana/actions/getRecentPerformanceSamples.d.ts +16 -0
  225. package/dist/cjs/providers/solana/actions/getRecentPerformanceSamples.js +23 -0
  226. package/dist/cjs/providers/solana/actions/getRecentPerformanceSamples.test.d.ts +1 -0
  227. package/dist/cjs/providers/solana/actions/getRecentPerformanceSamples.test.js +33 -0
  228. package/dist/cjs/providers/solana/actions/getRecentPrioritizationFees.d.ts +13 -0
  229. package/dist/cjs/providers/solana/actions/getRecentPrioritizationFees.js +23 -0
  230. package/dist/cjs/providers/solana/actions/getRecentPrioritizationFees.test.d.ts +1 -0
  231. package/dist/cjs/providers/solana/actions/getRecentPrioritizationFees.test.js +34 -0
  232. package/dist/cjs/providers/solana/actions/getSignatureStatuses.d.ts +25 -0
  233. package/dist/cjs/providers/solana/actions/getSignatureStatuses.js +23 -0
  234. package/dist/cjs/providers/solana/actions/getSignatureStatuses.test.d.ts +1 -0
  235. package/dist/cjs/providers/solana/actions/getSignatureStatuses.test.js +35 -0
  236. package/dist/cjs/providers/solana/actions/getSignaturesForAddress.d.ts +17 -0
  237. package/dist/cjs/providers/solana/actions/getSignaturesForAddress.js +23 -0
  238. package/dist/cjs/providers/solana/actions/getSignaturesForAddress.test.d.ts +1 -0
  239. package/dist/cjs/providers/solana/actions/getSignaturesForAddress.test.js +46 -0
  240. package/dist/cjs/providers/solana/actions/getSlot.d.ts +10 -0
  241. package/dist/cjs/providers/solana/actions/getSlot.js +23 -0
  242. package/dist/cjs/providers/solana/actions/getSlot.test.d.ts +1 -0
  243. package/dist/cjs/providers/solana/actions/getSlot.test.js +33 -0
  244. package/dist/cjs/providers/solana/actions/getSlotLeader.d.ts +10 -0
  245. package/dist/cjs/providers/solana/actions/getSlotLeader.js +23 -0
  246. package/dist/cjs/providers/solana/actions/getSlotLeader.test.d.ts +1 -0
  247. package/dist/cjs/providers/solana/actions/getSlotLeader.test.js +33 -0
  248. package/dist/cjs/providers/solana/actions/getSlotLeaders.d.ts +10 -0
  249. package/dist/cjs/providers/solana/actions/getSlotLeaders.js +23 -0
  250. package/dist/cjs/providers/solana/actions/getSlotLeaders.test.d.ts +1 -0
  251. package/dist/cjs/providers/solana/actions/getSlotLeaders.test.js +34 -0
  252. package/dist/cjs/providers/solana/actions/getSupply.d.ts +21 -0
  253. package/dist/cjs/providers/solana/actions/getSupply.js +23 -0
  254. package/dist/cjs/providers/solana/actions/getSupply.test.d.ts +1 -0
  255. package/dist/cjs/providers/solana/actions/getSupply.test.js +33 -0
  256. package/dist/cjs/providers/solana/actions/getTokenAccountBalance.d.ts +20 -0
  257. package/dist/cjs/providers/solana/actions/getTokenAccountBalance.js +23 -0
  258. package/dist/cjs/providers/solana/actions/getTokenAccountBalance.test.d.ts +1 -0
  259. package/dist/cjs/providers/solana/actions/getTokenAccountBalance.test.js +34 -0
  260. package/dist/cjs/providers/solana/actions/getTokenAccountsByDelegate.d.ts +26 -0
  261. package/dist/cjs/providers/solana/actions/getTokenAccountsByDelegate.js +23 -0
  262. package/dist/cjs/providers/solana/actions/getTokenAccountsByDelegate.test.d.ts +1 -0
  263. package/dist/cjs/providers/solana/actions/getTokenAccountsByDelegate.test.js +35 -0
  264. package/dist/cjs/providers/solana/actions/getTokenAccountsByOwner.d.ts +26 -0
  265. package/dist/cjs/providers/solana/actions/getTokenAccountsByOwner.js +23 -0
  266. package/dist/cjs/providers/solana/actions/getTokenAccountsByOwner.test.d.ts +1 -0
  267. package/dist/cjs/providers/solana/actions/getTokenAccountsByOwner.test.js +39 -0
  268. package/dist/cjs/providers/solana/actions/getTokenLargestAccounts.d.ts +22 -0
  269. package/dist/cjs/providers/solana/actions/getTokenLargestAccounts.js +23 -0
  270. package/dist/cjs/providers/solana/actions/getTokenLargestAccounts.test.d.ts +1 -0
  271. package/dist/cjs/providers/solana/actions/getTokenLargestAccounts.test.js +34 -0
  272. package/dist/cjs/providers/solana/actions/getTokenSupply.d.ts +20 -0
  273. package/dist/cjs/providers/solana/actions/getTokenSupply.js +23 -0
  274. package/dist/cjs/providers/solana/actions/getTokenSupply.test.d.ts +1 -0
  275. package/dist/cjs/providers/solana/actions/getTokenSupply.test.js +34 -0
  276. package/dist/cjs/providers/solana/actions/getTransaction.d.ts +80 -0
  277. package/dist/cjs/providers/solana/actions/getTransaction.js +23 -0
  278. package/dist/cjs/providers/solana/actions/getTransaction.test.d.ts +1 -0
  279. package/dist/cjs/providers/solana/actions/getTransaction.test.js +34 -0
  280. package/dist/cjs/providers/solana/actions/getTransactionCount.d.ts +10 -0
  281. package/dist/cjs/providers/solana/actions/getTransactionCount.js +23 -0
  282. package/dist/cjs/providers/solana/actions/getTransactionCount.test.d.ts +1 -0
  283. package/dist/cjs/providers/solana/actions/getTransactionCount.test.js +33 -0
  284. package/dist/cjs/providers/solana/actions/getVersion.d.ts +13 -0
  285. package/dist/cjs/providers/solana/actions/getVersion.js +23 -0
  286. package/dist/cjs/providers/solana/actions/getVersion.test.d.ts +1 -0
  287. package/dist/cjs/providers/solana/actions/getVersion.test.js +35 -0
  288. package/dist/cjs/providers/solana/actions/getVoteAccounts.d.ts +31 -0
  289. package/dist/cjs/providers/solana/actions/getVoteAccounts.js +23 -0
  290. package/dist/cjs/providers/solana/actions/getVoteAccounts.test.d.ts +1 -0
  291. package/dist/cjs/providers/solana/actions/getVoteAccounts.test.js +33 -0
  292. package/dist/cjs/providers/solana/actions/index.d.ts +216 -0
  293. package/dist/cjs/providers/solana/actions/index.js +190 -0
  294. package/dist/cjs/providers/solana/actions/index.test.d.ts +1 -0
  295. package/dist/cjs/providers/solana/actions/index.test.js +78 -0
  296. package/dist/cjs/providers/solana/actions/isBlockhashValid.d.ts +15 -0
  297. package/dist/cjs/providers/solana/actions/isBlockhashValid.js +23 -0
  298. package/dist/cjs/providers/solana/actions/isBlockhashValid.test.d.ts +1 -0
  299. package/dist/cjs/providers/solana/actions/isBlockhashValid.test.js +34 -0
  300. package/dist/cjs/providers/solana/actions/minimumLedgerSlot.d.ts +10 -0
  301. package/dist/cjs/providers/solana/actions/minimumLedgerSlot.js +23 -0
  302. package/dist/cjs/providers/solana/actions/minimumLedgerSlot.test.d.ts +1 -0
  303. package/dist/cjs/providers/solana/actions/minimumLedgerSlot.test.js +32 -0
  304. package/dist/cjs/providers/solana/actions/sendTransaction.d.ts +13 -0
  305. package/dist/cjs/providers/solana/actions/sendTransaction.js +30 -0
  306. package/dist/cjs/providers/solana/actions/sendTransaction.test.d.ts +1 -0
  307. package/dist/cjs/providers/solana/actions/sendTransaction.test.js +82 -0
  308. package/dist/cjs/providers/solana/actions/simulateTransaction.d.ts +28 -0
  309. package/dist/cjs/providers/solana/actions/simulateTransaction.js +30 -0
  310. package/dist/cjs/providers/solana/actions/simulateTransaction.test.d.ts +1 -0
  311. package/dist/cjs/providers/solana/actions/simulateTransaction.test.js +82 -0
  312. package/dist/cjs/providers/solana/actions/switchCluster.d.ts +10 -0
  313. package/dist/cjs/providers/solana/actions/switchCluster.js +26 -0
  314. package/dist/cjs/providers/solana/actions/switchCluster.test.d.ts +1 -0
  315. package/dist/cjs/providers/solana/actions/switchCluster.test.js +33 -0
  316. package/dist/cjs/providers/solana/constants.d.ts +6 -0
  317. package/dist/cjs/providers/solana/constants.js +23 -0
  318. package/dist/cjs/providers/solana/index.d.ts +101 -0
  319. package/dist/cjs/providers/solana/index.js +39 -0
  320. package/dist/cjs/providers/solana/index.test.d.ts +1 -0
  321. package/dist/cjs/providers/solana/index.test.js +201 -0
  322. package/dist/cjs/providers/solana/transports/http.d.ts +8 -0
  323. package/dist/cjs/providers/solana/transports/http.js +20 -0
  324. package/dist/cjs/providers/solana/transports/http.test.d.ts +1 -0
  325. package/dist/cjs/providers/solana/transports/http.test.js +88 -0
  326. package/dist/cjs/providers/solana/transports/index.d.ts +734 -0
  327. package/dist/cjs/providers/solana/transports/index.js +205 -0
  328. package/dist/cjs/providers/solana/transports/index.test.d.ts +1 -0
  329. package/dist/cjs/providers/solana/transports/index.test.js +307 -0
  330. package/dist/cjs/providers/solana/utils/codecs.d.ts +4 -0
  331. package/dist/cjs/providers/solana/utils/codecs.js +20 -0
  332. package/dist/cjs/providers/solana/utils/index.d.ts +2 -0
  333. package/dist/cjs/providers/solana/utils/index.js +30 -0
  334. package/dist/cjs/providers/solana/utils/index.test.d.ts +1 -0
  335. package/dist/cjs/providers/solana/utils/index.test.js +53 -0
  336. package/dist/cjs/providers/solana/utils/toBase64EncodedWireTransaction.d.ts +26 -0
  337. package/dist/cjs/providers/solana/utils/toBase64EncodedWireTransaction.js +42 -0
  338. package/dist/cjs/providers/solana/utils/toBase64EncodedWireTransaction.test.d.ts +1 -0
  339. package/dist/cjs/providers/solana/utils/toBase64EncodedWireTransaction.test.js +108 -0
  340. package/dist/cjs/providers/uniswap/actions/exactInputSingle.d.ts +3 -3
  341. package/dist/cjs/providers/uniswap/actions/exactInputSingle.js +4 -4
  342. package/dist/cjs/providers/uniswap/actions/getPool.d.ts +3 -2
  343. package/dist/cjs/providers/uniswap/actions/quoteExactInputSingle.d.ts +3 -2
  344. package/dist/cjs/types.d.ts +8 -16
  345. package/dist/cjs/types.js +0 -10
  346. package/dist/cjs/utils/createConfig.d.ts +36 -0
  347. package/dist/cjs/utils/createConfig.js +51 -0
  348. package/dist/cjs/utils/createConfig.test.d.ts +1 -0
  349. package/dist/cjs/utils/createConfig.test.js +66 -0
  350. package/dist/cjs/utils/createCustomWalletClient.d.ts +46 -0
  351. package/dist/cjs/utils/createCustomWalletClient.js +114 -0
  352. package/dist/cjs/utils/createCustomWalletClient.test.d.ts +1 -0
  353. package/dist/cjs/utils/createCustomWalletClient.test.js +100 -0
  354. package/dist/cjs/utils/getChainContractByAddress.d.ts +2 -1
  355. package/dist/cjs/utils/getClient.d.ts +458 -0
  356. package/dist/cjs/utils/getClient.js +25 -0
  357. package/dist/cjs/utils/getClient.test.d.ts +1 -0
  358. package/dist/cjs/utils/getClient.test.js +46 -0
  359. package/dist/cjs/utils/index.d.ts +1 -0
  360. package/dist/cjs/utils/index.js +1 -0
  361. package/dist/cjs/utils/index.test.js +2 -0
  362. package/dist/esm/abis/EIP2612.d.ts +197 -0
  363. package/dist/esm/abis/EIP2612.js +76 -0
  364. package/dist/esm/actions/generateTransferLink.d.ts +3 -3
  365. package/dist/esm/actions/generateTransferLink.js +3 -0
  366. package/dist/esm/actions/generateTransferLink.test.js +17 -0
  367. package/dist/esm/actions/getSwapExactInQuote.d.ts +3 -3
  368. package/dist/esm/actions/getTokenBalance.d.ts +30 -0
  369. package/dist/esm/actions/getTokenBalance.js +48 -0
  370. package/dist/esm/actions/getTokenBalance.test.d.ts +1 -0
  371. package/dist/esm/actions/getTokenBalance.test.js +163 -0
  372. package/dist/esm/actions/index.d.ts +75 -1
  373. package/dist/esm/actions/index.js +19 -9
  374. package/dist/esm/actions/index.test.js +6 -0
  375. package/dist/esm/actions/permit.d.ts +19 -0
  376. package/dist/esm/actions/permit.js +44 -0
  377. package/dist/esm/actions/permit.test.d.ts +1 -0
  378. package/dist/esm/actions/permit.test.js +650 -0
  379. package/dist/esm/actions/signEIP2612Permit.d.ts +130 -0
  380. package/dist/esm/actions/signEIP2612Permit.js +122 -0
  381. package/dist/esm/actions/signEIP2612Permit.test.d.ts +1 -0
  382. package/dist/esm/actions/signEIP2612Permit.test.js +432 -0
  383. package/dist/esm/actions/swapExactIn.d.ts +3 -3
  384. package/dist/esm/actions/sweep.d.ts +3 -2
  385. package/dist/esm/actions/sweep.js +5 -5
  386. package/dist/esm/actions/sweep.test.js +13 -10
  387. package/dist/esm/actions/transfer.d.ts +2 -2
  388. package/dist/esm/actions/transfer.js +60 -32
  389. package/dist/esm/actions/transfer.test.js +334 -135
  390. package/dist/esm/chains/ARC_TESTNET.d.ts +180 -0
  391. package/dist/esm/chains/ARC_TESTNET.js +54 -0
  392. package/dist/esm/chains/index.d.ts +1 -0
  393. package/dist/esm/chains/index.js +1 -0
  394. package/dist/esm/chains/index.test.js +1 -0
  395. package/dist/esm/chains.d.ts +2 -0
  396. package/dist/esm/chains.js +11 -0
  397. package/dist/esm/client.d.ts +35 -0
  398. package/dist/esm/client.js +11 -0
  399. package/dist/esm/extractChain.d.ts +288 -109
  400. package/dist/esm/extractChain.test.js +2 -1
  401. package/dist/esm/index.d.ts +4 -1
  402. package/dist/esm/index.js +31 -7
  403. package/dist/esm/index.test.js +1 -0
  404. package/dist/esm/metadata.js +1 -1
  405. package/dist/esm/onResponse.d.ts +1 -1
  406. package/dist/esm/onResponse.js +3 -0
  407. package/dist/esm/providers/circle-wallets/actions/createAccount.d.ts +181 -1
  408. package/dist/esm/providers/circle-wallets/actions/createAccount.js +3 -0
  409. package/dist/esm/providers/circle-wallets/actions/createContractExecutionTransaction.d.ts +9 -1
  410. package/dist/esm/providers/circle-wallets/actions/createContractExecutionTransaction.js +8 -0
  411. package/dist/esm/providers/circle-wallets/actions/createTransaction.d.ts +4 -1
  412. package/dist/esm/providers/circle-wallets/actions/createTransaction.js +3 -0
  413. package/dist/esm/providers/circle-wallets/actions/createWalletSet.d.ts +1 -1
  414. package/dist/esm/providers/circle-wallets/actions/createWallets.d.ts +1 -1
  415. package/dist/esm/providers/circle-wallets/actions/deriveWallet.d.ts +1 -1
  416. package/dist/esm/providers/circle-wallets/actions/drip.d.ts +2 -1
  417. package/dist/esm/providers/circle-wallets/actions/estimateContractExecutionFee.d.ts +7 -1
  418. package/dist/esm/providers/circle-wallets/actions/estimateTransferFee.d.ts +8 -1
  419. package/dist/esm/providers/circle-wallets/actions/estimateTransferFee.js +2 -3
  420. package/dist/esm/providers/circle-wallets/actions/estimateTransferFee.test.js +1 -20
  421. package/dist/esm/providers/circle-wallets/actions/getAccounts.d.ts +181 -1
  422. package/dist/esm/providers/circle-wallets/actions/getNotificationSignature.d.ts +1 -1
  423. package/dist/esm/providers/circle-wallets/actions/getTokenBalances.d.ts +4 -15
  424. package/dist/esm/providers/circle-wallets/actions/getTransactionById.d.ts +1 -1
  425. package/dist/esm/providers/circle-wallets/actions/getWallet.d.ts +1 -1
  426. package/dist/esm/providers/circle-wallets/actions/getWalletTokenBalance.d.ts +1 -1
  427. package/dist/esm/providers/circle-wallets/actions/getWalletsWithBalances.d.ts +1 -1
  428. package/dist/esm/providers/circle-wallets/actions/importContract.d.ts +1 -1
  429. package/dist/esm/providers/circle-wallets/actions/index.d.ts +0 -8
  430. package/dist/esm/providers/circle-wallets/actions/index.js +0 -8
  431. package/dist/esm/providers/circle-wallets/actions/index.test.js +0 -4
  432. package/dist/esm/providers/circle-wallets/actions/listTransactions.d.ts +1 -1
  433. package/dist/esm/providers/circle-wallets/actions/listWallets.d.ts +1 -1
  434. package/dist/esm/providers/circle-wallets/actions/requestTestnetTokens.d.ts +1 -1
  435. package/dist/esm/providers/circle-wallets/actions/signTransaction.d.ts +1 -1
  436. package/dist/esm/providers/circle-wallets/actions/verifyNotification.d.ts +1 -1
  437. package/dist/esm/providers/circle-wallets/actions/writeContract.d.ts +2 -1
  438. package/dist/esm/providers/circle-wallets/actions/writeContract.js +2 -5
  439. package/dist/esm/providers/circle-wallets/actions/writeContract.test.js +9 -18
  440. package/dist/esm/providers/circle-wallets/index.d.ts +4906 -67
  441. package/dist/esm/providers/circle-wallets/index.js +38 -1
  442. package/dist/esm/providers/circle-wallets/index.test.js +51 -2
  443. package/dist/esm/providers/circle-wallets/transports/http.d.ts +19 -1
  444. package/dist/esm/providers/circle-wallets/transports/http.js +3 -3
  445. package/dist/esm/providers/circle-wallets/transports/http.test.js +24 -4
  446. package/dist/esm/providers/circle-wallets/transports/index.d.ts +114 -22
  447. package/dist/esm/providers/circle-wallets/transports/index.js +257 -3
  448. package/dist/esm/providers/circle-wallets/transports/index.test.js +1617 -177
  449. package/dist/esm/providers/circle-wallets/utils/index.d.ts +1 -0
  450. package/dist/esm/providers/circle-wallets/utils/index.js +11 -0
  451. package/dist/esm/providers/circle-wallets/utils/toSolanaSigner.d.ts +4 -0
  452. package/dist/esm/providers/circle-wallets/utils/toSolanaSigner.js +30 -0
  453. package/dist/esm/providers/circle-wallets/utils/toSolanaSigner.test.d.ts +1 -0
  454. package/dist/esm/providers/circle-wallets/utils/toSolanaSigner.test.js +127 -0
  455. package/dist/esm/providers/cross-chain-transfer-protocol/actions/approve.d.ts +3 -3
  456. package/dist/esm/providers/cross-chain-transfer-protocol/actions/approve.js +7 -10
  457. package/dist/esm/providers/cross-chain-transfer-protocol/actions/bridge.d.ts +3 -3
  458. package/dist/esm/providers/cross-chain-transfer-protocol/actions/bridge.js +0 -3
  459. package/dist/esm/providers/cross-chain-transfer-protocol/actions/depositForBurn.d.ts +3 -3
  460. package/dist/esm/providers/cross-chain-transfer-protocol/actions/depositForBurn.js +6 -10
  461. package/dist/esm/providers/cross-chain-transfer-protocol/actions/index.js +6 -7
  462. package/dist/esm/providers/cross-chain-transfer-protocol/actions/listMessages.d.ts +3 -3
  463. package/dist/esm/providers/cross-chain-transfer-protocol/actions/receiveMessage.d.ts +3 -3
  464. package/dist/esm/providers/cross-chain-transfer-protocol/actions/receiveMessage.js +6 -10
  465. package/dist/esm/providers/cross-chain-transfer-protocol/actions/waitForAttestationMessage.d.ts +3 -2
  466. package/dist/esm/providers/cross-chain-transfer-protocol/transports/http.d.ts +0 -1
  467. package/dist/esm/providers/cross-chain-transfer-protocol/transports/index.d.ts +1 -1
  468. package/dist/esm/providers/cross-chain-transfer-protocol/transports/index.test.js +2 -2
  469. package/dist/esm/providers/solana/actions/getAccountInfo.d.ts +23 -0
  470. package/dist/esm/providers/solana/actions/getAccountInfo.js +20 -0
  471. package/dist/esm/providers/solana/actions/getAccountInfo.test.d.ts +1 -0
  472. package/dist/esm/providers/solana/actions/getAccountInfo.test.js +37 -0
  473. package/dist/esm/providers/solana/actions/getBalance.d.ts +15 -0
  474. package/dist/esm/providers/solana/actions/getBalance.js +20 -0
  475. package/dist/esm/providers/solana/actions/getBalance.test.d.ts +1 -0
  476. package/dist/esm/providers/solana/actions/getBalance.test.js +33 -0
  477. package/dist/esm/providers/solana/actions/getBlock.d.ts +60 -0
  478. package/dist/esm/providers/solana/actions/getBlock.js +20 -0
  479. package/dist/esm/providers/solana/actions/getBlock.test.d.ts +1 -0
  480. package/dist/esm/providers/solana/actions/getBlock.test.js +32 -0
  481. package/dist/esm/providers/solana/actions/getBlockCommitment.d.ts +13 -0
  482. package/dist/esm/providers/solana/actions/getBlockCommitment.js +20 -0
  483. package/dist/esm/providers/solana/actions/getBlockCommitment.test.d.ts +1 -0
  484. package/dist/esm/providers/solana/actions/getBlockCommitment.test.js +34 -0
  485. package/dist/esm/providers/solana/actions/getBlockHeight.d.ts +10 -0
  486. package/dist/esm/providers/solana/actions/getBlockHeight.js +20 -0
  487. package/dist/esm/providers/solana/actions/getBlockHeight.test.d.ts +1 -0
  488. package/dist/esm/providers/solana/actions/getBlockHeight.test.js +31 -0
  489. package/dist/esm/providers/solana/actions/getBlockProduction.d.ts +23 -0
  490. package/dist/esm/providers/solana/actions/getBlockProduction.js +20 -0
  491. package/dist/esm/providers/solana/actions/getBlockProduction.test.d.ts +1 -0
  492. package/dist/esm/providers/solana/actions/getBlockProduction.test.js +38 -0
  493. package/dist/esm/providers/solana/actions/getBlockTime.d.ts +10 -0
  494. package/dist/esm/providers/solana/actions/getBlockTime.js +20 -0
  495. package/dist/esm/providers/solana/actions/getBlockTime.test.d.ts +1 -0
  496. package/dist/esm/providers/solana/actions/getBlockTime.test.js +31 -0
  497. package/dist/esm/providers/solana/actions/getBlocks.d.ts +10 -0
  498. package/dist/esm/providers/solana/actions/getBlocks.js +20 -0
  499. package/dist/esm/providers/solana/actions/getBlocks.test.d.ts +1 -0
  500. package/dist/esm/providers/solana/actions/getBlocks.test.js +33 -0
  501. package/dist/esm/providers/solana/actions/getBlocksWithLimit.d.ts +10 -0
  502. package/dist/esm/providers/solana/actions/getBlocksWithLimit.js +20 -0
  503. package/dist/esm/providers/solana/actions/getBlocksWithLimit.test.d.ts +1 -0
  504. package/dist/esm/providers/solana/actions/getBlocksWithLimit.test.js +32 -0
  505. package/dist/esm/providers/solana/actions/getClusterName.d.ts +8 -0
  506. package/dist/esm/providers/solana/actions/getClusterName.js +22 -0
  507. package/dist/esm/providers/solana/actions/getClusterName.test.d.ts +1 -0
  508. package/dist/esm/providers/solana/actions/getClusterName.test.js +30 -0
  509. package/dist/esm/providers/solana/actions/getClusterNodes.d.ts +25 -0
  510. package/dist/esm/providers/solana/actions/getClusterNodes.js +20 -0
  511. package/dist/esm/providers/solana/actions/getClusterNodes.test.d.ts +1 -0
  512. package/dist/esm/providers/solana/actions/getClusterNodes.test.js +30 -0
  513. package/dist/esm/providers/solana/actions/getEpochInfo.d.ts +17 -0
  514. package/dist/esm/providers/solana/actions/getEpochInfo.js +20 -0
  515. package/dist/esm/providers/solana/actions/getEpochInfo.test.d.ts +1 -0
  516. package/dist/esm/providers/solana/actions/getEpochInfo.test.js +37 -0
  517. package/dist/esm/providers/solana/actions/getEpochSchedule.d.ts +16 -0
  518. package/dist/esm/providers/solana/actions/getEpochSchedule.js +20 -0
  519. package/dist/esm/providers/solana/actions/getEpochSchedule.test.d.ts +1 -0
  520. package/dist/esm/providers/solana/actions/getEpochSchedule.test.js +30 -0
  521. package/dist/esm/providers/solana/actions/getFeeForMessage.d.ts +15 -0
  522. package/dist/esm/providers/solana/actions/getFeeForMessage.js +20 -0
  523. package/dist/esm/providers/solana/actions/getFeeForMessage.test.d.ts +1 -0
  524. package/dist/esm/providers/solana/actions/getFeeForMessage.test.js +31 -0
  525. package/dist/esm/providers/solana/actions/getFirstAvailableBlock.d.ts +10 -0
  526. package/dist/esm/providers/solana/actions/getFirstAvailableBlock.js +20 -0
  527. package/dist/esm/providers/solana/actions/getFirstAvailableBlock.test.d.ts +1 -0
  528. package/dist/esm/providers/solana/actions/getFirstAvailableBlock.test.js +30 -0
  529. package/dist/esm/providers/solana/actions/getGenesisHash.d.ts +10 -0
  530. package/dist/esm/providers/solana/actions/getGenesisHash.js +20 -0
  531. package/dist/esm/providers/solana/actions/getGenesisHash.test.d.ts +1 -0
  532. package/dist/esm/providers/solana/actions/getGenesisHash.test.js +30 -0
  533. package/dist/esm/providers/solana/actions/getHealth.d.ts +10 -0
  534. package/dist/esm/providers/solana/actions/getHealth.js +20 -0
  535. package/dist/esm/providers/solana/actions/getHealth.test.d.ts +1 -0
  536. package/dist/esm/providers/solana/actions/getHealth.test.js +30 -0
  537. package/dist/esm/providers/solana/actions/getHighestSnapshotSlot.d.ts +13 -0
  538. package/dist/esm/providers/solana/actions/getHighestSnapshotSlot.js +20 -0
  539. package/dist/esm/providers/solana/actions/getHighestSnapshotSlot.test.d.ts +1 -0
  540. package/dist/esm/providers/solana/actions/getHighestSnapshotSlot.test.js +30 -0
  541. package/dist/esm/providers/solana/actions/getIdentity.d.ts +12 -0
  542. package/dist/esm/providers/solana/actions/getIdentity.js +20 -0
  543. package/dist/esm/providers/solana/actions/getIdentity.test.d.ts +1 -0
  544. package/dist/esm/providers/solana/actions/getIdentity.test.js +30 -0
  545. package/dist/esm/providers/solana/actions/getInflationGovernor.d.ts +16 -0
  546. package/dist/esm/providers/solana/actions/getInflationGovernor.js +20 -0
  547. package/dist/esm/providers/solana/actions/getInflationGovernor.test.d.ts +1 -0
  548. package/dist/esm/providers/solana/actions/getInflationGovernor.test.js +31 -0
  549. package/dist/esm/providers/solana/actions/getInflationRate.d.ts +15 -0
  550. package/dist/esm/providers/solana/actions/getInflationRate.js +20 -0
  551. package/dist/esm/providers/solana/actions/getInflationRate.test.d.ts +1 -0
  552. package/dist/esm/providers/solana/actions/getInflationRate.test.js +37 -0
  553. package/dist/esm/providers/solana/actions/getInflationReward.d.ts +16 -0
  554. package/dist/esm/providers/solana/actions/getInflationReward.js +20 -0
  555. package/dist/esm/providers/solana/actions/getInflationReward.test.d.ts +1 -0
  556. package/dist/esm/providers/solana/actions/getInflationReward.test.js +33 -0
  557. package/dist/esm/providers/solana/actions/getLargestAccounts.d.ts +18 -0
  558. package/dist/esm/providers/solana/actions/getLargestAccounts.js +20 -0
  559. package/dist/esm/providers/solana/actions/getLargestAccounts.test.d.ts +1 -0
  560. package/dist/esm/providers/solana/actions/getLargestAccounts.test.js +31 -0
  561. package/dist/esm/providers/solana/actions/getLatestBlockhash.d.ts +18 -0
  562. package/dist/esm/providers/solana/actions/getLatestBlockhash.js +20 -0
  563. package/dist/esm/providers/solana/actions/getLatestBlockhash.test.d.ts +1 -0
  564. package/dist/esm/providers/solana/actions/getLatestBlockhash.test.js +31 -0
  565. package/dist/esm/providers/solana/actions/getLeaderSchedule.d.ts +12 -0
  566. package/dist/esm/providers/solana/actions/getLeaderSchedule.js +20 -0
  567. package/dist/esm/providers/solana/actions/getLeaderSchedule.test.d.ts +1 -0
  568. package/dist/esm/providers/solana/actions/getLeaderSchedule.test.js +32 -0
  569. package/dist/esm/providers/solana/actions/getMaxRetransmitSlot.d.ts +10 -0
  570. package/dist/esm/providers/solana/actions/getMaxRetransmitSlot.js +20 -0
  571. package/dist/esm/providers/solana/actions/getMaxRetransmitSlot.test.d.ts +1 -0
  572. package/dist/esm/providers/solana/actions/getMaxRetransmitSlot.test.js +30 -0
  573. package/dist/esm/providers/solana/actions/getMaxShredInsertSlot.d.ts +10 -0
  574. package/dist/esm/providers/solana/actions/getMaxShredInsertSlot.js +20 -0
  575. package/dist/esm/providers/solana/actions/getMaxShredInsertSlot.test.d.ts +1 -0
  576. package/dist/esm/providers/solana/actions/getMaxShredInsertSlot.test.js +30 -0
  577. package/dist/esm/providers/solana/actions/getMinimumBalanceForRentExemption.d.ts +10 -0
  578. package/dist/esm/providers/solana/actions/getMinimumBalanceForRentExemption.js +20 -0
  579. package/dist/esm/providers/solana/actions/getMinimumBalanceForRentExemption.test.d.ts +1 -0
  580. package/dist/esm/providers/solana/actions/getMinimumBalanceForRentExemption.test.js +32 -0
  581. package/dist/esm/providers/solana/actions/getMultipleAccounts.d.ts +23 -0
  582. package/dist/esm/providers/solana/actions/getMultipleAccounts.js +20 -0
  583. package/dist/esm/providers/solana/actions/getMultipleAccounts.test.d.ts +1 -0
  584. package/dist/esm/providers/solana/actions/getMultipleAccounts.test.js +41 -0
  585. package/dist/esm/providers/solana/actions/getProgramAccounts.d.ts +21 -0
  586. package/dist/esm/providers/solana/actions/getProgramAccounts.js +20 -0
  587. package/dist/esm/providers/solana/actions/getProgramAccounts.test.d.ts +1 -0
  588. package/dist/esm/providers/solana/actions/getProgramAccounts.test.js +37 -0
  589. package/dist/esm/providers/solana/actions/getRecentPerformanceSamples.d.ts +16 -0
  590. package/dist/esm/providers/solana/actions/getRecentPerformanceSamples.js +20 -0
  591. package/dist/esm/providers/solana/actions/getRecentPerformanceSamples.test.d.ts +1 -0
  592. package/dist/esm/providers/solana/actions/getRecentPerformanceSamples.test.js +31 -0
  593. package/dist/esm/providers/solana/actions/getRecentPrioritizationFees.d.ts +13 -0
  594. package/dist/esm/providers/solana/actions/getRecentPrioritizationFees.js +20 -0
  595. package/dist/esm/providers/solana/actions/getRecentPrioritizationFees.test.d.ts +1 -0
  596. package/dist/esm/providers/solana/actions/getRecentPrioritizationFees.test.js +32 -0
  597. package/dist/esm/providers/solana/actions/getSignatureStatuses.d.ts +25 -0
  598. package/dist/esm/providers/solana/actions/getSignatureStatuses.js +20 -0
  599. package/dist/esm/providers/solana/actions/getSignatureStatuses.test.d.ts +1 -0
  600. package/dist/esm/providers/solana/actions/getSignatureStatuses.test.js +33 -0
  601. package/dist/esm/providers/solana/actions/getSignaturesForAddress.d.ts +17 -0
  602. package/dist/esm/providers/solana/actions/getSignaturesForAddress.js +20 -0
  603. package/dist/esm/providers/solana/actions/getSignaturesForAddress.test.d.ts +1 -0
  604. package/dist/esm/providers/solana/actions/getSignaturesForAddress.test.js +44 -0
  605. package/dist/esm/providers/solana/actions/getSlot.d.ts +10 -0
  606. package/dist/esm/providers/solana/actions/getSlot.js +20 -0
  607. package/dist/esm/providers/solana/actions/getSlot.test.d.ts +1 -0
  608. package/dist/esm/providers/solana/actions/getSlot.test.js +31 -0
  609. package/dist/esm/providers/solana/actions/getSlotLeader.d.ts +10 -0
  610. package/dist/esm/providers/solana/actions/getSlotLeader.js +20 -0
  611. package/dist/esm/providers/solana/actions/getSlotLeader.test.d.ts +1 -0
  612. package/dist/esm/providers/solana/actions/getSlotLeader.test.js +31 -0
  613. package/dist/esm/providers/solana/actions/getSlotLeaders.d.ts +10 -0
  614. package/dist/esm/providers/solana/actions/getSlotLeaders.js +20 -0
  615. package/dist/esm/providers/solana/actions/getSlotLeaders.test.d.ts +1 -0
  616. package/dist/esm/providers/solana/actions/getSlotLeaders.test.js +32 -0
  617. package/dist/esm/providers/solana/actions/getSupply.d.ts +21 -0
  618. package/dist/esm/providers/solana/actions/getSupply.js +20 -0
  619. package/dist/esm/providers/solana/actions/getSupply.test.d.ts +1 -0
  620. package/dist/esm/providers/solana/actions/getSupply.test.js +31 -0
  621. package/dist/esm/providers/solana/actions/getTokenAccountBalance.d.ts +20 -0
  622. package/dist/esm/providers/solana/actions/getTokenAccountBalance.js +20 -0
  623. package/dist/esm/providers/solana/actions/getTokenAccountBalance.test.d.ts +1 -0
  624. package/dist/esm/providers/solana/actions/getTokenAccountBalance.test.js +32 -0
  625. package/dist/esm/providers/solana/actions/getTokenAccountsByDelegate.d.ts +26 -0
  626. package/dist/esm/providers/solana/actions/getTokenAccountsByDelegate.js +20 -0
  627. package/dist/esm/providers/solana/actions/getTokenAccountsByDelegate.test.d.ts +1 -0
  628. package/dist/esm/providers/solana/actions/getTokenAccountsByDelegate.test.js +33 -0
  629. package/dist/esm/providers/solana/actions/getTokenAccountsByOwner.d.ts +26 -0
  630. package/dist/esm/providers/solana/actions/getTokenAccountsByOwner.js +20 -0
  631. package/dist/esm/providers/solana/actions/getTokenAccountsByOwner.test.d.ts +1 -0
  632. package/dist/esm/providers/solana/actions/getTokenAccountsByOwner.test.js +37 -0
  633. package/dist/esm/providers/solana/actions/getTokenLargestAccounts.d.ts +22 -0
  634. package/dist/esm/providers/solana/actions/getTokenLargestAccounts.js +20 -0
  635. package/dist/esm/providers/solana/actions/getTokenLargestAccounts.test.d.ts +1 -0
  636. package/dist/esm/providers/solana/actions/getTokenLargestAccounts.test.js +32 -0
  637. package/dist/esm/providers/solana/actions/getTokenSupply.d.ts +20 -0
  638. package/dist/esm/providers/solana/actions/getTokenSupply.js +20 -0
  639. package/dist/esm/providers/solana/actions/getTokenSupply.test.d.ts +1 -0
  640. package/dist/esm/providers/solana/actions/getTokenSupply.test.js +32 -0
  641. package/dist/esm/providers/solana/actions/getTransaction.d.ts +80 -0
  642. package/dist/esm/providers/solana/actions/getTransaction.js +20 -0
  643. package/dist/esm/providers/solana/actions/getTransaction.test.d.ts +1 -0
  644. package/dist/esm/providers/solana/actions/getTransaction.test.js +32 -0
  645. package/dist/esm/providers/solana/actions/getTransactionCount.d.ts +10 -0
  646. package/dist/esm/providers/solana/actions/getTransactionCount.js +20 -0
  647. package/dist/esm/providers/solana/actions/getTransactionCount.test.d.ts +1 -0
  648. package/dist/esm/providers/solana/actions/getTransactionCount.test.js +31 -0
  649. package/dist/esm/providers/solana/actions/getVersion.d.ts +13 -0
  650. package/dist/esm/providers/solana/actions/getVersion.js +20 -0
  651. package/dist/esm/providers/solana/actions/getVersion.test.d.ts +1 -0
  652. package/dist/esm/providers/solana/actions/getVersion.test.js +33 -0
  653. package/dist/esm/providers/solana/actions/getVoteAccounts.d.ts +31 -0
  654. package/dist/esm/providers/solana/actions/getVoteAccounts.js +20 -0
  655. package/dist/esm/providers/solana/actions/getVoteAccounts.test.d.ts +1 -0
  656. package/dist/esm/providers/solana/actions/getVoteAccounts.test.js +31 -0
  657. package/dist/esm/providers/solana/actions/index.d.ts +216 -0
  658. package/dist/esm/providers/solana/actions/index.js +173 -0
  659. package/dist/esm/providers/solana/actions/index.test.d.ts +1 -0
  660. package/dist/esm/providers/solana/actions/index.test.js +76 -0
  661. package/dist/esm/providers/solana/actions/isBlockhashValid.d.ts +15 -0
  662. package/dist/esm/providers/solana/actions/isBlockhashValid.js +20 -0
  663. package/dist/esm/providers/solana/actions/isBlockhashValid.test.d.ts +1 -0
  664. package/dist/esm/providers/solana/actions/isBlockhashValid.test.js +32 -0
  665. package/dist/esm/providers/solana/actions/minimumLedgerSlot.d.ts +10 -0
  666. package/dist/esm/providers/solana/actions/minimumLedgerSlot.js +20 -0
  667. package/dist/esm/providers/solana/actions/minimumLedgerSlot.test.d.ts +1 -0
  668. package/dist/esm/providers/solana/actions/minimumLedgerSlot.test.js +30 -0
  669. package/dist/esm/providers/solana/actions/sendTransaction.d.ts +13 -0
  670. package/dist/esm/providers/solana/actions/sendTransaction.js +27 -0
  671. package/dist/esm/providers/solana/actions/sendTransaction.test.d.ts +1 -0
  672. package/dist/esm/providers/solana/actions/sendTransaction.test.js +80 -0
  673. package/dist/esm/providers/solana/actions/simulateTransaction.d.ts +28 -0
  674. package/dist/esm/providers/solana/actions/simulateTransaction.js +27 -0
  675. package/dist/esm/providers/solana/actions/simulateTransaction.test.d.ts +1 -0
  676. package/dist/esm/providers/solana/actions/simulateTransaction.test.js +80 -0
  677. package/dist/esm/providers/solana/actions/switchCluster.d.ts +10 -0
  678. package/dist/esm/providers/solana/actions/switchCluster.js +23 -0
  679. package/dist/esm/providers/solana/actions/switchCluster.test.d.ts +1 -0
  680. package/dist/esm/providers/solana/actions/switchCluster.test.js +31 -0
  681. package/dist/esm/providers/solana/constants.d.ts +6 -0
  682. package/dist/esm/providers/solana/constants.js +17 -0
  683. package/dist/esm/providers/solana/index.d.ts +101 -0
  684. package/dist/esm/providers/solana/index.js +21 -0
  685. package/dist/esm/providers/solana/index.test.d.ts +1 -0
  686. package/dist/esm/providers/solana/index.test.js +166 -0
  687. package/dist/esm/providers/solana/transports/http.d.ts +8 -0
  688. package/dist/esm/providers/solana/transports/http.js +17 -0
  689. package/dist/esm/providers/solana/transports/http.test.d.ts +1 -0
  690. package/dist/esm/providers/solana/transports/http.test.js +86 -0
  691. package/dist/esm/providers/solana/transports/index.d.ts +734 -0
  692. package/dist/esm/providers/solana/transports/index.js +200 -0
  693. package/dist/esm/providers/solana/transports/index.test.d.ts +1 -0
  694. package/dist/esm/providers/solana/transports/index.test.js +272 -0
  695. package/dist/esm/providers/solana/utils/codecs.d.ts +4 -0
  696. package/dist/esm/providers/solana/utils/codecs.js +17 -0
  697. package/dist/esm/providers/solana/utils/index.d.ts +2 -0
  698. package/dist/esm/providers/solana/utils/index.js +12 -0
  699. package/dist/esm/providers/solana/utils/index.test.d.ts +1 -0
  700. package/dist/esm/providers/solana/utils/index.test.js +18 -0
  701. package/dist/esm/providers/solana/utils/toBase64EncodedWireTransaction.d.ts +26 -0
  702. package/dist/esm/providers/solana/utils/toBase64EncodedWireTransaction.js +39 -0
  703. package/dist/esm/providers/solana/utils/toBase64EncodedWireTransaction.test.d.ts +1 -0
  704. package/dist/esm/providers/solana/utils/toBase64EncodedWireTransaction.test.js +106 -0
  705. package/dist/esm/providers/uniswap/actions/exactInputSingle.d.ts +3 -3
  706. package/dist/esm/providers/uniswap/actions/exactInputSingle.js +5 -5
  707. package/dist/esm/providers/uniswap/actions/getPool.d.ts +3 -2
  708. package/dist/esm/providers/uniswap/actions/quoteExactInputSingle.d.ts +3 -2
  709. package/dist/esm/types.d.ts +8 -16
  710. package/dist/esm/types.js +0 -10
  711. package/dist/esm/utils/createConfig.d.ts +36 -0
  712. package/dist/esm/utils/createConfig.js +48 -0
  713. package/dist/esm/utils/createConfig.test.d.ts +1 -0
  714. package/dist/esm/utils/createConfig.test.js +64 -0
  715. package/dist/esm/utils/createCustomWalletClient.d.ts +46 -0
  716. package/dist/esm/utils/createCustomWalletClient.js +78 -0
  717. package/dist/esm/utils/createCustomWalletClient.test.d.ts +1 -0
  718. package/dist/esm/utils/createCustomWalletClient.test.js +98 -0
  719. package/dist/esm/utils/getChainContractByAddress.d.ts +2 -1
  720. package/dist/esm/utils/getClient.d.ts +458 -0
  721. package/dist/esm/utils/getClient.js +22 -0
  722. package/dist/esm/utils/getClient.test.d.ts +1 -0
  723. package/dist/esm/utils/getClient.test.js +44 -0
  724. package/dist/esm/utils/index.d.ts +1 -0
  725. package/dist/esm/utils/index.js +1 -0
  726. package/dist/esm/utils/index.test.js +2 -0
  727. package/package.json +13 -4
  728. package/dist/cjs/providers/circle-wallets/actions/signTypedData.d.ts +0 -8
  729. package/dist/cjs/providers/circle-wallets/actions/signTypedData.test.js +0 -51
  730. package/dist/cjs/providers/circle-wallets/actions/waitForTransactionHash.d.ts +0 -19
  731. package/dist/cjs/providers/circle-wallets/actions/waitForTransactionHash.js +0 -45
  732. package/dist/cjs/providers/circle-wallets/actions/waitForTransactionHash.test.js +0 -92
  733. package/dist/esm/providers/circle-wallets/actions/signTypedData.d.ts +0 -8
  734. package/dist/esm/providers/circle-wallets/actions/signTypedData.test.js +0 -49
  735. package/dist/esm/providers/circle-wallets/actions/waitForTransactionHash.d.ts +0 -19
  736. package/dist/esm/providers/circle-wallets/actions/waitForTransactionHash.js +0 -42
  737. package/dist/esm/providers/circle-wallets/actions/waitForTransactionHash.test.js +0 -90
  738. /package/dist/cjs/{providers/circle-wallets/actions/signTypedData.test.d.ts → actions/getTokenBalance.test.d.ts} +0 -0
  739. /package/dist/cjs/{providers/circle-wallets/actions/waitForTransactionHash.test.d.ts → actions/permit.test.d.ts} +0 -0
  740. /package/dist/{esm/providers/circle-wallets/actions/signTypedData.test.d.ts → cjs/actions/signEIP2612Permit.test.d.ts} +0 -0
  741. /package/dist/{esm/providers/circle-wallets/actions/waitForTransactionHash.test.d.ts → cjs/providers/circle-wallets/utils/toSolanaSigner.test.d.ts} +0 -0
@@ -0,0 +1,130 @@
1
+ import { signTypedData as _signTypedData } from 'viem/actions';
2
+ import type { Account, Address, BaseUnits, NativeUnits } from '../types.js';
3
+ import type { Chain, Client } from 'viem';
4
+ /**
5
+ * Parameters for the {@link signEIP2612Permit} function.
6
+ */
7
+ export type SignEIP2612PermitParams = {
8
+ /**
9
+ * The token contract address or contract object that supports EIP-2612 permit functionality.
10
+ */
11
+ token: Address | {
12
+ address: Address;
13
+ };
14
+ /**
15
+ * The account that owns the tokens and will sign the permit.
16
+ */
17
+ owner: Address | Account;
18
+ /**
19
+ * The account that will be granted permission to spend the tokens.
20
+ */
21
+ spender: Address | Account;
22
+ /**
23
+ * The amount of tokens to permit for spending.
24
+ */
25
+ value: NativeUnits | BaseUnits;
26
+ /**
27
+ * The deadline timestamp for the permit. Defaults to maximum uint256 value.
28
+ */
29
+ deadline?: bigint;
30
+ /**
31
+ * The blockchain network on which the permit will be created.
32
+ */
33
+ chain?: Chain;
34
+ /**
35
+ * The name of the token. Defaults to the name of the token contract.
36
+ */
37
+ name?: string;
38
+ /**
39
+ * The version of the token. Defaults to the version of the token contract. If the token contract does not have a version, defaults to '1'.
40
+ */
41
+ version?: string;
42
+ };
43
+ /**
44
+ * Return type for the signEIP2612Permit function.
45
+ */
46
+ export type SignEIP2612PermitReturnType = ReturnType<typeof _signTypedData>;
47
+ /**
48
+ * Creates a signed EIP-2612 permit
49
+ *
50
+ * @param client - The client instance.
51
+ * @param params - The permit parameters.
52
+ * @returns An object containing the typed data structure and signature.
53
+ *
54
+ * @example
55
+ * Creating a permit for USDC spending
56
+ * ```typescript
57
+ * const permit = await client.signEIP2612Permit({
58
+ * token: client.chain.contracts.USDC,
59
+ * owner: '0x0000000000000000000000000000000000000000',
60
+ * spender: '0x1111111111111111111111111111111111111111',
61
+ * value: 1000000n, // 1 USDC (6 decimals)
62
+ * })
63
+ * ```
64
+ *
65
+ * @example
66
+ * Creating a permit with custom deadline
67
+ * ```typescript
68
+ * const permit = await client.signEIP2612Permit({
69
+ * token: '0x...',
70
+ * owner: account1,
71
+ * spender: account2,
72
+ * value: '100',
73
+ * deadline: BigInt(Math.floor(Date.now() / 1000) + 3600), // 1 hour from now
74
+ * })
75
+ * ```
76
+ */
77
+ export declare function signEIP2612Permit(client: Client, params: SignEIP2612PermitParams): Promise<{
78
+ typedData: {
79
+ readonly types: {
80
+ readonly EIP712Domain: readonly [{
81
+ readonly name: "name";
82
+ readonly type: "string";
83
+ }, {
84
+ readonly name: "version";
85
+ readonly type: "string";
86
+ }, {
87
+ readonly name: "chainId";
88
+ readonly type: "uint256";
89
+ }, {
90
+ readonly name: "verifyingContract";
91
+ readonly type: "address";
92
+ }];
93
+ readonly Permit: readonly [{
94
+ readonly name: "owner";
95
+ readonly type: "address";
96
+ }, {
97
+ readonly name: "spender";
98
+ readonly type: "address";
99
+ }, {
100
+ readonly name: "value";
101
+ readonly type: "uint256";
102
+ }, {
103
+ readonly name: "nonce";
104
+ readonly type: "uint256";
105
+ }, {
106
+ readonly name: "deadline";
107
+ readonly type: "uint256";
108
+ }];
109
+ };
110
+ readonly primaryType: "Permit";
111
+ readonly domain: {
112
+ readonly name: string;
113
+ readonly version: string;
114
+ readonly chainId: bigint;
115
+ readonly verifyingContract: `0x${string}`;
116
+ };
117
+ readonly message: {
118
+ readonly owner: `0x${string}`;
119
+ readonly spender: `0x${string}`;
120
+ readonly value: bigint;
121
+ readonly nonce: bigint;
122
+ readonly deadline: bigint;
123
+ };
124
+ };
125
+ signature: `0x${string}`;
126
+ r: `0x${string}`;
127
+ s: `0x${string}`;
128
+ yParity: number;
129
+ v: number;
130
+ }>;
@@ -0,0 +1,122 @@
1
+ // Copyright (c) 2025, Circle Internet Group, Inc.
2
+ // All rights reserved.
3
+ //
4
+ // Circle Internet Group, Inc. CONFIDENTIAL
5
+ //
6
+ // This file includes unpublished proprietary source code of Circle Internet
7
+ // Group, Inc. The copyright notice above does not
8
+ // evidence any actual or intended publication of such source code. Disclosure
9
+ // of this source code or any related proprietary information is strictly
10
+ // prohibited without the express written permission of Circle Internet Group, Inc.
11
+ import { maxUint256, getContract, parseSignature } from 'viem';
12
+ import { signTypedData as _signTypedData } from 'viem/actions';
13
+ import { getAction } from 'viem/utils';
14
+ import EIP2612 from '../abis/EIP2612.js';
15
+ import { getClient } from '../utils/getClient.js';
16
+ import { parseAccount } from '../utils/parseAccount.js';
17
+ import { parseAddress } from '../utils/parseAddress.js';
18
+ import { parseUnits } from '../utils/parseUnits.js';
19
+ import { raise } from '../utils/raise.js';
20
+ /**
21
+ * Creates a signed EIP-2612 permit
22
+ *
23
+ * @param client - The client instance.
24
+ * @param params - The permit parameters.
25
+ * @returns An object containing the typed data structure and signature.
26
+ *
27
+ * @example
28
+ * Creating a permit for USDC spending
29
+ * ```typescript
30
+ * const permit = await client.signEIP2612Permit({
31
+ * token: client.chain.contracts.USDC,
32
+ * owner: '0x0000000000000000000000000000000000000000',
33
+ * spender: '0x1111111111111111111111111111111111111111',
34
+ * value: 1000000n, // 1 USDC (6 decimals)
35
+ * })
36
+ * ```
37
+ *
38
+ * @example
39
+ * Creating a permit with custom deadline
40
+ * ```typescript
41
+ * const permit = await client.signEIP2612Permit({
42
+ * token: '0x...',
43
+ * owner: account1,
44
+ * spender: account2,
45
+ * value: '100',
46
+ * deadline: BigInt(Math.floor(Date.now() / 1000) + 3600), // 1 hour from now
47
+ * })
48
+ * ```
49
+ */
50
+ export async function signEIP2612Permit(client, params) {
51
+ const { token: _token, owner: _owner, spender: _spender, value: _value, deadline = maxUint256, chain = client.chain, name: _name, version: _version, } = params;
52
+ const _client = getClient(client, chain);
53
+ const signTypedData = getAction(_client, _signTypedData, 'signTypedData');
54
+ // Parse addresses and accounts
55
+ const { address: verifyingContractAddress } = parseAddress(_token);
56
+ const owner = parseAccount(_owner, { chain });
57
+ const spender = parseAccount(_spender, { chain });
58
+ // Create contract instance with EIP-2612 ABI
59
+ const verifyingContract = getContract({
60
+ address: verifyingContractAddress,
61
+ abi: EIP2612,
62
+ client,
63
+ });
64
+ // Fetch token metadata and owner's nonce
65
+ const [name, version, nonce, decimals] = await Promise.all([
66
+ _name ?? verifyingContract.read.name(),
67
+ // Default version to '1' if `version()` fails
68
+ _version ?? verifyingContract.read.version().catch(() => '1'),
69
+ verifyingContract.read.nonces([owner.address]),
70
+ verifyingContract.read.decimals(),
71
+ ]);
72
+ const value = parseUnits(_value, decimals);
73
+ const typedData = {
74
+ types: {
75
+ EIP712Domain: [
76
+ { name: 'name', type: 'string' },
77
+ { name: 'version', type: 'string' },
78
+ { name: 'chainId', type: 'uint256' },
79
+ { name: 'verifyingContract', type: 'address' },
80
+ ],
81
+ Permit: [
82
+ { name: 'owner', type: 'address' },
83
+ { name: 'spender', type: 'address' },
84
+ { name: 'value', type: 'uint256' },
85
+ { name: 'nonce', type: 'uint256' },
86
+ { name: 'deadline', type: 'uint256' },
87
+ ],
88
+ },
89
+ primaryType: 'Permit',
90
+ domain: {
91
+ name,
92
+ version,
93
+ chainId: BigInt(chain.id),
94
+ verifyingContract: verifyingContract.address,
95
+ },
96
+ message: {
97
+ owner: owner.address,
98
+ spender: spender.address,
99
+ value,
100
+ nonce,
101
+ deadline,
102
+ },
103
+ };
104
+ const signature = await signTypedData({
105
+ ...typedData,
106
+ account: owner,
107
+ });
108
+ const { r, s, v, yParity } = parseSignature(signature);
109
+ return {
110
+ typedData,
111
+ signature,
112
+ r,
113
+ s,
114
+ yParity,
115
+ // Backfill `v` from `yParity` if not present
116
+ // REF: https://github.com/ethereum/go-ethereum/blob/1487a8577d1566497e161a04f8cee3204d4b3d36/core/types/transaction_marshalling.go#L63-L79
117
+ v: Number(v ??
118
+ (yParity === 0 ? 27n : undefined) ??
119
+ (yParity === 1 ? 28n : undefined) ??
120
+ raise(new Error('v is missing and yParity must be 0 or 1'))),
121
+ };
122
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,432 @@
1
+ // Copyright (c) 2025, Circle Internet Group, Inc.
2
+ // All rights reserved.
3
+ //
4
+ // Circle Internet Group, Inc. CONFIDENTIAL
5
+ //
6
+ // This file includes unpublished proprietary source code of Circle Internet
7
+ // Group, Inc. The copyright notice above does not
8
+ // evidence any actual or intended publication of such source code. Disclosure
9
+ // of this source code or any related proprietary information is strictly
10
+ // prohibited without the express written permission of Circle Internet Group, Inc.
11
+ import { maxUint256 } from 'viem';
12
+ import { describe, test, expect, vi, beforeEach } from 'vitest';
13
+ // Create mock functions using vi.hoisted() to handle hoisting properly
14
+ const mockGetContract = vi.hoisted(() => vi.fn());
15
+ const mockSignTypedData = vi.hoisted(() => vi.fn());
16
+ const mockGetAction = vi.hoisted(() => vi.fn());
17
+ import { ETH_SEPOLIA } from '../chains/index.js';
18
+ import { signEIP2612Permit } from './signEIP2612Permit.js';
19
+ // Mock viem with factory function
20
+ vi.mock('viem', async (importOriginal) => {
21
+ return {
22
+ ...(await importOriginal()),
23
+ getContract: mockGetContract,
24
+ };
25
+ });
26
+ // Mock viem/actions
27
+ vi.mock('viem/actions', async (importOriginal) => {
28
+ return {
29
+ ...(await importOriginal()),
30
+ signTypedData: mockSignTypedData,
31
+ };
32
+ });
33
+ // Mock viem/utils
34
+ vi.mock('viem/utils', async (importOriginal) => {
35
+ return {
36
+ ...(await importOriginal()),
37
+ getAction: mockGetAction,
38
+ };
39
+ });
40
+ describe.concurrent('signEIP2612Permit', () => {
41
+ const mockClient = {
42
+ chain: ETH_SEPOLIA,
43
+ };
44
+ const mockContract = {
45
+ address: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
46
+ read: {
47
+ name: vi.fn(),
48
+ version: vi.fn(),
49
+ nonces: vi.fn(),
50
+ decimals: vi.fn(),
51
+ },
52
+ };
53
+ beforeEach(() => {
54
+ vi.clearAllMocks();
55
+ // Setup default mocks
56
+ mockGetContract.mockReturnValue(mockContract);
57
+ mockGetAction.mockReturnValue(mockSignTypedData);
58
+ // Mock contract calls
59
+ mockContract.read.name.mockResolvedValue('USD Coin');
60
+ mockContract.read.version.mockResolvedValue('2');
61
+ mockContract.read.nonces.mockResolvedValue(0n);
62
+ mockContract.read.decimals.mockResolvedValue(6);
63
+ mockSignTypedData.mockResolvedValue('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1b');
64
+ });
65
+ test('should be defined and be a function', () => {
66
+ expect(typeof signEIP2612Permit).toBe('function');
67
+ });
68
+ test('should create permit with basic parameters', async () => {
69
+ const params = {
70
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
71
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
72
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
73
+ value: '1.0',
74
+ };
75
+ const result = await signEIP2612Permit(mockClient, params);
76
+ expect(result.typedData).toEqual({
77
+ types: {
78
+ EIP712Domain: [
79
+ { name: 'name', type: 'string' },
80
+ { name: 'version', type: 'string' },
81
+ { name: 'chainId', type: 'uint256' },
82
+ { name: 'verifyingContract', type: 'address' },
83
+ ],
84
+ Permit: [
85
+ { name: 'owner', type: 'address' },
86
+ { name: 'spender', type: 'address' },
87
+ { name: 'value', type: 'uint256' },
88
+ { name: 'nonce', type: 'uint256' },
89
+ { name: 'deadline', type: 'uint256' },
90
+ ],
91
+ },
92
+ primaryType: 'Permit',
93
+ domain: {
94
+ name: 'USD Coin',
95
+ version: '2',
96
+ chainId: BigInt(ETH_SEPOLIA.id),
97
+ verifyingContract: mockContract.address,
98
+ },
99
+ message: {
100
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
101
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
102
+ value: 1000000n,
103
+ nonce: 0n,
104
+ deadline: maxUint256,
105
+ },
106
+ });
107
+ expect(result.signature).toBe('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1b');
108
+ expect(result.v).toBe(27);
109
+ expect(result.yParity).toBe(0);
110
+ expect(result.r).toBe('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef');
111
+ expect(result.s).toBe('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef');
112
+ });
113
+ test('should handle token as contract object', async () => {
114
+ const params = {
115
+ token: { address: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D' },
116
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
117
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
118
+ value: '1.0',
119
+ };
120
+ const result = await signEIP2612Permit(mockClient, params);
121
+ expect(result.typedData.domain.verifyingContract).toBe('0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D');
122
+ });
123
+ test('should handle BaseUnits (bigint) value', async () => {
124
+ const params = {
125
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
126
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
127
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
128
+ value: 1000000n,
129
+ };
130
+ const result = await signEIP2612Permit(mockClient, params);
131
+ expect(result.typedData.message.value).toBe(1000000n); // Should pass through unchanged for bigint
132
+ });
133
+ test('should handle address strings for owner and spender', async () => {
134
+ const ownerAccount = '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e';
135
+ const spenderAccount = '0x8ba1f109551bD432803012645Hac136c22C57B9';
136
+ const params = {
137
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
138
+ owner: ownerAccount,
139
+ spender: spenderAccount,
140
+ value: '1.0',
141
+ };
142
+ const result = await signEIP2612Permit(mockClient, params);
143
+ expect(result.typedData.message.owner).toBe(ownerAccount);
144
+ expect(result.typedData.message.spender).toBe(spenderAccount);
145
+ });
146
+ test('should use custom deadline when provided', async () => {
147
+ const customDeadline = BigInt(Math.floor(Date.now() / 1000) + 3600);
148
+ const params = {
149
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
150
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
151
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
152
+ value: '1.0',
153
+ deadline: customDeadline,
154
+ };
155
+ const result = await signEIP2612Permit(mockClient, params);
156
+ expect(result.typedData.message.deadline).toBe(customDeadline);
157
+ });
158
+ test('should use maxUint256 as default deadline', async () => {
159
+ const params = {
160
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
161
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
162
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
163
+ value: '1.0',
164
+ };
165
+ const result = await signEIP2612Permit(mockClient, params);
166
+ expect(result.typedData.message.deadline).toBe(maxUint256);
167
+ });
168
+ test('should use custom chain when provided', async () => {
169
+ const customChain = ETH_SEPOLIA;
170
+ const params = {
171
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
172
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
173
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
174
+ value: '1.0',
175
+ chain: customChain,
176
+ };
177
+ const result = await signEIP2612Permit(mockClient, params);
178
+ expect(result.typedData.domain.chainId).toBe(BigInt(customChain.id));
179
+ });
180
+ test('should construct correct EIP-712 typed data', async () => {
181
+ const params = {
182
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
183
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
184
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
185
+ value: '1.0',
186
+ };
187
+ const result = await signEIP2612Permit(mockClient, params);
188
+ expect(result.typedData.primaryType).toBe('Permit');
189
+ expect(result.typedData.domain).toEqual({
190
+ name: 'USD Coin',
191
+ version: '2',
192
+ chainId: BigInt(ETH_SEPOLIA.id),
193
+ verifyingContract: mockContract.address,
194
+ });
195
+ expect(result.typedData.message).toEqual({
196
+ owner: params.owner,
197
+ spender: params.spender,
198
+ value: 1000000n,
199
+ nonce: 0n,
200
+ deadline: maxUint256,
201
+ });
202
+ });
203
+ test('should fetch contract metadata', async () => {
204
+ const params = {
205
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
206
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
207
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
208
+ value: '1.0',
209
+ };
210
+ await signEIP2612Permit(mockClient, params);
211
+ expect(mockContract.read.name).toHaveBeenCalled();
212
+ expect(mockContract.read.version).toHaveBeenCalled();
213
+ expect(mockContract.read.nonces).toHaveBeenCalledWith([params.owner]);
214
+ expect(mockContract.read.decimals).toHaveBeenCalled();
215
+ });
216
+ test('should call signTypedData with correct params', async () => {
217
+ const params = {
218
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
219
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
220
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
221
+ value: '1.0',
222
+ };
223
+ await signEIP2612Permit(mockClient, params);
224
+ expect(mockSignTypedData).toHaveBeenCalledTimes(1);
225
+ const callArgs = mockSignTypedData.mock.calls[0];
226
+ const signedData = callArgs[0];
227
+ expect(signedData.account.address).toBe(params.owner);
228
+ expect(signedData.primaryType).toBe('Permit');
229
+ expect(signedData.message).toEqual({
230
+ owner: params.owner,
231
+ spender: params.spender,
232
+ value: 1000000n, // 1.0 with 6 decimals
233
+ nonce: 0n,
234
+ deadline: maxUint256,
235
+ });
236
+ });
237
+ test('should handle different token decimals', async () => {
238
+ const params = {
239
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
240
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
241
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
242
+ value: '1.0',
243
+ };
244
+ // Override contract decimals for this test
245
+ mockContract.read.decimals.mockResolvedValue(18);
246
+ const result = await signEIP2612Permit(mockClient, params);
247
+ // With 18 decimals, '1.0' should be converted to 1000000000000000000n
248
+ expect(result.typedData.message.value).toBe(1000000000000000000n);
249
+ });
250
+ test('should fetch and use nonce from contract', async () => {
251
+ const params = {
252
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
253
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
254
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
255
+ value: '1.0',
256
+ };
257
+ const result = await signEIP2612Permit(mockClient, params);
258
+ expect(mockContract.read.nonces).toHaveBeenCalledWith([params.owner]);
259
+ expect(result.typedData.message.nonce).toBe(0n); // Default mock value
260
+ });
261
+ test('should handle different contract metadata', async () => {
262
+ const params = {
263
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
264
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
265
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
266
+ value: '1.0',
267
+ };
268
+ const result = await signEIP2612Permit(mockClient, params);
269
+ // Verify the result contains the expected domain values from our mocks
270
+ expect(result.typedData.domain.name).toBe('USD Coin'); // Default mock value
271
+ expect(result.typedData.domain.version).toBe('2'); // Default mock value
272
+ });
273
+ test('should handle zero value permits', async () => {
274
+ const zeroParams = {
275
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
276
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
277
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
278
+ value: '0',
279
+ };
280
+ const result = await signEIP2612Permit(mockClient, zeroParams);
281
+ // With 6 decimals, '0' should be converted to 0n
282
+ expect(result.typedData.message.value).toBe(0n);
283
+ });
284
+ describe('yParity and v conversion logic', () => {
285
+ test('should parse signature and return v/yParity values', async () => {
286
+ mockSignTypedData.mockResolvedValue('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1c');
287
+ const params = {
288
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
289
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
290
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
291
+ value: '1.0',
292
+ };
293
+ const result = await signEIP2612Permit(mockClient, params);
294
+ expect(result.v).toBe(27);
295
+ expect(result.yParity).toBe(0);
296
+ expect(result.r).toBe('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef');
297
+ expect(result.s).toBe('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef');
298
+ });
299
+ });
300
+ describe('edge cases and error scenarios', () => {
301
+ test('should handle custom name parameter', async () => {
302
+ vi.clearAllMocks();
303
+ mockGetContract.mockReturnValue(mockContract);
304
+ mockGetAction.mockReturnValue(mockSignTypedData);
305
+ mockContract.read.version.mockResolvedValue('2');
306
+ mockContract.read.nonces.mockResolvedValue(0n);
307
+ mockContract.read.decimals.mockResolvedValue(6);
308
+ mockSignTypedData.mockResolvedValue('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1b');
309
+ const params = {
310
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
311
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
312
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
313
+ value: '1.0',
314
+ name: 'Custom Token Name',
315
+ };
316
+ const result = await signEIP2612Permit(mockClient, params);
317
+ // Should use custom name provided in params
318
+ expect(result.typedData.domain.name).toBe('Custom Token Name');
319
+ });
320
+ test('should handle custom version parameter', async () => {
321
+ vi.clearAllMocks();
322
+ mockGetContract.mockReturnValue(mockContract);
323
+ mockGetAction.mockReturnValue(mockSignTypedData);
324
+ mockContract.read.name.mockResolvedValue('USD Coin');
325
+ mockContract.read.nonces.mockResolvedValue(0n);
326
+ mockContract.read.decimals.mockResolvedValue(6);
327
+ mockSignTypedData.mockResolvedValue('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1b');
328
+ const params = {
329
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
330
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
331
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
332
+ value: '1.0',
333
+ version: '3',
334
+ };
335
+ const result = await signEIP2612Permit(mockClient, params);
336
+ // Should use custom version provided in params
337
+ expect(result.typedData.domain.version).toBe('3');
338
+ });
339
+ test('should handle both custom name and version', async () => {
340
+ vi.restoreAllMocks();
341
+ mockGetContract.mockReturnValue(mockContract);
342
+ mockGetAction.mockReturnValue(mockSignTypedData);
343
+ mockContract.read.nonces.mockResolvedValue(0n);
344
+ mockContract.read.decimals.mockResolvedValue(6);
345
+ mockSignTypedData.mockResolvedValue('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1b');
346
+ const params = {
347
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
348
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
349
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
350
+ value: '1.0',
351
+ name: 'Custom Token',
352
+ version: '4',
353
+ };
354
+ const result = await signEIP2612Permit(mockClient, params);
355
+ // Should use both custom values provided in params
356
+ expect(result.typedData.domain.name).toBe('Custom Token');
357
+ expect(result.typedData.domain.version).toBe('4');
358
+ });
359
+ test('should fallback to version "1" when contract.version() throws', async () => {
360
+ // Mock version call to throw an error
361
+ mockContract.read.version.mockRejectedValue(new Error('Version not supported'));
362
+ const params = {
363
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
364
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
365
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
366
+ value: '1.0',
367
+ };
368
+ const result = await signEIP2612Permit(mockClient, params);
369
+ expect(result.typedData.domain.version).toBe('1');
370
+ });
371
+ test('should handle maximum safe integer values', async () => {
372
+ const params = {
373
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
374
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
375
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
376
+ value: Number.MAX_SAFE_INTEGER.toString(),
377
+ };
378
+ const result = await signEIP2612Permit(mockClient, params);
379
+ // Should handle large numbers correctly
380
+ expect(result.typedData.message.value).toBe(BigInt(Number.MAX_SAFE_INTEGER) * BigInt(1000000));
381
+ });
382
+ test('should handle custom deadline values', async () => {
383
+ const customDeadline = 1n;
384
+ const params = {
385
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
386
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
387
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
388
+ value: '1.0',
389
+ deadline: customDeadline,
390
+ };
391
+ const result = await signEIP2612Permit(mockClient, params);
392
+ expect(result.typedData.message.deadline).toBe(customDeadline);
393
+ });
394
+ test('should handle tokens with very high decimals', async () => {
395
+ const highDecimals = 30;
396
+ mockContract.read.decimals.mockResolvedValue(highDecimals);
397
+ const params = {
398
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
399
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
400
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
401
+ value: '1.0',
402
+ };
403
+ const result = await signEIP2612Permit(mockClient, params);
404
+ // 1.0 with 30 decimals should be 10^30
405
+ const expectedValue = BigInt('1000000000000000000000000000000');
406
+ expect(result.typedData.message.value).toBe(expectedValue);
407
+ });
408
+ test('should handle tokens with zero decimals', async () => {
409
+ mockContract.read.decimals.mockResolvedValue(0);
410
+ const params = {
411
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
412
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
413
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
414
+ value: '123',
415
+ };
416
+ const result = await signEIP2612Permit(mockClient, params);
417
+ // With 0 decimals, '123' should remain 123n
418
+ expect(result.typedData.message.value).toBe(123n);
419
+ });
420
+ test('should handle fractional values with high precision', async () => {
421
+ mockContract.read.decimals.mockResolvedValue(18);
422
+ const params = {
423
+ token: '0xA0b86a33E6411E4C3c04E5b72c5F3E6b2A6E1C3D',
424
+ owner: '0x742d35Cc6634C0532925a3b8D40745c5F5d78F6e',
425
+ spender: '0x8ba1f109551bD432803012645Hac136c22C57B9',
426
+ value: '0.000000000000000001', // 1 wei
427
+ };
428
+ const result = await signEIP2612Permit(mockClient, params);
429
+ expect(result.typedData.message.value).toBe(1n);
430
+ });
431
+ });
432
+ });