@coinbase/cdp-sdk 1.44.1 → 1.45.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 +117 -0
- package/_cjs/accounts/evm/toEvmDelegatedAccount.js +27 -0
- package/_cjs/accounts/evm/toEvmDelegatedAccount.js.map +1 -0
- package/_cjs/accounts/evm/toEvmServerAccount.js +127 -55
- package/_cjs/accounts/evm/toEvmServerAccount.js.map +1 -1
- package/_cjs/accounts/evm/toEvmSmartAccount.js +111 -45
- package/_cjs/accounts/evm/toEvmSmartAccount.js.map +1 -1
- package/_cjs/accounts/solana/toSolanaAccount.js +49 -19
- package/_cjs/accounts/solana/toSolanaAccount.js.map +1 -1
- package/_cjs/actions/evm/waitForEvmEip7702DelegationStatus.js +37 -0
- package/_cjs/actions/evm/waitForEvmEip7702DelegationStatus.js.map +1 -0
- package/_cjs/analytics.js +10 -228
- package/_cjs/analytics.js.map +1 -1
- package/_cjs/client/cdp.js +0 -6
- package/_cjs/client/cdp.js.map +1 -1
- package/_cjs/client/evm/evm.js +482 -227
- package/_cjs/client/evm/evm.js.map +1 -1
- package/_cjs/client/policies/policies.js +41 -11
- package/_cjs/client/policies/policies.js.map +1 -1
- package/_cjs/client/solana/solana.js +177 -106
- package/_cjs/client/solana/solana.js.map +1 -1
- package/_cjs/index.js +3 -1
- package/_cjs/index.js.map +1 -1
- package/_cjs/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js +137 -5
- package/_cjs/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js.map +1 -1
- package/_cjs/openapi-client/generated/evm-accounts/evm-accounts.js +30 -1
- package/_cjs/openapi-client/generated/evm-accounts/evm-accounts.js.map +1 -1
- package/_cjs/openapi-client/generated/onramp/onramp.js +15 -1
- package/_cjs/openapi-client/generated/onramp/onramp.js.map +1 -1
- package/_cjs/policies/evmSchema.js +127 -1
- package/_cjs/policies/evmSchema.js.map +1 -1
- package/_cjs/policies/solanaSchema.js +102 -1
- package/_cjs/policies/solanaSchema.js.map +1 -1
- package/_cjs/policies/types.js +7 -0
- package/_cjs/policies/types.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/accounts/evm/toEvmDelegatedAccount.js +24 -0
- package/_esm/accounts/evm/toEvmDelegatedAccount.js.map +1 -0
- package/_esm/accounts/evm/toEvmServerAccount.js +127 -55
- package/_esm/accounts/evm/toEvmServerAccount.js.map +1 -1
- package/_esm/accounts/evm/toEvmSmartAccount.js +111 -45
- package/_esm/accounts/evm/toEvmSmartAccount.js.map +1 -1
- package/_esm/accounts/solana/toSolanaAccount.js +49 -19
- package/_esm/accounts/solana/toSolanaAccount.js.map +1 -1
- package/_esm/actions/evm/waitForEvmEip7702DelegationStatus.js +34 -0
- package/_esm/actions/evm/waitForEvmEip7702DelegationStatus.js.map +1 -0
- package/_esm/analytics.js +9 -227
- package/_esm/analytics.js.map +1 -1
- package/_esm/client/cdp.js +0 -6
- package/_esm/client/cdp.js.map +1 -1
- package/_esm/client/evm/evm.js +482 -227
- package/_esm/client/evm/evm.js.map +1 -1
- package/_esm/client/policies/policies.js +41 -11
- package/_esm/client/policies/policies.js.map +1 -1
- package/_esm/client/solana/solana.js +177 -106
- 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 +134 -3
- package/_esm/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js.map +1 -1
- package/_esm/openapi-client/generated/evm-accounts/evm-accounts.js +27 -0
- package/_esm/openapi-client/generated/evm-accounts/evm-accounts.js.map +1 -1
- package/_esm/openapi-client/generated/onramp/onramp.js +13 -0
- package/_esm/openapi-client/generated/onramp/onramp.js.map +1 -1
- package/_esm/policies/evmSchema.js +126 -0
- package/_esm/policies/evmSchema.js.map +1 -1
- package/_esm/policies/solanaSchema.js +101 -0
- package/_esm/policies/solanaSchema.js.map +1 -1
- package/_esm/policies/types.js +9 -2
- package/_esm/policies/types.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/accounts/evm/toEvmDelegatedAccount.d.ts +13 -0
- package/_types/accounts/evm/toEvmDelegatedAccount.d.ts.map +1 -0
- package/_types/accounts/evm/toEvmServerAccount.d.ts.map +1 -1
- package/_types/accounts/evm/toEvmSmartAccount.d.ts.map +1 -1
- package/_types/accounts/solana/toSolanaAccount.d.ts.map +1 -1
- package/_types/actions/evm/waitForEvmEip7702DelegationStatus.d.ts +32 -0
- package/_types/actions/evm/waitForEvmEip7702DelegationStatus.d.ts.map +1 -0
- package/_types/analytics.d.ts +5 -38
- package/_types/analytics.d.ts.map +1 -1
- package/_types/client/cdp.d.ts.map +1 -1
- package/_types/client/evm/evm.d.ts +54 -1
- package/_types/client/evm/evm.d.ts.map +1 -1
- package/_types/client/evm/evm.types.d.ts +29 -2
- package/_types/client/evm/evm.types.d.ts.map +1 -1
- package/_types/client/policies/policies.d.ts.map +1 -1
- package/_types/client/solana/solana.d.ts.map +1 -1
- package/_types/index.d.ts +2 -0
- package/_types/index.d.ts.map +1 -1
- package/_types/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.d.ts +436 -10
- package/_types/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.d.ts.map +1 -1
- package/_types/openapi-client/generated/evm-accounts/evm-accounts.d.ts +21 -1
- package/_types/openapi-client/generated/evm-accounts/evm-accounts.d.ts.map +1 -1
- package/_types/openapi-client/generated/onramp/onramp.d.ts +8 -1
- package/_types/openapi-client/generated/onramp/onramp.d.ts.map +1 -1
- package/_types/openapi-client/index.d.ts +4 -0
- package/_types/openapi-client/index.d.ts.map +1 -1
- package/_types/policies/evmSchema.d.ts +2717 -601
- package/_types/policies/evmSchema.d.ts.map +1 -1
- package/_types/policies/solanaSchema.d.ts +1411 -47
- package/_types/policies/solanaSchema.d.ts.map +1 -1
- package/_types/policies/types.d.ts +8427 -2942
- package/_types/policies/types.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/accounts/evm/toEvmDelegatedAccount.ts +26 -0
- package/accounts/evm/toEvmServerAccount.ts +115 -67
- package/accounts/evm/toEvmSmartAccount.ts +100 -56
- package/accounts/solana/toSolanaAccount.ts +44 -24
- package/actions/evm/waitForEvmEip7702DelegationStatus.ts +57 -0
- package/analytics.ts +8 -294
- package/client/cdp.ts +0 -7
- package/client/evm/evm.ts +517 -282
- package/client/evm/evm.types.ts +41 -0
- package/client/policies/policies.ts +41 -16
- package/client/solana/solana.ts +195 -141
- package/index.ts +5 -0
- package/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.ts +580 -11
- package/openapi-client/generated/evm-accounts/evm-accounts.ts +49 -0
- package/openapi-client/generated/onramp/onramp.ts +24 -0
- package/package.json +1 -1
- package/policies/evmSchema.ts +164 -0
- package/policies/solanaSchema.ts +130 -0
- package/policies/types.ts +14 -0
- package/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# CDP SDK Changelog
|
|
2
2
|
|
|
3
|
+
## 1.45.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#606](https://github.com/coinbase/cdp-sdk/pull/606) [`3fef84a`](https://github.com/coinbase/cdp-sdk/commit/3fef84a828ee897fcbdc9bb920fcc3641eac8641) Thanks [@milan-cb](https://github.com/milan-cb)! - Added createEvmEip7702Delegation to upgrade EOAs with smart account capabilities
|
|
8
|
+
|
|
9
|
+
- [#612](https://github.com/coinbase/cdp-sdk/pull/612) [`7ed8a11`](https://github.com/coinbase/cdp-sdk/commit/7ed8a1177e5fddc70929ee7ec339887c780657b1) Thanks [@milan-cb](https://github.com/milan-cb)! - Added getEvmEip7702DelegationOperationById and waitForEvmEip7702DelegationOperationStatus
|
|
10
|
+
|
|
11
|
+
- [#608](https://github.com/coinbase/cdp-sdk/pull/608) [`8fcfac3`](https://github.com/coinbase/cdp-sdk/commit/8fcfac348487f586b224b77074f52594ad44198b) Thanks [@sammccord](https://github.com/sammccord)! - Added support for new end user embedded wallet policy rules, reusing existing criteria - signEndUserEvmTransaction, sendEndUserEvmTransaction, signEndUserEvmMessage, signEndUserEvmTypedData, signEndUserSolTransaction, sendEndUserSolTransaction, and signEndUserSolMessage.
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [#607](https://github.com/coinbase/cdp-sdk/pull/607) [`21244e3`](https://github.com/coinbase/cdp-sdk/commit/21244e32384fb189facbea96668087d24ded035a) Thanks [@0xRAG](https://github.com/0xRAG)! - Simplify analytics
|
|
16
|
+
|
|
3
17
|
## 1.44.1
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -12,11 +12,13 @@
|
|
|
12
12
|
- [Updating Accounts](#updating-evm-or-solana-accounts)
|
|
13
13
|
- [Testnet Faucet](#testnet-faucet)
|
|
14
14
|
- [Sending Transactions](#sending-transactions)
|
|
15
|
+
- [EIP-7702 delegation](#eip-7702-delegation)
|
|
15
16
|
- [EVM Smart Accounts](#evm-smart-accounts)
|
|
16
17
|
- [EVM Swaps](#evm-swaps)
|
|
17
18
|
- [Transferring Tokens](#transferring-tokens)
|
|
18
19
|
- [Account Actions](#account-actions)
|
|
19
20
|
- [Policy Management](#policy-management)
|
|
21
|
+
- [End User Policies](#end-user-policies)
|
|
20
22
|
- [End-user Management](#end-user-management)
|
|
21
23
|
- [Create End User](#create-end-user)
|
|
22
24
|
- [Import End User](#import-end-user)
|
|
@@ -420,6 +422,39 @@ console.log(
|
|
|
420
422
|
);
|
|
421
423
|
```
|
|
422
424
|
|
|
425
|
+
### EIP-7702 delegation
|
|
426
|
+
|
|
427
|
+
You can create an [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) delegation for an existing EOA, upgrading it with smart account capabilities on supported networks. The delegated EOA can then use batched transactions and gas sponsorship via paymaster.
|
|
428
|
+
|
|
429
|
+
```typescript
|
|
430
|
+
import { CdpClient } from "@coinbase/cdp-sdk";
|
|
431
|
+
import { createPublicClient, http } from "viem";
|
|
432
|
+
import { baseSepolia } from "viem/chains";
|
|
433
|
+
|
|
434
|
+
const cdp = new CdpClient();
|
|
435
|
+
const publicClient = createPublicClient({
|
|
436
|
+
chain: baseSepolia,
|
|
437
|
+
transport: http(),
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
const account = await cdp.evm.getOrCreateAccount({ name: "MyAccount" });
|
|
441
|
+
|
|
442
|
+
const { delegationOperationId } = await cdp.evm.createEvmEip7702Delegation({
|
|
443
|
+
address: account.address,
|
|
444
|
+
network: "base-sepolia",
|
|
445
|
+
enableSpendPermissions: false, // optional, defaults to false
|
|
446
|
+
idempotencyKey: "optional-uuid", // optional
|
|
447
|
+
});
|
|
448
|
+
|
|
449
|
+
// Wait for the delegation operation to complete
|
|
450
|
+
const delegationOperation = await cdp.evm.waitForEvmEip7702DelegationOperationStatus({
|
|
451
|
+
delegationOperationId,
|
|
452
|
+
});
|
|
453
|
+
console.log(`Delegation confirmed (status: ${delegationOperation.status})`);
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
For a runnable example that includes faucet and receipt waiting, see [examples/typescript/evm/eip7702/createEip7702Delegation.ts](https://github.com/coinbase/cdp-sdk/blob/main/examples/typescript/evm/eip7702/createEip7702Delegation.ts).
|
|
457
|
+
|
|
423
458
|
### EVM Smart Accounts
|
|
424
459
|
|
|
425
460
|
For EVM, we support Smart Accounts which are account-abstraction (ERC-4337) accounts. Currently there is only support for Base Sepolia and Base Mainnet for Smart Accounts.
|
|
@@ -1079,6 +1114,8 @@ try {
|
|
|
1079
1114
|
|
|
1080
1115
|
We currently support the following policy rules:
|
|
1081
1116
|
|
|
1117
|
+
**Server wallet rules:**
|
|
1118
|
+
|
|
1082
1119
|
- [SignEvmTransactionRule](https://docs.cdp.coinbase.com/api-reference/v2/rest-api/policy-engine/create-a-policy#signevmtransactionrule)
|
|
1083
1120
|
- [SendEvmTransactionRule](https://docs.cdp.coinbase.com/api-reference/v2/rest-api/policy-engine/create-a-policy#sendevmtransactionrule)
|
|
1084
1121
|
- [SignEvmMessageRule](https://docs.cdp.coinbase.com/api-reference/v2/rest-api/policy-engine/create-a-policy#signevmmessagerule)
|
|
@@ -1089,6 +1126,86 @@ We currently support the following policy rules:
|
|
|
1089
1126
|
- [PrepareUserOperationRule](https://docs.cdp.coinbase.com/api-reference/v2/rest-api/policy-engine/create-a-policy#prepareuseroperationrule)
|
|
1090
1127
|
- [SendUserOperationRule](https://docs.cdp.coinbase.com/api-reference/v2/rest-api/policy-engine/create-a-policy#senduseroperationrule)
|
|
1091
1128
|
|
|
1129
|
+
**End user rules:**
|
|
1130
|
+
|
|
1131
|
+
- `SignEndUserEvmTransactionRule` — operation: `signEndUserEvmTransaction` (criteria: `ethValue`, `evmAddress`, `evmData`, `netUSDChange`)
|
|
1132
|
+
- `SendEndUserEvmTransactionRule` — operation: `sendEndUserEvmTransaction` (criteria: `ethValue`, `evmAddress`, `evmNetwork`, `evmData`, `netUSDChange`)
|
|
1133
|
+
- `SignEndUserEvmMessageRule` — operation: `signEndUserEvmMessage` (criteria: `evmMessage`)
|
|
1134
|
+
- `SignEndUserEvmTypedDataRule` — operation: `signEndUserEvmTypedData` (criteria: `evmTypedDataField`, `evmTypedDataVerifyingContract`)
|
|
1135
|
+
- `SignEndUserSolTransactionRule` — operation: `signEndUserSolTransaction` (criteria: `solAddress`, `solValue`, `splAddress`, `splValue`, `mintAddress`, `solData`, `programId`)
|
|
1136
|
+
- `SendEndUserSolTransactionRule` — operation: `sendEndUserSolTransaction` (criteria: `solAddress`, `solValue`, `splAddress`, `splValue`, `mintAddress`, `solData`, `programId`, `solNetwork`)
|
|
1137
|
+
- `SignEndUserSolMessageRule` — operation: `signEndUserSolMessage` (criteria: `solMessage`)
|
|
1138
|
+
|
|
1139
|
+
End user rules use the same criteria types as their server wallet counterparts. For example, `signEndUserEvmTransaction` supports the same `ethValue`, `evmAddress`, and `evmData` criteria as `signEvmTransaction`.
|
|
1140
|
+
|
|
1141
|
+
### End User Policies
|
|
1142
|
+
|
|
1143
|
+
You can create policies that govern end-user operations using the same criteria types available for server wallet policies. The only difference is the `operation` value, which targets end-user-specific actions.
|
|
1144
|
+
|
|
1145
|
+
#### End User EVM Policy
|
|
1146
|
+
|
|
1147
|
+
This policy restricts end-user EVM transaction signing to a max value and allowlisted recipients — the same criteria used in `signEvmTransaction`:
|
|
1148
|
+
|
|
1149
|
+
```typescript
|
|
1150
|
+
const policy = await cdp.policies.createPolicy({
|
|
1151
|
+
policy: {
|
|
1152
|
+
scope: "project",
|
|
1153
|
+
description: "End User EVM Policy",
|
|
1154
|
+
rules: [
|
|
1155
|
+
{
|
|
1156
|
+
action: "accept",
|
|
1157
|
+
operation: "signEndUserEvmTransaction",
|
|
1158
|
+
criteria: [
|
|
1159
|
+
{
|
|
1160
|
+
type: "ethValue",
|
|
1161
|
+
ethValue: "1000000000000000000", // 1 ETH in wei
|
|
1162
|
+
operator: "<=",
|
|
1163
|
+
},
|
|
1164
|
+
{
|
|
1165
|
+
type: "evmAddress",
|
|
1166
|
+
addresses: ["0x000000000000000000000000000000000000dEaD"],
|
|
1167
|
+
operator: "in",
|
|
1168
|
+
},
|
|
1169
|
+
],
|
|
1170
|
+
},
|
|
1171
|
+
],
|
|
1172
|
+
},
|
|
1173
|
+
});
|
|
1174
|
+
```
|
|
1175
|
+
|
|
1176
|
+
#### End User Solana Policy
|
|
1177
|
+
|
|
1178
|
+
This policy restricts end-user Solana transaction signing to allowlisted recipients under a SOL value threshold — the same criteria used in `signSolTransaction`:
|
|
1179
|
+
|
|
1180
|
+
```typescript
|
|
1181
|
+
const policy = await cdp.policies.createPolicy({
|
|
1182
|
+
policy: {
|
|
1183
|
+
scope: "project",
|
|
1184
|
+
description: "End User Solana Policy",
|
|
1185
|
+
rules: [
|
|
1186
|
+
{
|
|
1187
|
+
action: "accept",
|
|
1188
|
+
operation: "signEndUserSolTransaction",
|
|
1189
|
+
criteria: [
|
|
1190
|
+
{
|
|
1191
|
+
type: "solAddress",
|
|
1192
|
+
addresses: ["11111111111111111111111111111111"],
|
|
1193
|
+
operator: "in",
|
|
1194
|
+
},
|
|
1195
|
+
{
|
|
1196
|
+
type: "solValue",
|
|
1197
|
+
solValue: "1000000000", // 1 SOL in lamports
|
|
1198
|
+
operator: "<=",
|
|
1199
|
+
},
|
|
1200
|
+
],
|
|
1201
|
+
},
|
|
1202
|
+
],
|
|
1203
|
+
},
|
|
1204
|
+
});
|
|
1205
|
+
```
|
|
1206
|
+
|
|
1207
|
+
> For a comprehensive example demonstrating all 7 end-user operations, see [createEndUserPolicy.ts](https://github.com/coinbase/cdp-sdk/blob/main/examples/typescript/end-users/createEndUserPolicy.ts).
|
|
1208
|
+
|
|
1092
1209
|
### End-user Management
|
|
1093
1210
|
|
|
1094
1211
|
You can use the End User SDK to manage the users of your applications.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toEvmDelegatedAccount = toEvmDelegatedAccount;
|
|
4
|
+
const toEvmSmartAccount_js_1 = require("./toEvmSmartAccount.js");
|
|
5
|
+
const index_js_1 = require("../../openapi-client/index.js");
|
|
6
|
+
/**
|
|
7
|
+
* Creates an EvmSmartAccount view of a server account for use after EIP-7702 delegation.
|
|
8
|
+
* Uses the API client configured by your CdpClient instance.
|
|
9
|
+
*
|
|
10
|
+
* The returned account has the same address as the EOA and uses the server account as owner,
|
|
11
|
+
* so you can call sendUserOperation, waitForUserOperation, etc.
|
|
12
|
+
*
|
|
13
|
+
* @param account - The server account (EOA) that has been delegated via EIP-7702.
|
|
14
|
+
* @returns An EvmSmartAccount view ready for user operation submission.
|
|
15
|
+
*/
|
|
16
|
+
function toEvmDelegatedAccount(account) {
|
|
17
|
+
return (0, toEvmSmartAccount_js_1.toEvmSmartAccount)(index_js_1.CdpOpenApiClient, {
|
|
18
|
+
smartAccount: {
|
|
19
|
+
address: account.address,
|
|
20
|
+
owners: [account.address],
|
|
21
|
+
name: account.name,
|
|
22
|
+
policies: account.policies,
|
|
23
|
+
},
|
|
24
|
+
owner: account,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=toEvmDelegatedAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toEvmDelegatedAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmDelegatedAccount.ts"],"names":[],"mappings":";;AAeA,sDAUC;AAzBD,iEAA2D;AAC3D,4DAAiE;AAIjE;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CAAC,OAAyB;IAC7D,OAAO,IAAA,wCAAiB,EAAC,2BAAgB,EAAE;QACzC,YAAY,EAAE;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;YACzB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B;QACD,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -29,55 +29,79 @@ function toEvmServerAccount(apiClient, options) {
|
|
|
29
29
|
action: "sign_message",
|
|
30
30
|
accountType: "evm_server",
|
|
31
31
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
try {
|
|
33
|
+
if (typeof message === "string") {
|
|
34
|
+
const result = await apiClient.signEvmMessage(options.account.address, {
|
|
35
|
+
message,
|
|
36
|
+
});
|
|
37
|
+
return result.signature;
|
|
38
|
+
}
|
|
39
|
+
const result = await apiClient.signEvmHash(options.account.address, {
|
|
40
|
+
hash: (0, viem_1.hashMessage)(message),
|
|
35
41
|
});
|
|
36
42
|
return result.signature;
|
|
37
43
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
catch (error) {
|
|
45
|
+
analytics_js_1.Analytics.trackError(error, "signMessage");
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
42
48
|
},
|
|
43
49
|
async sign(parameters) {
|
|
44
50
|
analytics_js_1.Analytics.trackAction({
|
|
45
51
|
action: "sign",
|
|
46
52
|
accountType: "evm_server",
|
|
47
53
|
});
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
54
|
+
try {
|
|
55
|
+
const result = await apiClient.signEvmHash(options.account.address, {
|
|
56
|
+
hash: parameters.hash,
|
|
57
|
+
});
|
|
58
|
+
return result.signature;
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
analytics_js_1.Analytics.trackError(error, "sign");
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
52
64
|
},
|
|
53
65
|
async signTransaction(transaction) {
|
|
54
66
|
analytics_js_1.Analytics.trackAction({
|
|
55
67
|
action: "sign_transaction",
|
|
56
68
|
accountType: "evm_server",
|
|
57
69
|
});
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
70
|
+
try {
|
|
71
|
+
const result = await apiClient.signEvmTransaction(options.account.address, {
|
|
72
|
+
transaction: (0, viem_1.serializeTransaction)(transaction),
|
|
73
|
+
});
|
|
74
|
+
return result.signedTransaction;
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
analytics_js_1.Analytics.trackError(error, "signTransaction");
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
62
80
|
},
|
|
63
81
|
async signTypedData(parameters) {
|
|
64
82
|
analytics_js_1.Analytics.trackAction({
|
|
65
83
|
action: "sign_typed_data",
|
|
66
84
|
accountType: "evm_server",
|
|
67
85
|
});
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
try {
|
|
87
|
+
const { domain = {}, message, primaryType } = parameters;
|
|
88
|
+
const types = {
|
|
89
|
+
EIP712Domain: (0, viem_1.getTypesForEIP712Domain)({ domain }),
|
|
90
|
+
...parameters.types,
|
|
91
|
+
};
|
|
92
|
+
const openApiMessage = {
|
|
93
|
+
domain: domain,
|
|
94
|
+
types,
|
|
95
|
+
primaryType,
|
|
96
|
+
message,
|
|
97
|
+
};
|
|
98
|
+
const result = await apiClient.signEvmTypedData(options.account.address, openApiMessage);
|
|
99
|
+
return result.signature;
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
analytics_js_1.Analytics.trackError(error, "signTypedData");
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
81
105
|
},
|
|
82
106
|
async transfer(transferArgs) {
|
|
83
107
|
analytics_js_1.Analytics.trackAction({
|
|
@@ -87,7 +111,13 @@ function toEvmServerAccount(apiClient, options) {
|
|
|
87
111
|
network: transferArgs.network,
|
|
88
112
|
},
|
|
89
113
|
});
|
|
90
|
-
|
|
114
|
+
try {
|
|
115
|
+
return (0, transfer_js_1.transfer)(apiClient, account, transferArgs, accountTransferStrategy_js_1.accountTransferStrategy);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
analytics_js_1.Analytics.trackError(error, "transfer");
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
91
121
|
},
|
|
92
122
|
async listTokenBalances(options) {
|
|
93
123
|
analytics_js_1.Analytics.trackAction({
|
|
@@ -97,10 +127,16 @@ function toEvmServerAccount(apiClient, options) {
|
|
|
97
127
|
network: options.network,
|
|
98
128
|
},
|
|
99
129
|
});
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
130
|
+
try {
|
|
131
|
+
return (0, listTokenBalances_js_1.listTokenBalances)(apiClient, {
|
|
132
|
+
...options,
|
|
133
|
+
address: this.address,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
analytics_js_1.Analytics.trackError(error, "listTokenBalances");
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
104
140
|
},
|
|
105
141
|
async requestFaucet(options) {
|
|
106
142
|
analytics_js_1.Analytics.trackAction({
|
|
@@ -110,10 +146,16 @@ function toEvmServerAccount(apiClient, options) {
|
|
|
110
146
|
network: options.network,
|
|
111
147
|
},
|
|
112
148
|
});
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
149
|
+
try {
|
|
150
|
+
return (0, requestFaucet_js_1.requestFaucet)(apiClient, {
|
|
151
|
+
...options,
|
|
152
|
+
address: this.address,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
analytics_js_1.Analytics.trackError(error, "requestFaucet");
|
|
157
|
+
throw error;
|
|
158
|
+
}
|
|
117
159
|
},
|
|
118
160
|
async sendTransaction(options) {
|
|
119
161
|
analytics_js_1.Analytics.trackAction({
|
|
@@ -123,10 +165,16 @@ function toEvmServerAccount(apiClient, options) {
|
|
|
123
165
|
network: options.network,
|
|
124
166
|
},
|
|
125
167
|
});
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
168
|
+
try {
|
|
169
|
+
return (0, sendTransaction_js_1.sendTransaction)(apiClient, {
|
|
170
|
+
...options,
|
|
171
|
+
address: this.address,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
analytics_js_1.Analytics.trackError(error, "sendTransaction");
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
130
178
|
},
|
|
131
179
|
async quoteSwap(options) {
|
|
132
180
|
analytics_js_1.Analytics.trackAction({
|
|
@@ -136,10 +184,16 @@ function toEvmServerAccount(apiClient, options) {
|
|
|
136
184
|
network: options.network,
|
|
137
185
|
},
|
|
138
186
|
});
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
187
|
+
try {
|
|
188
|
+
return (0, createSwapQuote_js_1.createSwapQuote)(apiClient, {
|
|
189
|
+
...options,
|
|
190
|
+
taker: this.address,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
analytics_js_1.Analytics.trackError(error, "quoteSwap");
|
|
195
|
+
throw error;
|
|
196
|
+
}
|
|
143
197
|
},
|
|
144
198
|
async swap(options) {
|
|
145
199
|
analytics_js_1.Analytics.trackAction({
|
|
@@ -149,11 +203,17 @@ function toEvmServerAccount(apiClient, options) {
|
|
|
149
203
|
network: "network" in options ? options.network : undefined,
|
|
150
204
|
},
|
|
151
205
|
});
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
206
|
+
try {
|
|
207
|
+
return (0, sendSwapTransaction_js_1.sendSwapTransaction)(apiClient, {
|
|
208
|
+
...options,
|
|
209
|
+
address: this.address,
|
|
210
|
+
taker: this.address, // Always use account's address as taker
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
analytics_js_1.Analytics.trackError(error, "swap");
|
|
215
|
+
throw error;
|
|
216
|
+
}
|
|
157
217
|
},
|
|
158
218
|
async useSpendPermission(options) {
|
|
159
219
|
analytics_js_1.Analytics.trackAction({
|
|
@@ -163,7 +223,13 @@ function toEvmServerAccount(apiClient, options) {
|
|
|
163
223
|
network: options.network,
|
|
164
224
|
},
|
|
165
225
|
});
|
|
166
|
-
|
|
226
|
+
try {
|
|
227
|
+
return (0, account_use_js_1.useSpendPermission)(apiClient, this.address, options);
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
analytics_js_1.Analytics.trackError(error, "useSpendPermission");
|
|
231
|
+
throw error;
|
|
232
|
+
}
|
|
167
233
|
},
|
|
168
234
|
name: options.account.name,
|
|
169
235
|
type: "evm-server",
|
|
@@ -176,10 +242,16 @@ function toEvmServerAccount(apiClient, options) {
|
|
|
176
242
|
network: networkOrRpcUrl,
|
|
177
243
|
},
|
|
178
244
|
});
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
245
|
+
try {
|
|
246
|
+
return (0, toNetworkScopedEvmServerAccount_js_1.toNetworkScopedEvmServerAccount)({
|
|
247
|
+
account,
|
|
248
|
+
network: networkOrRpcUrl,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
analytics_js_1.Analytics.trackError(error, "useNetwork");
|
|
253
|
+
throw error;
|
|
254
|
+
}
|
|
183
255
|
},
|
|
184
256
|
};
|
|
185
257
|
return account;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmServerAccount.ts"],"names":[],"mappings":";;AA6DA,gDA+
|
|
1
|
+
{"version":3,"file":"toEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmServerAccount.ts"],"names":[],"mappings":"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"}
|