@coinbase/cdp-sdk 1.17.0 → 1.18.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 +6 -0
- package/_cjs/accounts/evm/resolveViemClients.js +204 -0
- package/_cjs/accounts/evm/resolveViemClients.js.map +1 -0
- package/_cjs/accounts/evm/toEvmServerAccount.js +1 -1
- package/_cjs/accounts/evm/toEvmServerAccount.js.map +1 -1
- package/_cjs/accounts/evm/toNetworkScopedEvmServerAccount.js +32 -1
- package/_cjs/accounts/evm/toNetworkScopedEvmServerAccount.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/accounts/evm/resolveViemClients.js +168 -0
- package/_esm/accounts/evm/resolveViemClients.js.map +1 -0
- package/_esm/accounts/evm/toEvmServerAccount.js +1 -1
- package/_esm/accounts/evm/toEvmServerAccount.js.map +1 -1
- package/_esm/accounts/evm/toNetworkScopedEvmServerAccount.js +32 -1
- package/_esm/accounts/evm/toNetworkScopedEvmServerAccount.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/accounts/evm/resolveViemClients.d.ts +47 -0
- package/_types/accounts/evm/resolveViemClients.d.ts.map +1 -0
- package/_types/accounts/evm/toNetworkScopedEvmServerAccount.d.ts +1 -1
- package/_types/accounts/evm/toNetworkScopedEvmServerAccount.d.ts.map +1 -1
- package/_types/accounts/evm/types.d.ts +11 -4
- package/_types/accounts/evm/types.d.ts.map +1 -1
- package/_types/policies/schema.d.ts +96 -96
- package/_types/version.d.ts +1 -1
- package/accounts/evm/resolveViemClients.ts +215 -0
- package/accounts/evm/toEvmServerAccount.ts +1 -1
- package/accounts/evm/toNetworkScopedEvmServerAccount.ts +43 -3
- package/accounts/evm/types.ts +24 -6
- package/package.json +1 -1
- package/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# CDP SDK Changelog
|
|
2
2
|
|
|
3
|
+
## 1.18.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#224](https://github.com/coinbase/cdp-sdk/pull/224) [`5d6e5a1`](https://github.com/coinbase/cdp-sdk/commit/5d6e5a164a23424444998cf51970836ee57ca659) Thanks [@0xRAG](https://github.com/0xRAG)! - Added useNetwork function on EvmServerAccount to enable node management and network hoisting
|
|
8
|
+
|
|
3
9
|
## 1.17.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.resolveViemClients = resolveViemClients;
|
|
37
|
+
const viem_1 = require("viem");
|
|
38
|
+
const accounts_1 = require("viem/accounts");
|
|
39
|
+
const chains = __importStar(require("viem/chains"));
|
|
40
|
+
/**
|
|
41
|
+
* Network identifier to viem chain mapping
|
|
42
|
+
*/
|
|
43
|
+
const NETWORK_TO_CHAIN_MAP = {
|
|
44
|
+
base: chains.base,
|
|
45
|
+
"base-sepolia": chains.baseSepolia,
|
|
46
|
+
ethereum: chains.mainnet,
|
|
47
|
+
"ethereum-sepolia": chains.sepolia,
|
|
48
|
+
polygon: chains.polygon,
|
|
49
|
+
"polygon-mumbai": chains.polygonMumbai,
|
|
50
|
+
arbitrum: chains.arbitrum,
|
|
51
|
+
"arbitrum-sepolia": chains.arbitrumSepolia,
|
|
52
|
+
optimism: chains.optimism,
|
|
53
|
+
"optimism-sepolia": chains.optimismSepolia,
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Get a chain from the viem chains object
|
|
57
|
+
*
|
|
58
|
+
* @param id - The chain ID
|
|
59
|
+
* @returns The chain
|
|
60
|
+
*/
|
|
61
|
+
function getChain(id) {
|
|
62
|
+
const chainList = Object.values(chains);
|
|
63
|
+
const found = chainList.find(chain => chain.id === id);
|
|
64
|
+
if (!found)
|
|
65
|
+
throw new Error(`Unsupported chain ID: ${id}`);
|
|
66
|
+
return found;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Determines if the input string is a network identifier or a Node URL
|
|
70
|
+
*
|
|
71
|
+
* @param input - The string to check
|
|
72
|
+
* @returns True if the input is a network identifier, false otherwise
|
|
73
|
+
*/
|
|
74
|
+
function isNetworkIdentifier(input) {
|
|
75
|
+
const normalizedInput = input.toLowerCase();
|
|
76
|
+
return NETWORK_TO_CHAIN_MAP[normalizedInput] !== undefined;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Resolves a network identifier to a viem chain
|
|
80
|
+
*
|
|
81
|
+
* @param network - The network identifier to resolve
|
|
82
|
+
* @returns The resolved viem chain
|
|
83
|
+
*/
|
|
84
|
+
function resolveNetworkToChain(network) {
|
|
85
|
+
const chain = NETWORK_TO_CHAIN_MAP[network.toLowerCase()];
|
|
86
|
+
if (!chain) {
|
|
87
|
+
throw new Error(`Unsupported network identifier: ${network}`);
|
|
88
|
+
}
|
|
89
|
+
return chain;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Resolves a Node URL to a viem chain by making a getChainId call
|
|
93
|
+
*
|
|
94
|
+
* @param nodeUrl - The Node URL to resolve
|
|
95
|
+
* @returns Promise resolving to the viem chain
|
|
96
|
+
*/
|
|
97
|
+
async function resolveNodeUrlToChain(nodeUrl) {
|
|
98
|
+
// First validate that it's a proper URL
|
|
99
|
+
if (!isValidUrl(nodeUrl)) {
|
|
100
|
+
throw new Error(`Invalid URL format: ${nodeUrl}`);
|
|
101
|
+
}
|
|
102
|
+
// Create a temporary public client to get the chain ID
|
|
103
|
+
const tempPublicClient = (0, viem_1.createPublicClient)({
|
|
104
|
+
transport: (0, viem_1.http)(nodeUrl),
|
|
105
|
+
});
|
|
106
|
+
try {
|
|
107
|
+
const chainId = await tempPublicClient.getChainId();
|
|
108
|
+
const chain = getChain(Number(chainId));
|
|
109
|
+
return chain;
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
throw new Error(`Failed to resolve chain ID from Node URL: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Determines if the input string is a valid URL
|
|
117
|
+
*
|
|
118
|
+
* @param input - The string to validate as a URL
|
|
119
|
+
* @returns True if the input is a valid URL, false otherwise
|
|
120
|
+
*/
|
|
121
|
+
function isValidUrl(input) {
|
|
122
|
+
try {
|
|
123
|
+
new URL(input);
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Resolves viem clients based on a network identifier or Node URL.
|
|
132
|
+
*
|
|
133
|
+
* @param options - Configuration options
|
|
134
|
+
* @param options.networkOrNodeUrl - Either a network identifier (e.g., "base", "base-sepolia") or a full Node URL
|
|
135
|
+
* @param options.account - Optional account to use for the wallet client
|
|
136
|
+
* @returns Promise resolving to an object containing the chain, publicClient, and walletClient
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* // Using network identifier
|
|
141
|
+
* const clients = await resolveViemClients({
|
|
142
|
+
* networkOrNodeUrl: "base",
|
|
143
|
+
* account: myAccount
|
|
144
|
+
* });
|
|
145
|
+
*
|
|
146
|
+
* // Using Node URL
|
|
147
|
+
* const clients = await resolveViemClients({
|
|
148
|
+
* networkOrNodeUrl: "https://mainnet.base.org",
|
|
149
|
+
* account: myAccount
|
|
150
|
+
* });
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
async function resolveViemClients(options) {
|
|
154
|
+
const { networkOrNodeUrl } = options;
|
|
155
|
+
let chain;
|
|
156
|
+
// If it's a valid network identifier, use the mapping
|
|
157
|
+
if (isNetworkIdentifier(networkOrNodeUrl)) {
|
|
158
|
+
chain = resolveNetworkToChain(networkOrNodeUrl);
|
|
159
|
+
const publicClient = (0, viem_1.createPublicClient)({
|
|
160
|
+
chain,
|
|
161
|
+
transport: (0, viem_1.http)(),
|
|
162
|
+
});
|
|
163
|
+
const walletClient = (0, viem_1.createWalletClient)({
|
|
164
|
+
account: (0, accounts_1.toAccount)(options.account),
|
|
165
|
+
chain,
|
|
166
|
+
transport: (0, viem_1.http)(),
|
|
167
|
+
});
|
|
168
|
+
return {
|
|
169
|
+
chain,
|
|
170
|
+
publicClient,
|
|
171
|
+
walletClient,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
// If it's not a valid network identifier, try to treat it as a Node URL
|
|
175
|
+
try {
|
|
176
|
+
chain = await resolveNodeUrlToChain(networkOrNodeUrl);
|
|
177
|
+
const publicClient = (0, viem_1.createPublicClient)({
|
|
178
|
+
chain,
|
|
179
|
+
transport: (0, viem_1.http)(networkOrNodeUrl),
|
|
180
|
+
});
|
|
181
|
+
const walletClient = (0, viem_1.createWalletClient)({
|
|
182
|
+
account: (0, accounts_1.toAccount)(options.account),
|
|
183
|
+
chain,
|
|
184
|
+
transport: (0, viem_1.http)(networkOrNodeUrl),
|
|
185
|
+
});
|
|
186
|
+
return {
|
|
187
|
+
chain,
|
|
188
|
+
publicClient,
|
|
189
|
+
walletClient,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
// If the error is from resolveNodeUrlToChain, re-throw it as-is
|
|
194
|
+
if (error instanceof Error &&
|
|
195
|
+
(error.message.includes("Invalid URL format") ||
|
|
196
|
+
error.message.includes("Unsupported chain ID") ||
|
|
197
|
+
error.message.includes("Failed to resolve chain ID"))) {
|
|
198
|
+
throw error;
|
|
199
|
+
}
|
|
200
|
+
// Otherwise, throw a generic error about unsupported input
|
|
201
|
+
throw new Error(`Unsupported network identifier or invalid Node URL: ${networkOrNodeUrl}`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=resolveViemClients.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveViemClients.js","sourceRoot":"","sources":["../../../accounts/evm/resolveViemClients.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,7 +110,7 @@ function toEvmServerAccount(apiClient, options) {
|
|
|
110
110
|
name: options.account.name,
|
|
111
111
|
type: "evm-server",
|
|
112
112
|
policies: options.account.policies,
|
|
113
|
-
|
|
113
|
+
useNetwork: async (networkOrRpcUrl) => {
|
|
114
114
|
return (0, toNetworkScopedEvmServerAccount_js_1.toNetworkScopedEvmServerAccount)(apiClient, {
|
|
115
115
|
account,
|
|
116
116
|
network: networkOrRpcUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmServerAccount.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"toEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmServerAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.toNetworkScopedEvmServerAccount = toNetworkScopedEvmServerAccount;
|
|
4
|
+
const chains_1 = require("viem/chains");
|
|
5
|
+
const resolveViemClients_js_1 = require("./resolveViemClients.js");
|
|
4
6
|
/**
|
|
5
7
|
* Creates a Network-scoped Server-managed EvmAccount instance from an existing EvmAccount.
|
|
6
8
|
* Use this to interact with previously deployed EvmAccounts on a specific network.
|
|
@@ -11,7 +13,12 @@ exports.toNetworkScopedEvmServerAccount = toNetworkScopedEvmServerAccount;
|
|
|
11
13
|
* @param {string} options.network - The network to scope the account to.
|
|
12
14
|
* @returns {NetworkScopedEvmServerAccount} A configured NetworkScopedEvmServerAccount instance ready for signing.
|
|
13
15
|
*/
|
|
14
|
-
function toNetworkScopedEvmServerAccount(apiClient, options) {
|
|
16
|
+
async function toNetworkScopedEvmServerAccount(apiClient, options) {
|
|
17
|
+
const { publicClient, walletClient, chain } = await (0, resolveViemClients_js_1.resolveViemClients)({
|
|
18
|
+
networkOrNodeUrl: options.network,
|
|
19
|
+
account: options.account,
|
|
20
|
+
});
|
|
21
|
+
const shouldUseApi = chain.id === chains_1.base.id || chain.id === chains_1.baseSepolia.id;
|
|
15
22
|
const account = {
|
|
16
23
|
address: options.account.address,
|
|
17
24
|
network: options.network,
|
|
@@ -22,6 +29,30 @@ function toNetworkScopedEvmServerAccount(apiClient, options) {
|
|
|
22
29
|
name: options.account.name,
|
|
23
30
|
type: "evm-server",
|
|
24
31
|
policies: options.account.policies,
|
|
32
|
+
requestFaucet: async (faucetOptions) => {
|
|
33
|
+
if (chain.id !== chains_1.baseSepolia.id && chain.id !== chains_1.sepolia.id) {
|
|
34
|
+
throw new Error("Requesting a faucet is supported only on base-sepolia or ethereum-sepolia");
|
|
35
|
+
}
|
|
36
|
+
return options.account.requestFaucet({
|
|
37
|
+
...faucetOptions,
|
|
38
|
+
network: chain.id === chains_1.baseSepolia.id ? "base-sepolia" : "ethereum-sepolia",
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
sendTransaction: async (txOpts) => {
|
|
42
|
+
if (shouldUseApi) {
|
|
43
|
+
return options.account.sendTransaction({
|
|
44
|
+
...txOpts,
|
|
45
|
+
network: chain.id === chains_1.base.id ? "base" : "base-sepolia",
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const hash = await walletClient.sendTransaction(txOpts.transaction);
|
|
50
|
+
return { transactionHash: hash };
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
waitForTransactionReceipt: async (options) => {
|
|
54
|
+
return publicClient.waitForTransactionReceipt(options);
|
|
55
|
+
},
|
|
25
56
|
};
|
|
26
57
|
return account;
|
|
27
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toNetworkScopedEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toNetworkScopedEvmServerAccount.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"toNetworkScopedEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toNetworkScopedEvmServerAccount.ts"],"names":[],"mappings":";;AA8BA,0EAmDC;AAhFD,wCAAyD;AAEzD,mEAA6D;AAiB7D;;;;;;;;;GASG;AACI,KAAK,UAAU,+BAA+B,CACnD,SAA+B,EAC/B,OAA+C;IAE/C,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,0CAAkB,EAAC;QACrE,gBAAgB,EAAE,OAAO,CAAC,OAAO;QACjC,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,KAAK,CAAC,EAAE,KAAK,aAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,KAAK,oBAAW,CAAC,EAAE,CAAC;IAEzE,MAAM,OAAO,GAAkC;QAC7C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAkB;QAC3C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;QACxC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QAC1B,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe;QAChD,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa;QAC5C,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QAC1B,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;QAClC,aAAa,EAAE,KAAK,EAAE,aAAgE,EAAE,EAAE;YACxF,IAAI,KAAK,CAAC,EAAE,KAAK,oBAAW,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,KAAK,gBAAO,CAAC,EAAE,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;gBACnC,GAAG,aAAa;gBAChB,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,oBAAW,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB;aAC3E,CAAC,CAAC;QACL,CAAC;QACD,eAAe,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;YAC9B,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;oBACrC,GAAG,MAAM;oBACT,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,aAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc;iBACxD,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,eAAe,CAC7C,MAAM,CAAC,WAAwC,CAChD,CAAC;gBACF,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;QACD,yBAAyB,EAAE,KAAK,EAAE,OAA4C,EAAE,EAAE;YAChF,OAAO,YAAY,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;KACF,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/_cjs/version.js
CHANGED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { createPublicClient, createWalletClient, http, } from "viem";
|
|
2
|
+
import { toAccount } from "viem/accounts";
|
|
3
|
+
import * as chains from "viem/chains";
|
|
4
|
+
/**
|
|
5
|
+
* Network identifier to viem chain mapping
|
|
6
|
+
*/
|
|
7
|
+
const NETWORK_TO_CHAIN_MAP = {
|
|
8
|
+
base: chains.base,
|
|
9
|
+
"base-sepolia": chains.baseSepolia,
|
|
10
|
+
ethereum: chains.mainnet,
|
|
11
|
+
"ethereum-sepolia": chains.sepolia,
|
|
12
|
+
polygon: chains.polygon,
|
|
13
|
+
"polygon-mumbai": chains.polygonMumbai,
|
|
14
|
+
arbitrum: chains.arbitrum,
|
|
15
|
+
"arbitrum-sepolia": chains.arbitrumSepolia,
|
|
16
|
+
optimism: chains.optimism,
|
|
17
|
+
"optimism-sepolia": chains.optimismSepolia,
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Get a chain from the viem chains object
|
|
21
|
+
*
|
|
22
|
+
* @param id - The chain ID
|
|
23
|
+
* @returns The chain
|
|
24
|
+
*/
|
|
25
|
+
function getChain(id) {
|
|
26
|
+
const chainList = Object.values(chains);
|
|
27
|
+
const found = chainList.find(chain => chain.id === id);
|
|
28
|
+
if (!found)
|
|
29
|
+
throw new Error(`Unsupported chain ID: ${id}`);
|
|
30
|
+
return found;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Determines if the input string is a network identifier or a Node URL
|
|
34
|
+
*
|
|
35
|
+
* @param input - The string to check
|
|
36
|
+
* @returns True if the input is a network identifier, false otherwise
|
|
37
|
+
*/
|
|
38
|
+
function isNetworkIdentifier(input) {
|
|
39
|
+
const normalizedInput = input.toLowerCase();
|
|
40
|
+
return NETWORK_TO_CHAIN_MAP[normalizedInput] !== undefined;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Resolves a network identifier to a viem chain
|
|
44
|
+
*
|
|
45
|
+
* @param network - The network identifier to resolve
|
|
46
|
+
* @returns The resolved viem chain
|
|
47
|
+
*/
|
|
48
|
+
function resolveNetworkToChain(network) {
|
|
49
|
+
const chain = NETWORK_TO_CHAIN_MAP[network.toLowerCase()];
|
|
50
|
+
if (!chain) {
|
|
51
|
+
throw new Error(`Unsupported network identifier: ${network}`);
|
|
52
|
+
}
|
|
53
|
+
return chain;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolves a Node URL to a viem chain by making a getChainId call
|
|
57
|
+
*
|
|
58
|
+
* @param nodeUrl - The Node URL to resolve
|
|
59
|
+
* @returns Promise resolving to the viem chain
|
|
60
|
+
*/
|
|
61
|
+
async function resolveNodeUrlToChain(nodeUrl) {
|
|
62
|
+
// First validate that it's a proper URL
|
|
63
|
+
if (!isValidUrl(nodeUrl)) {
|
|
64
|
+
throw new Error(`Invalid URL format: ${nodeUrl}`);
|
|
65
|
+
}
|
|
66
|
+
// Create a temporary public client to get the chain ID
|
|
67
|
+
const tempPublicClient = createPublicClient({
|
|
68
|
+
transport: http(nodeUrl),
|
|
69
|
+
});
|
|
70
|
+
try {
|
|
71
|
+
const chainId = await tempPublicClient.getChainId();
|
|
72
|
+
const chain = getChain(Number(chainId));
|
|
73
|
+
return chain;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
throw new Error(`Failed to resolve chain ID from Node URL: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Determines if the input string is a valid URL
|
|
81
|
+
*
|
|
82
|
+
* @param input - The string to validate as a URL
|
|
83
|
+
* @returns True if the input is a valid URL, false otherwise
|
|
84
|
+
*/
|
|
85
|
+
function isValidUrl(input) {
|
|
86
|
+
try {
|
|
87
|
+
new URL(input);
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Resolves viem clients based on a network identifier or Node URL.
|
|
96
|
+
*
|
|
97
|
+
* @param options - Configuration options
|
|
98
|
+
* @param options.networkOrNodeUrl - Either a network identifier (e.g., "base", "base-sepolia") or a full Node URL
|
|
99
|
+
* @param options.account - Optional account to use for the wallet client
|
|
100
|
+
* @returns Promise resolving to an object containing the chain, publicClient, and walletClient
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* // Using network identifier
|
|
105
|
+
* const clients = await resolveViemClients({
|
|
106
|
+
* networkOrNodeUrl: "base",
|
|
107
|
+
* account: myAccount
|
|
108
|
+
* });
|
|
109
|
+
*
|
|
110
|
+
* // Using Node URL
|
|
111
|
+
* const clients = await resolveViemClients({
|
|
112
|
+
* networkOrNodeUrl: "https://mainnet.base.org",
|
|
113
|
+
* account: myAccount
|
|
114
|
+
* });
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
export async function resolveViemClients(options) {
|
|
118
|
+
const { networkOrNodeUrl } = options;
|
|
119
|
+
let chain;
|
|
120
|
+
// If it's a valid network identifier, use the mapping
|
|
121
|
+
if (isNetworkIdentifier(networkOrNodeUrl)) {
|
|
122
|
+
chain = resolveNetworkToChain(networkOrNodeUrl);
|
|
123
|
+
const publicClient = createPublicClient({
|
|
124
|
+
chain,
|
|
125
|
+
transport: http(),
|
|
126
|
+
});
|
|
127
|
+
const walletClient = createWalletClient({
|
|
128
|
+
account: toAccount(options.account),
|
|
129
|
+
chain,
|
|
130
|
+
transport: http(),
|
|
131
|
+
});
|
|
132
|
+
return {
|
|
133
|
+
chain,
|
|
134
|
+
publicClient,
|
|
135
|
+
walletClient,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// If it's not a valid network identifier, try to treat it as a Node URL
|
|
139
|
+
try {
|
|
140
|
+
chain = await resolveNodeUrlToChain(networkOrNodeUrl);
|
|
141
|
+
const publicClient = createPublicClient({
|
|
142
|
+
chain,
|
|
143
|
+
transport: http(networkOrNodeUrl),
|
|
144
|
+
});
|
|
145
|
+
const walletClient = createWalletClient({
|
|
146
|
+
account: toAccount(options.account),
|
|
147
|
+
chain,
|
|
148
|
+
transport: http(networkOrNodeUrl),
|
|
149
|
+
});
|
|
150
|
+
return {
|
|
151
|
+
chain,
|
|
152
|
+
publicClient,
|
|
153
|
+
walletClient,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
// If the error is from resolveNodeUrlToChain, re-throw it as-is
|
|
158
|
+
if (error instanceof Error &&
|
|
159
|
+
(error.message.includes("Invalid URL format") ||
|
|
160
|
+
error.message.includes("Unsupported chain ID") ||
|
|
161
|
+
error.message.includes("Failed to resolve chain ID"))) {
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
// Otherwise, throw a generic error about unsupported input
|
|
165
|
+
throw new Error(`Unsupported network identifier or invalid Node URL: ${networkOrNodeUrl}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=resolveViemClients.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveViemClients.js","sourceRoot":"","sources":["../../../accounts/evm/resolveViemClients.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,GAKL,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAItC;;GAEG;AACH,MAAM,oBAAoB,GAA0B;IAClD,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,cAAc,EAAE,MAAM,CAAC,WAAW;IAClC,QAAQ,EAAE,MAAM,CAAC,OAAO;IACxB,kBAAkB,EAAE,MAAM,CAAC,OAAO;IAClC,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,gBAAgB,EAAE,MAAM,CAAC,aAAa;IACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACzB,kBAAkB,EAAE,MAAM,CAAC,eAAe;IAC1C,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACzB,kBAAkB,EAAE,MAAM,CAAC,eAAe;CAC3C,CAAC;AAEF;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,EAAU;IAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAY,CAAC;IACnD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,KAAa;IACxC,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,oBAAoB,CAAC,eAAe,CAAC,KAAK,SAAS,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,qBAAqB,CAAC,OAAe;IAClD,wCAAwC;IACxC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,uDAAuD;IACvD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;QAC1C,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;KACzB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,6CAA6C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACxG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAwBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAkC;IAElC,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAErC,IAAI,KAAY,CAAC;IAEjB,sDAAsD;IACtD,IAAI,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC1C,KAAK,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,KAAK;YACL,SAAS,EAAE,IAAI,EAAE;SAClB,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;YACnC,KAAK;YACL,SAAS,EAAE,IAAI,EAAE;SAClB,CAAC,CAAC;QACH,OAAO;YACL,KAAK;YACL,YAAY;YACZ,YAAY;SACb,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;SAClC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;YACnC,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;SAClC,CAAC,CAAC;QACH,OAAO;YACL,KAAK;YACL,YAAY;YACZ,YAAY;SACb,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gEAAgE;QAChE,IACE,KAAK,YAAY,KAAK;YACtB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBAC3C,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBAC9C,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,EACvD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,2DAA2D;QAC3D,MAAM,IAAI,KAAK,CAAC,uDAAuD,gBAAgB,EAAE,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC"}
|
|
@@ -107,7 +107,7 @@ export function toEvmServerAccount(apiClient, options) {
|
|
|
107
107
|
name: options.account.name,
|
|
108
108
|
type: "evm-server",
|
|
109
109
|
policies: options.account.policies,
|
|
110
|
-
|
|
110
|
+
useNetwork: async (networkOrRpcUrl) => {
|
|
111
111
|
return toNetworkScopedEvmServerAccount(apiClient, {
|
|
112
112
|
account,
|
|
113
113
|
network: networkOrRpcUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmServerAccount.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"toEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toEvmServerAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAe,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAoB,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAElF,OAAO,EAGL,2BAA2B,GAC5B,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EACL,iBAAiB,GAGlB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,aAAa,GAGd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAwBlE;;;;;;;;GAQG;AACH,MAAM,UAAU,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,oBAAoB,CAAC,WAAW,CAAC;aAC/C,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,iBAAwB,CAAC;QACzC,CAAC;QAED,KAAK,CAAC,aAAa,CAGjB,UAAuD;YACvD,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,UAAqC,CAAC;YACpF,MAAM,KAAK,GAAG;gBACZ,YAAY,EAAE,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;gBACjD,GAAG,UAAU,CAAC,KAAK;aACpB,CAAC;YAEF,MAAM,cAAc,GAAG;gBACrB,MAAM,EAAE,MAAsB;gBAC9B,KAAK;gBACL,WAAW;gBACX,OAAO;aACR,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACzF,OAAO,MAAM,CAAC,SAAgB,CAAC;QACjC,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,YAAY;YACzB,OAAO,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,uBAAuB,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,CAAC,iBAAiB,CACrB,OAAkD;YAElD,OAAO,iBAAiB,CAAC,SAAS,EAAE;gBAClC,GAAG,OAAO;gBACV,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,aAAa,CACjB,OAA8C;YAE9C,OAAO,aAAa,CAAC,SAAS,EAAE;gBAC9B,GAAG,OAAO;gBACV,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,OAAgD;YACpE,OAAO,eAAe,CAAC,SAAS,EAAE;gBAChC,GAAG,OAAO;gBACV,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,OAA0C;YACxD,OAAO,SAAS,CAAC,SAAS,EAAE;gBAC1B,GAAG,OAAO;gBACV,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAqC;YAC9C,OAAO,IAAI,CAAC,SAAS,EAAE;gBACrB,GAAG,OAAO;gBACV,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,2BAA2B,CAC/B,OAAoC;YAEpC,OAAO,2BAA2B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,OAAgC;YAC9C,OAAO,eAAe,CAAC,SAAS,EAAE;gBAChC,GAAG,OAAO;gBACV,KAAK,EAAE,IAAI,CAAC,OAAO;aACpB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAA2B;YACpC,OAAO,mBAAmB,CAAC,SAAS,EAAE;gBACpC,GAAG,OAAO;gBACV,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,wCAAwC;aAC9D,CAAC,CAAC;QACL,CAAC;QACD,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QAC1B,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;QAClC,UAAU,EAAE,KAAK,EAAE,eAAuB,EAAE,EAAE;YAC5C,OAAO,+BAA+B,CAAC,SAAS,EAAE;gBAChD,OAAO;gBACP,OAAO,EAAE,eAAe;aACzB,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { base, baseSepolia, sepolia } from "viem/chains";
|
|
2
|
+
import { resolveViemClients } from "./resolveViemClients.js";
|
|
1
3
|
/**
|
|
2
4
|
* Creates a Network-scoped Server-managed EvmAccount instance from an existing EvmAccount.
|
|
3
5
|
* Use this to interact with previously deployed EvmAccounts on a specific network.
|
|
@@ -8,7 +10,12 @@
|
|
|
8
10
|
* @param {string} options.network - The network to scope the account to.
|
|
9
11
|
* @returns {NetworkScopedEvmServerAccount} A configured NetworkScopedEvmServerAccount instance ready for signing.
|
|
10
12
|
*/
|
|
11
|
-
export function toNetworkScopedEvmServerAccount(apiClient, options) {
|
|
13
|
+
export async function toNetworkScopedEvmServerAccount(apiClient, options) {
|
|
14
|
+
const { publicClient, walletClient, chain } = await resolveViemClients({
|
|
15
|
+
networkOrNodeUrl: options.network,
|
|
16
|
+
account: options.account,
|
|
17
|
+
});
|
|
18
|
+
const shouldUseApi = chain.id === base.id || chain.id === baseSepolia.id;
|
|
12
19
|
const account = {
|
|
13
20
|
address: options.account.address,
|
|
14
21
|
network: options.network,
|
|
@@ -19,6 +26,30 @@ export function toNetworkScopedEvmServerAccount(apiClient, options) {
|
|
|
19
26
|
name: options.account.name,
|
|
20
27
|
type: "evm-server",
|
|
21
28
|
policies: options.account.policies,
|
|
29
|
+
requestFaucet: async (faucetOptions) => {
|
|
30
|
+
if (chain.id !== baseSepolia.id && chain.id !== sepolia.id) {
|
|
31
|
+
throw new Error("Requesting a faucet is supported only on base-sepolia or ethereum-sepolia");
|
|
32
|
+
}
|
|
33
|
+
return options.account.requestFaucet({
|
|
34
|
+
...faucetOptions,
|
|
35
|
+
network: chain.id === baseSepolia.id ? "base-sepolia" : "ethereum-sepolia",
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
sendTransaction: async (txOpts) => {
|
|
39
|
+
if (shouldUseApi) {
|
|
40
|
+
return options.account.sendTransaction({
|
|
41
|
+
...txOpts,
|
|
42
|
+
network: chain.id === base.id ? "base" : "base-sepolia",
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
const hash = await walletClient.sendTransaction(txOpts.transaction);
|
|
47
|
+
return { transactionHash: hash };
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
waitForTransactionReceipt: async (options) => {
|
|
51
|
+
return publicClient.waitForTransactionReceipt(options);
|
|
52
|
+
},
|
|
22
53
|
};
|
|
23
54
|
return account;
|
|
24
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toNetworkScopedEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toNetworkScopedEvmServerAccount.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"toNetworkScopedEvmServerAccount.js","sourceRoot":"","sources":["../../../accounts/evm/toNetworkScopedEvmServerAccount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAiB7D;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,SAA+B,EAC/B,OAA+C;IAE/C,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,MAAM,kBAAkB,CAAC;QACrE,gBAAgB,EAAE,OAAO,CAAC,OAAO;QACjC,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC;IAEzE,MAAM,OAAO,GAAkC;QAC7C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAkB;QAC3C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW;QACxC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QAC1B,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe;QAChD,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa;QAC5C,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QAC1B,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;QAClC,aAAa,EAAE,KAAK,EAAE,aAAgE,EAAE,EAAE;YACxF,IAAI,KAAK,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;gBACnC,GAAG,aAAa;gBAChB,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB;aAC3E,CAAC,CAAC;QACL,CAAC;QACD,eAAe,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;YAC9B,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;oBACrC,GAAG,MAAM;oBACT,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc;iBACxD,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,eAAe,CAC7C,MAAM,CAAC,WAAwC,CAChD,CAAC;gBACF,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;QACD,yBAAyB,EAAE,KAAK,EAAE,OAA4C,EAAE,EAAE;YAChF,OAAO,YAAY,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;KACF,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/_esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = "1.
|
|
1
|
+
export const version = "1.18.0";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Account, Transport, type Chain, type PublicClient, type WalletClient } from "viem";
|
|
2
|
+
import type { EvmAccount } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Options for resolving viem clients
|
|
5
|
+
*/
|
|
6
|
+
export type ResolveViemClientsOptions = {
|
|
7
|
+
/** The network identifier (e.g., "base", "base-sepolia") or Node URL */
|
|
8
|
+
networkOrNodeUrl: string;
|
|
9
|
+
/** Optional account to use for the wallet client */
|
|
10
|
+
account: EvmAccount;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Result of resolving viem clients
|
|
14
|
+
*/
|
|
15
|
+
export type ResolvedViemClients = {
|
|
16
|
+
/** The resolved viem chain */
|
|
17
|
+
chain: Chain;
|
|
18
|
+
/** The public client for reading blockchain data */
|
|
19
|
+
publicClient: PublicClient<Transport, Chain>;
|
|
20
|
+
/** The wallet client for sending transactions */
|
|
21
|
+
walletClient: WalletClient<Transport, Chain, Account>;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Resolves viem clients based on a network identifier or Node URL.
|
|
25
|
+
*
|
|
26
|
+
* @param options - Configuration options
|
|
27
|
+
* @param options.networkOrNodeUrl - Either a network identifier (e.g., "base", "base-sepolia") or a full Node URL
|
|
28
|
+
* @param options.account - Optional account to use for the wallet client
|
|
29
|
+
* @returns Promise resolving to an object containing the chain, publicClient, and walletClient
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* // Using network identifier
|
|
34
|
+
* const clients = await resolveViemClients({
|
|
35
|
+
* networkOrNodeUrl: "base",
|
|
36
|
+
* account: myAccount
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* // Using Node URL
|
|
40
|
+
* const clients = await resolveViemClients({
|
|
41
|
+
* networkOrNodeUrl: "https://mainnet.base.org",
|
|
42
|
+
* account: myAccount
|
|
43
|
+
* });
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveViemClients(options: ResolveViemClientsOptions): Promise<ResolvedViemClients>;
|
|
47
|
+
//# sourceMappingURL=resolveViemClients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveViemClients.d.ts","sourceRoot":"","sources":["../../../accounts/evm/resolveViemClients.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAIP,SAAS,EACT,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,MAAM,CAAC;AAId,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAmG7C;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,wEAAwE;IACxE,gBAAgB,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,8BAA8B;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,oDAAoD;IACpD,YAAY,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7C,iDAAiD;IACjD,YAAY,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;CACvD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAuD9B"}
|
|
@@ -19,5 +19,5 @@ export type ToNetworkScopedEvmServerAccountOptions = {
|
|
|
19
19
|
* @param {string} options.network - The network to scope the account to.
|
|
20
20
|
* @returns {NetworkScopedEvmServerAccount} A configured NetworkScopedEvmServerAccount instance ready for signing.
|
|
21
21
|
*/
|
|
22
|
-
export declare function toNetworkScopedEvmServerAccount(apiClient: CdpOpenApiClientType, options: ToNetworkScopedEvmServerAccountOptions): NetworkScopedEvmServerAccount
|
|
22
|
+
export declare function toNetworkScopedEvmServerAccount(apiClient: CdpOpenApiClientType, options: ToNetworkScopedEvmServerAccountOptions): Promise<NetworkScopedEvmServerAccount>;
|
|
23
23
|
//# sourceMappingURL=toNetworkScopedEvmServerAccount.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toNetworkScopedEvmServerAccount.d.ts","sourceRoot":"","sources":["../../../accounts/evm/toNetworkScopedEvmServerAccount.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"toNetworkScopedEvmServerAccount.d.ts","sourceRoot":"","sources":["../../../accounts/evm/toNetworkScopedEvmServerAccount.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAG1E;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG;IACnD,kDAAkD;IAClD,OAAO,EAAE,gBAAgB,CAAC;IAC1B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,+BAA+B,CACnD,SAAS,EAAE,oBAAoB,EAC/B,OAAO,EAAE,sCAAsC,GAC9C,OAAO,CAAC,6BAA6B,CAAC,CAgDxC"}
|