@coinbase/cdp-sdk 1.6.0 → 1.8.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 +23 -0
- package/README.md +284 -1
- package/_cjs/accounts/evm/toEvmServerAccount.js +4 -2
- package/_cjs/accounts/evm/toEvmServerAccount.js.map +1 -1
- package/_cjs/accounts/evm/toEvmSmartAccount.js +7 -0
- package/_cjs/accounts/evm/toEvmSmartAccount.js.map +1 -1
- package/_cjs/accounts/evm/types.js.map +1 -0
- package/_cjs/accounts/solana/toSolanaAccount.js +42 -0
- package/_cjs/accounts/solana/toSolanaAccount.js.map +1 -0
- package/_cjs/accounts/solana/types.js +3 -0
- package/_cjs/accounts/solana/types.js.map +1 -0
- package/_cjs/actions/evm/getUserOperation.js +36 -0
- package/_cjs/actions/evm/getUserOperation.js.map +1 -0
- package/_cjs/actions/evm/transfer/accountTransferStrategy.js +11 -7
- package/_cjs/actions/evm/transfer/accountTransferStrategy.js.map +1 -1
- package/_cjs/actions/evm/transfer/smartAccountTransferStrategy.js +9 -6
- package/_cjs/actions/evm/transfer/smartAccountTransferStrategy.js.map +1 -1
- package/_cjs/actions/evm/transfer/transfer.js +7 -3
- package/_cjs/actions/evm/transfer/transfer.js.map +1 -1
- package/_cjs/actions/solana/requestFaucet.js +29 -0
- package/_cjs/actions/solana/requestFaucet.js.map +1 -0
- package/_cjs/actions/solana/signMessage.js +29 -0
- package/_cjs/actions/solana/signMessage.js.map +1 -0
- package/_cjs/actions/solana/signTransaction.js +46 -0
- package/_cjs/actions/solana/signTransaction.js.map +1 -0
- package/_cjs/actions/solana/types.js +3 -0
- package/_cjs/actions/solana/types.js.map +1 -0
- package/_cjs/analytics.js +68 -8
- package/_cjs/analytics.js.map +1 -1
- package/_cjs/client/cdp.js +9 -3
- package/_cjs/client/cdp.js.map +1 -1
- package/_cjs/client/evm/evm.js +135 -27
- package/_cjs/client/evm/evm.js.map +1 -1
- package/_cjs/client/policies/index.js +6 -0
- package/_cjs/client/policies/index.js.map +1 -0
- package/_cjs/client/policies/policies.js +232 -0
- package/_cjs/client/policies/policies.js.map +1 -0
- package/_cjs/client/policies/policies.types.js +3 -0
- package/_cjs/client/policies/policies.types.js.map +1 -0
- package/_cjs/client/solana/solana.js +84 -22
- package/_cjs/client/solana/solana.js.map +1 -1
- package/_cjs/index.js +4 -1
- package/_cjs/index.js.map +1 -1
- package/_cjs/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js +59 -1
- package/_cjs/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js.map +1 -1
- package/_cjs/openapi-client/generated/evm-accounts/evm-accounts.js +27 -1
- package/_cjs/openapi-client/generated/evm-accounts/evm-accounts.js.map +1 -1
- package/_cjs/openapi-client/generated/evm-accounts/evm-accounts.msw.js +56 -1
- package/_cjs/openapi-client/generated/evm-accounts/evm-accounts.msw.js.map +1 -1
- package/_cjs/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.js +3 -1
- package/_cjs/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.js.map +1 -1
- package/_cjs/openapi-client/generated/index.msw.js +3 -2
- package/_cjs/openapi-client/generated/index.msw.js.map +1 -1
- package/_cjs/openapi-client/generated/policy-engine/policy-engine.js +56 -0
- package/_cjs/openapi-client/generated/policy-engine/policy-engine.js.map +1 -0
- package/_cjs/openapi-client/generated/policy-engine/policy-engine.msw.js +284 -0
- package/_cjs/openapi-client/generated/policy-engine/policy-engine.msw.js.map +1 -0
- package/_cjs/openapi-client/generated/solana-accounts/solana-accounts.js +14 -1
- package/_cjs/openapi-client/generated/solana-accounts/solana-accounts.js.map +1 -1
- package/_cjs/openapi-client/generated/solana-accounts/solana-accounts.msw.js +42 -1
- package/_cjs/openapi-client/generated/solana-accounts/solana-accounts.msw.js.map +1 -1
- package/_cjs/openapi-client/index.js +7 -1
- package/_cjs/openapi-client/index.js.map +1 -1
- package/_cjs/policies/schema.js +186 -0
- package/_cjs/policies/schema.js.map +1 -0
- package/_cjs/policies/types.js +3 -0
- package/_cjs/{accounts → policies}/types.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/accounts/evm/toEvmServerAccount.js +4 -2
- package/_esm/accounts/evm/toEvmServerAccount.js.map +1 -1
- package/_esm/accounts/evm/toEvmSmartAccount.js +7 -0
- package/_esm/accounts/evm/toEvmSmartAccount.js.map +1 -1
- package/_esm/accounts/evm/types.js.map +1 -0
- package/_esm/accounts/solana/toSolanaAccount.js +39 -0
- package/_esm/accounts/solana/toSolanaAccount.js.map +1 -0
- package/_esm/accounts/solana/types.js +2 -0
- package/_esm/accounts/solana/types.js.map +1 -0
- package/_esm/actions/evm/getUserOperation.js +33 -0
- package/_esm/actions/evm/getUserOperation.js.map +1 -0
- package/_esm/actions/evm/transfer/accountTransferStrategy.js +11 -7
- package/_esm/actions/evm/transfer/accountTransferStrategy.js.map +1 -1
- package/_esm/actions/evm/transfer/smartAccountTransferStrategy.js +9 -6
- package/_esm/actions/evm/transfer/smartAccountTransferStrategy.js.map +1 -1
- package/_esm/actions/evm/transfer/transfer.js +7 -3
- package/_esm/actions/evm/transfer/transfer.js.map +1 -1
- package/_esm/actions/solana/requestFaucet.js +26 -0
- package/_esm/actions/solana/requestFaucet.js.map +1 -0
- package/_esm/actions/solana/signMessage.js +26 -0
- package/_esm/actions/solana/signMessage.js.map +1 -0
- package/_esm/actions/solana/signTransaction.js +43 -0
- package/_esm/actions/solana/signTransaction.js.map +1 -0
- package/_esm/actions/solana/types.js +2 -0
- package/_esm/actions/solana/types.js.map +1 -0
- package/_esm/analytics.js +68 -7
- package/_esm/analytics.js.map +1 -1
- package/_esm/client/cdp.js +10 -4
- package/_esm/client/cdp.js.map +1 -1
- package/_esm/client/evm/evm.js +135 -27
- package/_esm/client/evm/evm.js.map +1 -1
- package/_esm/client/policies/index.js +2 -0
- package/_esm/client/policies/index.js.map +1 -0
- package/_esm/client/policies/policies.js +228 -0
- package/_esm/client/policies/policies.js.map +1 -0
- package/_esm/client/policies/policies.types.js +2 -0
- package/_esm/client/policies/policies.types.js.map +1 -0
- package/_esm/client/solana/solana.js +84 -22
- package/_esm/client/solana/solana.js.map +1 -1
- package/_esm/index.js +1 -0
- package/_esm/index.js.map +1 -1
- package/_esm/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js +58 -0
- package/_esm/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js.map +1 -1
- package/_esm/openapi-client/generated/evm-accounts/evm-accounts.js +24 -0
- package/_esm/openapi-client/generated/evm-accounts/evm-accounts.js.map +1 -1
- package/_esm/openapi-client/generated/evm-accounts/evm-accounts.msw.js +51 -0
- package/_esm/openapi-client/generated/evm-accounts/evm-accounts.msw.js.map +1 -1
- package/_esm/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.js +3 -1
- package/_esm/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.js.map +1 -1
- package/_esm/openapi-client/generated/index.msw.js +3 -2
- package/_esm/openapi-client/generated/index.msw.js.map +1 -1
- package/_esm/openapi-client/generated/policy-engine/policy-engine.js +48 -0
- package/_esm/openapi-client/generated/policy-engine/policy-engine.js.map +1 -0
- package/_esm/openapi-client/generated/policy-engine/policy-engine.msw.js +259 -0
- package/_esm/openapi-client/generated/policy-engine/policy-engine.msw.js.map +1 -0
- package/_esm/openapi-client/generated/solana-accounts/solana-accounts.js +12 -0
- package/_esm/openapi-client/generated/solana-accounts/solana-accounts.js.map +1 -1
- package/_esm/openapi-client/generated/solana-accounts/solana-accounts.msw.js +39 -0
- package/_esm/openapi-client/generated/solana-accounts/solana-accounts.msw.js.map +1 -1
- package/_esm/openapi-client/index.js +6 -0
- package/_esm/openapi-client/index.js.map +1 -1
- package/_esm/policies/schema.js +183 -0
- package/_esm/policies/schema.js.map +1 -0
- package/_esm/policies/types.js +2 -0
- package/_esm/{accounts → policies}/types.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/accounts/evm/toEvmServerAccount.d.ts +1 -1
- package/_types/accounts/evm/toEvmServerAccount.d.ts.map +1 -1
- package/_types/accounts/evm/toEvmSmartAccount.d.ts +1 -1
- package/_types/accounts/evm/toEvmSmartAccount.d.ts.map +1 -1
- package/_types/accounts/{types.d.ts → evm/types.d.ts} +10 -7
- package/_types/accounts/evm/types.d.ts.map +1 -0
- package/_types/accounts/solana/toSolanaAccount.d.ts +20 -0
- package/_types/accounts/solana/toSolanaAccount.d.ts.map +1 -0
- package/_types/accounts/solana/types.d.ts +12 -0
- package/_types/accounts/solana/types.d.ts.map +1 -0
- package/_types/actions/evm/getUserOperation.d.ts +22 -0
- package/_types/actions/evm/getUserOperation.d.ts.map +1 -0
- package/_types/actions/evm/sendUserOperation.d.ts +1 -1
- package/_types/actions/evm/sendUserOperation.d.ts.map +1 -1
- package/_types/actions/evm/transfer/accountTransferStrategy.d.ts +1 -1
- package/_types/actions/evm/transfer/accountTransferStrategy.d.ts.map +1 -1
- package/_types/actions/evm/transfer/smartAccountTransferStrategy.d.ts +1 -1
- package/_types/actions/evm/transfer/smartAccountTransferStrategy.d.ts.map +1 -1
- package/_types/actions/evm/transfer/transfer.d.ts +3 -3
- package/_types/actions/evm/transfer/transfer.d.ts.map +1 -1
- package/_types/actions/evm/transfer/types.d.ts +39 -6
- package/_types/actions/evm/transfer/types.d.ts.map +1 -1
- package/_types/actions/evm/types.d.ts +28 -5
- package/_types/actions/evm/types.d.ts.map +1 -1
- package/_types/actions/solana/requestFaucet.d.ts +23 -0
- package/_types/actions/solana/requestFaucet.d.ts.map +1 -0
- package/_types/actions/solana/signMessage.d.ts +23 -0
- package/_types/actions/solana/signMessage.d.ts.map +1 -0
- package/_types/actions/solana/signTransaction.d.ts +38 -0
- package/_types/actions/solana/signTransaction.d.ts.map +1 -0
- package/_types/actions/solana/types.d.ts +80 -0
- package/_types/actions/solana/types.d.ts.map +1 -0
- package/_types/analytics.d.ts +14 -5
- package/_types/analytics.d.ts.map +1 -1
- package/_types/client/cdp.d.ts +3 -0
- package/_types/client/cdp.d.ts.map +1 -1
- package/_types/client/evm/evm.d.ts +89 -1
- package/_types/client/evm/evm.d.ts.map +1 -1
- package/_types/client/evm/evm.types.d.ts +36 -6
- package/_types/client/evm/evm.types.d.ts.map +1 -1
- package/_types/client/policies/index.d.ts +2 -0
- package/_types/client/policies/index.d.ts.map +1 -0
- package/_types/client/policies/policies.d.ts +216 -0
- package/_types/client/policies/policies.d.ts.map +1 -0
- package/_types/client/policies/policies.types.d.ts +96 -0
- package/_types/client/policies/policies.types.d.ts.map +1 -0
- package/_types/client/solana/solana.d.ts +47 -4
- package/_types/client/solana/solana.d.ts.map +1 -1
- package/_types/client/solana/solana.types.d.ts +21 -12
- package/_types/client/solana/solana.types.d.ts.map +1 -1
- package/_types/index.d.ts +3 -1
- package/_types/index.d.ts.map +1 -1
- package/_types/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.d.ts +299 -0
- package/_types/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.d.ts.map +1 -1
- package/_types/openapi-client/generated/evm-accounts/evm-accounts.d.ts +13 -1
- package/_types/openapi-client/generated/evm-accounts/evm-accounts.d.ts.map +1 -1
- package/_types/openapi-client/generated/evm-accounts/evm-accounts.msw.d.ts +5 -1
- package/_types/openapi-client/generated/evm-accounts/evm-accounts.msw.d.ts.map +1 -1
- package/_types/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.d.ts +3 -1
- package/_types/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.d.ts.map +1 -1
- package/_types/openapi-client/generated/index.msw.d.ts +3 -2
- package/_types/openapi-client/generated/index.msw.d.ts.map +1 -1
- package/_types/openapi-client/generated/policy-engine/policy-engine.d.ts +43 -0
- package/_types/openapi-client/generated/policy-engine/policy-engine.d.ts.map +1 -0
- package/_types/openapi-client/generated/policy-engine/policy-engine.msw.d.ts +25 -0
- package/_types/openapi-client/generated/policy-engine/policy-engine.msw.d.ts.map +1 -0
- package/_types/openapi-client/generated/solana-accounts/solana-accounts.d.ts +7 -1
- package/_types/openapi-client/generated/solana-accounts/solana-accounts.d.ts.map +1 -1
- package/_types/openapi-client/generated/solana-accounts/solana-accounts.msw.d.ts +2 -0
- package/_types/openapi-client/generated/solana-accounts/solana-accounts.msw.d.ts.map +1 -1
- package/_types/openapi-client/index.d.ts +19 -0
- package/_types/openapi-client/index.d.ts.map +1 -1
- package/_types/policies/schema.d.ts +922 -0
- package/_types/policies/schema.d.ts.map +1 -0
- package/_types/policies/types.d.ts +19 -0
- package/_types/policies/types.d.ts.map +1 -0
- package/_types/types/misc.d.ts +39 -0
- package/_types/types/misc.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/accounts/evm/toEvmServerAccount.ts +7 -4
- package/accounts/evm/toEvmSmartAccount.ts +11 -1
- package/accounts/{types.ts → evm/types.ts} +10 -12
- package/accounts/solana/toSolanaAccount.ts +60 -0
- package/accounts/solana/types.ts +13 -0
- package/actions/evm/getUserOperation.ts +40 -0
- package/actions/evm/sendUserOperation.ts +1 -1
- package/actions/evm/transfer/accountTransferStrategy.ts +12 -8
- package/actions/evm/transfer/smartAccountTransferStrategy.ts +10 -7
- package/actions/evm/transfer/transfer.ts +17 -6
- package/actions/evm/transfer/types.ts +54 -11
- package/actions/evm/types.ts +37 -5
- package/actions/solana/requestFaucet.ts +35 -0
- package/actions/solana/signMessage.ts +36 -0
- package/actions/solana/signTransaction.ts +53 -0
- package/actions/solana/types.ts +87 -0
- package/analytics.ts +84 -11
- package/client/cdp.ts +11 -4
- package/client/evm/evm.ts +162 -33
- package/client/evm/evm.types.ts +42 -4
- package/client/policies/index.ts +1 -0
- package/client/policies/policies.ts +246 -0
- package/client/policies/policies.types.ts +109 -0
- package/client/solana/solana.ts +107 -38
- package/client/solana/solana.types.ts +25 -15
- package/index.ts +8 -1
- package/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.ts +360 -0
- package/openapi-client/generated/evm-accounts/evm-accounts.msw.ts +102 -0
- package/openapi-client/generated/evm-accounts/evm-accounts.ts +43 -0
- package/openapi-client/generated/evm-smart-accounts/evm-smart-accounts.ts +3 -1
- package/openapi-client/generated/index.msw.ts +3 -2
- package/openapi-client/generated/policy-engine/policy-engine.msw.ts +404 -0
- package/openapi-client/generated/policy-engine/policy-engine.ts +95 -0
- package/openapi-client/generated/solana-accounts/solana-accounts.msw.ts +75 -0
- package/openapi-client/generated/solana-accounts/solana-accounts.ts +23 -0
- package/openapi-client/index.ts +7 -0
- package/package.json +3 -2
- package/policies/schema.ts +266 -0
- package/policies/types.ts +19 -0
- package/types/misc.ts +41 -0
- package/version.ts +1 -1
- package/_types/accounts/types.d.ts.map +0 -1
- /package/_cjs/accounts/{types.js → evm/types.js} +0 -0
- /package/_esm/accounts/{types.js → evm/types.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# CDP SDK Changelog
|
|
2
2
|
|
|
3
|
+
## 1.8.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#124](https://github.com/coinbase/cdp-sdk/pull/124) [`9b874f8`](https://github.com/coinbase/cdp-sdk/commit/9b874f85b8b21fa8f5ab2b724413cdd41a5423ea) Thanks [@sammccord](https://github.com/sammccord)! - Added all Policy Engine functionality; CRUD operations and zod schemas
|
|
8
|
+
|
|
9
|
+
- [#130](https://github.com/coinbase/cdp-sdk/pull/130) [`3274e09`](https://github.com/coinbase/cdp-sdk/commit/3274e099612209daf756e0c06857ea29f880318c) Thanks [@sammccord](https://github.com/sammccord)! - Added updateAccount for evm and solana namespaces, as well as account.policies on response types
|
|
10
|
+
|
|
11
|
+
- [#129](https://github.com/coinbase/cdp-sdk/pull/129) [`b4f6b43`](https://github.com/coinbase/cdp-sdk/commit/b4f6b43d936a9e87eed488ea236bf74851241d65) Thanks [@sddioulde](https://github.com/sddioulde)! - Added support for eip-712 signing
|
|
12
|
+
|
|
13
|
+
## 1.7.0
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- [#116](https://github.com/coinbase/cdp-sdk/pull/116) [`97678d6`](https://github.com/coinbase/cdp-sdk/commit/97678d675358bb8d0b6195fd31933a32926cdd44) Thanks [@sddioulde](https://github.com/sddioulde)! - Added getUserOperation smart account action
|
|
18
|
+
|
|
19
|
+
- [#122](https://github.com/coinbase/cdp-sdk/pull/122) [`ee41d98`](https://github.com/coinbase/cdp-sdk/commit/ee41d986406e3e8666d1d1a1b1525e7ff7435a2b) Thanks [@sddioulde](https://github.com/sddioulde)! - Added account actions to Solana
|
|
20
|
+
|
|
21
|
+
- [#103](https://github.com/coinbase/cdp-sdk/pull/103) [`2777cde`](https://github.com/coinbase/cdp-sdk/commit/2777cde93e4f10579a4ca31e140720067799cf66) Thanks [@0xRAG](https://github.com/0xRAG)! - Added additional options to transfer methods:
|
|
22
|
+
|
|
23
|
+
- Added `paymasterUrl` and `waitOptions` to EvmSmartAccount.transfer
|
|
24
|
+
- Added `waitOptions` to EvmAccount.transfer
|
|
25
|
+
|
|
3
26
|
## 1.6.0
|
|
4
27
|
|
|
5
28
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
- [Installation](#installation)
|
|
8
8
|
- [API Keys](#api-keys)
|
|
9
9
|
- [Usage](#usage)
|
|
10
|
+
- [Policy Management](#policy-management)
|
|
10
11
|
- [Authentication tools](#authentication-tools)
|
|
11
12
|
- [Error Reporting](#error-reporting)
|
|
12
13
|
- [License](#license)
|
|
@@ -20,7 +21,7 @@
|
|
|
20
21
|
|
|
21
22
|
## CDP SDK
|
|
22
23
|
|
|
23
|
-
This module contains the TypeScript CDP SDK, which is a library that provides a client for interacting with the [Coinbase Developer Platform (CDP)](https://docs.cdp.coinbase.com/). It includes a CDP Client for interacting with EVM and Solana APIs to create accounts and send transactions, as well as authentication tools for interacting directly with the CDP APIs.
|
|
24
|
+
This module contains the TypeScript CDP SDK, which is a library that provides a client for interacting with the [Coinbase Developer Platform (CDP)](https://docs.cdp.coinbase.com/). It includes a CDP Client for interacting with EVM and Solana APIs to create accounts and send transactions, policy APIs to govern transaction permissions, as well as authentication tools for interacting directly with the CDP APIs.
|
|
24
25
|
|
|
25
26
|
## Documentation
|
|
26
27
|
|
|
@@ -127,6 +128,32 @@ const account = await cdp.solana.getOrCreateAccount({
|
|
|
127
128
|
});
|
|
128
129
|
```
|
|
129
130
|
|
|
131
|
+
### Updating EVM or Solana accounts
|
|
132
|
+
|
|
133
|
+
#### Update an EVM account as follows:
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
const account = await cdp.evm.updateAccount({
|
|
137
|
+
addresss: account.address,
|
|
138
|
+
update: {
|
|
139
|
+
name: "Updated name",
|
|
140
|
+
accountPolicy: "1622d4b7-9d60-44a2-9a6a-e9bbb167e412"
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
#### Update a Solana account as follows:
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
const account = await cdp.solana.updateAccount({
|
|
149
|
+
addresss: account.address,
|
|
150
|
+
update: {
|
|
151
|
+
name: "Updated name",
|
|
152
|
+
accountPolicy: "1622d4b7-9d60-44a2-9a6a-e9bbb167e412"
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
```
|
|
156
|
+
|
|
130
157
|
### Testnet faucet
|
|
131
158
|
|
|
132
159
|
You can use the faucet function to request testnet ETH or SOL from the CDP.
|
|
@@ -320,6 +347,22 @@ const { status } = await sender.transfer({
|
|
|
320
347
|
});
|
|
321
348
|
```
|
|
322
349
|
|
|
350
|
+
Using Smart Accounts, you can also specify a paymaster URL and wait options:
|
|
351
|
+
|
|
352
|
+
```typescript
|
|
353
|
+
const { status } = await sender.transfer({
|
|
354
|
+
to: "0x9F663335Cd6Ad02a37B633602E98866CF944124d",
|
|
355
|
+
amount: "0.01",
|
|
356
|
+
token: "usdc",
|
|
357
|
+
network: "base-sepolia",
|
|
358
|
+
paymasterUrl: "https://some-paymaster-url.com",
|
|
359
|
+
waitOptions: {
|
|
360
|
+
timeout: 30,
|
|
361
|
+
interval: 2,
|
|
362
|
+
},
|
|
363
|
+
});
|
|
364
|
+
```
|
|
365
|
+
|
|
323
366
|
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
367
|
|
|
325
368
|
```typescript
|
|
@@ -356,10 +399,29 @@ const { status } = await sender.transfer({
|
|
|
356
399
|
});
|
|
357
400
|
```
|
|
358
401
|
|
|
402
|
+
You can also pass wait options to the `transfer` function:
|
|
403
|
+
|
|
404
|
+
```typescript
|
|
405
|
+
const { status } = await sender.transfer({
|
|
406
|
+
to: receiver,
|
|
407
|
+
amount: "0.01",
|
|
408
|
+
token: "usdc",
|
|
409
|
+
network: "base-sepolia",
|
|
410
|
+
waitOptions: {
|
|
411
|
+
timeout: 30,
|
|
412
|
+
interval: 2,
|
|
413
|
+
},
|
|
414
|
+
});
|
|
415
|
+
```
|
|
416
|
+
|
|
359
417
|
## Account Actions
|
|
360
418
|
|
|
361
419
|
Account objects have actions that can be used to interact with the account. These can be used in place of the `cdp` client.
|
|
362
420
|
|
|
421
|
+
### EVM account actions
|
|
422
|
+
|
|
423
|
+
Here are some examples for actions on EVM accounts.
|
|
424
|
+
|
|
363
425
|
For example, instead of:
|
|
364
426
|
|
|
365
427
|
```typescript
|
|
@@ -390,8 +452,229 @@ EvmSmartAccount supports the following actions:
|
|
|
390
452
|
- `requestFaucet`
|
|
391
453
|
- `sendUserOperation`
|
|
392
454
|
- `waitForUserOperation`
|
|
455
|
+
- `getUserOperation`
|
|
393
456
|
- `transfer`
|
|
394
457
|
|
|
458
|
+
### Solana account actions
|
|
459
|
+
|
|
460
|
+
Here are some examples for actions on Solana accounts.
|
|
461
|
+
|
|
462
|
+
```typescript
|
|
463
|
+
const balances = await cdp.solana.signMessage({
|
|
464
|
+
address: account.address,
|
|
465
|
+
message: "Hello, world!",
|
|
466
|
+
});
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
You can use the `signMessage` action:
|
|
470
|
+
|
|
471
|
+
```typescript
|
|
472
|
+
const account = await cdp.solana.createAccount();
|
|
473
|
+
const { signature } = await account.signMessage({
|
|
474
|
+
message: "Hello, world!"
|
|
475
|
+
});
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
SolanaAccount supports the following actions:
|
|
479
|
+
|
|
480
|
+
- `requestFaucet`
|
|
481
|
+
- `signMessage`
|
|
482
|
+
- `signTransaction`
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
## Policy Management
|
|
486
|
+
|
|
487
|
+
You can use the policies SDK to manage sets of rules that govern the behavior of accounts and projects, such as enforce allowlists and denylists.
|
|
488
|
+
|
|
489
|
+
### Create a Project-level policy that applies to all accounts
|
|
490
|
+
|
|
491
|
+
This policy will accept any account sending less than a specific amount of ETH to a specific address.
|
|
492
|
+
|
|
493
|
+
```typescript
|
|
494
|
+
const policy = await cdp.policies.createPolicy({
|
|
495
|
+
policy: {
|
|
496
|
+
scope: 'project',
|
|
497
|
+
description: 'Project-wide Allowlist Policy',
|
|
498
|
+
rules: [
|
|
499
|
+
{
|
|
500
|
+
action: 'accept',
|
|
501
|
+
operation: 'signEvmTransaction',
|
|
502
|
+
criteria: [
|
|
503
|
+
{
|
|
504
|
+
type: 'ethValue',
|
|
505
|
+
ethValue: '1000000000000000000',
|
|
506
|
+
operator: '<='
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
type: 'evmAddress',
|
|
510
|
+
addresses: ["0x000000000000000000000000000000000000dEaD"],
|
|
511
|
+
operator: 'in'
|
|
512
|
+
}
|
|
513
|
+
]
|
|
514
|
+
}
|
|
515
|
+
]
|
|
516
|
+
}
|
|
517
|
+
});
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
### Create an Account-level policy
|
|
521
|
+
|
|
522
|
+
This policy will accept any transaction with a value less than or equal to 1 ETH to a specific address.
|
|
523
|
+
|
|
524
|
+
```typescript
|
|
525
|
+
const policy = await cdp.policies.createPolicy({
|
|
526
|
+
policy: {
|
|
527
|
+
scope: 'account',
|
|
528
|
+
description: 'Account Allowlist Policy',
|
|
529
|
+
rules: [
|
|
530
|
+
{
|
|
531
|
+
action: 'accept',
|
|
532
|
+
operation: 'signEvmTransaction',
|
|
533
|
+
criteria: [
|
|
534
|
+
{
|
|
535
|
+
type: 'ethValue',
|
|
536
|
+
ethValue: '1000000000000000000',
|
|
537
|
+
operator: '<='
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
type: 'evmAddress',
|
|
541
|
+
addresses: ["0x000000000000000000000000000000000000dEaD"],
|
|
542
|
+
operator: 'in'
|
|
543
|
+
}
|
|
544
|
+
]
|
|
545
|
+
}
|
|
546
|
+
]
|
|
547
|
+
}
|
|
548
|
+
});
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
### Create a Solana Allowlist Policy
|
|
552
|
+
|
|
553
|
+
```typescript
|
|
554
|
+
const policy = await cdp.policies.createPolicy({
|
|
555
|
+
policy: {
|
|
556
|
+
scope: 'account',
|
|
557
|
+
description: 'Account Allowlist Policy',
|
|
558
|
+
rules: [
|
|
559
|
+
{
|
|
560
|
+
action: 'accept',
|
|
561
|
+
operation: 'signSolTransaction',
|
|
562
|
+
criteria: [
|
|
563
|
+
{
|
|
564
|
+
type: 'solAddress',
|
|
565
|
+
addresses: ["DtdSSG8ZJRZVv5Jx7K1MeWp7Zxcu19GD5wQRGRpQ9uMF"],
|
|
566
|
+
operator: 'in'
|
|
567
|
+
}
|
|
568
|
+
]
|
|
569
|
+
}
|
|
570
|
+
]
|
|
571
|
+
}
|
|
572
|
+
});
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
### List Policies
|
|
576
|
+
|
|
577
|
+
You can filter by account:
|
|
578
|
+
|
|
579
|
+
```typescript
|
|
580
|
+
const policy = await cdp.policies.listPolicies({
|
|
581
|
+
scope: 'account'
|
|
582
|
+
});
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
You can also filter by project:
|
|
586
|
+
|
|
587
|
+
```typescript
|
|
588
|
+
const policy = await cdp.policies.listPolicies({
|
|
589
|
+
scope: 'project'
|
|
590
|
+
});
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
### Retrieve a Policy
|
|
594
|
+
|
|
595
|
+
```typescript
|
|
596
|
+
const policy = await cdp.policies.getPolicyById({
|
|
597
|
+
id: '__POLICY_ID__'
|
|
598
|
+
});
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
### Update a Policy
|
|
602
|
+
|
|
603
|
+
This policy will update an existing policy to accept transactions to any address except one.
|
|
604
|
+
|
|
605
|
+
```typescript
|
|
606
|
+
const policy = await cdp.policies.updatePolicy({
|
|
607
|
+
id: '__POLICY_ID__',
|
|
608
|
+
policy: {
|
|
609
|
+
description: 'Updated Account Denylist Policy',
|
|
610
|
+
rules: [
|
|
611
|
+
{
|
|
612
|
+
action: 'accept',
|
|
613
|
+
operation: 'signEvmTransaction',
|
|
614
|
+
criteria: [
|
|
615
|
+
{
|
|
616
|
+
type: 'evmAddress',
|
|
617
|
+
addresses: ["0x000000000000000000000000000000000000dEaD"],
|
|
618
|
+
operator: 'not in'
|
|
619
|
+
}
|
|
620
|
+
]
|
|
621
|
+
}
|
|
622
|
+
]
|
|
623
|
+
}
|
|
624
|
+
});
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
### Delete a Policy
|
|
628
|
+
|
|
629
|
+
> [!WARNING]
|
|
630
|
+
> Attempting to delete an account-level policy in-use by at least one account will fail.
|
|
631
|
+
|
|
632
|
+
```typescript
|
|
633
|
+
const policy = await cdp.policies.deletePolicy({
|
|
634
|
+
id: '__POLICY_ID__'
|
|
635
|
+
});
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
### Validate a Policy
|
|
639
|
+
|
|
640
|
+
If you're integrating policy editing into your application, you may find it useful to validate policies ahead of time to provide a user with feedback. The `CreatePolicyBodySchema` and `UpdatePolicyBodySchema` can be used to get actionable structured information about any issues with a policy. Read more about [handling ZodErrors](https://zod.dev/ERROR_HANDLING).
|
|
641
|
+
|
|
642
|
+
```ts
|
|
643
|
+
import { CreatePolicyBodySchema, UpdatePolicyBodySchema } from "@coinbase/cdp-sdk";
|
|
644
|
+
|
|
645
|
+
// Validate a new Policy with many issues, will throw a ZodError with actionable validation errors
|
|
646
|
+
try {
|
|
647
|
+
CreatePolicyBodySchema.parse({
|
|
648
|
+
description: 'Bad description with !#@ characters, also is wayyyyy toooooo long!!',
|
|
649
|
+
rules: [
|
|
650
|
+
{
|
|
651
|
+
action: 'acept',
|
|
652
|
+
operation: 'unknownOperation',
|
|
653
|
+
criteria: [
|
|
654
|
+
{
|
|
655
|
+
type: 'ethValue',
|
|
656
|
+
ethValue: 'not a number',
|
|
657
|
+
operator: '<='
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
type: 'evmAddress',
|
|
661
|
+
addresses: ["not an address"],
|
|
662
|
+
operator: 'in'
|
|
663
|
+
},
|
|
664
|
+
{
|
|
665
|
+
type: 'evmAddress',
|
|
666
|
+
addresses: ["not an address"],
|
|
667
|
+
operator: 'invalid operator'
|
|
668
|
+
}
|
|
669
|
+
]
|
|
670
|
+
},
|
|
671
|
+
]
|
|
672
|
+
})
|
|
673
|
+
} catch(e) {
|
|
674
|
+
console.error(e)
|
|
675
|
+
}
|
|
676
|
+
````
|
|
677
|
+
|
|
395
678
|
## Authentication tools
|
|
396
679
|
|
|
397
680
|
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.
|
|
@@ -37,8 +37,9 @@ function toEvmServerAccount(apiClient, options) {
|
|
|
37
37
|
});
|
|
38
38
|
return result.signedTransaction;
|
|
39
39
|
},
|
|
40
|
-
async signTypedData() {
|
|
41
|
-
|
|
40
|
+
async signTypedData(message) {
|
|
41
|
+
const result = await apiClient.signEvmTypedData(options.account.address, message);
|
|
42
|
+
return result.signature;
|
|
42
43
|
},
|
|
43
44
|
async transfer(transferArgs) {
|
|
44
45
|
return (0, transfer_js_1.transfer)(apiClient, account, transferArgs, accountTransferStrategy_js_1.accountTransferStrategy);
|
|
@@ -63,6 +64,7 @@ function toEvmServerAccount(apiClient, options) {
|
|
|
63
64
|
},
|
|
64
65
|
name: options.account.name,
|
|
65
66
|
type: "evm-server",
|
|
67
|
+
policies: options.account.policies,
|
|
66
68
|
};
|
|
67
69
|
return account;
|
|
68
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmServerAccount.ts"],"names":[],"mappings":";;AAuCA,
|
|
1
|
+
{"version":3,"file":"toEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmServerAccount.ts"],"names":[],"mappings":";;AAuCA,gDA+DC;AAtGD,+BAAoF;AAEpF,iFAIgD;AAChD,yEAI4C;AAC5C,6EAAuE;AACvE,sGAAgG;AAChG,wEAAkE;AAgBlE;;;;;;;;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,CAAC,OAAsB;YACxC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClF,OAAO,MAAM,CAAC,SAAgB,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,YAAY;YACzB,OAAO,IAAA,sBAAQ,EAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,oDAAuB,CAAC,CAAC;QAC7E,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,aAAa,CACjB,OAA8C;YAE9C,OAAO,IAAA,gCAAa,EAAC,SAAS,EAAE;gBAC9B,GAAG,OAAO;gBACV,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,OAAgD;YACpE,OAAO,IAAA,oCAAe,EAAC,SAAS,EAAE;gBAChC,GAAG,OAAO;gBACV,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QAC1B,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;KACnC,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.toEvmSmartAccount = toEvmSmartAccount;
|
|
4
|
+
const getUserOperation_js_1 = require("../../actions/evm/getUserOperation.js");
|
|
4
5
|
const listTokenBalances_js_1 = require("../../actions/evm/listTokenBalances.js");
|
|
5
6
|
const requestFaucet_js_1 = require("../../actions/evm/requestFaucet.js");
|
|
6
7
|
const sendUserOperation_js_1 = require("../../actions/evm/sendUserOperation.js");
|
|
@@ -44,6 +45,12 @@ function toEvmSmartAccount(apiClient, options) {
|
|
|
44
45
|
smartAccountAddress: account.address,
|
|
45
46
|
});
|
|
46
47
|
},
|
|
48
|
+
async getUserOperation(options) {
|
|
49
|
+
return (0, getUserOperation_js_1.getUserOperation)(apiClient, {
|
|
50
|
+
...options,
|
|
51
|
+
smartAccount: account,
|
|
52
|
+
});
|
|
53
|
+
},
|
|
47
54
|
async requestFaucet(options) {
|
|
48
55
|
return (0, requestFaucet_js_1.requestFaucet)(apiClient, {
|
|
49
56
|
...options,
|
|
@@ -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":";;AAuDA,8CAuDC;AA9GD,+EAAyE;AACzE,iFAIgD;AAChD,yEAI4C;AAC5C,iFAIgD;AAChD,gHAA0G;AAC1G,wEAAkE;AAClE,uFAImD;AAqBnD;;;;;;;;;;;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,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI;QAC/B,IAAI,EAAE,WAAW;KAClB,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../accounts/evm/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toSolanaAccount = toSolanaAccount;
|
|
4
|
+
const requestFaucet_js_1 = require("../../actions/solana/requestFaucet.js");
|
|
5
|
+
const signMessage_js_1 = require("../../actions/solana/signMessage.js");
|
|
6
|
+
const signTransaction_js_1 = require("../../actions/solana/signTransaction.js");
|
|
7
|
+
/**
|
|
8
|
+
* Creates a Solana account instance with actions from an existing Solana account.
|
|
9
|
+
* Use this to interact with previously deployed Solana accounts, rather than creating new ones.
|
|
10
|
+
*
|
|
11
|
+
* @param {CdpOpenApiClientType} apiClient - The API client.
|
|
12
|
+
* @param {ToSolanaAccountOptions} options - Configuration options.
|
|
13
|
+
* @param {Account} options.account - The Solana account that was previously created.
|
|
14
|
+
* @returns {SolanaAccount} A configured SolanaAccount instance ready for signing.
|
|
15
|
+
*/
|
|
16
|
+
function toSolanaAccount(apiClient, options) {
|
|
17
|
+
const account = {
|
|
18
|
+
address: options.account.address,
|
|
19
|
+
name: options.account.name,
|
|
20
|
+
async requestFaucet(options) {
|
|
21
|
+
return (0, requestFaucet_js_1.requestFaucet)(apiClient, {
|
|
22
|
+
...options,
|
|
23
|
+
address: account.address,
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
async signMessage(options) {
|
|
27
|
+
return (0, signMessage_js_1.signMessage)(apiClient, {
|
|
28
|
+
...options,
|
|
29
|
+
address: account.address,
|
|
30
|
+
});
|
|
31
|
+
},
|
|
32
|
+
async signTransaction(options) {
|
|
33
|
+
return (0, signTransaction_js_1.signTransaction)(apiClient, {
|
|
34
|
+
...options,
|
|
35
|
+
address: account.address,
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
policies: options.account.policies,
|
|
39
|
+
};
|
|
40
|
+
return account;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=toSolanaAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toSolanaAccount.js","sourceRoot":"","sources":["../../../accounts/solana/toSolanaAccount.ts"],"names":[],"mappings":";;AA4BA,0CA+BC;AA1DD,4EAAsE;AACtE,wEAAkE;AAClE,gFAA0E;AAgB1E;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAC7B,SAA+B,EAC/B,OAA+B;IAE/B,MAAM,OAAO,GAAkB;QAC7B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;QAChC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QAC1B,KAAK,CAAC,aAAa,CAAC,OAA8C;YAChE,OAAO,IAAA,gCAAa,EAAC,SAAS,EAAE;gBAC9B,GAAG,OAAO;gBACV,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,OAA4C;YAC5D,OAAO,IAAA,4BAAW,EAAC,SAAS,EAAE;gBAC5B,GAAG,OAAO;gBACV,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,eAAe,CACnB,OAAgD;YAEhD,OAAO,IAAA,oCAAe,EAAC,SAAS,EAAE;gBAChC,GAAG,OAAO;gBACV,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QACL,CAAC;QACD,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;KACnC,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../accounts/solana/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getUserOperation = getUserOperation;
|
|
4
|
+
/**
|
|
5
|
+
* Gets a user operation for a smart account by user operation hash.
|
|
6
|
+
*
|
|
7
|
+
* @param {CdpOpenApiClientType} client - The client to use to get the user operation.
|
|
8
|
+
* @param {GetUserOperationOptions} options - Parameters for getting the user operation.
|
|
9
|
+
* @param {SmartAccount} options.smartAccount - The smart account signing the user operation.
|
|
10
|
+
* @param {string} options.userOpHash - The user operation hash.
|
|
11
|
+
*
|
|
12
|
+
* @returns A promise that resolves to the user operation.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const userOp = await getUserOperation(client, {
|
|
17
|
+
* smartAccount,
|
|
18
|
+
* userOpHash: "0x1234567890123456789012345678901234567890123456789012345678901234",
|
|
19
|
+
* });
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
async function getUserOperation(client, options) {
|
|
23
|
+
const userOp = await client.getUserOperation(options.smartAccount.address, options.userOpHash);
|
|
24
|
+
return {
|
|
25
|
+
calls: userOp.calls.map(call => ({
|
|
26
|
+
to: call.to,
|
|
27
|
+
value: BigInt(call.value),
|
|
28
|
+
data: call.data,
|
|
29
|
+
})),
|
|
30
|
+
network: userOp.network,
|
|
31
|
+
status: userOp.status,
|
|
32
|
+
transactionHash: userOp.transactionHash,
|
|
33
|
+
userOpHash: userOp.userOpHash,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=getUserOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getUserOperation.js","sourceRoot":"","sources":["../../../actions/evm/getUserOperation.ts"],"names":[],"mappings":";;AAsBA,4CAiBC;AAnCD;;;;;;;;;;;;;;;;;GAiBG;AACI,KAAK,UAAU,gBAAgB,CACpC,MAA4B,EAC5B,OAAgC;IAEhC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAE/F,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/B,EAAE,EAAE,IAAI,CAAC,EAAa;YACtB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,IAAW;SACvB,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,eAAe,EAAE,MAAM,CAAC,eAAkC;QAC1D,UAAU,EAAE,MAAM,CAAC,UAAiB;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -5,20 +5,20 @@ const viem_1 = require("viem");
|
|
|
5
5
|
const utils_js_1 = require("./utils.js");
|
|
6
6
|
const serializeTransaction_js_1 = require("../../../utils/serializeTransaction.js");
|
|
7
7
|
exports.accountTransferStrategy = {
|
|
8
|
-
executeTransfer: async ({ apiClient, from,
|
|
8
|
+
executeTransfer: async ({ apiClient, from, to, value, token, network }) => {
|
|
9
9
|
const transactionHash = await (async () => {
|
|
10
|
-
if (
|
|
10
|
+
if (token === "eth") {
|
|
11
11
|
const result = await apiClient.sendEvmTransaction(from.address, {
|
|
12
12
|
transaction: (0, serializeTransaction_js_1.serializeEIP1559Transaction)({
|
|
13
13
|
value,
|
|
14
14
|
to,
|
|
15
15
|
}),
|
|
16
|
-
network
|
|
16
|
+
network,
|
|
17
17
|
});
|
|
18
18
|
return result.transactionHash;
|
|
19
19
|
}
|
|
20
20
|
else {
|
|
21
|
-
const erc20Address = (0, utils_js_1.getErc20Address)(
|
|
21
|
+
const erc20Address = (0, utils_js_1.getErc20Address)(token, network);
|
|
22
22
|
await apiClient.sendEvmTransaction(from.address, {
|
|
23
23
|
transaction: (0, serializeTransaction_js_1.serializeEIP1559Transaction)({
|
|
24
24
|
to: erc20Address,
|
|
@@ -28,7 +28,7 @@ exports.accountTransferStrategy = {
|
|
|
28
28
|
args: [to, value],
|
|
29
29
|
}),
|
|
30
30
|
}),
|
|
31
|
-
network
|
|
31
|
+
network,
|
|
32
32
|
});
|
|
33
33
|
const result = await apiClient.sendEvmTransaction(from.address, {
|
|
34
34
|
transaction: (0, serializeTransaction_js_1.serializeEIP1559Transaction)({
|
|
@@ -39,18 +39,22 @@ exports.accountTransferStrategy = {
|
|
|
39
39
|
args: [to, value],
|
|
40
40
|
}),
|
|
41
41
|
}),
|
|
42
|
-
network
|
|
42
|
+
network,
|
|
43
43
|
});
|
|
44
44
|
return result.transactionHash;
|
|
45
45
|
}
|
|
46
46
|
})();
|
|
47
47
|
return transactionHash;
|
|
48
48
|
},
|
|
49
|
-
waitForResult: async ({ publicClient, hash }) => {
|
|
49
|
+
waitForResult: async ({ publicClient, hash, waitOptions }) => {
|
|
50
50
|
let receipt;
|
|
51
51
|
try {
|
|
52
52
|
receipt = await publicClient.waitForTransactionReceipt({
|
|
53
53
|
hash,
|
|
54
|
+
pollingInterval: waitOptions?.intervalSeconds
|
|
55
|
+
? waitOptions.intervalSeconds * 1000
|
|
56
|
+
: undefined,
|
|
57
|
+
timeout: waitOptions?.timeoutSeconds ? waitOptions.timeoutSeconds * 1000 : undefined,
|
|
54
58
|
});
|
|
55
59
|
}
|
|
56
60
|
catch (error) {
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"accountTransferStrategy.js","sourceRoot":"","sources":["../../../../actions/evm/transfer/accountTransferStrategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,13 @@ const utils_js_1 = require("./utils.js");
|
|
|
6
6
|
const sendUserOperation_js_1 = require("../sendUserOperation.js");
|
|
7
7
|
const waitForUserOperation_js_1 = require("../waitForUserOperation.js");
|
|
8
8
|
exports.smartAccountTransferStrategy = {
|
|
9
|
-
executeTransfer: async ({ apiClient, from,
|
|
9
|
+
executeTransfer: async ({ apiClient, from, to, value, token, network, paymasterUrl }) => {
|
|
10
10
|
const userOpHash = await (async () => {
|
|
11
|
-
if (
|
|
11
|
+
if (token === "eth") {
|
|
12
12
|
const result = await (0, sendUserOperation_js_1.sendUserOperation)(apiClient, {
|
|
13
13
|
smartAccount: from,
|
|
14
|
-
|
|
14
|
+
paymasterUrl,
|
|
15
|
+
network,
|
|
15
16
|
calls: [
|
|
16
17
|
{
|
|
17
18
|
to,
|
|
@@ -23,10 +24,11 @@ exports.smartAccountTransferStrategy = {
|
|
|
23
24
|
return result.userOpHash;
|
|
24
25
|
}
|
|
25
26
|
else {
|
|
26
|
-
const erc20Address = (0, utils_js_1.getErc20Address)(
|
|
27
|
+
const erc20Address = (0, utils_js_1.getErc20Address)(token, network);
|
|
27
28
|
const result = await (0, sendUserOperation_js_1.sendUserOperation)(apiClient, {
|
|
28
29
|
smartAccount: from,
|
|
29
|
-
|
|
30
|
+
paymasterUrl,
|
|
31
|
+
network,
|
|
30
32
|
calls: [
|
|
31
33
|
{
|
|
32
34
|
to: erc20Address,
|
|
@@ -51,10 +53,11 @@ exports.smartAccountTransferStrategy = {
|
|
|
51
53
|
})();
|
|
52
54
|
return userOpHash;
|
|
53
55
|
},
|
|
54
|
-
waitForResult: async ({ apiClient, publicClient, from, hash }) => {
|
|
56
|
+
waitForResult: async ({ apiClient, publicClient, from, hash, waitOptions }) => {
|
|
55
57
|
const result = await (0, waitForUserOperation_js_1.waitForUserOperation)(apiClient, {
|
|
56
58
|
smartAccountAddress: from.address,
|
|
57
59
|
userOpHash: hash,
|
|
60
|
+
waitOptions,
|
|
58
61
|
});
|
|
59
62
|
if (result.status === "complete") {
|
|
60
63
|
return { status: "success", transactionHash: hash };
|
|
@@ -1 +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,
|
|
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,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE;QACtF,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;YACnC,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,MAAM,IAAA,wCAAiB,EAAC,SAAS,EAAE;oBAChD,YAAY,EAAE,IAAI;oBAClB,YAAY;oBACZ,OAAO;oBACP,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,KAAK,EAAE,OAAO,CAAC,CAAC;gBAErD,MAAM,MAAM,GAAG,MAAM,IAAA,wCAAiB,EAAC,SAAS,EAAE;oBAChD,YAAY,EAAE,IAAI;oBAClB,YAAY;oBACZ,OAAO;oBACP,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,WAAW,EAAE,EAAE,EAAE;QAC5E,MAAM,MAAM,GAAG,MAAM,IAAA,8CAAoB,EAAC,SAAS,EAAE;YACnD,mBAAmB,EAAE,IAAI,CAAC,OAAO;YACjC,UAAU,EAAE,IAAI;YAChB,WAAW;SACZ,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"}
|