@coinbase/cdp-sdk 1.10.0 → 1.12.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.
- package/CHANGELOG.md +14 -0
- package/README.md +137 -0
- package/_cjs/accounts/evm/toEvmServerAccount.js +32 -0
- package/_cjs/accounts/evm/toEvmServerAccount.js.map +1 -1
- package/_cjs/accounts/evm/toEvmSmartAccount.js +18 -0
- package/_cjs/accounts/evm/toEvmSmartAccount.js.map +1 -1
- package/_cjs/actions/evm/fund/Quote.js +63 -0
- package/_cjs/actions/evm/fund/Quote.js.map +1 -0
- package/_cjs/actions/evm/fund/fund.js +49 -0
- package/_cjs/actions/evm/fund/fund.js.map +1 -0
- package/_cjs/actions/evm/fund/quoteFund.js +46 -0
- package/_cjs/actions/evm/fund/quoteFund.js.map +1 -0
- package/_cjs/actions/evm/fund/types.js +3 -0
- package/_cjs/actions/evm/fund/types.js.map +1 -0
- package/_cjs/actions/evm/fund/waitForFundOperationReceipt.js +64 -0
- package/_cjs/actions/evm/fund/waitForFundOperationReceipt.js.map +1 -0
- package/_cjs/actions/evm/swap/createSwapQuote.js +126 -0
- package/_cjs/actions/evm/swap/createSwapQuote.js.map +1 -0
- package/_cjs/actions/evm/swap/getSwapPrice.js +86 -0
- package/_cjs/actions/evm/swap/getSwapPrice.js.map +1 -0
- package/_cjs/actions/evm/swap/sendSwapTransaction.js +141 -0
- package/_cjs/actions/evm/swap/sendSwapTransaction.js.map +1 -0
- package/_cjs/actions/evm/swap/types.js +3 -0
- package/_cjs/actions/evm/swap/types.js.map +1 -0
- package/_cjs/client/evm/evm.js +47 -1
- package/_cjs/client/evm/evm.js.map +1 -1
- package/_cjs/client/solana/solana.js +4 -1
- package/_cjs/client/solana/solana.js.map +1 -1
- package/_cjs/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js +45 -1
- package/_cjs/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js.map +1 -1
- package/_cjs/openapi-client/generated/evm-swaps/evm-swaps.js +26 -0
- package/_cjs/openapi-client/generated/evm-swaps/evm-swaps.js.map +1 -0
- package/_cjs/openapi-client/generated/evm-swaps/evm-swaps.msw.js +179 -0
- package/_cjs/openapi-client/generated/evm-swaps/evm-swaps.msw.js.map +1 -0
- package/_cjs/openapi-client/generated/index.msw.js +5 -3
- package/_cjs/openapi-client/generated/index.msw.js.map +1 -1
- package/_cjs/openapi-client/generated/payments-alpha/payments-alpha.js +50 -0
- package/_cjs/openapi-client/generated/payments-alpha/payments-alpha.js.map +1 -0
- package/_cjs/openapi-client/generated/payments-alpha/payments-alpha.msw.js +270 -0
- package/_cjs/openapi-client/generated/payments-alpha/payments-alpha.msw.js.map +1 -0
- package/_cjs/openapi-client/index.js +7 -0
- package/_cjs/openapi-client/index.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/accounts/evm/toEvmServerAccount.js +32 -0
- package/_esm/accounts/evm/toEvmServerAccount.js.map +1 -1
- package/_esm/accounts/evm/toEvmSmartAccount.js +18 -0
- package/_esm/accounts/evm/toEvmSmartAccount.js.map +1 -1
- package/_esm/actions/evm/fund/Quote.js +59 -0
- package/_esm/actions/evm/fund/Quote.js.map +1 -0
- package/_esm/actions/evm/fund/fund.js +46 -0
- package/_esm/actions/evm/fund/fund.js.map +1 -0
- package/_esm/actions/evm/fund/quoteFund.js +43 -0
- package/_esm/actions/evm/fund/quoteFund.js.map +1 -0
- package/_esm/actions/evm/fund/types.js +2 -0
- package/_esm/actions/evm/fund/types.js.map +1 -0
- package/_esm/actions/evm/fund/waitForFundOperationReceipt.js +61 -0
- package/_esm/actions/evm/fund/waitForFundOperationReceipt.js.map +1 -0
- package/_esm/actions/evm/swap/createSwapQuote.js +123 -0
- package/_esm/actions/evm/swap/createSwapQuote.js.map +1 -0
- package/_esm/actions/evm/swap/getSwapPrice.js +83 -0
- package/_esm/actions/evm/swap/getSwapPrice.js.map +1 -0
- package/_esm/actions/evm/swap/sendSwapTransaction.js +138 -0
- package/_esm/actions/evm/swap/sendSwapTransaction.js.map +1 -0
- package/_esm/actions/evm/swap/types.js +2 -0
- package/_esm/actions/evm/swap/types.js.map +1 -0
- package/_esm/client/evm/evm.js +47 -1
- package/_esm/client/evm/evm.js.map +1 -1
- package/_esm/client/solana/solana.js +4 -1
- package/_esm/client/solana/solana.js.map +1 -1
- package/_esm/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js +44 -0
- package/_esm/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js.map +1 -1
- package/_esm/openapi-client/generated/evm-swaps/evm-swaps.js +21 -0
- package/_esm/openapi-client/generated/evm-swaps/evm-swaps.js.map +1 -0
- package/_esm/openapi-client/generated/evm-swaps/evm-swaps.msw.js +167 -0
- package/_esm/openapi-client/generated/evm-swaps/evm-swaps.msw.js.map +1 -0
- package/_esm/openapi-client/generated/index.msw.js +5 -3
- package/_esm/openapi-client/generated/index.msw.js.map +1 -1
- package/_esm/openapi-client/generated/payments-alpha/payments-alpha.js +42 -0
- package/_esm/openapi-client/generated/payments-alpha/payments-alpha.js.map +1 -0
- package/_esm/openapi-client/generated/payments-alpha/payments-alpha.msw.js +250 -0
- package/_esm/openapi-client/generated/payments-alpha/payments-alpha.msw.js.map +1 -0
- package/_esm/openapi-client/index.js +7 -0
- package/_esm/openapi-client/index.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/accounts/evm/toEvmServerAccount.d.ts.map +1 -1
- package/_types/accounts/evm/toEvmSmartAccount.d.ts.map +1 -1
- package/_types/accounts/evm/types.d.ts +1 -2
- package/_types/accounts/evm/types.d.ts.map +1 -1
- package/_types/actions/evm/fund/Quote.d.ts +51 -0
- package/_types/actions/evm/fund/Quote.d.ts.map +1 -0
- package/_types/actions/evm/fund/fund.d.ts +25 -0
- package/_types/actions/evm/fund/fund.d.ts.map +1 -0
- package/_types/actions/evm/fund/quoteFund.d.ts +25 -0
- package/_types/actions/evm/fund/quoteFund.d.ts.map +1 -0
- package/_types/actions/evm/fund/types.d.ts +16 -0
- package/_types/actions/evm/fund/types.d.ts.map +1 -0
- package/_types/actions/evm/fund/waitForFundOperationReceipt.d.ts +68 -0
- package/_types/actions/evm/fund/waitForFundOperationReceipt.d.ts.map +1 -0
- package/_types/actions/evm/swap/createSwapQuote.d.ts +23 -0
- package/_types/actions/evm/swap/createSwapQuote.d.ts.map +1 -0
- package/_types/actions/evm/swap/getSwapPrice.d.ts +23 -0
- package/_types/actions/evm/swap/getSwapPrice.d.ts.map +1 -0
- package/_types/actions/evm/swap/sendSwapTransaction.d.ts +64 -0
- package/_types/actions/evm/swap/sendSwapTransaction.d.ts.map +1 -0
- package/_types/actions/evm/swap/types.d.ts +80 -0
- package/_types/actions/evm/swap/types.d.ts.map +1 -0
- package/_types/actions/evm/types.d.ts +151 -0
- package/_types/actions/evm/types.d.ts.map +1 -1
- package/_types/client/evm/evm.d.ts +39 -1
- package/_types/client/evm/evm.d.ts.map +1 -1
- package/_types/client/evm/evm.types.d.ts +209 -3
- package/_types/client/evm/evm.types.d.ts.map +1 -1
- package/_types/client/solana/solana.d.ts.map +1 -1
- package/_types/client/solana/solana.types.d.ts +2 -0
- package/_types/client/solana/solana.types.d.ts.map +1 -1
- package/_types/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.d.ts +547 -3
- package/_types/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.d.ts.map +1 -1
- package/_types/openapi-client/generated/evm-swaps/evm-swaps.d.ts +24 -0
- package/_types/openapi-client/generated/evm-swaps/evm-swaps.d.ts.map +1 -0
- package/_types/openapi-client/generated/evm-swaps/evm-swaps.msw.d.ts +12 -0
- package/_types/openapi-client/generated/evm-swaps/evm-swaps.msw.d.ts.map +1 -0
- package/_types/openapi-client/generated/index.msw.d.ts +5 -3
- package/_types/openapi-client/generated/index.msw.d.ts.map +1 -1
- package/_types/openapi-client/generated/payments-alpha/payments-alpha.d.ts +42 -0
- package/_types/openapi-client/generated/payments-alpha/payments-alpha.d.ts.map +1 -0
- package/_types/openapi-client/generated/payments-alpha/payments-alpha.msw.d.ts +20 -0
- package/_types/openapi-client/generated/payments-alpha/payments-alpha.msw.d.ts.map +1 -0
- package/_types/openapi-client/index.d.ts +11 -0
- package/_types/openapi-client/index.d.ts.map +1 -1
- package/_types/types/misc.d.ts +2 -2
- package/_types/types/misc.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/accounts/evm/toEvmServerAccount.ts +47 -0
- package/accounts/evm/toEvmSmartAccount.ts +26 -0
- package/accounts/evm/types.ts +1 -2
- package/actions/evm/fund/Quote.ts +83 -0
- package/actions/evm/fund/fund.ts +76 -0
- package/actions/evm/fund/quoteFund.ts +81 -0
- package/actions/evm/fund/types.ts +16 -0
- package/actions/evm/fund/waitForFundOperationReceipt.ts +118 -0
- package/actions/evm/swap/createSwapQuote.ts +148 -0
- package/actions/evm/swap/getSwapPrice.ts +95 -0
- package/actions/evm/swap/sendSwapTransaction.ts +173 -0
- package/actions/evm/swap/types.ts +94 -0
- package/actions/evm/types.ts +161 -0
- package/client/evm/evm.ts +59 -1
- package/client/evm/evm.types.ts +227 -1
- package/client/solana/solana.ts +4 -1
- package/client/solana/solana.types.ts +2 -0
- package/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.ts +617 -3
- package/openapi-client/generated/evm-swaps/evm-swaps.msw.ts +217 -0
- package/openapi-client/generated/evm-swaps/evm-swaps.ts +51 -0
- package/openapi-client/generated/index.msw.ts +5 -3
- package/openapi-client/generated/payments-alpha/payments-alpha.msw.ts +369 -0
- package/openapi-client/generated/payments-alpha/payments-alpha.ts +96 -0
- package/openapi-client/index.ts +7 -0
- package/package.json +1 -1
- package/types/misc.ts +2 -2
- package/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# CDP SDK Changelog
|
|
2
2
|
|
|
3
|
+
## 1.12.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#150](https://github.com/coinbase/cdp-sdk/pull/150) - Added support for swaps on EVM networks for EOAs.
|
|
8
|
+
|
|
9
|
+
## 1.11.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [#156](https://github.com/coinbase/cdp-sdk/pull/156) [`6e696cf`](https://github.com/coinbase/cdp-sdk/commit/6e696cf75e8e1f69180f192bc82103ca1b5dd6a9) Thanks [@rohan-agarwal-coinbase](https://github.com/rohan-agarwal-coinbase)! - Added support for funding an EVM account with eth or usdc using a linked debit card
|
|
14
|
+
|
|
15
|
+
- [#168](https://github.com/coinbase/cdp-sdk/pull/168) [`81e4de1`](https://github.com/coinbase/cdp-sdk/commit/81e4de18222108248d2230d77f4e1ac05e6a6aba) Thanks [@sddioulde](https://github.com/sddioulde)! - Added ability to create account with policy
|
|
16
|
+
|
|
3
17
|
## 1.10.0
|
|
4
18
|
|
|
5
19
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -7,6 +7,15 @@
|
|
|
7
7
|
- [Installation](#installation)
|
|
8
8
|
- [API Keys](#api-keys)
|
|
9
9
|
- [Usage](#usage)
|
|
10
|
+
- [Initialization](#initialization)
|
|
11
|
+
- [Creating Accounts](#creating-evm-or-solana-accounts)
|
|
12
|
+
- [Updating Accounts](#updating-evm-or-solana-accounts)
|
|
13
|
+
- [Testnet Faucet](#testnet-faucet)
|
|
14
|
+
- [Sending Transactions](#sending-transactions)
|
|
15
|
+
- [EVM Smart Accounts](#evm-smart-accounts)
|
|
16
|
+
- [EVM Swaps](#evm-swaps)
|
|
17
|
+
- [Transferring Tokens](#transferring-tokens)
|
|
18
|
+
- [Account Actions](#account-actions)
|
|
10
19
|
- [Policy Management](#policy-management)
|
|
11
20
|
- [Authentication tools](#authentication-tools)
|
|
12
21
|
- [Error Reporting](#error-reporting)
|
|
@@ -136,6 +145,26 @@ const account = await cdp.solana.getOrCreateAccount({
|
|
|
136
145
|
});
|
|
137
146
|
```
|
|
138
147
|
|
|
148
|
+
### Creating EVM or Solana accounts with policies
|
|
149
|
+
|
|
150
|
+
#### Create an EVM account with policy as follows:
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
const account = await cdp.evm.createAccount({
|
|
154
|
+
name: "AccountWithPolicy",
|
|
155
|
+
accountPolicy: "abcdef12-3456-7890-1234-567890123456"
|
|
156
|
+
})
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
#### Create a Solana account with policy as follows:
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
const account = await cdp.solana.createAccount({
|
|
163
|
+
name: "AccountWithPolicy",
|
|
164
|
+
accountPolicy: "abcdef12-3456-7890-1234-567890123456"
|
|
165
|
+
})
|
|
166
|
+
```
|
|
167
|
+
|
|
139
168
|
### Updating EVM or Solana accounts
|
|
140
169
|
|
|
141
170
|
#### Update an EVM account as follows:
|
|
@@ -322,6 +351,114 @@ const userOperation = await cdp.sendUserOperation({
|
|
|
322
351
|
});
|
|
323
352
|
```
|
|
324
353
|
|
|
354
|
+
### EVM Swaps
|
|
355
|
+
|
|
356
|
+
You can use the CDP SDK to swap tokens on EVM networks.
|
|
357
|
+
|
|
358
|
+
The SDK provides three approaches for performing token swaps:
|
|
359
|
+
|
|
360
|
+
#### 1. All-in-one pattern (Recommended)
|
|
361
|
+
|
|
362
|
+
The simplest approach for performing swaps. Creates and executes the swap in a single line of code:
|
|
363
|
+
|
|
364
|
+
```typescript
|
|
365
|
+
// Retrieve an existing EVM account with funds already in it
|
|
366
|
+
const account = await cdp.evm.getOrCreateAccount({ name: "MyExistingFundedAccount" });
|
|
367
|
+
|
|
368
|
+
// Execute a swap directly on an EVM account in one line
|
|
369
|
+
const { transactionHash } = await account.swap({
|
|
370
|
+
network: "base",
|
|
371
|
+
toToken: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC on Base
|
|
372
|
+
fromToken: "0x4200000000000000000000000000000000000006", // WETH on Base
|
|
373
|
+
fromAmount: BigInt("1000000000000000000"), // 1 WETH in wei
|
|
374
|
+
taker: account.address,
|
|
375
|
+
slippageBps: 100, // 1% slippage tolerance
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
console.log(`Swap executed: ${transactionHash}`);
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
#### 2. Get pricing information
|
|
382
|
+
|
|
383
|
+
Use `getSwapPrice` for quick price estimates and display purposes. This is ideal for showing exchange rates without committing to a swap:
|
|
384
|
+
|
|
385
|
+
```typescript
|
|
386
|
+
const swapPrice = await cdp.evm.getSwapPrice({
|
|
387
|
+
network: "ethereum",
|
|
388
|
+
toToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
|
|
389
|
+
fromToken: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH
|
|
390
|
+
fromAmount: BigInt("1000000000000000000"), // 1 WETH in wei
|
|
391
|
+
taker: "0x1234567890123456789012345678901234567890"
|
|
392
|
+
});
|
|
393
|
+
|
|
394
|
+
if (swapPrice.liquidityAvailable) {
|
|
395
|
+
console.log(`You'll receive: ${swapPrice.toAmount} USDC`);
|
|
396
|
+
console.log(`Minimum after slippage: ${swapPrice.minToAmount} USDC`);
|
|
397
|
+
}
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
**Note:** `getSwapPrice` does not reserve funds or signal commitment to swap, making it suitable for more frequent price updates with less strict rate limiting - although the data may be slightly less precise.
|
|
401
|
+
|
|
402
|
+
#### 3. Create and execute separately
|
|
403
|
+
|
|
404
|
+
Use `createSwapQuote` when you need full control over the swap process. This returns complete transaction data for execution:
|
|
405
|
+
|
|
406
|
+
**Important:** `createSwapQuote` signals a soft commitment to swap and may reserve funds on-chain. It is rate-limited more strictly than `getSwapPrice` to prevent abuse.
|
|
407
|
+
|
|
408
|
+
```typescript
|
|
409
|
+
// Retrieve an existing EVM account with funds already in it
|
|
410
|
+
const account = await cdp.evm.getOrCreateAccount({ name: "MyExistingFundedAccount" });
|
|
411
|
+
|
|
412
|
+
// Step 1: Create a swap quote with full transaction details
|
|
413
|
+
const swapQuote = await account.quoteSwap({
|
|
414
|
+
network: "base",
|
|
415
|
+
toToken: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
|
|
416
|
+
fromToken: "0x4200000000000000000000000000000000000006", // WETH
|
|
417
|
+
fromAmount: BigInt("1000000000000000000"), // 1 WETH in wei
|
|
418
|
+
slippageBps: 100, // 1% slippage tolerance
|
|
419
|
+
});
|
|
420
|
+
|
|
421
|
+
// Step 2: Check if liquidity is available, and/or perform other analysis on the swap quote
|
|
422
|
+
if (!swapQuote.liquidityAvailable) {
|
|
423
|
+
console.error("Insufficient liquidity for swap");
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
// Step 3: Execute using the quote (two options)
|
|
428
|
+
// Option 3A: Use the execute method on the quote
|
|
429
|
+
const { transactionHash } = await swapQuote.execute({});
|
|
430
|
+
|
|
431
|
+
// Option 3B: Pass the quote to account.swap()
|
|
432
|
+
const { transactionHash } = await account.swap({
|
|
433
|
+
swapQuote: swapQuote
|
|
434
|
+
});
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
#### When to use each approach:
|
|
438
|
+
|
|
439
|
+
- **All-in-one (`account.swap()`)**: Best for most use cases. Simple, handles everything automatically.
|
|
440
|
+
- **Price only (`getSwapPrice`)**: For displaying exchange rates, building price calculators, or checking liquidity without executing. Suitable when frequent price updates are needed - although the data may be slightly less precise.
|
|
441
|
+
- **Create then execute (`createSwapQuote`)**: When you need to inspect swap details, implement custom logic, or handle complex scenarios before execution. Note: May reserve funds on-chain and is more strictly rate-limited.
|
|
442
|
+
|
|
443
|
+
All approaches handle Permit2 signatures automatically for ERC20 token swaps. Make sure tokens have proper allowances set for the Permit2 contract before swapping.
|
|
444
|
+
|
|
445
|
+
#### Example implementations
|
|
446
|
+
|
|
447
|
+
To help you get started with token swaps in your application, we provide the following fully-working examples demonstrating different scenarios:
|
|
448
|
+
|
|
449
|
+
**Core swap patterns:**
|
|
450
|
+
- [Get a swap price estimate](https://github.com/coinbase/cdp-sdk/blob/main/examples/typescript/evm/getSwapPrice.ts) - Price estimation without commitment
|
|
451
|
+
- [Create a concrete swap quote for execution](https://github.com/coinbase/cdp-sdk/blob/main/examples/typescript/evm/createSwapQuote.ts) - Direct API usage with explicit taker
|
|
452
|
+
- [Execute a swap transaction using CDP Wallets (RECOMMENDED)](https://github.com/coinbase/cdp-sdk/blob/main/examples/typescript/evm/account.swap.ts) - All-in-one swap execution
|
|
453
|
+
|
|
454
|
+
**Account-based swap examples:**
|
|
455
|
+
- [Quote swap using account convenience method](https://github.com/coinbase/cdp-sdk/blob/main/examples/typescript/evm/account.quoteSwap.ts) - Account convenience method for creating quotes
|
|
456
|
+
- [Two-step quote and execute process](https://github.com/coinbase/cdp-sdk/blob/main/examples/typescript/evm/account.quoteSwapAndExecute.ts) - Detailed two-step approach with analysis
|
|
457
|
+
|
|
458
|
+
**External wallet integration:**
|
|
459
|
+
- [Execute a swap transaction using an external account (Viem)](https://github.com/coinbase/cdp-sdk/blob/main/examples/typescript/evm/viem.swap.ts) - Full swap execution with viem wallets
|
|
460
|
+
- [Create swap quotes using Viem wallets](https://github.com/coinbase/cdp-sdk/blob/main/examples/typescript/evm/viem.quoteSwap.ts) - Quote creation with external wallets
|
|
461
|
+
|
|
325
462
|
### Transferring tokens
|
|
326
463
|
|
|
327
464
|
#### EVM
|
|
@@ -2,9 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.toEvmServerAccount = toEvmServerAccount;
|
|
4
4
|
const viem_1 = require("viem");
|
|
5
|
+
const fund_js_1 = require("../../actions/evm/fund/fund.js");
|
|
6
|
+
const quoteFund_js_1 = require("../../actions/evm/fund/quoteFund.js");
|
|
7
|
+
const waitForFundOperationReceipt_js_1 = require("../../actions/evm/fund/waitForFundOperationReceipt.js");
|
|
5
8
|
const listTokenBalances_js_1 = require("../../actions/evm/listTokenBalances.js");
|
|
6
9
|
const requestFaucet_js_1 = require("../../actions/evm/requestFaucet.js");
|
|
7
10
|
const sendTransaction_js_1 = require("../../actions/evm/sendTransaction.js");
|
|
11
|
+
const createSwapQuote_js_1 = require("../../actions/evm/swap/createSwapQuote.js");
|
|
12
|
+
const sendSwapTransaction_js_1 = require("../../actions/evm/swap/sendSwapTransaction.js");
|
|
8
13
|
const accountTransferStrategy_js_1 = require("../../actions/evm/transfer/accountTransferStrategy.js");
|
|
9
14
|
const transfer_js_1 = require("../../actions/evm/transfer/transfer.js");
|
|
10
15
|
/**
|
|
@@ -62,6 +67,33 @@ function toEvmServerAccount(apiClient, options) {
|
|
|
62
67
|
address: this.address,
|
|
63
68
|
});
|
|
64
69
|
},
|
|
70
|
+
async quoteFund(options) {
|
|
71
|
+
return (0, quoteFund_js_1.quoteFund)(apiClient, {
|
|
72
|
+
...options,
|
|
73
|
+
address: this.address,
|
|
74
|
+
});
|
|
75
|
+
},
|
|
76
|
+
async fund(options) {
|
|
77
|
+
return (0, fund_js_1.fund)(apiClient, {
|
|
78
|
+
...options,
|
|
79
|
+
address: this.address,
|
|
80
|
+
});
|
|
81
|
+
},
|
|
82
|
+
async waitForFundOperationReceipt(options) {
|
|
83
|
+
return (0, waitForFundOperationReceipt_js_1.waitForFundOperationReceipt)(apiClient, options);
|
|
84
|
+
},
|
|
85
|
+
async quoteSwap(options) {
|
|
86
|
+
return (0, createSwapQuote_js_1.createSwapQuote)(apiClient, {
|
|
87
|
+
...options,
|
|
88
|
+
taker: this.address,
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
async swap(options) {
|
|
92
|
+
return (0, sendSwapTransaction_js_1.sendSwapTransaction)(apiClient, {
|
|
93
|
+
...options,
|
|
94
|
+
address: this.address,
|
|
95
|
+
});
|
|
96
|
+
},
|
|
65
97
|
name: options.account.name,
|
|
66
98
|
type: "evm-server",
|
|
67
99
|
policies: options.account.policies,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmServerAccount.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"toEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmServerAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.toEvmSmartAccount = toEvmSmartAccount;
|
|
4
|
+
const fund_js_1 = require("../../actions/evm/fund/fund.js");
|
|
5
|
+
const quoteFund_js_1 = require("../../actions/evm/fund/quoteFund.js");
|
|
6
|
+
const waitForFundOperationReceipt_js_1 = require("../../actions/evm/fund/waitForFundOperationReceipt.js");
|
|
4
7
|
const getUserOperation_js_1 = require("../../actions/evm/getUserOperation.js");
|
|
5
8
|
const listTokenBalances_js_1 = require("../../actions/evm/listTokenBalances.js");
|
|
6
9
|
const requestFaucet_js_1 = require("../../actions/evm/requestFaucet.js");
|
|
@@ -57,6 +60,21 @@ function toEvmSmartAccount(apiClient, options) {
|
|
|
57
60
|
address: account.address,
|
|
58
61
|
});
|
|
59
62
|
},
|
|
63
|
+
async quoteFund(options) {
|
|
64
|
+
return (0, quoteFund_js_1.quoteFund)(apiClient, {
|
|
65
|
+
...options,
|
|
66
|
+
address: this.address,
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
async fund(options) {
|
|
70
|
+
return (0, fund_js_1.fund)(apiClient, {
|
|
71
|
+
...options,
|
|
72
|
+
address: this.address,
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
async waitForFundOperationReceipt(options) {
|
|
76
|
+
return (0, waitForFundOperationReceipt_js_1.waitForFundOperationReceipt)(apiClient, options);
|
|
77
|
+
},
|
|
60
78
|
name: options.smartAccount.name,
|
|
61
79
|
type: "evm-smart",
|
|
62
80
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toEvmSmartAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmSmartAccount.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"toEvmSmartAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmSmartAccount.ts"],"names":[],"mappings":";;AA+DA,8CAwEC;AAvID,4DAAmE;AAEnE,sEAAkF;AAElF,0GAI+D;AAC/D,+EAAyE;AACzE,iFAIgD;AAChD,yEAI4C;AAC5C,iFAIgD;AAChD,gHAA0G;AAC1G,wEAAkE;AAClE,uFAImD;AAoBnD;;;;;;;;;;;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,KAAK,CAAC,iBAAiB,CACrB,OAAkD;YAElD,OAAO,IAAA,wCAAiB,EAAC,SAAS,EAAE;gBAClC,GAAG,OAAO;gBACV,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,iBAAiB,CACrB,OAAkE;YAElE,OAAO,IAAA,wCAAiB,EAAC,SAAS,EAAE;gBAClC,GAAG,OAAO;gBACV,YAAY,EAAE,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,oBAAoB,CACxB,OAAiE;YAEjE,OAAO,IAAA,8CAAoB,EAAC,SAAS,EAAE;gBACrC,GAAG,OAAO;gBACV,mBAAmB,EAAE,OAAO,CAAC,OAAO;aACrC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,gBAAgB,CACpB,OAAsD;YAEtD,OAAO,IAAA,sCAAgB,EAAC,SAAS,EAAE;gBACjC,GAAG,OAAO;gBACV,YAAY,EAAE,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,aAAa,CACjB,OAA8C;YAE9C,OAAO,IAAA,gCAAa,EAAC,SAAS,EAAE;gBAC9B,GAAG,OAAO;gBACV,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,OAA0C;YACxD,OAAO,IAAA,wBAAS,EAAC,SAAS,EAAE;gBAC1B,GAAG,OAAO;gBACV,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAqC;YAC9C,OAAO,IAAA,cAAI,EAAC,SAAS,EAAE;gBACrB,GAAG,OAAO;gBACV,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,2BAA2B,CAC/B,OAAoC;YAEpC,OAAO,IAAA,4DAA2B,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,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,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Quote = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A class representing a funding quote that can be executed.
|
|
6
|
+
*/
|
|
7
|
+
class Quote {
|
|
8
|
+
/** Quote for the transfer. */
|
|
9
|
+
quoteId;
|
|
10
|
+
/** Network to transfer the funds to. */
|
|
11
|
+
network;
|
|
12
|
+
/** The amount in fiat currency. */
|
|
13
|
+
fiatAmount;
|
|
14
|
+
/** The fiat currency. */
|
|
15
|
+
fiatCurrency;
|
|
16
|
+
/** The amount in the token to transfer. */
|
|
17
|
+
tokenAmount;
|
|
18
|
+
/** The token to transfer. */
|
|
19
|
+
token;
|
|
20
|
+
/** Fees in the token to transfer. */
|
|
21
|
+
fees;
|
|
22
|
+
apiClient;
|
|
23
|
+
/**
|
|
24
|
+
* Creates a new Quote instance.
|
|
25
|
+
*
|
|
26
|
+
* @param apiClient - The API client.
|
|
27
|
+
* @param quoteId - The quote ID.
|
|
28
|
+
* @param network - The network to transfer funds to.
|
|
29
|
+
* @param fiatAmount - The amount in fiat currency.
|
|
30
|
+
* @param fiatCurrency - The fiat currency.
|
|
31
|
+
* @param tokenAmount - The amount in the token to transfer.
|
|
32
|
+
* @param token - The token to transfer.
|
|
33
|
+
* @param fees - Fees for the transfer.
|
|
34
|
+
*/
|
|
35
|
+
constructor(apiClient, quoteId, network, fiatAmount, fiatCurrency, tokenAmount, token, fees) {
|
|
36
|
+
this.apiClient = apiClient;
|
|
37
|
+
this.quoteId = quoteId;
|
|
38
|
+
this.network = network;
|
|
39
|
+
this.fiatAmount = fiatAmount;
|
|
40
|
+
this.fiatCurrency = fiatCurrency;
|
|
41
|
+
this.tokenAmount = tokenAmount;
|
|
42
|
+
this.token = token;
|
|
43
|
+
this.fees = fees;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Executes the quote to perform the actual fund transfer.
|
|
47
|
+
*
|
|
48
|
+
* @returns A promise that resolves to the result of the executed quote.
|
|
49
|
+
*/
|
|
50
|
+
async execute() {
|
|
51
|
+
const transfer = await this.apiClient.executePaymentTransferQuote(this.quoteId);
|
|
52
|
+
return {
|
|
53
|
+
id: transfer.id,
|
|
54
|
+
network: transfer.target.network,
|
|
55
|
+
targetAmount: transfer.targetAmount,
|
|
56
|
+
targetCurrency: transfer.targetCurrency,
|
|
57
|
+
status: transfer.status,
|
|
58
|
+
transactionHash: transfer.transactionHash,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.Quote = Quote;
|
|
63
|
+
//# sourceMappingURL=Quote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Quote.js","sourceRoot":"","sources":["../../../../actions/evm/fund/Quote.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,KAAK;IAChB,8BAA8B;IACvB,OAAO,CAAS;IACvB,wCAAwC;IACjC,OAAO,CAAsB;IACpC,mCAAmC;IAC5B,UAAU,CAAS;IAC1B,yBAAyB;IAClB,YAAY,CAAS;IAC5B,2CAA2C;IACpC,WAAW,CAAS;IAC3B,6BAA6B;IACtB,KAAK,CAAS;IACrB,qCAAqC;IAC9B,IAAI,CAKP;IAEI,SAAS,CAAuB;IAExC;;;;;;;;;;;OAWG;IACH,YACE,SAA+B,EAC/B,OAAe,EACf,OAA4B,EAC5B,UAAkB,EAClB,YAAoB,EACpB,WAAmB,EACnB,KAAa,EACb,IAIG;QAEH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEhF,OAAO;YACL,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;YAChC,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,cAAc,EAAE,QAAQ,CAAC,cAAc;YACvC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,eAAe,EAAE,QAAQ,CAAC,eAAe;SAC1C,CAAC;IACJ,CAAC;CACF;AA5ED,sBA4EC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fund = fund;
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
const index_js_1 = require("../../../openapi-client/index.js");
|
|
6
|
+
/**
|
|
7
|
+
* Funds an EVM account.
|
|
8
|
+
*
|
|
9
|
+
* @param apiClient - The API client.
|
|
10
|
+
* @param options - The options for funding an EVM account.
|
|
11
|
+
*
|
|
12
|
+
* @returns A promise that resolves to the fund operation result.
|
|
13
|
+
*/
|
|
14
|
+
async function fund(apiClient, options) {
|
|
15
|
+
const paymentMethods = await apiClient.getPaymentMethods();
|
|
16
|
+
const cardPaymentMethod = paymentMethods.find(method => method.type === "card" && method.actions.includes("source"));
|
|
17
|
+
if (!cardPaymentMethod) {
|
|
18
|
+
throw new Error("No card found to fund account");
|
|
19
|
+
}
|
|
20
|
+
if (options.token.toLowerCase() !== "eth" && options.token.toLowerCase() !== "usdc") {
|
|
21
|
+
throw new Error("Invalid currency, must be eth or usdc");
|
|
22
|
+
}
|
|
23
|
+
const decimals = options.token === "eth" ? 18 : 6;
|
|
24
|
+
const amount = (0, viem_1.formatUnits)(options.amount, decimals);
|
|
25
|
+
const response = await apiClient.createPaymentTransferQuote({
|
|
26
|
+
sourceType: index_js_1.CreatePaymentTransferQuoteBodySourceType.payment_method,
|
|
27
|
+
source: {
|
|
28
|
+
id: cardPaymentMethod.id,
|
|
29
|
+
},
|
|
30
|
+
targetType: index_js_1.CreatePaymentTransferQuoteBodyTargetType.crypto_rail,
|
|
31
|
+
target: {
|
|
32
|
+
currency: options.token,
|
|
33
|
+
network: options.network,
|
|
34
|
+
address: options.address,
|
|
35
|
+
},
|
|
36
|
+
amount,
|
|
37
|
+
currency: options.token,
|
|
38
|
+
execute: true,
|
|
39
|
+
});
|
|
40
|
+
return {
|
|
41
|
+
id: response.transfer.id,
|
|
42
|
+
network: response.transfer.target.network,
|
|
43
|
+
status: response.transfer.status,
|
|
44
|
+
targetAmount: response.transfer.targetAmount,
|
|
45
|
+
targetCurrency: response.transfer.targetCurrency,
|
|
46
|
+
transactionHash: response.transfer.transactionHash,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=fund.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fund.js","sourceRoot":"","sources":["../../../../actions/evm/fund/fund.ts"],"names":[],"mappings":";;AA+BA,oBA4CC;AA3ED,+BAAmC;AAGnC,+DAI0C;AAgB1C;;;;;;;GAOG;AACI,KAAK,UAAU,IAAI,CACxB,SAA+B,EAC/B,OAAoB;IAEpB,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAC3D,MAAM,iBAAiB,GAAG,cAAc,CAAC,IAAI,CAC3C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACtE,CAAC;IAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAA,kBAAW,EAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAErD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,0BAA0B,CAAC;QAC1D,UAAU,EAAE,mDAAwC,CAAC,cAAc;QACnE,MAAM,EAAE;YACN,EAAE,EAAE,iBAAiB,CAAC,EAAE;SACzB;QACD,UAAU,EAAE,mDAAwC,CAAC,WAAW;QAChE,MAAM,EAAE;YACN,QAAQ,EAAE,OAAO,CAAC,KAAK;YACvB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB;QACD,MAAM;QACN,QAAQ,EAAE,OAAO,CAAC,KAAK;QACvB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACxB,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO;QACzC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;QAChC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY;QAC5C,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,cAAc;QAChD,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,eAAe;KACnD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.quoteFund = quoteFund;
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
const Quote_js_1 = require("./Quote.js");
|
|
6
|
+
const index_js_1 = require("../../../openapi-client/index.js");
|
|
7
|
+
/**
|
|
8
|
+
* Gets a quote to fund an EVM account.
|
|
9
|
+
*
|
|
10
|
+
* @param apiClient - The API client.
|
|
11
|
+
* @param options - The options for getting a quote to fund an EVM account.
|
|
12
|
+
*
|
|
13
|
+
* @returns A promise that resolves to the quote.
|
|
14
|
+
*/
|
|
15
|
+
async function quoteFund(apiClient, options) {
|
|
16
|
+
const paymentMethods = await apiClient.getPaymentMethods();
|
|
17
|
+
const cardPaymentMethod = paymentMethods.find(method => method.type === "card" && method.actions.includes("source"));
|
|
18
|
+
if (!cardPaymentMethod) {
|
|
19
|
+
throw new Error("No card found to fund account");
|
|
20
|
+
}
|
|
21
|
+
if (options.token.toLowerCase() !== "eth" && options.token.toLowerCase() !== "usdc") {
|
|
22
|
+
throw new Error("Invalid currency, must be eth or usdc");
|
|
23
|
+
}
|
|
24
|
+
const decimals = options.token === "eth" ? 18 : 6;
|
|
25
|
+
const amount = (0, viem_1.formatUnits)(options.amount, decimals);
|
|
26
|
+
const response = await apiClient.createPaymentTransferQuote({
|
|
27
|
+
sourceType: index_js_1.CreatePaymentTransferQuoteBodySourceType.payment_method,
|
|
28
|
+
source: {
|
|
29
|
+
id: cardPaymentMethod.id,
|
|
30
|
+
},
|
|
31
|
+
targetType: index_js_1.CreatePaymentTransferQuoteBodyTargetType.crypto_rail,
|
|
32
|
+
target: {
|
|
33
|
+
currency: options.token,
|
|
34
|
+
network: options.network,
|
|
35
|
+
address: options.address,
|
|
36
|
+
},
|
|
37
|
+
amount,
|
|
38
|
+
currency: options.token,
|
|
39
|
+
});
|
|
40
|
+
return new Quote_js_1.Quote(apiClient, response.transfer.id, options.network, response.transfer.sourceAmount, response.transfer.sourceCurrency, response.transfer.targetAmount, response.transfer.targetCurrency, response.transfer.fees.map(fee => ({
|
|
41
|
+
type: fee.type,
|
|
42
|
+
amount: fee.amount,
|
|
43
|
+
currency: fee.currency,
|
|
44
|
+
})));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=quoteFund.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quoteFund.js","sourceRoot":"","sources":["../../../../actions/evm/fund/quoteFund.ts"],"names":[],"mappings":";;AA+BA,8BAiDC;AAhFD,+BAAmC;AAEnC,yCAAmC;AACnC,+DAI0C;AAgB1C;;;;;;;GAOG;AACI,KAAK,UAAU,SAAS,CAC7B,SAA+B,EAC/B,OAAyB;IAEzB,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAC3D,MAAM,iBAAiB,GAAG,cAAc,CAAC,IAAI,CAC3C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACtE,CAAC;IAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAA,kBAAW,EAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAErD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,0BAA0B,CAAC;QAC1D,UAAU,EAAE,mDAAwC,CAAC,cAAc;QACnE,MAAM,EAAE;YACN,EAAE,EAAE,iBAAiB,CAAC,EAAE;SACzB;QACD,UAAU,EAAE,mDAAwC,CAAC,WAAW;QAChE,MAAM,EAAE;YACN,QAAQ,EAAE,OAAO,CAAC,KAAK;YACvB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB;QACD,MAAM;QACN,QAAQ,EAAE,OAAO,CAAC,KAAK;KACxB,CAAC,CAAC;IAEH,OAAO,IAAI,gBAAK,CACd,SAAS,EACT,QAAQ,CAAC,QAAQ,CAAC,EAAE,EACpB,OAAO,CAAC,OAAO,EACf,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAC9B,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAChC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAC9B,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAChC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../actions/evm/fund/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.waitForFundOperationReceipt = waitForFundOperationReceipt;
|
|
4
|
+
const index_js_1 = require("../../../openapi-client/index.js");
|
|
5
|
+
const wait_js_1 = require("../../../utils/wait.js");
|
|
6
|
+
/**
|
|
7
|
+
* Waits for a fund operation to complete or fail.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { waitForFundOperation } from "@coinbase/cdp-sdk";
|
|
12
|
+
*
|
|
13
|
+
* const result = await waitForFundOperation(client, {
|
|
14
|
+
* transferId: "0x1234567890123456789012345678901234567890",
|
|
15
|
+
* waitOptions: {
|
|
16
|
+
* timeoutSeconds: 30,
|
|
17
|
+
* },
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @param {CdpOpenApiClientType} client - The client to use to wait for the fund operation.
|
|
22
|
+
* @param {WaitForFundOperationOptions} options - The options for the wait operation.
|
|
23
|
+
* @returns {Promise<WaitForFundOperationResult>} The result of the fund operation.
|
|
24
|
+
*/
|
|
25
|
+
async function waitForFundOperationReceipt(client, options) {
|
|
26
|
+
const { transferId } = options;
|
|
27
|
+
const reload = async () => {
|
|
28
|
+
const response = await client.getPaymentTransfer(transferId);
|
|
29
|
+
return response;
|
|
30
|
+
};
|
|
31
|
+
const transform = (operation) => {
|
|
32
|
+
if (operation.status === index_js_1.TransferStatus.failed) {
|
|
33
|
+
return {
|
|
34
|
+
id: operation.id,
|
|
35
|
+
network: operation.target.network,
|
|
36
|
+
targetAmount: operation.targetAmount,
|
|
37
|
+
targetCurrency: operation.targetCurrency,
|
|
38
|
+
status: operation.status,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
else if (operation.status === index_js_1.TransferStatus.completed) {
|
|
42
|
+
return {
|
|
43
|
+
id: operation.id,
|
|
44
|
+
network: operation.target.network,
|
|
45
|
+
targetAmount: operation.targetAmount,
|
|
46
|
+
targetCurrency: operation.targetCurrency,
|
|
47
|
+
status: operation.status,
|
|
48
|
+
transactionHash: operation.transactionHash,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
throw new Error("Transfer is not terminal");
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
const waitOptions = options.waitOptions || {
|
|
56
|
+
timeoutSeconds: 900,
|
|
57
|
+
intervalSeconds: 1,
|
|
58
|
+
};
|
|
59
|
+
return await (0, wait_js_1.wait)(reload, isTerminal, transform, waitOptions);
|
|
60
|
+
}
|
|
61
|
+
const isTerminal = (operation) => {
|
|
62
|
+
return (operation.status === index_js_1.TransferStatus.completed || operation.status === index_js_1.TransferStatus.failed);
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=waitForFundOperationReceipt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waitForFundOperationReceipt.js","sourceRoot":"","sources":["../../../../actions/evm/fund/waitForFundOperationReceipt.ts"],"names":[],"mappings":";;AAuEA,kEAwCC;AA/GD,+DAAkG;AAClG,oDAA2D;AAmD3D;;;;;;;;;;;;;;;;;;GAkBG;AACI,KAAK,UAAU,2BAA2B,CAC/C,MAA4B,EAC5B,OAAoC;IAEpC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE/B,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,SAAmB,EAA8B,EAAE;QACpE,IAAI,SAAS,CAAC,MAAM,KAAK,yBAAc,CAAC,MAAM,EAAE,CAAC;YAC/C,OAAO;gBACL,EAAE,EAAE,SAAS,CAAC,EAAE;gBAChB,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO;gBACjC,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,MAAM,EAAE,SAAS,CAAC,MAAM;aACK,CAAC;QAClC,CAAC;aAAM,IAAI,SAAS,CAAC,MAAM,KAAK,yBAAc,CAAC,SAAS,EAAE,CAAC;YACzD,OAAO;gBACL,EAAE,EAAE,SAAS,CAAC,EAAE;gBAChB,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO;gBACjC,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,eAAe,EAAE,SAAS,CAAC,eAAgB;aACX,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI;QACzC,cAAc,EAAE,GAAG;QACnB,eAAe,EAAE,CAAC;KACnB,CAAC;IAEF,OAAO,MAAM,IAAA,cAAI,EAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,SAAmB,EAAW,EAAE;IAClD,OAAO,CACL,SAAS,CAAC,MAAM,KAAK,yBAAc,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,yBAAc,CAAC,MAAM,CAC5F,CAAC;AACJ,CAAC,CAAC"}
|