@coinbase/cdp-sdk 1.26.0 → 1.28.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 +20 -0
- package/README.md +58 -2
- package/_cjs/accounts/evm/resolveViemClients.js +3 -2
- package/_cjs/accounts/evm/resolveViemClients.js.map +1 -1
- package/_cjs/accounts/evm/toEvmServerAccount.js +84 -0
- package/_cjs/accounts/evm/toEvmServerAccount.js.map +1 -1
- package/_cjs/accounts/evm/toEvmSmartAccount.js +83 -0
- package/_cjs/accounts/evm/toEvmSmartAccount.js.map +1 -1
- package/_cjs/accounts/evm/toNetworkScopedEvmServerAccount.js +30 -6
- package/_cjs/accounts/evm/toNetworkScopedEvmServerAccount.js.map +1 -1
- package/_cjs/accounts/evm/toNetworkScopedEvmSmartAccount.js +65 -0
- package/_cjs/accounts/evm/toNetworkScopedEvmSmartAccount.js.map +1 -1
- package/_cjs/accounts/solana/toSolanaAccount.js +20 -0
- package/_cjs/accounts/solana/toSolanaAccount.js.map +1 -1
- package/_cjs/actions/evm/fund/fund.js +3 -2
- package/_cjs/actions/evm/fund/fund.js.map +1 -1
- package/_cjs/actions/evm/fund/quoteFund.js +3 -2
- package/_cjs/actions/evm/fund/quoteFund.js.map +1 -1
- package/_cjs/actions/solana/sendTransaction.js +32 -0
- package/_cjs/actions/solana/sendTransaction.js.map +1 -0
- package/_cjs/actions/solana/transfer.js +25 -38
- package/_cjs/actions/solana/transfer.js.map +1 -1
- package/_cjs/actions/solana/utils.js +4 -14
- package/_cjs/actions/solana/utils.js.map +1 -1
- package/_cjs/analytics.js +39 -3
- package/_cjs/analytics.js.map +1 -1
- package/_cjs/auth/utils/jwt.js +6 -5
- package/_cjs/auth/utils/jwt.js.map +1 -1
- package/_cjs/client/cdp.js +4 -1
- package/_cjs/client/cdp.js.map +1 -1
- package/_cjs/client/evm/evm.js +116 -10
- package/_cjs/client/evm/evm.js.map +1 -1
- package/_cjs/client/policies/policies.js +22 -0
- package/_cjs/client/policies/policies.js.map +1 -1
- package/_cjs/client/solana/solana.js +83 -6
- package/_cjs/client/solana/solana.js.map +1 -1
- package/_cjs/constants.js +1 -1
- package/_cjs/constants.js.map +1 -1
- package/_cjs/errors.js +19 -1
- package/_cjs/errors.js.map +1 -1
- package/_cjs/index.js +3 -1
- package/_cjs/index.js.map +1 -1
- package/_cjs/openapi-client/cdpApiClient.js +46 -6
- package/_cjs/openapi-client/cdpApiClient.js.map +1 -1
- package/_cjs/openapi-client/errors.js +38 -9
- package/_cjs/openapi-client/errors.js.map +1 -1
- package/_cjs/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js +6 -1
- package/_cjs/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js.map +1 -1
- package/_cjs/openapi-client/generated/solana-accounts/solana-accounts.js +34 -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 +18 -1
- package/_cjs/openapi-client/generated/solana-accounts/solana-accounts.msw.js.map +1 -1
- package/_cjs/policies/schema.js +6 -6
- package/_cjs/version.js +1 -1
- package/_esm/accounts/evm/resolveViemClients.js +3 -2
- package/_esm/accounts/evm/resolveViemClients.js.map +1 -1
- package/_esm/accounts/evm/toEvmServerAccount.js +84 -0
- package/_esm/accounts/evm/toEvmServerAccount.js.map +1 -1
- package/_esm/accounts/evm/toEvmSmartAccount.js +83 -0
- package/_esm/accounts/evm/toEvmSmartAccount.js.map +1 -1
- package/_esm/accounts/evm/toNetworkScopedEvmServerAccount.js +30 -6
- package/_esm/accounts/evm/toNetworkScopedEvmServerAccount.js.map +1 -1
- package/_esm/accounts/evm/toNetworkScopedEvmSmartAccount.js +65 -0
- package/_esm/accounts/evm/toNetworkScopedEvmSmartAccount.js.map +1 -1
- package/_esm/accounts/solana/toSolanaAccount.js +20 -0
- package/_esm/accounts/solana/toSolanaAccount.js.map +1 -1
- package/_esm/actions/evm/fund/fund.js +3 -2
- package/_esm/actions/evm/fund/fund.js.map +1 -1
- package/_esm/actions/evm/fund/quoteFund.js +3 -2
- package/_esm/actions/evm/fund/quoteFund.js.map +1 -1
- package/_esm/actions/solana/sendTransaction.js +29 -0
- package/_esm/actions/solana/sendTransaction.js.map +1 -0
- package/_esm/actions/solana/transfer.js +26 -39
- package/_esm/actions/solana/transfer.js.map +1 -1
- package/_esm/actions/solana/utils.js +5 -15
- package/_esm/actions/solana/utils.js.map +1 -1
- package/_esm/analytics.js +39 -3
- package/_esm/analytics.js.map +1 -1
- package/_esm/auth/utils/jwt.js +3 -2
- package/_esm/auth/utils/jwt.js.map +1 -1
- package/_esm/client/cdp.js +4 -1
- package/_esm/client/cdp.js.map +1 -1
- package/_esm/client/evm/evm.js +110 -4
- package/_esm/client/evm/evm.js.map +1 -1
- package/_esm/client/policies/policies.js +22 -0
- package/_esm/client/policies/policies.js.map +1 -1
- package/_esm/client/solana/solana.js +80 -3
- package/_esm/client/solana/solana.js.map +1 -1
- package/_esm/constants.js +1 -1
- package/_esm/constants.js.map +1 -1
- package/_esm/errors.js +17 -0
- package/_esm/errors.js.map +1 -1
- package/_esm/index.js +1 -0
- package/_esm/index.js.map +1 -1
- package/_esm/openapi-client/cdpApiClient.js +47 -7
- package/_esm/openapi-client/cdpApiClient.js.map +1 -1
- package/_esm/openapi-client/errors.js +36 -8
- package/_esm/openapi-client/errors.js.map +1 -1
- package/_esm/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js +5 -0
- package/_esm/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.js.map +1 -1
- package/_esm/openapi-client/generated/solana-accounts/solana-accounts.js +32 -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 +15 -0
- package/_esm/openapi-client/generated/solana-accounts/solana-accounts.msw.js.map +1 -1
- package/_esm/policies/schema.js +6 -6
- package/_esm/version.js +1 -1
- package/_types/accounts/evm/resolveViemClients.d.ts.map +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/toNetworkScopedEvmServerAccount.d.ts.map +1 -1
- package/_types/accounts/evm/toNetworkScopedEvmSmartAccount.d.ts.map +1 -1
- package/_types/accounts/solana/toSolanaAccount.d.ts.map +1 -1
- package/_types/actions/evm/fund/fund.d.ts.map +1 -1
- package/_types/actions/evm/fund/quoteFund.d.ts.map +1 -1
- package/_types/actions/solana/sendTransaction.d.ts +23 -0
- package/_types/actions/solana/sendTransaction.d.ts.map +1 -0
- package/_types/actions/solana/transfer.d.ts.map +1 -1
- package/_types/actions/solana/utils.d.ts +2 -2
- package/_types/actions/solana/utils.d.ts.map +1 -1
- package/_types/analytics.d.ts +36 -1
- package/_types/analytics.d.ts.map +1 -1
- package/_types/auth/utils/jwt.d.ts.map +1 -1
- package/_types/client/cdp.d.ts.map +1 -1
- package/_types/client/evm/evm.d.ts +1 -0
- package/_types/client/evm/evm.d.ts.map +1 -1
- package/_types/client/policies/policies.d.ts.map +1 -1
- package/_types/client/solana/solana.d.ts +20 -1
- package/_types/client/solana/solana.d.ts.map +1 -1
- package/_types/client/solana/solana.types.d.ts +21 -2
- package/_types/client/solana/solana.types.d.ts.map +1 -1
- package/_types/constants.d.ts +1 -1
- package/_types/constants.d.ts.map +1 -1
- package/_types/errors.d.ts +11 -0
- package/_types/errors.d.ts.map +1 -1
- package/_types/index.d.ts +1 -0
- package/_types/index.d.ts.map +1 -1
- package/_types/openapi-client/cdpApiClient.d.ts.map +1 -1
- package/_types/openapi-client/errors.d.ts +46 -9
- package/_types/openapi-client/errors.d.ts.map +1 -1
- package/_types/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.d.ts +18 -0
- package/_types/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.d.ts.map +1 -1
- package/_types/openapi-client/generated/solana-accounts/solana-accounts.d.ts +27 -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 +3 -1
- package/_types/openapi-client/generated/solana-accounts/solana-accounts.msw.d.ts.map +1 -1
- package/_types/openapi-client/index.d.ts +2 -0
- package/_types/openapi-client/index.d.ts.map +1 -1
- package/_types/policies/schema.d.ts +34 -34
- package/_types/version.d.ts +1 -1
- package/accounts/evm/resolveViemClients.ts +5 -2
- package/accounts/evm/toEvmServerAccount.ts +98 -0
- package/accounts/evm/toEvmSmartAccount.ts +96 -0
- package/accounts/evm/toNetworkScopedEvmServerAccount.ts +34 -6
- package/accounts/evm/toNetworkScopedEvmSmartAccount.ts +75 -0
- package/accounts/solana/toSolanaAccount.ts +24 -0
- package/actions/evm/fund/fund.ts +3 -2
- package/actions/evm/fund/quoteFund.ts +3 -2
- package/actions/solana/sendTransaction.ts +38 -0
- package/actions/solana/transfer.ts +33 -52
- package/actions/solana/utils.ts +5 -13
- package/analytics.ts +73 -4
- package/auth/utils/jwt.ts +5 -2
- package/client/cdp.ts +7 -1
- package/client/evm/evm.ts +135 -6
- package/client/policies/policies.ts +28 -0
- package/client/solana/solana.ts +95 -3
- package/client/solana/solana.types.ts +24 -0
- package/constants.ts +1 -1
- package/errors.ts +18 -0
- package/index.ts +1 -0
- package/openapi-client/cdpApiClient.ts +87 -17
- package/openapi-client/errors.ts +65 -10
- package/openapi-client/generated/coinbaseDeveloperPlatformAPIs.schemas.ts +24 -0
- package/openapi-client/generated/solana-accounts/solana-accounts.msw.ts +32 -0
- package/openapi-client/generated/solana-accounts/solana-accounts.ts +43 -0
- package/package.json +1 -1
- package/policies/schema.ts +6 -6
- package/version.ts +1 -1
|
@@ -3,6 +3,7 @@ import { mapChainToNetwork } from "./chainToNetworkMapper.js";
|
|
|
3
3
|
import { isMethodSupportedOnNetwork } from "./networkCapabilities.js";
|
|
4
4
|
import { resolveViemClients } from "./resolveViemClients.js";
|
|
5
5
|
import { transferWithViem } from "../../actions/evm/transfer/transferWithViem.js";
|
|
6
|
+
import { Analytics } from "../../analytics.js";
|
|
6
7
|
/**
|
|
7
8
|
* Creates a Network-scoped Server-managed EvmAccount instance from an existing EvmAccount.
|
|
8
9
|
* Use this to interact with previously deployed EvmAccounts on a specific network.
|
|
@@ -17,6 +18,11 @@ export async function toNetworkScopedEvmServerAccount(options) {
|
|
|
17
18
|
networkOrNodeUrl: options.network,
|
|
18
19
|
account: options.account,
|
|
19
20
|
});
|
|
21
|
+
/*
|
|
22
|
+
* Determine the actual network name from the resolved chain
|
|
23
|
+
* This handles cases where options.network is an RPC URL
|
|
24
|
+
*/
|
|
25
|
+
const resolvedNetworkName = mapChainToNetwork(chain) ?? options.network;
|
|
20
26
|
const shouldUseApiForSends = chain.id === base.id ||
|
|
21
27
|
chain.id === baseSepolia.id ||
|
|
22
28
|
chain.id === mainnet.id ||
|
|
@@ -39,6 +45,13 @@ export async function toNetworkScopedEvmServerAccount(options) {
|
|
|
39
45
|
});
|
|
40
46
|
}
|
|
41
47
|
else {
|
|
48
|
+
Analytics.trackAction({
|
|
49
|
+
action: "send_transaction",
|
|
50
|
+
accountType: "evm_server",
|
|
51
|
+
properties: {
|
|
52
|
+
network: options.network,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
42
55
|
const hash = await walletClient.sendTransaction(txOpts.transaction);
|
|
43
56
|
return { transactionHash: hash };
|
|
44
57
|
}
|
|
@@ -51,10 +64,21 @@ export async function toNetworkScopedEvmServerAccount(options) {
|
|
|
51
64
|
});
|
|
52
65
|
}
|
|
53
66
|
else {
|
|
67
|
+
Analytics.trackAction({
|
|
68
|
+
action: "transfer",
|
|
69
|
+
accountType: "evm_server",
|
|
70
|
+
properties: {
|
|
71
|
+
network: options.network,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
54
74
|
return transferWithViem(walletClient, account, transferArgs);
|
|
55
75
|
}
|
|
56
76
|
},
|
|
57
77
|
waitForTransactionReceipt: async (waitOptions) => {
|
|
78
|
+
Analytics.trackAction({
|
|
79
|
+
action: "wait_for_transaction_receipt",
|
|
80
|
+
accountType: "evm_server",
|
|
81
|
+
});
|
|
58
82
|
if ("transactionHash" in waitOptions) {
|
|
59
83
|
return publicClient.waitForTransactionReceipt({
|
|
60
84
|
hash: waitOptions.transactionHash,
|
|
@@ -63,7 +87,7 @@ export async function toNetworkScopedEvmServerAccount(options) {
|
|
|
63
87
|
return publicClient.waitForTransactionReceipt(waitOptions);
|
|
64
88
|
},
|
|
65
89
|
};
|
|
66
|
-
if (isMethodSupportedOnNetwork("listTokenBalances",
|
|
90
|
+
if (isMethodSupportedOnNetwork("listTokenBalances", resolvedNetworkName)) {
|
|
67
91
|
Object.assign(account, {
|
|
68
92
|
listTokenBalances: async (listTokenBalancesOptions) => {
|
|
69
93
|
return options.account.listTokenBalances({
|
|
@@ -73,7 +97,7 @@ export async function toNetworkScopedEvmServerAccount(options) {
|
|
|
73
97
|
},
|
|
74
98
|
});
|
|
75
99
|
}
|
|
76
|
-
if (isMethodSupportedOnNetwork("requestFaucet",
|
|
100
|
+
if (isMethodSupportedOnNetwork("requestFaucet", resolvedNetworkName)) {
|
|
77
101
|
Object.assign(account, {
|
|
78
102
|
requestFaucet: async (faucetOptions) => {
|
|
79
103
|
return options.account.requestFaucet({
|
|
@@ -83,7 +107,7 @@ export async function toNetworkScopedEvmServerAccount(options) {
|
|
|
83
107
|
},
|
|
84
108
|
});
|
|
85
109
|
}
|
|
86
|
-
if (isMethodSupportedOnNetwork("quoteFund",
|
|
110
|
+
if (isMethodSupportedOnNetwork("quoteFund", resolvedNetworkName)) {
|
|
87
111
|
Object.assign(account, {
|
|
88
112
|
quoteFund: async (quoteFundOptions) => {
|
|
89
113
|
return options.account.quoteFund({
|
|
@@ -92,7 +116,7 @@ export async function toNetworkScopedEvmServerAccount(options) {
|
|
|
92
116
|
},
|
|
93
117
|
});
|
|
94
118
|
}
|
|
95
|
-
if (isMethodSupportedOnNetwork("fund",
|
|
119
|
+
if (isMethodSupportedOnNetwork("fund", resolvedNetworkName)) {
|
|
96
120
|
Object.assign(account, {
|
|
97
121
|
fund: async (fundOptions) => {
|
|
98
122
|
return options.account.fund({
|
|
@@ -104,14 +128,14 @@ export async function toNetworkScopedEvmServerAccount(options) {
|
|
|
104
128
|
},
|
|
105
129
|
});
|
|
106
130
|
}
|
|
107
|
-
if (isMethodSupportedOnNetwork("quoteSwap",
|
|
131
|
+
if (isMethodSupportedOnNetwork("quoteSwap", resolvedNetworkName)) {
|
|
108
132
|
Object.assign(account, {
|
|
109
133
|
quoteSwap: async (quoteSwapOptions) => {
|
|
110
134
|
return options.account.quoteSwap(quoteSwapOptions);
|
|
111
135
|
},
|
|
112
136
|
});
|
|
113
137
|
}
|
|
114
|
-
if (isMethodSupportedOnNetwork("swap",
|
|
138
|
+
if (isMethodSupportedOnNetwork("swap", resolvedNetworkName)) {
|
|
115
139
|
Object.assign(account, {
|
|
116
140
|
swap: async (swapOptions) => {
|
|
117
141
|
return options.account.swap(swapOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toNetworkScopedEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toNetworkScopedEvmServerAccount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"toNetworkScopedEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toNetworkScopedEvmServerAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import { sendSwapOperation } from "../../actions/evm/swap/sendSwapOperation.js";
|
|
|
12
12
|
import { smartAccountTransferStrategy } from "../../actions/evm/transfer/smartAccountTransferStrategy.js";
|
|
13
13
|
import { transfer } from "../../actions/evm/transfer/transfer.js";
|
|
14
14
|
import { waitForUserOperation } from "../../actions/evm/waitForUserOperation.js";
|
|
15
|
+
import { Analytics } from "../../analytics.js";
|
|
15
16
|
/**
|
|
16
17
|
* Creates a NetworkScopedEvmSmartAccount instance from an existing EvmSmartAccount and owner.
|
|
17
18
|
* Use this to interact with previously deployed EvmSmartAccounts, rather than creating new ones.
|
|
@@ -39,6 +40,13 @@ export async function toNetworkScopedEvmSmartAccount(apiClient, options) {
|
|
|
39
40
|
name: options.smartAccount.name,
|
|
40
41
|
type: "evm-smart",
|
|
41
42
|
sendUserOperation: async (userOpOptions) => {
|
|
43
|
+
Analytics.trackAction({
|
|
44
|
+
action: "send_user_operation",
|
|
45
|
+
accountType: "evm_smart",
|
|
46
|
+
properties: {
|
|
47
|
+
network: options.network,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
42
50
|
return sendUserOperation(apiClient, {
|
|
43
51
|
...userOpOptions,
|
|
44
52
|
smartAccount: options.smartAccount,
|
|
@@ -47,12 +55,20 @@ export async function toNetworkScopedEvmSmartAccount(apiClient, options) {
|
|
|
47
55
|
});
|
|
48
56
|
},
|
|
49
57
|
waitForUserOperation: async (waitOptions) => {
|
|
58
|
+
Analytics.trackAction({
|
|
59
|
+
action: "wait_for_user_operation",
|
|
60
|
+
accountType: "evm_smart",
|
|
61
|
+
});
|
|
50
62
|
return waitForUserOperation(apiClient, {
|
|
51
63
|
...waitOptions,
|
|
52
64
|
smartAccountAddress: options.smartAccount.address,
|
|
53
65
|
});
|
|
54
66
|
},
|
|
55
67
|
getUserOperation: async (getOptions) => {
|
|
68
|
+
Analytics.trackAction({
|
|
69
|
+
action: "get_user_operation",
|
|
70
|
+
accountType: "evm_smart",
|
|
71
|
+
});
|
|
56
72
|
return getUserOperation(apiClient, {
|
|
57
73
|
...getOptions,
|
|
58
74
|
smartAccount: options.smartAccount,
|
|
@@ -62,6 +78,13 @@ export async function toNetworkScopedEvmSmartAccount(apiClient, options) {
|
|
|
62
78
|
if (isMethodSupportedOnNetwork("transfer", options.network)) {
|
|
63
79
|
Object.assign(account, {
|
|
64
80
|
transfer: async (transferOptions) => {
|
|
81
|
+
Analytics.trackAction({
|
|
82
|
+
action: "transfer",
|
|
83
|
+
accountType: "evm_smart",
|
|
84
|
+
properties: {
|
|
85
|
+
network: options.network,
|
|
86
|
+
},
|
|
87
|
+
});
|
|
65
88
|
return transfer(apiClient, options.smartAccount, {
|
|
66
89
|
...transferOptions,
|
|
67
90
|
network: options.network,
|
|
@@ -73,6 +96,13 @@ export async function toNetworkScopedEvmSmartAccount(apiClient, options) {
|
|
|
73
96
|
if (isMethodSupportedOnNetwork("listTokenBalances", options.network)) {
|
|
74
97
|
Object.assign(account, {
|
|
75
98
|
listTokenBalances: async (listOptions) => {
|
|
99
|
+
Analytics.trackAction({
|
|
100
|
+
action: "list_token_balances",
|
|
101
|
+
accountType: "evm_smart",
|
|
102
|
+
properties: {
|
|
103
|
+
network: options.network,
|
|
104
|
+
},
|
|
105
|
+
});
|
|
76
106
|
return listTokenBalances(apiClient, {
|
|
77
107
|
...listOptions,
|
|
78
108
|
address: options.smartAccount.address,
|
|
@@ -84,6 +114,13 @@ export async function toNetworkScopedEvmSmartAccount(apiClient, options) {
|
|
|
84
114
|
if (isMethodSupportedOnNetwork("requestFaucet", options.network)) {
|
|
85
115
|
Object.assign(account, {
|
|
86
116
|
requestFaucet: async (faucetOptions) => {
|
|
117
|
+
Analytics.trackAction({
|
|
118
|
+
action: "request_faucet",
|
|
119
|
+
accountType: "evm_smart",
|
|
120
|
+
properties: {
|
|
121
|
+
network: options.network,
|
|
122
|
+
},
|
|
123
|
+
});
|
|
87
124
|
return requestFaucet(apiClient, {
|
|
88
125
|
...faucetOptions,
|
|
89
126
|
address: options.smartAccount.address,
|
|
@@ -95,6 +132,13 @@ export async function toNetworkScopedEvmSmartAccount(apiClient, options) {
|
|
|
95
132
|
if (isMethodSupportedOnNetwork("quoteFund", options.network)) {
|
|
96
133
|
Object.assign(account, {
|
|
97
134
|
quoteFund: async (quoteOptions) => {
|
|
135
|
+
Analytics.trackAction({
|
|
136
|
+
action: "quote_fund",
|
|
137
|
+
accountType: "evm_smart",
|
|
138
|
+
properties: {
|
|
139
|
+
network: options.network,
|
|
140
|
+
},
|
|
141
|
+
});
|
|
98
142
|
return quoteFund(apiClient, {
|
|
99
143
|
...quoteOptions,
|
|
100
144
|
address: options.smartAccount.address,
|
|
@@ -105,6 +149,13 @@ export async function toNetworkScopedEvmSmartAccount(apiClient, options) {
|
|
|
105
149
|
if (isMethodSupportedOnNetwork("fund", options.network)) {
|
|
106
150
|
Object.assign(account, {
|
|
107
151
|
fund: async (fundOptions) => {
|
|
152
|
+
Analytics.trackAction({
|
|
153
|
+
action: "fund",
|
|
154
|
+
accountType: "evm_smart",
|
|
155
|
+
properties: {
|
|
156
|
+
network: options.network,
|
|
157
|
+
},
|
|
158
|
+
});
|
|
108
159
|
return fund(apiClient, {
|
|
109
160
|
...fundOptions,
|
|
110
161
|
address: options.smartAccount.address,
|
|
@@ -118,6 +169,13 @@ export async function toNetworkScopedEvmSmartAccount(apiClient, options) {
|
|
|
118
169
|
if (isMethodSupportedOnNetwork("quoteSwap", options.network)) {
|
|
119
170
|
Object.assign(account, {
|
|
120
171
|
quoteSwap: async (quoteSwapOptions) => {
|
|
172
|
+
Analytics.trackAction({
|
|
173
|
+
action: "quote_swap",
|
|
174
|
+
accountType: "evm_smart",
|
|
175
|
+
properties: {
|
|
176
|
+
network: options.network,
|
|
177
|
+
},
|
|
178
|
+
});
|
|
121
179
|
return createSwapQuote(apiClient, {
|
|
122
180
|
...quoteSwapOptions,
|
|
123
181
|
taker: options.smartAccount.address,
|
|
@@ -131,6 +189,13 @@ export async function toNetworkScopedEvmSmartAccount(apiClient, options) {
|
|
|
131
189
|
if (isMethodSupportedOnNetwork("swap", options.network)) {
|
|
132
190
|
Object.assign(account, {
|
|
133
191
|
swap: async (swapOptions) => {
|
|
192
|
+
Analytics.trackAction({
|
|
193
|
+
action: "swap",
|
|
194
|
+
accountType: "evm_smart",
|
|
195
|
+
properties: {
|
|
196
|
+
network: options.network,
|
|
197
|
+
},
|
|
198
|
+
});
|
|
134
199
|
return sendSwapOperation(apiClient, {
|
|
135
200
|
...swapOptions,
|
|
136
201
|
smartAccount: options.smartAccount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toNetworkScopedEvmSmartAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toNetworkScopedEvmSmartAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,uDAAuD,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,4DAA4D,CAAC;AAC1G,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"toNetworkScopedEvmSmartAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toNetworkScopedEvmSmartAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { requestFaucet } from "../../actions/solana/requestFaucet.js";
|
|
|
2
2
|
import { signMessage } from "../../actions/solana/signMessage.js";
|
|
3
3
|
import { signTransaction } from "../../actions/solana/signTransaction.js";
|
|
4
4
|
import { transfer } from "../../actions/solana/transfer.js";
|
|
5
|
+
import { Analytics } from "../../analytics.js";
|
|
5
6
|
/**
|
|
6
7
|
* Creates a Solana account instance with actions from an existing Solana account.
|
|
7
8
|
* Use this to interact with previously deployed Solana accounts, rather than creating new ones.
|
|
@@ -16,18 +17,30 @@ export function toSolanaAccount(apiClient, options) {
|
|
|
16
17
|
address: options.account.address,
|
|
17
18
|
name: options.account.name,
|
|
18
19
|
async requestFaucet(options) {
|
|
20
|
+
Analytics.trackAction({
|
|
21
|
+
action: "request_faucet",
|
|
22
|
+
accountType: "solana",
|
|
23
|
+
});
|
|
19
24
|
return requestFaucet(apiClient, {
|
|
20
25
|
...options,
|
|
21
26
|
address: account.address,
|
|
22
27
|
});
|
|
23
28
|
},
|
|
24
29
|
async signMessage(options) {
|
|
30
|
+
Analytics.trackAction({
|
|
31
|
+
action: "sign_message",
|
|
32
|
+
accountType: "solana",
|
|
33
|
+
});
|
|
25
34
|
return signMessage(apiClient, {
|
|
26
35
|
...options,
|
|
27
36
|
address: account.address,
|
|
28
37
|
});
|
|
29
38
|
},
|
|
30
39
|
async signTransaction(options) {
|
|
40
|
+
Analytics.trackAction({
|
|
41
|
+
action: "sign_transaction",
|
|
42
|
+
accountType: "solana",
|
|
43
|
+
});
|
|
31
44
|
return signTransaction(apiClient, {
|
|
32
45
|
...options,
|
|
33
46
|
address: account.address,
|
|
@@ -35,6 +48,13 @@ export function toSolanaAccount(apiClient, options) {
|
|
|
35
48
|
},
|
|
36
49
|
policies: options.account.policies,
|
|
37
50
|
async transfer(options) {
|
|
51
|
+
Analytics.trackAction({
|
|
52
|
+
action: "transfer",
|
|
53
|
+
accountType: "solana",
|
|
54
|
+
properties: {
|
|
55
|
+
network: options.network,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
38
58
|
return transfer(apiClient, {
|
|
39
59
|
...options,
|
|
40
60
|
from: account.address,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toSolanaAccount.js","sourceRoot":"","sources":["../../../accounts/solana/toSolanaAccount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAwB,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"toSolanaAccount.js","sourceRoot":"","sources":["../../../accounts/solana/toSolanaAccount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAwB,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAgB/C;;;;;;;;GAQG;AACH,MAAM,UAAU,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,SAAS,CAAC,WAAW,CAAC;gBACpB,MAAM,EAAE,gBAAgB;gBACxB,WAAW,EAAE,QAAQ;aACtB,CAAC,CAAC;YAEH,OAAO,aAAa,CAAC,SAAS,EAAE;gBAC9B,GAAG,OAAO;gBACV,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,OAA4C;YAC5D,SAAS,CAAC,WAAW,CAAC;gBACpB,MAAM,EAAE,cAAc;gBACtB,WAAW,EAAE,QAAQ;aACtB,CAAC,CAAC;YAEH,OAAO,WAAW,CAAC,SAAS,EAAE;gBAC5B,GAAG,OAAO;gBACV,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,eAAe,CACnB,OAAgD;YAEhD,SAAS,CAAC,WAAW,CAAC;gBACpB,MAAM,EAAE,kBAAkB;gBAC1B,WAAW,EAAE,QAAQ;aACtB,CAAC,CAAC;YAEH,OAAO,eAAe,CAAC,SAAS,EAAE;gBAChC,GAAG,OAAO;gBACV,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QACL,CAAC;QACD,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;QAClC,KAAK,CAAC,QAAQ,CAAC,OAAsC;YACnD,SAAS,CAAC,WAAW,CAAC;gBACpB,MAAM,EAAE,UAAU;gBAClB,WAAW,EAAE,QAAQ;gBACrB,UAAU,EAAE;oBACV,OAAO,EAAE,OAAO,CAAC,OAAO;iBACzB;aACF,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,SAAS,EAAE;gBACzB,GAAG,OAAO;gBACV,IAAI,EAAE,OAAO,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { formatUnits } from "viem";
|
|
2
|
+
import { UserInputValidationError } from "../../../errors.js";
|
|
2
3
|
import { CreatePaymentTransferQuoteBodySourceType, CreatePaymentTransferQuoteBodyTargetType, } from "../../../openapi-client/index.js";
|
|
3
4
|
/**
|
|
4
5
|
* Funds an EVM account.
|
|
@@ -14,8 +15,8 @@ export async function fund(apiClient, options) {
|
|
|
14
15
|
if (!cardPaymentMethod) {
|
|
15
16
|
throw new Error("No card found to fund account");
|
|
16
17
|
}
|
|
17
|
-
if (options.token
|
|
18
|
-
throw new
|
|
18
|
+
if (options.token !== "eth" && options.token !== "usdc") {
|
|
19
|
+
throw new UserInputValidationError("Invalid token, must be eth or usdc");
|
|
19
20
|
}
|
|
20
21
|
const decimals = options.token === "eth" ? 18 : 6;
|
|
21
22
|
const amount = formatUnits(options.amount, decimals);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fund.js","sourceRoot":"","sources":["../../../../actions/evm/fund/fund.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,EACL,wCAAwC,EACxC,wCAAwC,GAEzC,MAAM,kCAAkC,CAAC;AAgB1C;;;;;;;GAOG;AACH,MAAM,CAAC,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,
|
|
1
|
+
{"version":3,"file":"fund.js","sourceRoot":"","sources":["../../../../actions/evm/fund/fund.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,wCAAwC,EACxC,wCAAwC,GAEzC,MAAM,kCAAkC,CAAC;AAgB1C;;;;;;;GAOG;AACH,MAAM,CAAC,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,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QACxD,MAAM,IAAI,wBAAwB,CAAC,oCAAoC,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAErD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,0BAA0B,CAAC;QAC1D,UAAU,EAAE,wCAAwC,CAAC,cAAc;QACnE,MAAM,EAAE;YACN,EAAE,EAAE,iBAAiB,CAAC,EAAE;SACzB;QACD,UAAU,EAAE,wCAAwC,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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { formatUnits } from "viem";
|
|
2
2
|
import { Quote } from "./Quote.js";
|
|
3
|
+
import { UserInputValidationError } from "../../../errors.js";
|
|
3
4
|
import { CreatePaymentTransferQuoteBodySourceType, CreatePaymentTransferQuoteBodyTargetType, } from "../../../openapi-client/index.js";
|
|
4
5
|
/**
|
|
5
6
|
* Gets a quote to fund an EVM account.
|
|
@@ -15,8 +16,8 @@ export async function quoteFund(apiClient, options) {
|
|
|
15
16
|
if (!cardPaymentMethod) {
|
|
16
17
|
throw new Error("No card found to fund account");
|
|
17
18
|
}
|
|
18
|
-
if (options.token
|
|
19
|
-
throw new
|
|
19
|
+
if (options.token !== "eth" && options.token !== "usdc") {
|
|
20
|
+
throw new UserInputValidationError("Invalid token, must be eth or usdc");
|
|
20
21
|
}
|
|
21
22
|
const decimals = options.token === "eth" ? 18 : 6;
|
|
22
23
|
const amount = formatUnits(options.amount, decimals);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quoteFund.js","sourceRoot":"","sources":["../../../../actions/evm/fund/quoteFund.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EACL,wCAAwC,EACxC,wCAAwC,GAEzC,MAAM,kCAAkC,CAAC;AAgB1C;;;;;;;GAOG;AACH,MAAM,CAAC,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,
|
|
1
|
+
{"version":3,"file":"quoteFund.js","sourceRoot":"","sources":["../../../../actions/evm/fund/quoteFund.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,wCAAwC,EACxC,wCAAwC,GAEzC,MAAM,kCAAkC,CAAC;AAgB1C;;;;;;;GAOG;AACH,MAAM,CAAC,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,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QACxD,MAAM,IAAI,wBAAwB,CAAC,oCAAoC,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAErD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,0BAA0B,CAAC;QAC1D,UAAU,EAAE,wCAAwC,CAAC,cAAc;QACnE,MAAM,EAAE;YACN,EAAE,EAAE,iBAAiB,CAAC,EAAE;SACzB;QACD,UAAU,EAAE,wCAAwC,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,KAAK,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,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sends a Solana transaction using the Coinbase API.
|
|
3
|
+
*
|
|
4
|
+
* @param {CdpOpenApiClientType} apiClient - The API client to use.
|
|
5
|
+
* @param {SendTransactionOptions} options - Parameters for sending the Solana transaction.
|
|
6
|
+
* @param {string} options.network - The network to send the transaction to.
|
|
7
|
+
* @param {string} options.transaction - The base64 encoded transaction to send.
|
|
8
|
+
* @param {string} [options.idempotencyKey] - An idempotency key.
|
|
9
|
+
*
|
|
10
|
+
* @returns A promise that resolves to the transaction result.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const signature = await sendTransaction({
|
|
15
|
+
* network: "solana-devnet",
|
|
16
|
+
* transaction: "...",
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export async function sendTransaction(apiClient, options) {
|
|
21
|
+
const signature = await apiClient.sendSolanaTransaction({
|
|
22
|
+
network: options.network,
|
|
23
|
+
transaction: options.transaction,
|
|
24
|
+
}, options.idempotencyKey);
|
|
25
|
+
return {
|
|
26
|
+
signature: signature.transactionSignature,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=sendTransaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendTransaction.js","sourceRoot":"","sources":["../../../actions/solana/sendTransaction.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAA+B,EAC/B,OAA+B;IAE/B,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,qBAAqB,CACrD;QACE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,EACD,OAAO,CAAC,cAAc,CACvB,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,oBAAoB;KAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getMint, getAssociatedTokenAddress, getAccount, createAssociatedTokenAccountInstruction, createTransferCheckedInstruction, } from "@solana/spl-token";
|
|
2
|
-
import {
|
|
2
|
+
import { PublicKey, SystemProgram, SYSVAR_RECENT_BLOCKHASHES_PUBKEY, Transaction, } from "@solana/web3.js";
|
|
3
|
+
import { sendTransaction } from "./sendTransaction.js";
|
|
3
4
|
import { getConnectedNetwork, getOrCreateConnection, getUsdcMintAddress, } from "./utils.js";
|
|
4
5
|
/**
|
|
5
6
|
* Transfers SOL or SPL tokens between accounts
|
|
@@ -11,9 +12,9 @@ import { getConnectedNetwork, getOrCreateConnection, getUsdcMintAddress, } from
|
|
|
11
12
|
*/
|
|
12
13
|
export async function transfer(apiClient, options) {
|
|
13
14
|
const connection = getOrCreateConnection({ networkOrConnection: options.network });
|
|
15
|
+
const connectedNetwork = await getConnectedNetwork(connection);
|
|
14
16
|
const tx = options.token === "sol"
|
|
15
17
|
? await getNativeTransfer({
|
|
16
|
-
connection,
|
|
17
18
|
from: options.from,
|
|
18
19
|
to: options.to,
|
|
19
20
|
amount: options.amount,
|
|
@@ -22,52 +23,40 @@ export async function transfer(apiClient, options) {
|
|
|
22
23
|
connection,
|
|
23
24
|
from: options.from,
|
|
24
25
|
to: options.to,
|
|
25
|
-
mintAddress: options.token === "usdc"
|
|
26
|
-
? getUsdcMintAddress(await getConnectedNetwork(connection))
|
|
27
|
-
: options.token,
|
|
26
|
+
mintAddress: options.token === "usdc" ? getUsdcMintAddress(connectedNetwork) : options.token,
|
|
28
27
|
amount: options.amount,
|
|
29
28
|
});
|
|
30
|
-
const serializedTx = Buffer.from(tx.serialize()).toString("base64");
|
|
31
|
-
const
|
|
29
|
+
const serializedTx = Buffer.from(tx.serialize({ requireAllSignatures: false })).toString("base64");
|
|
30
|
+
const signature = await sendTransaction(apiClient, {
|
|
31
|
+
network: connectedNetwork === "mainnet" ? "solana" : "solana-devnet",
|
|
32
32
|
transaction: serializedTx,
|
|
33
33
|
});
|
|
34
|
-
|
|
35
|
-
const signature = await connection.sendRawTransaction(decodedSignedTx, {
|
|
36
|
-
skipPreflight: false,
|
|
37
|
-
maxRetries: 3,
|
|
38
|
-
});
|
|
39
|
-
return { signature };
|
|
34
|
+
return signature;
|
|
40
35
|
}
|
|
41
36
|
/**
|
|
42
|
-
* Gets the
|
|
37
|
+
* Gets the transaction for a native SOL transfer
|
|
43
38
|
*
|
|
44
39
|
* @param options - The options for the native SOL transfer
|
|
45
40
|
*
|
|
46
|
-
* @param options.connection - The Solana connection
|
|
47
41
|
* @param options.from - The source address
|
|
48
42
|
* @param options.to - The destination address
|
|
49
43
|
* @param options.amount - The amount to transfer
|
|
50
44
|
*
|
|
51
45
|
* @returns The native SOL transfer transaction
|
|
52
46
|
*/
|
|
53
|
-
async function getNativeTransfer({
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
payerKey: new PublicKey(from),
|
|
64
|
-
recentBlockhash: blockhash,
|
|
65
|
-
instructions,
|
|
66
|
-
}).compileToV0Message();
|
|
67
|
-
return new VersionedTransaction(messageV0);
|
|
47
|
+
async function getNativeTransfer({ from, to, amount, }) {
|
|
48
|
+
const transaction = new Transaction();
|
|
49
|
+
transaction.add(SystemProgram.transfer({
|
|
50
|
+
fromPubkey: new PublicKey(from),
|
|
51
|
+
toPubkey: new PublicKey(to),
|
|
52
|
+
lamports: amount,
|
|
53
|
+
}));
|
|
54
|
+
transaction.recentBlockhash = SYSVAR_RECENT_BLOCKHASHES_PUBKEY.toBase58();
|
|
55
|
+
transaction.feePayer = new PublicKey(from);
|
|
56
|
+
return transaction;
|
|
68
57
|
}
|
|
69
58
|
/**
|
|
70
|
-
* Gets the
|
|
59
|
+
* Gets the transaction for a SPL token transfer
|
|
71
60
|
*
|
|
72
61
|
* @param options - The options for the SPL token transfer
|
|
73
62
|
*
|
|
@@ -92,7 +81,7 @@ async function getSplTransfer({ connection, from, to, mintAddress, amount, }) {
|
|
|
92
81
|
}
|
|
93
82
|
const sourceAta = await getAssociatedTokenAddress(mintPubkey, fromPubkey);
|
|
94
83
|
const destinationAta = await getAssociatedTokenAddress(mintPubkey, toPubkey);
|
|
95
|
-
const
|
|
84
|
+
const transaction = new Transaction();
|
|
96
85
|
const sourceAccount = await getAccount(connection, sourceAta);
|
|
97
86
|
if (sourceAccount.amount < amount) {
|
|
98
87
|
throw new Error(`Insufficient token balance. Have ${sourceAccount.amount}, need ${amount}`);
|
|
@@ -102,13 +91,11 @@ async function getSplTransfer({ connection, from, to, mintAddress, amount, }) {
|
|
|
102
91
|
await getAccount(connection, destinationAta);
|
|
103
92
|
}
|
|
104
93
|
catch {
|
|
105
|
-
|
|
94
|
+
transaction.add(createAssociatedTokenAccountInstruction(fromPubkey, destinationAta, toPubkey, mintPubkey));
|
|
106
95
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
recentBlockhash: (await connection.getLatestBlockhash()).blockhash,
|
|
112
|
-
}));
|
|
96
|
+
transaction.add(createTransferCheckedInstruction(sourceAta, mintPubkey, destinationAta, fromPubkey, amount, mintInfo.decimals));
|
|
97
|
+
transaction.recentBlockhash = SYSVAR_RECENT_BLOCKHASHES_PUBKEY.toBase58();
|
|
98
|
+
transaction.feePayer = new PublicKey(from);
|
|
99
|
+
return transaction;
|
|
113
100
|
}
|
|
114
101
|
//# sourceMappingURL=transfer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../actions/solana/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,yBAAyB,EACzB,UAAU,EACV,uCAAuC,EACvC,gCAAgC,GACjC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../actions/solana/transfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Connection } from "@solana/web3.js";
|
|
2
|
-
import { GENESIS_HASH_MAINNET,
|
|
2
|
+
import { GENESIS_HASH_MAINNET, GENESIS_HASH_DEVNET, USDC_MAINNET_MINT_ADDRESS, USDC_DEVNET_MINT_ADDRESS, } from "./constants.js";
|
|
3
3
|
/**
|
|
4
4
|
* Get a connection to the Solana network
|
|
5
5
|
*
|
|
@@ -15,15 +15,13 @@ export function getOrCreateConnection({ networkOrConnection, }) {
|
|
|
15
15
|
}
|
|
16
16
|
return new Connection(networkOrConnection === "mainnet"
|
|
17
17
|
? "https://api.mainnet-beta.solana.com"
|
|
18
|
-
:
|
|
19
|
-
? "https://api.devnet.solana.com"
|
|
20
|
-
: "https://api.testnet.solana.com");
|
|
18
|
+
: "https://api.devnet.solana.com");
|
|
21
19
|
}
|
|
22
20
|
/**
|
|
23
21
|
* Get the network of the connected Solana node
|
|
24
22
|
*
|
|
25
23
|
* @param connection - The connection to the Solana network
|
|
26
|
-
* @throws {Error} If the network is not mainnet
|
|
24
|
+
* @throws {Error} If the network is not mainnet or devnet
|
|
27
25
|
*
|
|
28
26
|
* @returns The network of the connected Solana node
|
|
29
27
|
*/
|
|
@@ -35,10 +33,7 @@ export async function getConnectedNetwork(connection) {
|
|
|
35
33
|
else if (genesisHash === GENESIS_HASH_DEVNET) {
|
|
36
34
|
return "devnet";
|
|
37
35
|
}
|
|
38
|
-
|
|
39
|
-
return "testnet";
|
|
40
|
-
}
|
|
41
|
-
throw new Error("Unknown network");
|
|
36
|
+
throw new Error("Unknown or unsupported network");
|
|
42
37
|
}
|
|
43
38
|
/**
|
|
44
39
|
* Get the USDC mint address for the given connection
|
|
@@ -51,11 +46,6 @@ export function getUsdcMintAddress(network) {
|
|
|
51
46
|
if (network === "mainnet") {
|
|
52
47
|
return USDC_MAINNET_MINT_ADDRESS;
|
|
53
48
|
}
|
|
54
|
-
|
|
55
|
-
return USDC_DEVNET_MINT_ADDRESS;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
throw new Error("Testnet is not supported for USDC");
|
|
59
|
-
}
|
|
49
|
+
return USDC_DEVNET_MINT_ADDRESS;
|
|
60
50
|
}
|
|
61
51
|
//# sourceMappingURL=utils.js.map
|