@coinbase/cdp-sdk 1.44.1 → 1.46.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 (282) hide show
  1. package/CHANGELOG.md +28 -2
  2. package/README.md +164 -43
  3. package/_cjs/accounts/evm/eip6492.js +49 -0
  4. package/_cjs/accounts/evm/eip6492.js.map +1 -0
  5. package/_cjs/accounts/evm/toEvmDelegatedAccount.js +27 -0
  6. package/_cjs/accounts/evm/toEvmDelegatedAccount.js.map +1 -0
  7. package/_cjs/accounts/evm/toEvmServerAccount.js +127 -55
  8. package/_cjs/accounts/evm/toEvmServerAccount.js.map +1 -1
  9. package/_cjs/accounts/evm/toEvmSmartAccount.js +115 -45
  10. package/_cjs/accounts/evm/toEvmSmartAccount.js.map +1 -1
  11. package/_cjs/accounts/evm/toNetworkScopedEvmSmartAccount.js +31 -0
  12. package/_cjs/accounts/evm/toNetworkScopedEvmSmartAccount.js.map +1 -1
  13. package/_cjs/accounts/solana/toSolanaAccount.js +49 -19
  14. package/_cjs/accounts/solana/toSolanaAccount.js.map +1 -1
  15. package/_cjs/actions/evm/waitForEvmEip7702DelegationStatus.js +37 -0
  16. package/_cjs/actions/evm/waitForEvmEip7702DelegationStatus.js.map +1 -0
  17. package/_cjs/actions/solana/transfer.js.map +1 -1
  18. package/_cjs/actions/solana/utils.js +9 -9
  19. package/_cjs/actions/solana/utils.js.map +1 -1
  20. package/_cjs/analytics.js +10 -228
  21. package/_cjs/analytics.js.map +1 -1
  22. package/_cjs/auth/utils/http.js +1 -0
  23. package/_cjs/auth/utils/http.js.map +1 -1
  24. package/_cjs/client/cdp.js +4 -7
  25. package/_cjs/client/cdp.js.map +1 -1
  26. package/_cjs/client/end-user/endUser.js +385 -4
  27. package/_cjs/client/end-user/endUser.js.map +1 -1
  28. package/_cjs/client/end-user/toEndUserAccount.js +201 -23
  29. package/_cjs/client/end-user/toEndUserAccount.js.map +1 -1
  30. package/_cjs/client/evm/evm.js +482 -227
  31. package/_cjs/client/evm/evm.js.map +1 -1
  32. package/_cjs/client/policies/policies.js +41 -11
  33. package/_cjs/client/policies/policies.js.map +1 -1
  34. package/_cjs/client/solana/solana.js +215 -118
  35. package/_cjs/client/solana/solana.js.map +1 -1
  36. package/_cjs/index.js +3 -1
  37. package/_cjs/index.js.map +1 -1
  38. package/_cjs/openapi-client/cdpApiClient.js +32 -0
  39. package/_cjs/openapi-client/cdpApiClient.js.map +1 -1
  40. package/_cjs/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js +178 -9
  41. package/_cjs/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js.map +1 -1
  42. package/_cjs/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.js +261 -0
  43. package/_cjs/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.js.map +1 -0
  44. package/_cjs/openapi-client/generated/end-user-accounts/end-user-accounts.js.map +1 -1
  45. package/_cjs/openapi-client/generated/evm-accounts/evm-accounts.js +30 -1
  46. package/_cjs/openapi-client/generated/evm-accounts/evm-accounts.js.map +1 -1
  47. package/_cjs/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.js +2 -2
  48. package/_cjs/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.js.map +1 -1
  49. package/_cjs/openapi-client/generated/evm-swaps/evm-swaps.js.map +1 -1
  50. package/_cjs/openapi-client/generated/evm-token-balances/evm-token-balances.js.map +1 -1
  51. package/_cjs/openapi-client/generated/faucets/faucets.js +6 -5
  52. package/_cjs/openapi-client/generated/faucets/faucets.js.map +1 -1
  53. package/_cjs/openapi-client/generated/onchain-data/onchain-data.js.map +1 -1
  54. package/_cjs/openapi-client/generated/onramp/onramp.js +15 -1
  55. package/_cjs/openapi-client/generated/onramp/onramp.js.map +1 -1
  56. package/_cjs/openapi-client/generated/policy-engine/policy-engine.js.map +1 -1
  57. package/_cjs/openapi-client/generated/solana-accounts/solana-accounts.js.map +1 -1
  58. package/_cjs/openapi-client/generated/solana-token-balances/solana-token-balances.js.map +1 -1
  59. package/_cjs/openapi-client/generated/sql-api/sql-api.js +75 -0
  60. package/_cjs/openapi-client/generated/sql-api/sql-api.js.map +1 -0
  61. package/_cjs/openapi-client/generated/webhooks/webhooks.js.map +1 -1
  62. package/_cjs/openapi-client/generated/x402-facilitator/x402-facilitator.js.map +1 -1
  63. package/_cjs/openapi-client/index.js +4 -1
  64. package/_cjs/openapi-client/index.js.map +1 -1
  65. package/_cjs/policies/evmSchema.js +127 -1
  66. package/_cjs/policies/evmSchema.js.map +1 -1
  67. package/_cjs/policies/solanaSchema.js +102 -1
  68. package/_cjs/policies/solanaSchema.js.map +1 -1
  69. package/_cjs/policies/types.js +7 -0
  70. package/_cjs/policies/types.js.map +1 -1
  71. package/_cjs/utils/export.js +6 -5
  72. package/_cjs/utils/export.js.map +1 -1
  73. package/_cjs/version.js +1 -1
  74. package/_esm/accounts/evm/eip6492.js +46 -0
  75. package/_esm/accounts/evm/eip6492.js.map +1 -0
  76. package/_esm/accounts/evm/toEvmDelegatedAccount.js +24 -0
  77. package/_esm/accounts/evm/toEvmDelegatedAccount.js.map +1 -0
  78. package/_esm/accounts/evm/toEvmServerAccount.js +127 -55
  79. package/_esm/accounts/evm/toEvmServerAccount.js.map +1 -1
  80. package/_esm/accounts/evm/toEvmSmartAccount.js +115 -45
  81. package/_esm/accounts/evm/toEvmSmartAccount.js.map +1 -1
  82. package/_esm/accounts/evm/toNetworkScopedEvmSmartAccount.js +31 -0
  83. package/_esm/accounts/evm/toNetworkScopedEvmSmartAccount.js.map +1 -1
  84. package/_esm/accounts/solana/toSolanaAccount.js +49 -19
  85. package/_esm/accounts/solana/toSolanaAccount.js.map +1 -1
  86. package/_esm/actions/evm/waitForEvmEip7702DelegationStatus.js +34 -0
  87. package/_esm/actions/evm/waitForEvmEip7702DelegationStatus.js.map +1 -0
  88. package/_esm/actions/solana/transfer.js.map +1 -1
  89. package/_esm/actions/solana/utils.js +9 -9
  90. package/_esm/actions/solana/utils.js.map +1 -1
  91. package/_esm/analytics.js +9 -227
  92. package/_esm/analytics.js.map +1 -1
  93. package/_esm/auth/utils/http.js +1 -0
  94. package/_esm/auth/utils/http.js.map +1 -1
  95. package/_esm/client/cdp.js +4 -7
  96. package/_esm/client/cdp.js.map +1 -1
  97. package/_esm/client/end-user/endUser.js +385 -4
  98. package/_esm/client/end-user/endUser.js.map +1 -1
  99. package/_esm/client/end-user/toEndUserAccount.js +201 -23
  100. package/_esm/client/end-user/toEndUserAccount.js.map +1 -1
  101. package/_esm/client/evm/evm.js +482 -227
  102. package/_esm/client/evm/evm.js.map +1 -1
  103. package/_esm/client/policies/policies.js +41 -11
  104. package/_esm/client/policies/policies.js.map +1 -1
  105. package/_esm/client/solana/solana.js +215 -118
  106. package/_esm/client/solana/solana.js.map +1 -1
  107. package/_esm/index.js +1 -0
  108. package/_esm/index.js.map +1 -1
  109. package/_esm/openapi-client/cdpApiClient.js +32 -0
  110. package/_esm/openapi-client/cdpApiClient.js.map +1 -1
  111. package/_esm/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js +175 -7
  112. package/_esm/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js.map +1 -1
  113. package/_esm/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.js +243 -0
  114. package/_esm/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.js.map +1 -0
  115. package/_esm/openapi-client/generated/end-user-accounts/end-user-accounts.js.map +1 -1
  116. package/_esm/openapi-client/generated/evm-accounts/evm-accounts.js +27 -0
  117. package/_esm/openapi-client/generated/evm-accounts/evm-accounts.js.map +1 -1
  118. package/_esm/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.js +2 -2
  119. package/_esm/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.js.map +1 -1
  120. package/_esm/openapi-client/generated/evm-swaps/evm-swaps.js.map +1 -1
  121. package/_esm/openapi-client/generated/evm-token-balances/evm-token-balances.js.map +1 -1
  122. package/_esm/openapi-client/generated/faucets/faucets.js +6 -5
  123. package/_esm/openapi-client/generated/faucets/faucets.js.map +1 -1
  124. package/_esm/openapi-client/generated/onchain-data/onchain-data.js.map +1 -1
  125. package/_esm/openapi-client/generated/onramp/onramp.js +13 -0
  126. package/_esm/openapi-client/generated/onramp/onramp.js.map +1 -1
  127. package/_esm/openapi-client/generated/policy-engine/policy-engine.js.map +1 -1
  128. package/_esm/openapi-client/generated/solana-accounts/solana-accounts.js.map +1 -1
  129. package/_esm/openapi-client/generated/solana-token-balances/solana-token-balances.js.map +1 -1
  130. package/_esm/openapi-client/generated/sql-api/sql-api.js +70 -0
  131. package/_esm/openapi-client/generated/sql-api/sql-api.js.map +1 -0
  132. package/_esm/openapi-client/generated/webhooks/webhooks.js.map +1 -1
  133. package/_esm/openapi-client/generated/x402-facilitator/x402-facilitator.js.map +1 -1
  134. package/_esm/openapi-client/index.js +4 -1
  135. package/_esm/openapi-client/index.js.map +1 -1
  136. package/_esm/policies/evmSchema.js +126 -0
  137. package/_esm/policies/evmSchema.js.map +1 -1
  138. package/_esm/policies/solanaSchema.js +101 -0
  139. package/_esm/policies/solanaSchema.js.map +1 -1
  140. package/_esm/policies/types.js +9 -2
  141. package/_esm/policies/types.js.map +1 -1
  142. package/_esm/utils/export.js +6 -5
  143. package/_esm/utils/export.js.map +1 -1
  144. package/_esm/version.js +1 -1
  145. package/_types/accounts/evm/eip6492.d.ts +17 -0
  146. package/_types/accounts/evm/eip6492.d.ts.map +1 -0
  147. package/_types/accounts/evm/toEvmDelegatedAccount.d.ts +13 -0
  148. package/_types/accounts/evm/toEvmDelegatedAccount.d.ts.map +1 -0
  149. package/_types/accounts/evm/toEvmServerAccount.d.ts.map +1 -1
  150. package/_types/accounts/evm/toEvmSmartAccount.d.ts.map +1 -1
  151. package/_types/accounts/evm/toNetworkScopedEvmSmartAccount.d.ts +4 -4
  152. package/_types/accounts/evm/toNetworkScopedEvmSmartAccount.d.ts.map +1 -1
  153. package/_types/accounts/evm/types.d.ts +3 -2
  154. package/_types/accounts/evm/types.d.ts.map +1 -1
  155. package/_types/accounts/solana/toSolanaAccount.d.ts.map +1 -1
  156. package/_types/actions/evm/waitForEvmEip7702DelegationStatus.d.ts +32 -0
  157. package/_types/actions/evm/waitForEvmEip7702DelegationStatus.d.ts.map +1 -0
  158. package/_types/actions/solana/transfer.d.ts +3 -4
  159. package/_types/actions/solana/transfer.d.ts.map +1 -1
  160. package/_types/actions/solana/types.d.ts +79 -29
  161. package/_types/actions/solana/types.d.ts.map +1 -1
  162. package/_types/actions/solana/utils.d.ts +10 -9
  163. package/_types/actions/solana/utils.d.ts.map +1 -1
  164. package/_types/analytics.d.ts +5 -38
  165. package/_types/analytics.d.ts.map +1 -1
  166. package/_types/auth/utils/http.d.ts.map +1 -1
  167. package/_types/client/cdp.d.ts +4 -0
  168. package/_types/client/cdp.d.ts.map +1 -1
  169. package/_types/client/end-user/endUser.d.ts +272 -1
  170. package/_types/client/end-user/endUser.d.ts.map +1 -1
  171. package/_types/client/end-user/endUser.types.d.ts +491 -1
  172. package/_types/client/end-user/endUser.types.d.ts.map +1 -1
  173. package/_types/client/end-user/toEndUserAccount.d.ts +4 -1
  174. package/_types/client/end-user/toEndUserAccount.d.ts.map +1 -1
  175. package/_types/client/evm/evm.d.ts +54 -1
  176. package/_types/client/evm/evm.d.ts.map +1 -1
  177. package/_types/client/evm/evm.types.d.ts +29 -2
  178. package/_types/client/evm/evm.types.d.ts.map +1 -1
  179. package/_types/client/policies/policies.d.ts.map +1 -1
  180. package/_types/client/solana/solana.d.ts +38 -12
  181. package/_types/client/solana/solana.d.ts.map +1 -1
  182. package/_types/index.d.ts +3 -1
  183. package/_types/index.d.ts.map +1 -1
  184. package/_types/openapi-client/cdpApiClient.d.ts.map +1 -1
  185. package/_types/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.d.ts +884 -90
  186. package/_types/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.d.ts.map +1 -1
  187. package/_types/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.d.ts +163 -0
  188. package/_types/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.d.ts.map +1 -0
  189. package/_types/openapi-client/generated/end-user-accounts/end-user-accounts.d.ts +9 -9
  190. package/_types/openapi-client/generated/end-user-accounts/end-user-accounts.d.ts.map +1 -1
  191. package/_types/openapi-client/generated/evm-accounts/evm-accounts.d.ts +35 -15
  192. package/_types/openapi-client/generated/evm-accounts/evm-accounts.d.ts.map +1 -1
  193. package/_types/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.d.ts +14 -14
  194. package/_types/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.d.ts.map +1 -1
  195. package/_types/openapi-client/generated/evm-swaps/evm-swaps.d.ts +3 -3
  196. package/_types/openapi-client/generated/evm-swaps/evm-swaps.d.ts.map +1 -1
  197. package/_types/openapi-client/generated/evm-token-balances/evm-token-balances.d.ts +2 -2
  198. package/_types/openapi-client/generated/evm-token-balances/evm-token-balances.d.ts.map +1 -1
  199. package/_types/openapi-client/generated/faucets/faucets.d.ts +9 -8
  200. package/_types/openapi-client/generated/faucets/faucets.d.ts.map +1 -1
  201. package/_types/openapi-client/generated/onchain-data/onchain-data.d.ts +3 -3
  202. package/_types/openapi-client/generated/onchain-data/onchain-data.d.ts.map +1 -1
  203. package/_types/openapi-client/generated/onramp/onramp.d.ts +12 -5
  204. package/_types/openapi-client/generated/onramp/onramp.d.ts.map +1 -1
  205. package/_types/openapi-client/generated/policy-engine/policy-engine.d.ts +6 -6
  206. package/_types/openapi-client/generated/policy-engine/policy-engine.d.ts.map +1 -1
  207. package/_types/openapi-client/generated/solana-accounts/solana-accounts.d.ts +12 -12
  208. package/_types/openapi-client/generated/solana-accounts/solana-accounts.d.ts.map +1 -1
  209. package/_types/openapi-client/generated/solana-token-balances/solana-token-balances.d.ts +2 -2
  210. package/_types/openapi-client/generated/solana-token-balances/solana-token-balances.d.ts.map +1 -1
  211. package/_types/openapi-client/generated/sql-api/sql-api.d.ts +73 -0
  212. package/_types/openapi-client/generated/sql-api/sql-api.d.ts.map +1 -0
  213. package/_types/openapi-client/generated/webhooks/webhooks.d.ts +6 -6
  214. package/_types/openapi-client/generated/webhooks/webhooks.d.ts.map +1 -1
  215. package/_types/openapi-client/generated/x402-facilitator/x402-facilitator.d.ts +4 -4
  216. package/_types/openapi-client/generated/x402-facilitator/x402-facilitator.d.ts.map +1 -1
  217. package/_types/openapi-client/index.d.ts +23 -3
  218. package/_types/openapi-client/index.d.ts.map +1 -1
  219. package/_types/policies/evmSchema.d.ts +3128 -1064
  220. package/_types/policies/evmSchema.d.ts.map +1 -1
  221. package/_types/policies/solanaSchema.d.ts +1411 -47
  222. package/_types/policies/solanaSchema.d.ts.map +1 -1
  223. package/_types/policies/types.d.ts +8427 -2942
  224. package/_types/policies/types.d.ts.map +1 -1
  225. package/_types/types/contract.d.ts.map +1 -1
  226. package/_types/utils/export.d.ts +1 -1
  227. package/_types/utils/export.d.ts.map +1 -1
  228. package/_types/version.d.ts +1 -1
  229. package/accounts/evm/eip6492.ts +60 -0
  230. package/accounts/evm/toEvmDelegatedAccount.ts +26 -0
  231. package/accounts/evm/toEvmServerAccount.ts +115 -67
  232. package/accounts/evm/toEvmSmartAccount.ts +114 -57
  233. package/accounts/evm/toNetworkScopedEvmSmartAccount.ts +44 -5
  234. package/accounts/evm/types.ts +8 -3
  235. package/accounts/solana/toSolanaAccount.ts +44 -24
  236. package/actions/evm/waitForEvmEip7702DelegationStatus.ts +57 -0
  237. package/actions/solana/transfer.ts +3 -3
  238. package/actions/solana/types.ts +79 -29
  239. package/actions/solana/utils.ts +13 -11
  240. package/analytics.ts +8 -294
  241. package/auth/utils/http.ts +1 -0
  242. package/client/cdp.ts +6 -8
  243. package/client/end-user/endUser.ts +513 -4
  244. package/client/end-user/endUser.types.ts +598 -0
  245. package/client/end-user/toEndUserAccount.ts +330 -26
  246. package/client/evm/evm.ts +517 -282
  247. package/client/evm/evm.types.ts +45 -2
  248. package/client/policies/policies.ts +41 -16
  249. package/client/solana/solana.ts +233 -153
  250. package/index.ts +36 -1
  251. package/openapi-client/cdpApiClient.ts +34 -0
  252. package/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.ts +1155 -172
  253. package/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.ts +455 -0
  254. package/openapi-client/generated/end-user-accounts/end-user-accounts.ts +12 -9
  255. package/openapi-client/generated/evm-accounts/evm-accounts.ts +66 -14
  256. package/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.ts +16 -16
  257. package/openapi-client/generated/evm-swaps/evm-swaps.ts +3 -3
  258. package/openapi-client/generated/evm-token-balances/evm-token-balances.ts +2 -2
  259. package/openapi-client/generated/faucets/faucets.ts +9 -8
  260. package/openapi-client/generated/onchain-data/onchain-data.ts +3 -3
  261. package/openapi-client/generated/onramp/onramp.ts +28 -4
  262. package/openapi-client/generated/policy-engine/policy-engine.ts +12 -6
  263. package/openapi-client/generated/solana-accounts/solana-accounts.ts +12 -12
  264. package/openapi-client/generated/solana-token-balances/solana-token-balances.ts +2 -2
  265. package/openapi-client/generated/sql-api/sql-api.ts +92 -0
  266. package/openapi-client/generated/webhooks/webhooks.ts +6 -6
  267. package/openapi-client/generated/x402-facilitator/x402-facilitator.ts +6 -4
  268. package/openapi-client/index.ts +4 -1
  269. package/package.json +7 -8
  270. package/policies/evmSchema.ts +164 -0
  271. package/policies/solanaSchema.ts +130 -0
  272. package/policies/types.ts +14 -0
  273. package/types/contract.ts +2 -4
  274. package/utils/export.ts +6 -5
  275. package/version.ts +1 -1
  276. package/_cjs/openapi-client/generated/sql-api-alpha/sql-api-alpha.js +0 -55
  277. package/_cjs/openapi-client/generated/sql-api-alpha/sql-api-alpha.js.map +0 -1
  278. package/_esm/openapi-client/generated/sql-api-alpha/sql-api-alpha.js +0 -50
  279. package/_esm/openapi-client/generated/sql-api-alpha/sql-api-alpha.js.map +0 -1
  280. package/_types/openapi-client/generated/sql-api-alpha/sql-api-alpha.d.ts +0 -53
  281. package/_types/openapi-client/generated/sql-api-alpha/sql-api-alpha.d.ts.map +0 -1
  282. package/openapi-client/generated/sql-api-alpha/sql-api-alpha.ts +0 -72
@@ -24,6 +24,9 @@ import type {
24
24
  } from "../../actions/evm/sendUserOperation.js";
25
25
  import type { SmartAccountActions } from "../../actions/evm/types.js";
26
26
  import type {
27
+ CreateEvmEip7702DelegationResult as CreateEvmEip7702DelegationResultApi,
28
+ EvmEip7702DelegationNetwork,
29
+ EvmEip7702DelegationOperation,
27
30
  EvmSwapsNetwork,
28
31
  EvmUserOperationNetwork,
29
32
  EvmUserOperationStatus,
@@ -37,6 +40,9 @@ import type { Calls } from "../../types/calls.js";
37
40
  import type { Address, EIP712Message, Hex } from "../../types/misc.js";
38
41
  import type { WaitOptions } from "../../utils/wait.js";
39
42
 
43
+ /** Result of createEvmEip7702Delegation with delegationOperationId. */
44
+ export type CreateEvmEip7702DelegationResult = CreateEvmEip7702DelegationResultApi;
45
+
40
46
  /**
41
47
  * The EvmClient type, where all OpenApiEvmMethods methods are wrapped.
42
48
  */
@@ -75,6 +81,8 @@ export type EvmClientInterface = Omit<
75
81
  | "exportEvmAccount"
76
82
  | "exportEvmAccountByName"
77
83
  | "updateEvmSmartAccount" // 🚧 Coming soon
84
+ | "createEvmEip7702Delegation" // mapped to options-based createEvmEip7702Delegation
85
+ | "getEvmEip7702DelegationOperationById" // wrapped as getEvmEip7702DelegationOperationById
78
86
  > & {
79
87
  createAccount: (options: CreateServerAccountOptions) => Promise<ServerAccount>;
80
88
  createSmartAccount: (options: CreateSmartAccountOptions) => Promise<SmartAccount>;
@@ -111,6 +119,15 @@ export type EvmClientInterface = Omit<
111
119
  signMessage: (options: SignMessageOptions) => Promise<SignatureResult>;
112
120
  signTypedData: (options: SignTypedDataOptions) => Promise<SignatureResult>;
113
121
  signTransaction: (options: SignTransactionOptions) => Promise<SignatureResult>;
122
+ createEvmEip7702Delegation: (
123
+ options: CreateEvmEip7702DelegationOptions,
124
+ ) => Promise<CreateEvmEip7702DelegationResult>;
125
+ getEvmEip7702DelegationOperationById: (
126
+ delegationOperationId: string,
127
+ ) => Promise<EvmEip7702DelegationOperation>;
128
+ waitForEvmEip7702DelegationOperationStatus: (
129
+ options: WaitForEvmEip7702DelegationOperationStatusOptions,
130
+ ) => Promise<EvmEip7702DelegationOperation>;
114
131
  };
115
132
 
116
133
  export type { ServerAccount, SmartAccount };
@@ -451,8 +468,10 @@ export interface ListServerAccountsOptions {
451
468
  /**
452
469
  * A smart account that only contains the owner address.
453
470
  */
454
- export interface ReadonlySmartAccount
455
- extends Omit<SmartAccount, "owners" | keyof SmartAccountActions | "useNetwork"> {
471
+ export interface ReadonlySmartAccount extends Omit<
472
+ SmartAccount,
473
+ "owners" | keyof SmartAccountActions | "useNetwork"
474
+ > {
456
475
  /** The owners of the smart account. */
457
476
  owners: Address[];
458
477
  }
@@ -483,6 +502,30 @@ export interface UpdateEvmSmartAccountOptions {
483
502
  owner: Account;
484
503
  }
485
504
 
505
+ /**
506
+ * Options for creating an EIP-7702 delegation for an EVM EOA account.
507
+ */
508
+ export interface CreateEvmEip7702DelegationOptions {
509
+ /** The address of the EOA account. */
510
+ address: Address;
511
+ /** The network for the EIP-7702 delegation. */
512
+ network: EvmEip7702DelegationNetwork;
513
+ /** Whether to configure spend permissions for the upgraded, delegated account. When enabled, the account can grant permissions for third parties to spend on its behalf. Defaults to false. */
514
+ enableSpendPermissions?: boolean;
515
+ /** Optional idempotency key. */
516
+ idempotencyKey?: string;
517
+ }
518
+
519
+ /**
520
+ * Options for waiting for an EIP-7702 delegation operation to complete.
521
+ */
522
+ export interface WaitForEvmEip7702DelegationOperationStatusOptions {
523
+ /** The delegation operation ID returned by createEvmEip7702Delegation. */
524
+ delegationOperationId: string;
525
+ /** Optional options for the wait operation. */
526
+ waitOptions?: WaitOptions;
527
+ }
528
+
486
529
  /**
487
530
  * The result of listing EVM smart accounts.
488
531
  */
@@ -68,7 +68,12 @@ export class PoliciesClient implements PoliciesClientInterface {
68
68
  },
69
69
  });
70
70
 
71
- return CdpOpenApiClient.listPolicies(options) as Promise<ListPoliciesResult>;
71
+ try {
72
+ return CdpOpenApiClient.listPolicies(options) as Promise<ListPoliciesResult>;
73
+ } catch (error) {
74
+ Analytics.trackError(error, "listPolicies");
75
+ throw error;
76
+ }
72
77
  }
73
78
 
74
79
  /**
@@ -186,13 +191,18 @@ export class PoliciesClient implements PoliciesClientInterface {
186
191
  },
187
192
  });
188
193
 
189
- CreatePolicyBodySchema.parse(options.policy);
190
- return CdpOpenApiClient.createPolicy(
191
- // There are arbitrary differences between the abitype Abi and the openapi Abi
192
- options.policy as CreatePolicyBody,
194
+ try {
195
+ CreatePolicyBodySchema.parse(options.policy);
196
+ return CdpOpenApiClient.createPolicy(
197
+ // There are arbitrary differences between the abitype Abi and the openapi Abi
198
+ options.policy as CreatePolicyBody,
193
199
 
194
- options.idempotencyKey,
195
- ) as Promise<Policy>;
200
+ options.idempotencyKey,
201
+ ) as Promise<Policy>;
202
+ } catch (error) {
203
+ Analytics.trackError(error, "createPolicy");
204
+ throw error;
205
+ }
196
206
  }
197
207
 
198
208
  /**
@@ -218,7 +228,12 @@ export class PoliciesClient implements PoliciesClientInterface {
218
228
  action: "get_policy_by_id",
219
229
  });
220
230
 
221
- return CdpOpenApiClient.getPolicyById(options.id) as Promise<Policy>;
231
+ try {
232
+ return CdpOpenApiClient.getPolicyById(options.id) as Promise<Policy>;
233
+ } catch (error) {
234
+ Analytics.trackError(error, "getPolicyById");
235
+ throw error;
236
+ }
222
237
  }
223
238
 
224
239
  /**
@@ -254,7 +269,12 @@ export class PoliciesClient implements PoliciesClientInterface {
254
269
  action: "delete_policy",
255
270
  });
256
271
 
257
- return CdpOpenApiClient.deletePolicy(options.id, options.idempotencyKey);
272
+ try {
273
+ return CdpOpenApiClient.deletePolicy(options.id, options.idempotencyKey);
274
+ } catch (error) {
275
+ Analytics.trackError(error, "deletePolicy");
276
+ throw error;
277
+ }
258
278
  }
259
279
 
260
280
  /**
@@ -342,12 +362,17 @@ export class PoliciesClient implements PoliciesClientInterface {
342
362
  action: "update_policy",
343
363
  });
344
364
 
345
- UpdatePolicyBodySchema.parse(options.policy);
346
- return CdpOpenApiClient.updatePolicy(
347
- options.id,
348
- // There are arbitrary differences between the abitype Abi and the openapi Abi
349
- options.policy as UpdatePolicyBody,
350
- options.idempotencyKey,
351
- ) as Promise<Policy>;
365
+ try {
366
+ UpdatePolicyBodySchema.parse(options.policy);
367
+ return CdpOpenApiClient.updatePolicy(
368
+ options.id,
369
+ // There are arbitrary differences between the abitype Abi and the openapi Abi
370
+ options.policy as UpdatePolicyBody,
371
+ options.idempotencyKey,
372
+ ) as Promise<Policy>;
373
+ } catch (error) {
374
+ Analytics.trackError(error, "updatePolicy");
375
+ throw error;
376
+ }
352
377
  }
353
378
  }
@@ -87,7 +87,12 @@ export class SolanaClient implements SolanaClientInterface {
87
87
  accountType: "solana",
88
88
  });
89
89
 
90
- return this._createAccountInternal(options);
90
+ try {
91
+ return this._createAccountInternal(options);
92
+ } catch (error) {
93
+ Analytics.trackError(error, "createAccount");
94
+ throw error;
95
+ }
91
96
  }
92
97
 
93
98
  /**
@@ -120,34 +125,41 @@ export class SolanaClient implements SolanaClientInterface {
120
125
  accountType: "solana",
121
126
  });
122
127
 
123
- const { publicKey, privateKey } = await generateExportEncryptionKeyPair();
124
-
125
- const { encryptedPrivateKey } = await (async () => {
126
- if (options.address) {
127
- return CdpOpenApiClient.exportSolanaAccount(
128
- options.address,
129
- {
130
- exportEncryptionKey: publicKey,
131
- },
132
- options.idempotencyKey,
133
- );
134
- }
128
+ try {
129
+ const { publicKey, privateKey } = await generateExportEncryptionKeyPair();
130
+
131
+ const { encryptedPrivateKey } = await (async () => {
132
+ if (options.address) {
133
+ return CdpOpenApiClient.exportSolanaAccount(
134
+ options.address,
135
+ {
136
+ exportEncryptionKey: publicKey,
137
+ },
138
+ options.idempotencyKey,
139
+ );
140
+ }
135
141
 
136
- if (options.name) {
137
- return CdpOpenApiClient.exportSolanaAccountByName(
138
- options.name,
139
- {
140
- exportEncryptionKey: publicKey,
141
- },
142
- options.idempotencyKey,
143
- );
144
- }
142
+ if (options.name) {
143
+ return CdpOpenApiClient.exportSolanaAccountByName(
144
+ options.name,
145
+ {
146
+ exportEncryptionKey: publicKey,
147
+ },
148
+ options.idempotencyKey,
149
+ );
150
+ }
145
151
 
146
- throw new UserInputValidationError("Either address or name must be provided");
147
- })();
152
+ throw new UserInputValidationError("Either address or name must be provided");
153
+ })();
148
154
 
149
- const decryptedPrivateKey = decryptWithPrivateKey(privateKey, encryptedPrivateKey);
150
- return formatSolanaPrivateKey(decryptedPrivateKey);
155
+ const decryptedPrivateKey = decryptWithPrivateKey(privateKey, encryptedPrivateKey);
156
+ return await formatSolanaPrivateKey(decryptedPrivateKey);
157
+ } catch (error) {
158
+ if (!(error instanceof UserInputValidationError)) {
159
+ Analytics.trackError(error, "exportAccount");
160
+ }
161
+ throw error;
162
+ }
151
163
  }
152
164
 
153
165
  /**
@@ -194,48 +206,53 @@ export class SolanaClient implements SolanaClientInterface {
194
206
  accountType: "solana",
195
207
  });
196
208
 
197
- let privateKeyBytes: Uint8Array = new Uint8Array();
198
-
199
- if (typeof options.privateKey === "string") {
200
- privateKeyBytes = bs58.decode(options.privateKey);
201
- } else {
202
- privateKeyBytes = options.privateKey;
203
- }
204
-
205
- if (privateKeyBytes.length !== 32 && privateKeyBytes.length !== 64) {
206
- throw new UserInputValidationError("Invalid private key length");
207
- }
208
-
209
- if (privateKeyBytes.length === 64) {
210
- privateKeyBytes = privateKeyBytes.subarray(0, 32);
211
- }
212
-
213
- const encryptionPublicKey = options.encryptionPublicKey || ImportAccountPublicRSAKey;
209
+ try {
210
+ let privateKeyBytes: Uint8Array = new Uint8Array();
214
211
 
215
- const encryptedPrivateKey = publicEncrypt(
216
- {
217
- key: encryptionPublicKey,
218
- padding: constants.RSA_PKCS1_OAEP_PADDING,
219
- oaepHash: "sha256",
220
- },
221
- privateKeyBytes,
222
- );
212
+ if (typeof options.privateKey === "string") {
213
+ privateKeyBytes = bs58.decode(options.privateKey);
214
+ } else {
215
+ privateKeyBytes = options.privateKey;
216
+ }
223
217
 
224
- const openApiAccount = await CdpOpenApiClient.importSolanaAccount(
225
- {
226
- encryptedPrivateKey: encryptedPrivateKey.toString("base64"),
227
- name: options.name,
228
- },
229
- options.idempotencyKey,
230
- );
218
+ if (privateKeyBytes.length !== 32 && privateKeyBytes.length !== 64) {
219
+ throw new UserInputValidationError("Invalid private key length");
220
+ }
231
221
 
232
- const account = toSolanaAccount(CdpOpenApiClient, {
233
- account: openApiAccount,
234
- });
222
+ if (privateKeyBytes.length === 64) {
223
+ privateKeyBytes = privateKeyBytes.subarray(0, 32);
224
+ }
235
225
 
236
- Analytics.wrapObjectMethodsWithErrorTracking(account);
226
+ const encryptionPublicKey = options.encryptionPublicKey || ImportAccountPublicRSAKey;
227
+
228
+ const encryptedPrivateKey = publicEncrypt(
229
+ {
230
+ key: encryptionPublicKey,
231
+ padding: constants.RSA_PKCS1_OAEP_PADDING,
232
+ oaepHash: "sha256",
233
+ },
234
+ privateKeyBytes,
235
+ );
236
+
237
+ const openApiAccount = await CdpOpenApiClient.importSolanaAccount(
238
+ {
239
+ encryptedPrivateKey: encryptedPrivateKey.toString("base64"),
240
+ name: options.name,
241
+ },
242
+ options.idempotencyKey,
243
+ );
244
+
245
+ const account = toSolanaAccount(CdpOpenApiClient, {
246
+ account: openApiAccount,
247
+ });
237
248
 
238
- return account;
249
+ return account;
250
+ } catch (error) {
251
+ if (!(error instanceof UserInputValidationError)) {
252
+ Analytics.trackError(error, "importAccount");
253
+ }
254
+ throw error;
255
+ }
239
256
  }
240
257
 
241
258
  /**
@@ -269,7 +286,12 @@ export class SolanaClient implements SolanaClientInterface {
269
286
  accountType: "solana",
270
287
  });
271
288
 
272
- return this._getAccountInternal(options);
289
+ try {
290
+ return this._getAccountInternal(options);
291
+ } catch (error) {
292
+ Analytics.trackError(error, "getAccount");
293
+ throw error;
294
+ }
273
295
  }
274
296
 
275
297
  /**
@@ -294,26 +316,31 @@ export class SolanaClient implements SolanaClientInterface {
294
316
  });
295
317
 
296
318
  try {
297
- const account = await this._getAccountInternal(options);
298
- return account;
299
- } catch (error) {
300
- // If it failed because the account doesn't exist, create it
301
- const doesAccountNotExist = error instanceof APIError && error.statusCode === 404;
302
- if (doesAccountNotExist) {
303
- try {
304
- const account = await this._createAccountInternal(options);
305
- return account;
306
- } catch (error) {
307
- // If it failed because the account already exists, get the existing account
308
- const doesAccountAlreadyExist = error instanceof APIError && error.statusCode === 409;
309
- if (doesAccountAlreadyExist) {
310
- const account = await this._getAccountInternal(options);
319
+ try {
320
+ const account = await this._getAccountInternal(options);
321
+ return account;
322
+ } catch (error) {
323
+ // If it failed because the account doesn't exist, create it
324
+ const doesAccountNotExist = error instanceof APIError && error.statusCode === 404;
325
+ if (doesAccountNotExist) {
326
+ try {
327
+ const account = await this._createAccountInternal(options);
311
328
  return account;
329
+ } catch (error) {
330
+ // If it failed because the account already exists, get the existing account
331
+ const doesAccountAlreadyExist = error instanceof APIError && error.statusCode === 409;
332
+ if (doesAccountAlreadyExist) {
333
+ const account = await this._getAccountInternal(options);
334
+ return account;
335
+ }
336
+ throw error;
312
337
  }
313
- throw error;
314
338
  }
315
- }
316
339
 
340
+ throw error;
341
+ }
342
+ } catch (error) {
343
+ Analytics.trackError(error, "getOrCreateAccount");
317
344
  throw error;
318
345
  }
319
346
  }
@@ -352,23 +379,26 @@ export class SolanaClient implements SolanaClientInterface {
352
379
  accountType: "solana",
353
380
  });
354
381
 
355
- const solAccounts = await CdpOpenApiClient.listSolanaAccounts({
356
- pageSize: options.pageSize,
357
- pageToken: options.pageToken,
358
- });
359
-
360
- return {
361
- accounts: solAccounts.accounts.map(account => {
362
- const solanaAccount = toSolanaAccount(CdpOpenApiClient, {
363
- account,
364
- });
365
-
366
- Analytics.wrapObjectMethodsWithErrorTracking(solanaAccount);
367
-
368
- return solanaAccount;
369
- }),
370
- nextPageToken: solAccounts.nextPageToken,
371
- };
382
+ try {
383
+ const solAccounts = await CdpOpenApiClient.listSolanaAccounts({
384
+ pageSize: options.pageSize,
385
+ pageToken: options.pageToken,
386
+ });
387
+
388
+ return {
389
+ accounts: solAccounts.accounts.map(account => {
390
+ const solanaAccount = toSolanaAccount(CdpOpenApiClient, {
391
+ account,
392
+ });
393
+
394
+ return solanaAccount;
395
+ }),
396
+ nextPageToken: solAccounts.nextPageToken,
397
+ };
398
+ } catch (error) {
399
+ Analytics.trackError(error, "listAccounts");
400
+ throw error;
401
+ }
372
402
  }
373
403
 
374
404
  /**
@@ -395,7 +425,12 @@ export class SolanaClient implements SolanaClientInterface {
395
425
  accountType: "solana",
396
426
  });
397
427
 
398
- return requestFaucet(CdpOpenApiClient, options);
428
+ try {
429
+ return requestFaucet(CdpOpenApiClient, options);
430
+ } catch (error) {
431
+ Analytics.trackError(error, "requestFaucet");
432
+ throw error;
433
+ }
399
434
  }
400
435
 
401
436
  /**
@@ -426,7 +461,12 @@ export class SolanaClient implements SolanaClientInterface {
426
461
  accountType: "solana",
427
462
  });
428
463
 
429
- return signMessage(CdpOpenApiClient, options);
464
+ try {
465
+ return signMessage(CdpOpenApiClient, options);
466
+ } catch (error) {
467
+ Analytics.trackError(error, "signMessage");
468
+ throw error;
469
+ }
430
470
  }
431
471
 
432
472
  /**
@@ -444,18 +484,44 @@ export class SolanaClient implements SolanaClientInterface {
444
484
  * // Create a Solana account
445
485
  * const account = await cdp.solana.createAccount();
446
486
  *
447
- * // Add your transaction instructions here
448
- * const transaction = new Transaction()
449
- *
450
- * // Make sure to set requireAllSignatures to false, since signing will be done through the API
451
- * const serializedTransaction = transaction.serialize({
452
- * requireAllSignatures: false,
453
- * });
454
- *
455
- * // Base64 encode the serialized transaction
456
- * const transaction = Buffer.from(serializedTransaction).toString("base64");
457
- *
458
- * // When you want to sign a transaction, you can do so by address and base64 encoded transaction
487
+ * // Build your transaction using @solana/kit
488
+ * import {
489
+ * address as solanaAddress,
490
+ * appendTransactionMessageInstructions,
491
+ * compileTransaction,
492
+ * createNoopSigner,
493
+ * createSolanaRpc,
494
+ * createTransactionMessage,
495
+ * getBase64EncodedWireTransaction,
496
+ * pipe,
497
+ * setTransactionMessageFeePayer,
498
+ * setTransactionMessageLifetimeUsingBlockhash,
499
+ * } from "@solana/kit";
500
+ * import { getTransferSolInstruction } from "@solana-program/system";
501
+ *
502
+ * const rpc = createSolanaRpc("https://api.devnet.solana.com");
503
+ * const { value: { blockhash, lastValidBlockHeight } } = await rpc.getLatestBlockhash().send();
504
+ *
505
+ * const txMsg = pipe(
506
+ * createTransactionMessage({ version: 0 }),
507
+ * (tx) => setTransactionMessageFeePayer(solanaAddress(account.address), tx),
508
+ * (tx) => setTransactionMessageLifetimeUsingBlockhash(
509
+ * { blockhash, lastValidBlockHeight },
510
+ * tx,
511
+ * ),
512
+ * (tx) => appendTransactionMessageInstructions([
513
+ * getTransferSolInstruction({
514
+ * source: createNoopSigner(solanaAddress(account.address)),
515
+ * destination: solanaAddress("3KzDtddx4i53FBkvCzuDmRbaMozTZoJBb1TToWhz3JfE"),
516
+ * amount: 10000n,
517
+ * }),
518
+ * ], tx),
519
+ * );
520
+ *
521
+ * // Base64 encode the compiled transaction
522
+ * const transaction = getBase64EncodedWireTransaction(compileTransaction(txMsg));
523
+ *
524
+ * // Sign the transaction via the CDP API
459
525
  * const signature = await cdp.solana.signTransaction({
460
526
  * address: account.address,
461
527
  * transaction,
@@ -468,7 +534,12 @@ export class SolanaClient implements SolanaClientInterface {
468
534
  accountType: "solana",
469
535
  });
470
536
 
471
- return signTransaction(CdpOpenApiClient, options);
537
+ try {
538
+ return signTransaction(CdpOpenApiClient, options);
539
+ } catch (error) {
540
+ Analytics.trackError(error, "signTransaction");
541
+ throw error;
542
+ }
472
543
  }
473
544
 
474
545
  /**
@@ -518,19 +589,22 @@ export class SolanaClient implements SolanaClientInterface {
518
589
  accountType: "solana",
519
590
  });
520
591
 
521
- const openApiAccount = await CdpOpenApiClient.updateSolanaAccount(
522
- options.address,
523
- options.update,
524
- options.idempotencyKey,
525
- );
526
-
527
- const account = toSolanaAccount(CdpOpenApiClient, {
528
- account: openApiAccount,
529
- });
592
+ try {
593
+ const openApiAccount = await CdpOpenApiClient.updateSolanaAccount(
594
+ options.address,
595
+ options.update,
596
+ options.idempotencyKey,
597
+ );
530
598
 
531
- Analytics.wrapObjectMethodsWithErrorTracking(account);
599
+ const account = toSolanaAccount(CdpOpenApiClient, {
600
+ account: openApiAccount,
601
+ });
532
602
 
533
- return account;
603
+ return account;
604
+ } catch (error) {
605
+ Analytics.trackError(error, "updateAccount");
606
+ throw error;
607
+ }
534
608
  }
535
609
 
536
610
  /**
@@ -560,7 +634,12 @@ export class SolanaClient implements SolanaClientInterface {
560
634
  },
561
635
  });
562
636
 
563
- return sendTransaction(CdpOpenApiClient, options);
637
+ try {
638
+ return sendTransaction(CdpOpenApiClient, options);
639
+ } catch (error) {
640
+ Analytics.trackError(error, "sendTransaction");
641
+ throw error;
642
+ }
564
643
  }
565
644
 
566
645
  /**
@@ -589,31 +668,36 @@ export class SolanaClient implements SolanaClientInterface {
589
668
  },
590
669
  });
591
670
 
592
- const tokenBalances = await CdpOpenApiClient.listSolanaTokenBalances(
593
- options.network || "solana",
594
- options.address,
595
- {
596
- pageSize: options.pageSize,
597
- pageToken: options.pageToken,
598
- },
599
- );
600
-
601
- return {
602
- balances: tokenBalances.balances.map(balance => {
603
- return {
604
- amount: {
605
- amount: BigInt(balance.amount.amount),
606
- decimals: balance.amount.decimals,
607
- },
608
- token: {
609
- mintAddress: balance.token.mintAddress,
610
- name: balance.token.name,
611
- symbol: balance.token.symbol,
612
- },
613
- };
614
- }),
615
- nextPageToken: tokenBalances.nextPageToken,
616
- };
671
+ try {
672
+ const tokenBalances = await CdpOpenApiClient.listSolanaTokenBalances(
673
+ options.network || "solana",
674
+ options.address,
675
+ {
676
+ pageSize: options.pageSize,
677
+ pageToken: options.pageToken,
678
+ },
679
+ );
680
+
681
+ return {
682
+ balances: tokenBalances.balances.map(balance => {
683
+ return {
684
+ amount: {
685
+ amount: BigInt(balance.amount.amount),
686
+ decimals: balance.amount.decimals,
687
+ },
688
+ token: {
689
+ mintAddress: balance.token.mintAddress,
690
+ name: balance.token.name,
691
+ symbol: balance.token.symbol,
692
+ },
693
+ };
694
+ }),
695
+ nextPageToken: tokenBalances.nextPageToken,
696
+ };
697
+ } catch (error) {
698
+ Analytics.trackError(error, "listTokenBalances");
699
+ throw error;
700
+ }
617
701
  }
618
702
 
619
703
  /**
@@ -636,8 +720,6 @@ export class SolanaClient implements SolanaClientInterface {
636
720
  account: openApiAccount,
637
721
  });
638
722
 
639
- Analytics.wrapObjectMethodsWithErrorTracking(account);
640
-
641
723
  return account;
642
724
  }
643
725
 
@@ -665,8 +747,6 @@ export class SolanaClient implements SolanaClientInterface {
665
747
  account: openApiAccount,
666
748
  });
667
749
 
668
- Analytics.wrapObjectMethodsWithErrorTracking(account);
669
-
670
750
  return account;
671
751
  }
672
752
  }