@coinbase/cdp-sdk 1.45.0 → 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 (211) hide show
  1. package/CHANGELOG.md +14 -2
  2. package/README.md +47 -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/toEvmSmartAccount.js +6 -2
  6. package/_cjs/accounts/evm/toEvmSmartAccount.js.map +1 -1
  7. package/_cjs/accounts/evm/toNetworkScopedEvmSmartAccount.js +31 -0
  8. package/_cjs/accounts/evm/toNetworkScopedEvmSmartAccount.js.map +1 -1
  9. package/_cjs/actions/solana/transfer.js.map +1 -1
  10. package/_cjs/actions/solana/utils.js +9 -9
  11. package/_cjs/actions/solana/utils.js.map +1 -1
  12. package/_cjs/auth/utils/http.js +1 -0
  13. package/_cjs/auth/utils/http.js.map +1 -1
  14. package/_cjs/client/cdp.js +4 -1
  15. package/_cjs/client/cdp.js.map +1 -1
  16. package/_cjs/client/end-user/endUser.js +385 -4
  17. package/_cjs/client/end-user/endUser.js.map +1 -1
  18. package/_cjs/client/end-user/toEndUserAccount.js +201 -23
  19. package/_cjs/client/end-user/toEndUserAccount.js.map +1 -1
  20. package/_cjs/client/solana/solana.js +39 -13
  21. package/_cjs/client/solana/solana.js.map +1 -1
  22. package/_cjs/index.js.map +1 -1
  23. package/_cjs/openapi-client/cdpApiClient.js +32 -0
  24. package/_cjs/openapi-client/cdpApiClient.js.map +1 -1
  25. package/_cjs/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js +52 -15
  26. package/_cjs/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js.map +1 -1
  27. package/_cjs/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.js +261 -0
  28. package/_cjs/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.js.map +1 -0
  29. package/_cjs/openapi-client/generated/end-user-accounts/end-user-accounts.js.map +1 -1
  30. package/_cjs/openapi-client/generated/evm-accounts/evm-accounts.js.map +1 -1
  31. package/_cjs/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.js +2 -2
  32. package/_cjs/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.js.map +1 -1
  33. package/_cjs/openapi-client/generated/evm-swaps/evm-swaps.js.map +1 -1
  34. package/_cjs/openapi-client/generated/evm-token-balances/evm-token-balances.js.map +1 -1
  35. package/_cjs/openapi-client/generated/faucets/faucets.js +6 -5
  36. package/_cjs/openapi-client/generated/faucets/faucets.js.map +1 -1
  37. package/_cjs/openapi-client/generated/onchain-data/onchain-data.js.map +1 -1
  38. package/_cjs/openapi-client/generated/onramp/onramp.js.map +1 -1
  39. package/_cjs/openapi-client/generated/policy-engine/policy-engine.js.map +1 -1
  40. package/_cjs/openapi-client/generated/solana-accounts/solana-accounts.js.map +1 -1
  41. package/_cjs/openapi-client/generated/solana-token-balances/solana-token-balances.js.map +1 -1
  42. package/_cjs/openapi-client/generated/sql-api/sql-api.js +75 -0
  43. package/_cjs/openapi-client/generated/sql-api/sql-api.js.map +1 -0
  44. package/_cjs/openapi-client/generated/webhooks/webhooks.js.map +1 -1
  45. package/_cjs/openapi-client/generated/x402-facilitator/x402-facilitator.js.map +1 -1
  46. package/_cjs/openapi-client/index.js +4 -1
  47. package/_cjs/openapi-client/index.js.map +1 -1
  48. package/_cjs/utils/export.js +6 -5
  49. package/_cjs/utils/export.js.map +1 -1
  50. package/_cjs/version.js +1 -1
  51. package/_esm/accounts/evm/eip6492.js +46 -0
  52. package/_esm/accounts/evm/eip6492.js.map +1 -0
  53. package/_esm/accounts/evm/toEvmSmartAccount.js +6 -2
  54. package/_esm/accounts/evm/toEvmSmartAccount.js.map +1 -1
  55. package/_esm/accounts/evm/toNetworkScopedEvmSmartAccount.js +31 -0
  56. package/_esm/accounts/evm/toNetworkScopedEvmSmartAccount.js.map +1 -1
  57. package/_esm/actions/solana/transfer.js.map +1 -1
  58. package/_esm/actions/solana/utils.js +9 -9
  59. package/_esm/actions/solana/utils.js.map +1 -1
  60. package/_esm/auth/utils/http.js +1 -0
  61. package/_esm/auth/utils/http.js.map +1 -1
  62. package/_esm/client/cdp.js +4 -1
  63. package/_esm/client/cdp.js.map +1 -1
  64. package/_esm/client/end-user/endUser.js +385 -4
  65. package/_esm/client/end-user/endUser.js.map +1 -1
  66. package/_esm/client/end-user/toEndUserAccount.js +201 -23
  67. package/_esm/client/end-user/toEndUserAccount.js.map +1 -1
  68. package/_esm/client/solana/solana.js +39 -13
  69. package/_esm/client/solana/solana.js.map +1 -1
  70. package/_esm/index.js.map +1 -1
  71. package/_esm/openapi-client/cdpApiClient.js +32 -0
  72. package/_esm/openapi-client/cdpApiClient.js.map +1 -1
  73. package/_esm/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js +49 -12
  74. package/_esm/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js.map +1 -1
  75. package/_esm/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.js +243 -0
  76. package/_esm/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.js.map +1 -0
  77. package/_esm/openapi-client/generated/end-user-accounts/end-user-accounts.js.map +1 -1
  78. package/_esm/openapi-client/generated/evm-accounts/evm-accounts.js.map +1 -1
  79. package/_esm/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.js +2 -2
  80. package/_esm/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.js.map +1 -1
  81. package/_esm/openapi-client/generated/evm-swaps/evm-swaps.js.map +1 -1
  82. package/_esm/openapi-client/generated/evm-token-balances/evm-token-balances.js.map +1 -1
  83. package/_esm/openapi-client/generated/faucets/faucets.js +6 -5
  84. package/_esm/openapi-client/generated/faucets/faucets.js.map +1 -1
  85. package/_esm/openapi-client/generated/onchain-data/onchain-data.js.map +1 -1
  86. package/_esm/openapi-client/generated/onramp/onramp.js.map +1 -1
  87. package/_esm/openapi-client/generated/policy-engine/policy-engine.js.map +1 -1
  88. package/_esm/openapi-client/generated/solana-accounts/solana-accounts.js.map +1 -1
  89. package/_esm/openapi-client/generated/solana-token-balances/solana-token-balances.js.map +1 -1
  90. package/_esm/openapi-client/generated/sql-api/sql-api.js +70 -0
  91. package/_esm/openapi-client/generated/sql-api/sql-api.js.map +1 -0
  92. package/_esm/openapi-client/generated/webhooks/webhooks.js.map +1 -1
  93. package/_esm/openapi-client/generated/x402-facilitator/x402-facilitator.js.map +1 -1
  94. package/_esm/openapi-client/index.js +4 -1
  95. package/_esm/openapi-client/index.js.map +1 -1
  96. package/_esm/utils/export.js +6 -5
  97. package/_esm/utils/export.js.map +1 -1
  98. package/_esm/version.js +1 -1
  99. package/_types/accounts/evm/eip6492.d.ts +17 -0
  100. package/_types/accounts/evm/eip6492.d.ts.map +1 -0
  101. package/_types/accounts/evm/toEvmSmartAccount.d.ts.map +1 -1
  102. package/_types/accounts/evm/toNetworkScopedEvmSmartAccount.d.ts +4 -4
  103. package/_types/accounts/evm/toNetworkScopedEvmSmartAccount.d.ts.map +1 -1
  104. package/_types/accounts/evm/types.d.ts +3 -2
  105. package/_types/accounts/evm/types.d.ts.map +1 -1
  106. package/_types/actions/solana/transfer.d.ts +3 -4
  107. package/_types/actions/solana/transfer.d.ts.map +1 -1
  108. package/_types/actions/solana/types.d.ts +79 -29
  109. package/_types/actions/solana/types.d.ts.map +1 -1
  110. package/_types/actions/solana/utils.d.ts +10 -9
  111. package/_types/actions/solana/utils.d.ts.map +1 -1
  112. package/_types/auth/utils/http.d.ts.map +1 -1
  113. package/_types/client/cdp.d.ts +4 -0
  114. package/_types/client/cdp.d.ts.map +1 -1
  115. package/_types/client/end-user/endUser.d.ts +272 -1
  116. package/_types/client/end-user/endUser.d.ts.map +1 -1
  117. package/_types/client/end-user/endUser.types.d.ts +491 -1
  118. package/_types/client/end-user/endUser.types.d.ts.map +1 -1
  119. package/_types/client/end-user/toEndUserAccount.d.ts +4 -1
  120. package/_types/client/end-user/toEndUserAccount.d.ts.map +1 -1
  121. package/_types/client/evm/evm.types.d.ts.map +1 -1
  122. package/_types/client/solana/solana.d.ts +38 -12
  123. package/_types/client/solana/solana.d.ts.map +1 -1
  124. package/_types/index.d.ts +1 -1
  125. package/_types/index.d.ts.map +1 -1
  126. package/_types/openapi-client/cdpApiClient.d.ts.map +1 -1
  127. package/_types/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.d.ts +487 -119
  128. package/_types/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.d.ts.map +1 -1
  129. package/_types/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.d.ts +163 -0
  130. package/_types/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.d.ts.map +1 -0
  131. package/_types/openapi-client/generated/end-user-accounts/end-user-accounts.d.ts +9 -9
  132. package/_types/openapi-client/generated/end-user-accounts/end-user-accounts.d.ts.map +1 -1
  133. package/_types/openapi-client/generated/evm-accounts/evm-accounts.d.ts +16 -16
  134. package/_types/openapi-client/generated/evm-accounts/evm-accounts.d.ts.map +1 -1
  135. package/_types/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.d.ts +14 -14
  136. package/_types/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.d.ts.map +1 -1
  137. package/_types/openapi-client/generated/evm-swaps/evm-swaps.d.ts +3 -3
  138. package/_types/openapi-client/generated/evm-swaps/evm-swaps.d.ts.map +1 -1
  139. package/_types/openapi-client/generated/evm-token-balances/evm-token-balances.d.ts +2 -2
  140. package/_types/openapi-client/generated/evm-token-balances/evm-token-balances.d.ts.map +1 -1
  141. package/_types/openapi-client/generated/faucets/faucets.d.ts +9 -8
  142. package/_types/openapi-client/generated/faucets/faucets.d.ts.map +1 -1
  143. package/_types/openapi-client/generated/onchain-data/onchain-data.d.ts +3 -3
  144. package/_types/openapi-client/generated/onchain-data/onchain-data.d.ts.map +1 -1
  145. package/_types/openapi-client/generated/onramp/onramp.d.ts +5 -5
  146. package/_types/openapi-client/generated/onramp/onramp.d.ts.map +1 -1
  147. package/_types/openapi-client/generated/policy-engine/policy-engine.d.ts +6 -6
  148. package/_types/openapi-client/generated/policy-engine/policy-engine.d.ts.map +1 -1
  149. package/_types/openapi-client/generated/solana-accounts/solana-accounts.d.ts +12 -12
  150. package/_types/openapi-client/generated/solana-accounts/solana-accounts.d.ts.map +1 -1
  151. package/_types/openapi-client/generated/solana-token-balances/solana-token-balances.d.ts +2 -2
  152. package/_types/openapi-client/generated/solana-token-balances/solana-token-balances.d.ts.map +1 -1
  153. package/_types/openapi-client/generated/sql-api/sql-api.d.ts +73 -0
  154. package/_types/openapi-client/generated/sql-api/sql-api.d.ts.map +1 -0
  155. package/_types/openapi-client/generated/webhooks/webhooks.d.ts +6 -6
  156. package/_types/openapi-client/generated/webhooks/webhooks.d.ts.map +1 -1
  157. package/_types/openapi-client/generated/x402-facilitator/x402-facilitator.d.ts +4 -4
  158. package/_types/openapi-client/generated/x402-facilitator/x402-facilitator.d.ts.map +1 -1
  159. package/_types/openapi-client/index.d.ts +19 -3
  160. package/_types/openapi-client/index.d.ts.map +1 -1
  161. package/_types/policies/evmSchema.d.ts +26 -78
  162. package/_types/policies/evmSchema.d.ts.map +1 -1
  163. package/_types/policies/types.d.ts.map +1 -1
  164. package/_types/types/contract.d.ts.map +1 -1
  165. package/_types/utils/export.d.ts +1 -1
  166. package/_types/utils/export.d.ts.map +1 -1
  167. package/_types/version.d.ts +1 -1
  168. package/accounts/evm/eip6492.ts +60 -0
  169. package/accounts/evm/toEvmSmartAccount.ts +17 -4
  170. package/accounts/evm/toNetworkScopedEvmSmartAccount.ts +44 -5
  171. package/accounts/evm/types.ts +8 -3
  172. package/actions/solana/transfer.ts +3 -3
  173. package/actions/solana/types.ts +79 -29
  174. package/actions/solana/utils.ts +13 -11
  175. package/auth/utils/http.ts +1 -0
  176. package/client/cdp.ts +6 -1
  177. package/client/end-user/endUser.ts +513 -4
  178. package/client/end-user/endUser.types.ts +598 -0
  179. package/client/end-user/toEndUserAccount.ts +330 -26
  180. package/client/evm/evm.types.ts +4 -2
  181. package/client/solana/solana.ts +39 -13
  182. package/index.ts +31 -1
  183. package/openapi-client/cdpApiClient.ts +34 -0
  184. package/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.ts +566 -152
  185. package/openapi-client/generated/embedded-wallets-core-functionality/embedded-wallets-core-functionality.ts +455 -0
  186. package/openapi-client/generated/end-user-accounts/end-user-accounts.ts +12 -9
  187. package/openapi-client/generated/evm-accounts/evm-accounts.ts +19 -16
  188. package/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.ts +16 -16
  189. package/openapi-client/generated/evm-swaps/evm-swaps.ts +3 -3
  190. package/openapi-client/generated/evm-token-balances/evm-token-balances.ts +2 -2
  191. package/openapi-client/generated/faucets/faucets.ts +9 -8
  192. package/openapi-client/generated/onchain-data/onchain-data.ts +3 -3
  193. package/openapi-client/generated/onramp/onramp.ts +5 -5
  194. package/openapi-client/generated/policy-engine/policy-engine.ts +12 -6
  195. package/openapi-client/generated/solana-accounts/solana-accounts.ts +12 -12
  196. package/openapi-client/generated/solana-token-balances/solana-token-balances.ts +2 -2
  197. package/openapi-client/generated/sql-api/sql-api.ts +92 -0
  198. package/openapi-client/generated/webhooks/webhooks.ts +6 -6
  199. package/openapi-client/generated/x402-facilitator/x402-facilitator.ts +6 -4
  200. package/openapi-client/index.ts +4 -1
  201. package/package.json +7 -8
  202. package/types/contract.ts +2 -4
  203. package/utils/export.ts +6 -5
  204. package/version.ts +1 -1
  205. package/_cjs/openapi-client/generated/sql-api-alpha/sql-api-alpha.js +0 -55
  206. package/_cjs/openapi-client/generated/sql-api-alpha/sql-api-alpha.js.map +0 -1
  207. package/_esm/openapi-client/generated/sql-api-alpha/sql-api-alpha.js +0 -50
  208. package/_esm/openapi-client/generated/sql-api-alpha/sql-api-alpha.js.map +0 -1
  209. package/_types/openapi-client/generated/sql-api-alpha/sql-api-alpha.d.ts +0 -53
  210. package/_types/openapi-client/generated/sql-api-alpha/sql-api-alpha.d.ts.map +0 -1
  211. package/openapi-client/generated/sql-api-alpha/sql-api-alpha.ts +0 -72
@@ -75,18 +75,44 @@ export type AccountActions = {
75
75
  * // Create a Solana account
76
76
  * const account = await cdp.solana.createAccount();
77
77
  *
78
- * // Add your transaction instructions here
79
- * const transaction = new Transaction()
80
- *
81
- * // Make sure to set requireAllSignatures to false, since signing will be done through the API
82
- * const serializedTransaction = transaction.serialize({
83
- * requireAllSignatures: false,
84
- * });
85
- *
86
- * // Base64 encode the serialized transaction
87
- * const transaction = Buffer.from(serializedTransaction).toString("base64");
88
- *
89
- * // When you want to sign a transaction, you can do so by address and base64 encoded transaction
78
+ * // Build your transaction using @solana/kit
79
+ * import {
80
+ * address as solanaAddress,
81
+ * appendTransactionMessageInstructions,
82
+ * compileTransaction,
83
+ * createNoopSigner,
84
+ * createSolanaRpc,
85
+ * createTransactionMessage,
86
+ * getBase64EncodedWireTransaction,
87
+ * pipe,
88
+ * setTransactionMessageFeePayer,
89
+ * setTransactionMessageLifetimeUsingBlockhash,
90
+ * } from "@solana/kit";
91
+ * import { getTransferSolInstruction } from "@solana-program/system";
92
+ *
93
+ * const rpc = createSolanaRpc("https://api.devnet.solana.com");
94
+ * const { value: { blockhash, lastValidBlockHeight } } = await rpc.getLatestBlockhash().send();
95
+ *
96
+ * const txMsg = pipe(
97
+ * createTransactionMessage({ version: 0 }),
98
+ * (tx) => setTransactionMessageFeePayer(solanaAddress(account.address), tx),
99
+ * (tx) => setTransactionMessageLifetimeUsingBlockhash(
100
+ * { blockhash, lastValidBlockHeight },
101
+ * tx,
102
+ * ),
103
+ * (tx) => appendTransactionMessageInstructions([
104
+ * getTransferSolInstruction({
105
+ * source: createNoopSigner(solanaAddress(account.address)),
106
+ * destination: solanaAddress("3KzDtddx4i53FBkvCzuDmRbaMozTZoJBb1TToWhz3JfE"),
107
+ * amount: 10000n,
108
+ * }),
109
+ * ], tx),
110
+ * );
111
+ *
112
+ * // Base64 encode the compiled transaction
113
+ * const transaction = getBase64EncodedWireTransaction(compileTransaction(txMsg));
114
+ *
115
+ * // Sign the transaction via the CDP API
90
116
  * const { signedTransaction } = await account.signTransaction({
91
117
  * transaction,
92
118
  * });
@@ -111,18 +137,44 @@ export type AccountActions = {
111
137
  * // Create a Solana account
112
138
  * const account = await cdp.solana.createAccount();
113
139
  *
114
- * // Add your transaction instructions here
115
- * const transaction = new Transaction()
116
- *
117
- * // Make sure to set requireAllSignatures to false, since signing will be done through the API
118
- * const serializedTransaction = transaction.serialize({
119
- * requireAllSignatures: false,
120
- * });
121
- *
122
- * // Base64 encode the serialized transaction
123
- * const transaction = Buffer.from(serializedTransaction).toString("base64");
124
- *
125
- * // When you want to sign a transaction, you can do so by address and base64 encoded transaction
140
+ * // Build your transaction using @solana/kit
141
+ * import {
142
+ * address as solanaAddress,
143
+ * appendTransactionMessageInstructions,
144
+ * compileTransaction,
145
+ * createNoopSigner,
146
+ * createSolanaRpc,
147
+ * createTransactionMessage,
148
+ * getBase64EncodedWireTransaction,
149
+ * pipe,
150
+ * setTransactionMessageFeePayer,
151
+ * setTransactionMessageLifetimeUsingBlockhash,
152
+ * } from "@solana/kit";
153
+ * import { getTransferSolInstruction } from "@solana-program/system";
154
+ *
155
+ * const rpc = createSolanaRpc("https://api.devnet.solana.com");
156
+ * const { value: { blockhash, lastValidBlockHeight } } = await rpc.getLatestBlockhash().send();
157
+ *
158
+ * const txMsg = pipe(
159
+ * createTransactionMessage({ version: 0 }),
160
+ * (tx) => setTransactionMessageFeePayer(solanaAddress(account.address), tx),
161
+ * (tx) => setTransactionMessageLifetimeUsingBlockhash(
162
+ * { blockhash, lastValidBlockHeight },
163
+ * tx,
164
+ * ),
165
+ * (tx) => appendTransactionMessageInstructions([
166
+ * getTransferSolInstruction({
167
+ * source: createNoopSigner(solanaAddress(account.address)),
168
+ * destination: solanaAddress("3KzDtddx4i53FBkvCzuDmRbaMozTZoJBb1TToWhz3JfE"),
169
+ * amount: 10000n,
170
+ * }),
171
+ * ], tx),
172
+ * );
173
+ *
174
+ * // Base64 encode the compiled transaction
175
+ * const transaction = getBase64EncodedWireTransaction(compileTransaction(txMsg));
176
+ *
177
+ * // Send the transaction via the CDP API
126
178
  * const { transactionSignature } = await account.sendTransaction({
127
179
  * transaction,
128
180
  * });
@@ -138,20 +190,18 @@ export type AccountActions = {
138
190
  * @param {TransferOptions} options - Parameters for the transfer.
139
191
  * @param {string} options.to - The base58 encoded Solana address of the destination account.
140
192
  * @param {sol|usdc|string} options.token - The token to transfer ("sol" or "usdc"), or mint address of the SPL token to transfer.
141
- * @param {bigint} options.amount - The amount to transfer in atomic units of the token. For example, 0.01 * LAMPORTS_PER_SOL would transfer 0.01 SOL.
142
- * @param {string | Connection} options.network - The network identifier to use, or a Solana Connection object.
193
+ * @param {bigint} options.amount - The amount to transfer in atomic units of the token. For example, 1 SOL = 1_000_000_000 lamports.
194
+ * @param {string | SolanaRpcClient} options.network - The network identifier ("mainnet" or "devnet") to use, or an existing Solana RPC client.
143
195
  *
144
196
  * @returns A promise that resolves to the transaction signature, which can be used to wait for the transaction result.
145
197
  *
146
198
  * @example
147
199
  * ```ts
148
- * import { LAMPORTS_PER_SOL } from "@solana/web3.js";
149
- *
150
200
  * const account = await cdp.solana.getAccount({ name: "Account" });
151
201
  *
152
202
  * const { signature } = await account.transfer({
153
203
  * token: "sol",
154
- * amount: 5 * LAMPORTS_PER_SOL,
204
+ * amount: 5_000_000_000n, // 5 SOL in lamports
155
205
  * to: "3KzDtddx4i53FBkvCzuDmRbaMozTZoJBb1TToWhz3JfE",
156
206
  * network: "devnet",
157
207
  * });
@@ -1,4 +1,4 @@
1
- import { Connection } from "@solana/web3.js";
1
+ import { createSolanaRpc } from "@solana/kit";
2
2
 
3
3
  import {
4
4
  GENESIS_HASH_MAINNET,
@@ -9,27 +9,29 @@ import {
9
9
 
10
10
  export type Network = "mainnet" | "devnet";
11
11
 
12
+ export type SolanaRpcClient = ReturnType<typeof createSolanaRpc>;
13
+
12
14
  type GetOrCreateConnectionOptions = {
13
- networkOrConnection: Network | Connection;
15
+ networkOrConnection: Network | SolanaRpcClient;
14
16
  };
15
17
 
16
18
  /**
17
- * Get a connection for the Solana network
19
+ * Get a Solana RPC client for the given network or return the provided one
18
20
  *
19
21
  * @param options - The options for the connection
20
22
  *
21
- * @param options.networkOrConnection - The network to use or a connection
23
+ * @param options.networkOrConnection - The network to use or an existing RPC client
22
24
  *
23
- * @returns The connection
25
+ * @returns The RPC client
24
26
  */
25
27
  export function getOrCreateConnection({
26
28
  networkOrConnection,
27
- }: GetOrCreateConnectionOptions): Connection {
29
+ }: GetOrCreateConnectionOptions): SolanaRpcClient {
28
30
  if (typeof networkOrConnection !== "string") {
29
31
  return networkOrConnection;
30
32
  }
31
33
 
32
- return new Connection(
34
+ return createSolanaRpc(
33
35
  networkOrConnection === "mainnet"
34
36
  ? "https://api.mainnet-beta.solana.com"
35
37
  : "https://api.devnet.solana.com",
@@ -37,13 +39,13 @@ export function getOrCreateConnection({
37
39
  }
38
40
 
39
41
  /**
40
- * Legacy function for compatibility during migration
42
+ * Determine the network from the RPC client by checking the genesis hash
41
43
  *
42
- * @param connection - The Solana Connection instance
44
+ * @param rpc - The Solana RPC client
43
45
  * @returns The network type (mainnet or devnet)
44
46
  */
45
- export async function getConnectedNetwork(connection: Connection): Promise<Network> {
46
- const genesisHash = await connection.getGenesisHash();
47
+ export async function getConnectedNetwork(rpc: SolanaRpcClient): Promise<Network> {
48
+ const genesisHash = await rpc.getGenesisHash().send();
47
49
 
48
50
  if (genesisHash === GENESIS_HASH_MAINNET) {
49
51
  return "mainnet";
@@ -134,6 +134,7 @@ function requiresWalletAuth(requestMethod: string, requestPath: string): boolean
134
134
  (requestPath?.includes("/accounts") ||
135
135
  requestPath?.includes("/spend-permissions") ||
136
136
  requestPath?.includes("/user-operations/prepare-and-send") ||
137
+ requestPath?.includes("/embedded-wallet-api/") ||
137
138
  requestPath?.endsWith("/end-users") ||
138
139
  requestPath?.endsWith("/end-users/import") ||
139
140
  /\/end-users\/[^/]+\/evm$/.test(requestPath) ||
package/client/cdp.ts CHANGED
@@ -13,6 +13,8 @@ export interface CdpClientOptions {
13
13
  apiKeySecret?: string;
14
14
  /** The wallet secret. */
15
15
  walletSecret?: string;
16
+ /** The CDP project ID. Required for end-user delegation operations (signing, sending). */
17
+ projectId?: string;
16
18
  /** Whether to enable debugging. */
17
19
  debugging?: boolean;
18
20
  /** The host URL to connect to. */
@@ -50,6 +52,7 @@ export class CdpClient {
50
52
  * CDP_API_KEY_ID=your-api-key-id
51
53
  * CDP_API_KEY_SECRET=your-api-key-secret
52
54
  * CDP_WALLET_SECRET=your-wallet-secret
55
+ * CDP_PROJECT_ID=your-project-id
53
56
  * ```
54
57
  *
55
58
  * Or passed as options to the constructor:
@@ -59,6 +62,7 @@ export class CdpClient {
59
62
  * apiKeyId: "your-api-key-id",
60
63
  * apiKeySecret: "your-api-key-secret",
61
64
  * walletSecret: "your-wallet-secret",
65
+ * projectId: "your-project-id",
62
66
  * });
63
67
  * ```
64
68
  *
@@ -83,6 +87,7 @@ We recommend using https://github.com/Schniz/fnm for managing your Node.js versi
83
87
  const apiKeyId = options.apiKeyId ?? process.env.CDP_API_KEY_ID ?? process.env.CDP_API_KEY_NAME;
84
88
  const apiKeySecret = options.apiKeySecret ?? process.env.CDP_API_KEY_SECRET;
85
89
  const walletSecret = options.walletSecret ?? process.env.CDP_WALLET_SECRET;
90
+ const projectId = options.projectId ?? process.env.CDP_PROJECT_ID;
86
91
 
87
92
  if (!apiKeyId || !apiKeySecret) {
88
93
  throw new Error(`
@@ -135,6 +140,6 @@ For more information, see: https://github.com/coinbase/cdp-sdk/blob/main/typescr
135
140
  this.evm = new EvmClient();
136
141
  this.solana = new SolanaClient();
137
142
  this.policies = new PoliciesClient();
138
- this.endUser = new CDPEndUserClient();
143
+ this.endUser = new CDPEndUserClient(projectId);
139
144
  }
140
145
  }