@coinbase/cdp-sdk 1.4.0 → 1.5.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 (93) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +87 -2
  3. package/_cjs/accounts/evm/toEvmServerAccount.js +5 -0
  4. package/_cjs/accounts/evm/toEvmServerAccount.js.map +1 -1
  5. package/_cjs/accounts/evm/toEvmSmartAccount.js +7 -2
  6. package/_cjs/accounts/evm/toEvmSmartAccount.js.map +1 -1
  7. package/_cjs/actions/evm/transfer/accountTransferStrategy.js +72 -0
  8. package/_cjs/actions/evm/transfer/accountTransferStrategy.js.map +1 -0
  9. package/_cjs/actions/evm/transfer/smartAccountTransferStrategy.js +65 -0
  10. package/_cjs/actions/evm/transfer/smartAccountTransferStrategy.js.map +1 -0
  11. package/_cjs/actions/evm/transfer/transfer.js +59 -0
  12. package/_cjs/actions/evm/transfer/transfer.js.map +1 -0
  13. package/_cjs/actions/evm/transfer/types.js +3 -0
  14. package/_cjs/actions/evm/transfer/types.js.map +1 -0
  15. package/_cjs/actions/evm/transfer/utils.js +39 -0
  16. package/_cjs/actions/evm/transfer/utils.js.map +1 -0
  17. package/_cjs/actions/evm/types.js +3 -0
  18. package/_cjs/actions/evm/types.js.map +1 -0
  19. package/_cjs/client/evm/evm.js +44 -2
  20. package/_cjs/client/evm/evm.js.map +1 -1
  21. package/_cjs/client/solana/solana.js +42 -0
  22. package/_cjs/client/solana/solana.js.map +1 -1
  23. package/_cjs/utils/serializeTransaction.js +18 -0
  24. package/_cjs/utils/serializeTransaction.js.map +1 -0
  25. package/_cjs/version.js +1 -1
  26. package/_esm/accounts/evm/toEvmServerAccount.js +5 -0
  27. package/_esm/accounts/evm/toEvmServerAccount.js.map +1 -1
  28. package/_esm/accounts/evm/toEvmSmartAccount.js +7 -2
  29. package/_esm/accounts/evm/toEvmSmartAccount.js.map +1 -1
  30. package/_esm/actions/evm/transfer/accountTransferStrategy.js +69 -0
  31. package/_esm/actions/evm/transfer/accountTransferStrategy.js.map +1 -0
  32. package/_esm/actions/evm/transfer/smartAccountTransferStrategy.js +62 -0
  33. package/_esm/actions/evm/transfer/smartAccountTransferStrategy.js.map +1 -0
  34. package/_esm/actions/evm/transfer/transfer.js +56 -0
  35. package/_esm/actions/evm/transfer/transfer.js.map +1 -0
  36. package/_esm/actions/evm/transfer/types.js +2 -0
  37. package/_esm/actions/evm/transfer/types.js.map +1 -0
  38. package/_esm/actions/evm/transfer/utils.js +35 -0
  39. package/_esm/actions/evm/transfer/utils.js.map +1 -0
  40. package/_esm/actions/evm/types.js +2 -0
  41. package/_esm/actions/evm/types.js.map +1 -0
  42. package/_esm/client/evm/evm.js +44 -2
  43. package/_esm/client/evm/evm.js.map +1 -1
  44. package/_esm/client/solana/solana.js +42 -0
  45. package/_esm/client/solana/solana.js.map +1 -1
  46. package/_esm/utils/serializeTransaction.js +15 -0
  47. package/_esm/utils/serializeTransaction.js.map +1 -0
  48. package/_esm/version.js +1 -1
  49. package/_types/accounts/evm/toEvmServerAccount.d.ts +2 -2
  50. package/_types/accounts/evm/toEvmServerAccount.d.ts.map +1 -1
  51. package/_types/accounts/evm/toEvmSmartAccount.d.ts +4 -4
  52. package/_types/accounts/evm/toEvmSmartAccount.d.ts.map +1 -1
  53. package/_types/accounts/types.d.ts +4 -3
  54. package/_types/accounts/types.d.ts.map +1 -1
  55. package/_types/actions/evm/transfer/accountTransferStrategy.d.ts +4 -0
  56. package/_types/actions/evm/transfer/accountTransferStrategy.d.ts.map +1 -0
  57. package/_types/actions/evm/transfer/smartAccountTransferStrategy.d.ts +4 -0
  58. package/_types/actions/evm/transfer/smartAccountTransferStrategy.d.ts.map +1 -0
  59. package/_types/actions/evm/transfer/transfer.d.ts +14 -0
  60. package/_types/actions/evm/transfer/transfer.d.ts.map +1 -0
  61. package/_types/actions/evm/transfer/types.d.ts +71 -0
  62. package/_types/actions/evm/transfer/types.d.ts.map +1 -0
  63. package/_types/actions/evm/transfer/utils.d.ts +631 -0
  64. package/_types/actions/evm/transfer/utils.d.ts.map +1 -0
  65. package/_types/actions/evm/types.d.ts +88 -0
  66. package/_types/actions/evm/types.d.ts.map +1 -0
  67. package/_types/client/evm/evm.d.ts +17 -1
  68. package/_types/client/evm/evm.d.ts.map +1 -1
  69. package/_types/client/evm/evm.types.d.ts +10 -1
  70. package/_types/client/evm/evm.types.d.ts.map +1 -1
  71. package/_types/client/solana/solana.d.ts +17 -1
  72. package/_types/client/solana/solana.d.ts.map +1 -1
  73. package/_types/client/solana/solana.types.d.ts +8 -0
  74. package/_types/client/solana/solana.types.d.ts.map +1 -1
  75. package/_types/utils/serializeTransaction.d.ts +9 -0
  76. package/_types/utils/serializeTransaction.d.ts.map +1 -0
  77. package/_types/version.d.ts +1 -1
  78. package/accounts/evm/toEvmServerAccount.ts +12 -6
  79. package/accounts/evm/toEvmSmartAccount.ts +16 -4
  80. package/accounts/types.ts +20 -16
  81. package/actions/evm/transfer/accountTransferStrategy.ts +84 -0
  82. package/actions/evm/transfer/smartAccountTransferStrategy.ts +70 -0
  83. package/actions/evm/transfer/transfer.ts +71 -0
  84. package/actions/evm/transfer/types.ts +81 -0
  85. package/actions/evm/transfer/utils.ts +39 -0
  86. package/actions/evm/types.ts +88 -0
  87. package/client/evm/evm.ts +45 -2
  88. package/client/evm/evm.types.ts +11 -1
  89. package/client/solana/solana.ts +43 -0
  90. package/client/solana/solana.types.ts +9 -0
  91. package/package.json +1 -1
  92. package/utils/serializeTransaction.ts +17 -0
  93. package/version.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # CDP SDK Changelog
2
2
 
3
+ ## 1.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#94](https://github.com/coinbase/cdp-sdk/pull/94) [`071515e`](https://github.com/coinbase/cdp-sdk/commit/071515e5c8222ba277e207e1c5507d73379ebe5e) Thanks [@sddioulde](https://github.com/sddioulde)! - Added a getOrCreateAccount function to the EVM and Solana clients
8
+
9
+ - [#90](https://github.com/coinbase/cdp-sdk/pull/90) [`2bf3dfb`](https://github.com/coinbase/cdp-sdk/commit/2bf3dfbd60a5a6b2f127454a5ce67ade5463eff9) Thanks [@0xRAG](https://github.com/0xRAG)! - Added transfer methods EvmAccount and EvmSmartAccount
10
+
3
11
  ## 1.4.0
4
12
 
5
13
  ### Minor Changes
package/README.md CHANGED
@@ -102,13 +102,29 @@ const cdp = new CdpClient({
102
102
  #### Create an EVM account as follows:
103
103
 
104
104
  ```typescript
105
- const evmAccount = await cdp.evm.createAccount();
105
+ const account = await cdp.evm.createAccount();
106
106
  ```
107
107
 
108
108
  #### Create a Solana account as follows:
109
109
 
110
110
  ```typescript
111
- const solanaAccount = await cdp.solana.createAccount();
111
+ const account = await cdp.solana.createAccount();
112
+ ```
113
+
114
+ #### Get or Create an EVM account as follows:
115
+
116
+ ```typescript
117
+ const account = await cdp.evm.getOrCreateAccount({
118
+ name: 'Account1'
119
+ });
120
+ ```
121
+
122
+ #### Get or Create a Solana account as follows:
123
+
124
+ ```typescript
125
+ const account = await cdp.solana.getOrCreateAccount({
126
+ name: 'Account1'
127
+ });
112
128
  ```
113
129
 
114
130
  ### Testnet faucet
@@ -271,6 +287,75 @@ const userOperation = await cdp.sendUserOperation({
271
287
  });
272
288
  ```
273
289
 
290
+ ### Tranferring tokens
291
+
292
+ For complete examples, check out [transfer.ts](https://github.com/coinbase/cdp-sdk/blob/main/examples/typescript/evm/transfer.ts) and [transferWithSmartWallet.ts](https://github.com/coinbase/cdp-sdk/blob/main/examples/typescript/evm/transferWithSmartWallet.ts).
293
+
294
+ You can transfer tokens between accounts using the `transfer` function:
295
+
296
+ ```typescript
297
+ const sender = await cdp.evm.createAccount({ name: "Sender" });
298
+
299
+ const { status } = await sender.transfer({
300
+ to: "0x9F663335Cd6Ad02a37B633602E98866CF944124d",
301
+ amount: "0.01",
302
+ token: "usdc",
303
+ network: "base-sepolia",
304
+ });
305
+ ```
306
+
307
+ Smart Accounts also have a `transfer` function:
308
+
309
+ ```typescript
310
+ const sender = await cdp.evm.createSmartAccount({
311
+ owner: privateKeyToAccount(generatePrivateKey()),
312
+ });
313
+ console.log("Created smart account", sender);
314
+
315
+ const { status } = await sender.transfer({
316
+ to: "0x9F663335Cd6Ad02a37B633602E98866CF944124d",
317
+ amount: "0.01",
318
+ token: "usdc",
319
+ network: "base-sepolia",
320
+ });
321
+ ```
322
+
323
+ If you pass a decimal amount in a string, the SDK will parse it into a bigint based on the token's decimals. You can also pass a bigint directly:
324
+
325
+ ```typescript
326
+ const { status } = await sender.transfer({
327
+ to: "0x9F663335Cd6Ad02a37B633602E98866CF944124d",
328
+ amount: 10000n, // equivalent to 0.01 usdc
329
+ token: "usdc",
330
+ network: "base-sepolia",
331
+ });
332
+ ```
333
+
334
+ You can pass `usdc` or `eth` as the token to transfer, or you can pass a contract address directly:
335
+
336
+ ```typescript
337
+ const { status } = await sender.transfer({
338
+ to: "0x9F663335Cd6Ad02a37B633602E98866CF944124d",
339
+ amount: "0.000001",
340
+ token: "0x4200000000000000000000000000000000000006", // WETH on Base Sepolia
341
+ network: "base-sepolia",
342
+ });
343
+ ```
344
+
345
+ You can also pass another account as the `to` parameter:
346
+
347
+ ```typescript
348
+ const sender = await cdp.evm.createAccount({ name: "Sender" });
349
+ const receiver = await cdp.evm.createAccount({ name: "Receiver" });
350
+
351
+ const { status } = await sender.transfer({
352
+ to: receiver,
353
+ amount: "0.01",
354
+ token: "usdc",
355
+ network: "base-sepolia",
356
+ });
357
+ ```
358
+
274
359
  ## Authentication tools
275
360
 
276
361
  This SDK also contains simple tools for authenticating REST API requests to the [Coinbase Developer Platform (CDP)](https://docs.cdp.coinbase.com/). See the [Auth README](src/auth/README.md) for more details.
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toEvmServerAccount = toEvmServerAccount;
4
4
  const viem_1 = require("viem");
5
+ const accountTransferStrategy_js_1 = require("../../actions/evm/transfer/accountTransferStrategy.js");
6
+ const transfer_js_1 = require("../../actions/evm/transfer/transfer.js");
5
7
  /**
6
8
  * Creates a Server-managed EvmAccount instance from an existing EvmAccount.
7
9
  * Use this to interact with previously deployed EvmAccounts, rather than creating new ones.
@@ -35,6 +37,9 @@ function toEvmServerAccount(apiClient, options) {
35
37
  async signTypedData() {
36
38
  throw new Error("Not implemented");
37
39
  },
40
+ async transfer(transferArgs) {
41
+ return (0, transfer_js_1.transfer)(apiClient, account, transferArgs, accountTransferStrategy_js_1.accountTransferStrategy);
42
+ },
38
43
  name: options.account.name,
39
44
  type: "evm-server",
40
45
  };
@@ -1 +1 @@
1
- {"version":3,"file":"toEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmServerAccount.ts"],"names":[],"mappings":";;AAwBA,gDAmCC;AA3DD,+BAAqE;AAerE;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAChC,SAA+B,EAC/B,OAAkC;IAElC,MAAM,OAAO,GAAqB;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAkB;QAC3C,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE;YAC3B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;gBACrE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;aAC5B,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,SAA0B,CAAC;QAC3C,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,UAA0B;YACnC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;gBAClE,IAAI,EAAE,UAAU,CAAC,IAAI;aACtB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,SAA0B,CAAC;QAC3C,CAAC;QAED,KAAK,CAAC,eAAe,CAAC,WAAoC;YACxD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;gBACzE,WAAW,EAAE,IAAA,2BAAoB,EAAC,WAAW,CAAC;aAC/C,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,iBAAkC,CAAC;QACnD,CAAC;QAED,KAAK,CAAC,aAAa;YACjB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QAC1B,IAAI,EAAE,YAAY;KACnB,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"toEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmServerAccount.ts"],"names":[],"mappings":";;AA2BA,gDAsCC;AAjED,+BAAoF;AAEpF,sGAAgG;AAChG,wEAAkE;AAelE;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAChC,SAA+B,EAC/B,OAAkC;IAElC,MAAM,OAAO,GAAqB;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAkB;QAC3C,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE;YAC3B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;gBACrE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;aAC5B,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,SAAgB,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,UAA0B;YACnC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;gBAClE,IAAI,EAAE,UAAU,CAAC,IAAI;aACtB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,SAAgB,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,eAAe,CAAC,WAAoC;YACxD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;gBACzE,WAAW,EAAE,IAAA,2BAAoB,EAAC,WAAW,CAAC;aAC/C,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,iBAAwB,CAAC;QACzC,CAAC;QAED,KAAK,CAAC,aAAa;YACjB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,YAAY;YACzB,OAAO,IAAA,sBAAQ,EAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,oDAAuB,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QAC1B,IAAI,EAAE,YAAY;KACnB,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,22 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toEvmSmartAccount = toEvmSmartAccount;
4
+ const smartAccountTransferStrategy_js_1 = require("../../actions/evm/transfer/smartAccountTransferStrategy.js");
5
+ const transfer_js_1 = require("../../actions/evm/transfer/transfer.js");
4
6
  /**
5
7
  * Creates a EvmSmartAccount instance from an existing EvmSmartAccount and owner.
6
8
  * Use this to interact with previously deployed EvmSmartAccounts, rather than creating new ones.
7
9
  *
8
10
  * The owner must be the original owner of the evm smart account.
9
11
  *
12
+ * @param {CdpOpenApiClientType} apiClient - The API client.
10
13
  * @param {ToEvmSmartAccountOptions} options - Configuration options.
11
14
  * @param {EvmSmartAccount} options.smartAccount - The deployed evm smart account.
12
15
  * @param {EvmAccount} options.owner - The owner which signs for the smart account.
13
16
  * @returns {EvmSmartAccount} A configured EvmSmartAccount instance ready for user operation submission.
14
- * @throws {Error} If the account is not an original owner of the smart account.
15
17
  */
16
- function toEvmSmartAccount(options) {
18
+ function toEvmSmartAccount(apiClient, options) {
17
19
  const account = {
18
20
  address: options.smartAccount.address,
19
21
  owners: [options.owner],
22
+ async transfer(transferArgs) {
23
+ return (0, transfer_js_1.transfer)(apiClient, account, transferArgs, smartAccountTransferStrategy_js_1.smartAccountTransferStrategy);
24
+ },
20
25
  name: options.smartAccount.name,
21
26
  type: "evm-smart",
22
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"toEvmSmartAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmSmartAccount.ts"],"names":[],"mappings":";;AA2BA,8CASC;AArBD;;;;;;;;;;;GAWG;AACH,SAAgB,iBAAiB,CAAC,OAAiC;IACjE,MAAM,OAAO,GAAoB;QAC/B,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,OAAkB;QAChD,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACvB,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI;QAC/B,IAAI,EAAE,WAAW;KAClB,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"toEvmSmartAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmSmartAccount.ts"],"names":[],"mappings":";;AAiCA,8CAeC;AAhDD,gHAA0G;AAC1G,wEAAkE;AAoBlE;;;;;;;;;;;GAWG;AACH,SAAgB,iBAAiB,CAC/B,SAA+B,EAC/B,OAAiC;IAEjC,MAAM,OAAO,GAAoB;QAC/B,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,OAAkB;QAChD,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,YAAY;YACzB,OAAO,IAAA,sBAAQ,EAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,8DAA4B,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI;QAC/B,IAAI,EAAE,WAAW;KAClB,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.accountTransferStrategy = void 0;
4
+ const viem_1 = require("viem");
5
+ const utils_js_1 = require("./utils.js");
6
+ const serializeTransaction_js_1 = require("../../../utils/serializeTransaction.js");
7
+ exports.accountTransferStrategy = {
8
+ executeTransfer: async ({ apiClient, from, transferArgs, to, value }) => {
9
+ const transactionHash = await (async () => {
10
+ if (transferArgs.token === "eth") {
11
+ const result = await apiClient.sendEvmTransaction(from.address, {
12
+ transaction: (0, serializeTransaction_js_1.serializeEIP1559Transaction)({
13
+ value,
14
+ to,
15
+ }),
16
+ network: transferArgs.network,
17
+ });
18
+ return result.transactionHash;
19
+ }
20
+ else {
21
+ const erc20Address = (0, utils_js_1.getErc20Address)(transferArgs.token, transferArgs.network);
22
+ await apiClient.sendEvmTransaction(from.address, {
23
+ transaction: (0, serializeTransaction_js_1.serializeEIP1559Transaction)({
24
+ to: erc20Address,
25
+ data: (0, viem_1.encodeFunctionData)({
26
+ abi: viem_1.erc20Abi,
27
+ functionName: "approve",
28
+ args: [to, value],
29
+ }),
30
+ }),
31
+ network: transferArgs.network,
32
+ });
33
+ const result = await apiClient.sendEvmTransaction(from.address, {
34
+ transaction: (0, serializeTransaction_js_1.serializeEIP1559Transaction)({
35
+ to: erc20Address,
36
+ data: (0, viem_1.encodeFunctionData)({
37
+ abi: viem_1.erc20Abi,
38
+ functionName: "transfer",
39
+ args: [to, value],
40
+ }),
41
+ }),
42
+ network: transferArgs.network,
43
+ });
44
+ return result.transactionHash;
45
+ }
46
+ })();
47
+ return transactionHash;
48
+ },
49
+ waitForResult: async ({ publicClient, hash }) => {
50
+ let receipt;
51
+ try {
52
+ receipt = await publicClient.waitForTransactionReceipt({
53
+ hash,
54
+ });
55
+ }
56
+ catch (error) {
57
+ if (error instanceof viem_1.WaitForTransactionReceiptTimeoutError) {
58
+ throw new Error(`Transaction timed out. Check the transaction on the explorer: ${publicClient.chain.blockExplorers?.default.url}/tx/${hash}`);
59
+ }
60
+ else {
61
+ throw error;
62
+ }
63
+ }
64
+ if (receipt.status === "success") {
65
+ return { status: receipt.status, transactionHash: hash };
66
+ }
67
+ else {
68
+ throw new Error(`Transaction failed. Check the transaction on the explorer: ${publicClient.chain.blockExplorers?.default.url}/tx/${hash}`);
69
+ }
70
+ },
71
+ };
72
+ //# sourceMappingURL=accountTransferStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountTransferStrategy.js","sourceRoot":"","sources":["../../../../actions/evm/transfer/accountTransferStrategy.ts"],"names":[],"mappings":";;;AAAA,+BAMc;AAGd,yCAA6C;AAE7C,oFAAqF;AAExE,QAAA,uBAAuB,GAA0C;IAC5E,eAAe,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACtE,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;YACxC,IAAI,YAAY,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE;oBAC9D,WAAW,EAAE,IAAA,qDAA2B,EAAC;wBACvC,KAAK;wBACL,EAAE;qBACH,CAAC;oBACF,OAAO,EAAE,YAAY,CAAC,OAAO;iBAC9B,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC,eAAsB,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,IAAA,0BAAe,EAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;gBAE/E,MAAM,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE;oBAC/C,WAAW,EAAE,IAAA,qDAA2B,EAAC;wBACvC,EAAE,EAAE,YAAY;wBAChB,IAAI,EAAE,IAAA,yBAAkB,EAAC;4BACvB,GAAG,EAAE,eAAQ;4BACb,YAAY,EAAE,SAAS;4BACvB,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC;yBAClB,CAAC;qBACH,CAAC;oBACF,OAAO,EAAE,YAAY,CAAC,OAAO;iBAC9B,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE;oBAC9D,WAAW,EAAE,IAAA,qDAA2B,EAAC;wBACvC,EAAE,EAAE,YAAY;wBAChB,IAAI,EAAE,IAAA,yBAAkB,EAAC;4BACvB,GAAG,EAAE,eAAQ;4BACb,YAAY,EAAE,UAAU;4BACxB,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC;yBAClB,CAAC;qBACH,CAAC;oBACF,OAAO,EAAE,YAAY,CAAC,OAAO;iBAC9B,CAAC,CAAC;gBAEH,OAAO,MAAM,CAAC,eAAsB,CAAC;YACvC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,aAAa,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE;QAC9C,IAAI,OAA2B,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC;gBACrD,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,4CAAqC,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CACb,iEAAiE,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,OAAO,IAAI,EAAE,CAC7H,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,8DAA8D,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,OAAO,IAAI,EAAE,CAC1H,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.smartAccountTransferStrategy = void 0;
4
+ const viem_1 = require("viem");
5
+ const utils_js_1 = require("./utils.js");
6
+ const sendUserOperation_js_1 = require("../sendUserOperation.js");
7
+ const waitForUserOperation_js_1 = require("../waitForUserOperation.js");
8
+ exports.smartAccountTransferStrategy = {
9
+ executeTransfer: async ({ apiClient, from, transferArgs, to, value }) => {
10
+ const userOpHash = await (async () => {
11
+ if (transferArgs.token === "eth") {
12
+ const result = await (0, sendUserOperation_js_1.sendUserOperation)(apiClient, from, {
13
+ network: transferArgs.network,
14
+ calls: [
15
+ {
16
+ to,
17
+ value,
18
+ data: "0x",
19
+ },
20
+ ],
21
+ });
22
+ return result.userOpHash;
23
+ }
24
+ else {
25
+ const erc20Address = (0, utils_js_1.getErc20Address)(transferArgs.token, transferArgs.network);
26
+ const result = await (0, sendUserOperation_js_1.sendUserOperation)(apiClient, from, {
27
+ network: transferArgs.network,
28
+ calls: [
29
+ {
30
+ to: erc20Address,
31
+ data: (0, viem_1.encodeFunctionData)({
32
+ abi: viem_1.erc20Abi,
33
+ functionName: "approve",
34
+ args: [to, value],
35
+ }),
36
+ },
37
+ {
38
+ to: erc20Address,
39
+ data: (0, viem_1.encodeFunctionData)({
40
+ abi: viem_1.erc20Abi,
41
+ functionName: "transfer",
42
+ args: [to, value],
43
+ }),
44
+ },
45
+ ],
46
+ });
47
+ return result.userOpHash;
48
+ }
49
+ })();
50
+ return userOpHash;
51
+ },
52
+ waitForResult: async ({ apiClient, publicClient, from, hash }) => {
53
+ const result = await (0, waitForUserOperation_js_1.waitForUserOperation)(apiClient, {
54
+ smartAccountAddress: from.address,
55
+ userOpHash: hash,
56
+ });
57
+ if (result.status === "complete") {
58
+ return { status: "success", transactionHash: hash };
59
+ }
60
+ else {
61
+ throw new Error(`Transaction failed. Check the transaction on the explorer: ${publicClient.chain.blockExplorers?.default.url}/tx/${hash}`);
62
+ }
63
+ },
64
+ };
65
+ //# sourceMappingURL=smartAccountTransferStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smartAccountTransferStrategy.js","sourceRoot":"","sources":["../../../../actions/evm/transfer/smartAccountTransferStrategy.ts"],"names":[],"mappings":";;;AAAA,+BAAoD;AAGpD,yCAA6C;AAE7C,kEAA4D;AAC5D,wEAAkE;AAErD,QAAA,4BAA4B,GAA+C;IACtF,eAAe,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACtE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;YACnC,IAAI,YAAY,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,MAAM,IAAA,wCAAiB,EAAC,SAAS,EAAE,IAAI,EAAE;oBACtD,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,KAAK,EAAE;wBACL;4BACE,EAAE;4BACF,KAAK;4BACL,IAAI,EAAE,IAAI;yBACX;qBACF;iBACF,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC,UAAU,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,IAAA,0BAAe,EAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;gBAE/E,MAAM,MAAM,GAAG,MAAM,IAAA,wCAAiB,EAAC,SAAS,EAAE,IAAI,EAAE;oBACtD,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,KAAK,EAAE;wBACL;4BACE,EAAE,EAAE,YAAY;4BAChB,IAAI,EAAE,IAAA,yBAAkB,EAAC;gCACvB,GAAG,EAAE,eAAQ;gCACb,YAAY,EAAE,SAAS;gCACvB,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC;6BAClB,CAAC;yBACH;wBACD;4BACE,EAAE,EAAE,YAAY;4BAChB,IAAI,EAAE,IAAA,yBAAkB,EAAC;gCACvB,GAAG,EAAE,eAAQ;gCACb,YAAY,EAAE,UAAU;gCACxB,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC;6BAClB,CAAC;yBACH;qBACF;iBACF,CAAC,CAAC;gBAEH,OAAO,MAAM,CAAC,UAAU,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,aAAa,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,MAAM,IAAA,8CAAoB,EAAC,SAAS,EAAE;YACnD,mBAAmB,EAAE,IAAI,CAAC,OAAO;YACjC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,8DAA8D,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,OAAO,IAAI,EAAE,CAC1H,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transfer = transfer;
4
+ const viem_1 = require("viem");
5
+ const utils_js_1 = require("./utils.js");
6
+ /**
7
+ * Transfer an amount of a token from an account to another account.
8
+ *
9
+ * @param apiClient - The client to use to send the transaction.
10
+ * @param from - The account to send the transaction from.
11
+ * @param transferArgs - The options for the transfer.
12
+ * @param transferStrategy - The strategy to use to execute the transfer.
13
+ * @returns The result of the transfer.
14
+ */
15
+ async function transfer(apiClient, from, transferArgs, transferStrategy) {
16
+ const publicClient = (0, viem_1.createPublicClient)({
17
+ chain: (0, utils_js_1.mapNetworkToChain)(transferArgs.network),
18
+ transport: (0, viem_1.http)(),
19
+ });
20
+ const to = typeof transferArgs.to === "string" ? transferArgs.to : transferArgs.to.address;
21
+ const value = await (async () => {
22
+ // user supplied a bigint. otherwise, we need to convert the amount to a bigint
23
+ if (typeof transferArgs.amount !== "string") {
24
+ return transferArgs.amount;
25
+ }
26
+ const decimals = await (async () => {
27
+ if (transferArgs.token === "eth") {
28
+ return 18;
29
+ }
30
+ else if (transferArgs.token === "usdc") {
31
+ return 6;
32
+ }
33
+ else {
34
+ return publicClient.readContract({
35
+ address: transferArgs.token,
36
+ abi: viem_1.erc20Abi,
37
+ functionName: "decimals",
38
+ args: [],
39
+ });
40
+ }
41
+ })();
42
+ return (0, viem_1.parseUnits)(transferArgs.amount, decimals);
43
+ })();
44
+ const hash = await transferStrategy.executeTransfer({
45
+ apiClient,
46
+ from,
47
+ transferArgs,
48
+ to,
49
+ value,
50
+ });
51
+ const result = await transferStrategy.waitForResult({
52
+ apiClient,
53
+ publicClient,
54
+ from,
55
+ hash,
56
+ });
57
+ return result;
58
+ }
59
+ //# sourceMappingURL=transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../../actions/evm/transfer/transfer.ts"],"names":[],"mappings":";;AAgBA,4BAsDC;AAtED,+BAAiG;AAGjG,yCAA+C;AAI/C;;;;;;;;GAQG;AACI,KAAK,UAAU,QAAQ,CAC5B,SAA+B,EAC/B,IAAO,EACP,YAA6B,EAC7B,gBAA8C;IAE9C,MAAM,YAAY,GAAG,IAAA,yBAAkB,EAAmB;QACxD,KAAK,EAAE,IAAA,4BAAiB,EAAC,YAAY,CAAC,OAAO,CAAC;QAC9C,SAAS,EAAE,IAAA,WAAI,GAAE;KAClB,CAAC,CAAC;IAEH,MAAM,EAAE,GACN,OAAO,YAAY,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAE,YAAY,CAAC,EAAE,CAAC,OAAmB,CAAC;IAE/F,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QAC9B,+EAA+E;QAC/E,IAAI,OAAO,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,YAAY,CAAC,MAAM,CAAC;QAC7B,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;YACjC,IAAI,YAAY,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBACjC,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,IAAI,YAAY,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBACzC,OAAO,CAAC,CAAC;YACX,CAAC;iBAAM,CAAC;gBACN,OAAO,YAAY,CAAC,YAAY,CAAC;oBAC/B,OAAO,EAAE,YAAY,CAAC,KAAK;oBAC3B,GAAG,EAAE,eAAQ;oBACb,YAAY,EAAE,UAAU;oBACxB,IAAI,EAAE,EAAE;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,IAAA,iBAAU,EAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC;QAClD,SAAS;QACT,IAAI;QACJ,YAAY;QACZ,EAAE;QACF,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC;QAClD,SAAS;QACT,YAAY;QACZ,IAAI;QACJ,IAAI;KACL,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../actions/evm/transfer/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getErc20Address = getErc20Address;
4
+ exports.mapNetworkToChain = mapNetworkToChain;
5
+ const chains_1 = require("viem/chains");
6
+ /**
7
+ * The address of an ERC20 token for a given network.
8
+ */
9
+ const addressMap = {
10
+ base: {
11
+ usdc: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
12
+ },
13
+ "base-sepolia": {
14
+ usdc: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
15
+ },
16
+ };
17
+ /**
18
+ * Get the address of an ERC20 token for a given network.
19
+ * If a contract address is provided, it will not be found in the map and will be returned as is.
20
+ *
21
+ * @param token - The token symbol or contract address.
22
+ * @param network - The network to get the address for.
23
+ *
24
+ * @returns The address of the ERC20 token.
25
+ */
26
+ function getErc20Address(token, network) {
27
+ return addressMap[network][token] ?? token;
28
+ }
29
+ /**
30
+ * Map a network to a viem chain.
31
+ * TODO: Add more networks (or dynamically map viem chains).
32
+ *
33
+ * @param network - The network to map to a chain.
34
+ * @returns The chain for the given network.
35
+ */
36
+ function mapNetworkToChain(network) {
37
+ return network === "base" ? chains_1.base : chains_1.baseSepolia;
38
+ }
39
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../actions/evm/transfer/utils.ts"],"names":[],"mappings":";;AAyBA,0CAEC;AASD,8CAEC;AAtCD,wCAAgD;AAIhD;;GAEG;AACH,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE;QACJ,IAAI,EAAE,4CAA4C;KACnD;IACD,cAAc,EAAE;QACd,IAAI,EAAE,4CAA4C;KACnD;CACF,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAAC,KAAa,EAAE,OAAgB;IAC7D,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,OAAgB;IAChD,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,aAAI,CAAC,CAAC,CAAC,oBAAW,CAAC;AACjD,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../actions/evm/types.ts"],"names":[],"mappings":""}
@@ -6,6 +6,7 @@ const toEvmServerAccount_js_1 = require("../../accounts/evm/toEvmServerAccount.j
6
6
  const toEvmSmartAccount_js_1 = require("../../accounts/evm/toEvmSmartAccount.js");
7
7
  const sendUserOperation_js_1 = require("../../actions/evm/sendUserOperation.js");
8
8
  const waitForUserOperation_js_1 = require("../../actions/evm/waitForUserOperation.js");
9
+ const errors_js_1 = require("../../openapi-client/errors.js");
9
10
  const index_js_1 = require("../../openapi-client/index.js");
10
11
  /**
11
12
  * The namespace containing all EVM methods.
@@ -102,7 +103,7 @@ class EvmClient {
102
103
  const smartAccount = await index_js_1.CdpOpenApiClient.createEvmSmartAccount({
103
104
  owners: [options.owner.address],
104
105
  }, options.idempotencyKey);
105
- return (0, toEvmSmartAccount_js_1.toEvmSmartAccount)({
106
+ return (0, toEvmSmartAccount_js_1.toEvmSmartAccount)(index_js_1.CdpOpenApiClient, {
106
107
  smartAccount,
107
108
  owner: options.owner,
108
109
  });
@@ -167,11 +168,52 @@ class EvmClient {
167
168
  */
168
169
  async getSmartAccount(options) {
169
170
  const smartAccount = await index_js_1.CdpOpenApiClient.getEvmSmartAccount(options.address);
170
- return (0, toEvmSmartAccount_js_1.toEvmSmartAccount)({
171
+ return (0, toEvmSmartAccount_js_1.toEvmSmartAccount)(index_js_1.CdpOpenApiClient, {
171
172
  smartAccount,
172
173
  owner: options.owner,
173
174
  });
174
175
  }
176
+ /**
177
+ * Gets a CDP EVM account, or creates one if it doesn't exist.
178
+ *
179
+ * @param {GetOrCreateServerAccountOptions} options - Parameters for getting or creating the account.
180
+ * @param {string} [options.name] - The name of the account to get or create.
181
+ *
182
+ * @returns A promise that resolves to the account.
183
+ *
184
+ * @example
185
+ * ```ts
186
+ * const account = await cdp.evm.getOrCreateAccount({
187
+ * name: "MyAccount",
188
+ * });
189
+ * ```
190
+ */
191
+ async getOrCreateAccount(options) {
192
+ try {
193
+ const account = await this.getAccount(options);
194
+ return account;
195
+ }
196
+ catch (error) {
197
+ // If it failed because the account doesn't exist, create it
198
+ const doesAccountNotExist = error instanceof errors_js_1.APIError && error.statusCode === 404;
199
+ if (doesAccountNotExist) {
200
+ try {
201
+ const account = await this.createAccount(options);
202
+ return account;
203
+ }
204
+ catch (error) {
205
+ // If it failed because the account already exists, throw an error
206
+ const doesAccountAlreadyExist = error instanceof errors_js_1.APIError && error.statusCode === 409;
207
+ if (doesAccountAlreadyExist) {
208
+ const account = await this.getAccount(options);
209
+ return account;
210
+ }
211
+ throw error;
212
+ }
213
+ }
214
+ throw error;
215
+ }
216
+ }
175
217
  /**
176
218
  * Gets a user operation for a smart account by user operation hash.
177
219
  *
@@ -1 +1 @@
1
- {"version":3,"file":"evm.js","sourceRoot":"","sources":["../../../client/evm/evm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evm.js","sourceRoot":"","sources":["../../../client/evm/evm.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SolanaClient = void 0;
4
+ const errors_js_1 = require("../../openapi-client/errors.js");
4
5
  const index_js_1 = require("../../openapi-client/index.js");
5
6
  /**
6
7
  * The namespace containing all Solana methods.
@@ -73,6 +74,47 @@ class SolanaClient {
73
74
  }
74
75
  throw new Error("Either address or name must be provided");
75
76
  }
77
+ /**
78
+ * Gets a Solana account by its address.
79
+ *
80
+ * @param {GetOrCreateAccountOptions} options - Parameters for getting or creating the Solana account.
81
+ * @param {string} options.name - The name of the account.
82
+ *
83
+ * @returns A promise that resolves to the account.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * const account = await cdp.solana.getOrCreateAccount({
88
+ * name: "MyAccount",
89
+ * });
90
+ * ```
91
+ */
92
+ async getOrCreateAccount(options) {
93
+ try {
94
+ const account = await this.getAccount(options);
95
+ return account;
96
+ }
97
+ catch (error) {
98
+ // If it failed because the account doesn't exist, create it
99
+ const doesAccountNotExist = error instanceof errors_js_1.APIError && error.statusCode === 404;
100
+ if (doesAccountNotExist) {
101
+ try {
102
+ const account = await this.createAccount(options);
103
+ return account;
104
+ }
105
+ catch (error) {
106
+ // If it failed because the account already exists, throw an error
107
+ const doesAccountAlreadyExist = error instanceof errors_js_1.APIError && error.statusCode === 409;
108
+ if (doesAccountAlreadyExist) {
109
+ const account = await this.getAccount(options);
110
+ return account;
111
+ }
112
+ throw error;
113
+ }
114
+ }
115
+ throw error;
116
+ }
117
+ }
76
118
  /**
77
119
  * Lists all Solana accounts.
78
120
  *
@@ -1 +1 @@
1
- {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../client/solana/solana.ts"],"names":[],"mappings":";;;AAYA,4DAAiE;AAEjE;;GAEG;AACH,MAAa,YAAY;IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,KAAK,CAAC,aAAa,CAAC,UAAgC,EAAE;QACpD,OAAO,2BAAgB,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,UAAU,CAAC,OAA0B;QACzC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,2BAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,2BAAgB,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,KAAK,CAAC,YAAY,CAAC,UAA+B,EAAE;QAClD,MAAM,WAAW,GAAG,MAAM,2BAAgB,CAAC,kBAAkB,CAAC;YAC5D,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,aAAa,EAAE,WAAW,CAAC,aAAa;SACzC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,aAAa,CAAC,OAA6B;QAC/C,MAAM,SAAS,GAAG,MAAM,2BAAgB,CAAC,mBAAmB,CAC1D,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAClD,OAAO,CAAC,cAAc,CACvB,CAAC;QAEF,OAAO;YACL,SAAS,EAAE,SAAS,CAAC,oBAAoB;SAC1C,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,WAAW,CAAC,OAA2B;QAC3C,OAAO,2BAAgB,CAAC,iBAAiB,CACvC,OAAO,CAAC,OAAO,EACf;YACE,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,EACD,OAAO,CAAC,cAAc,CACvB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,KAAK,CAAC,eAAe,CAAC,OAA+B;QACnD,MAAM,SAAS,GAAG,MAAM,2BAAgB,CAAC,qBAAqB,CAC5D,OAAO,CAAC,OAAO,EACf;YACE,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,EACD,OAAO,CAAC,cAAc,CACvB,CAAC;QAEF,OAAO;YACL,SAAS,EAAE,SAAS,CAAC,iBAAiB;SACvC,CAAC;IACJ,CAAC;CACF;AA3ND,oCA2NC"}
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../client/solana/solana.ts"],"names":[],"mappings":"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"}