@toruslabs/ethereum-controllers 8.4.2 → 8.4.4
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/dist/ethereumControllers.umd.min.js +1 -1
- package/dist/ethereumControllers.umd.min.js.LICENSE.txt +0 -4
- package/dist/lib.cjs/AccountAbstraction/AccountAbstractionController.js +37 -1
- package/dist/lib.cjs/Network/createEthereumMiddleware.js +46 -3
- package/dist/lib.cjs/index.js +3 -0
- package/dist/lib.cjs/types/AccountAbstraction/AccountAbstractionController.d.ts +8 -6
- package/dist/lib.cjs/types/Network/createEthereumMiddleware.d.ts +12 -0
- package/dist/lib.cjs/types/utils/constants.d.ts +18 -0
- package/dist/lib.cjs/utils/constants.js +24 -0
- package/dist/lib.esm/AccountAbstraction/AccountAbstractionController.js +37 -1
- package/dist/lib.esm/Network/createEthereumMiddleware.js +49 -6
- package/dist/lib.esm/index.js +2 -2
- package/dist/lib.esm/utils/constants.js +23 -1
- package/package.json +9 -9
|
@@ -33,7 +33,3 @@
|
|
|
33
33
|
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
|
34
34
|
|
|
35
35
|
/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
36
|
-
|
|
37
|
-
/*! scure-bip32 - MIT License (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) */
|
|
38
|
-
|
|
39
|
-
/*! scure-bip39 - MIT License (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) */
|
|
@@ -147,7 +147,7 @@ class AccountAbstractionController extends baseControllers.BaseController {
|
|
|
147
147
|
calls: [{
|
|
148
148
|
to: txParams.to,
|
|
149
149
|
// Explicit conversation required to avoid value being passed as hex
|
|
150
|
-
value: BigInt(txParams.value),
|
|
150
|
+
value: txParams.value ? BigInt(txParams.value) : undefined,
|
|
151
151
|
data: txParams.data
|
|
152
152
|
}],
|
|
153
153
|
maxFeePerGas: txParams.maxFeePerGas ? BigInt(txParams.maxFeePerGas) : undefined,
|
|
@@ -186,6 +186,42 @@ class AccountAbstractionController extends baseControllers.BaseController {
|
|
|
186
186
|
});
|
|
187
187
|
return txReceipt.receipt.transactionHash;
|
|
188
188
|
}
|
|
189
|
+
async signTransaction(id, tx, address) {
|
|
190
|
+
var _txParams$chainId2;
|
|
191
|
+
if (address.toLowerCase() !== this.smartAccount.address.toLowerCase()) {
|
|
192
|
+
throw new Error("Invalid address");
|
|
193
|
+
}
|
|
194
|
+
const txParams = tx;
|
|
195
|
+
const userOpMeta = {
|
|
196
|
+
transactionParams: txParams,
|
|
197
|
+
chainId: (_txParams$chainId2 = txParams.chainId) !== null && _txParams$chainId2 !== void 0 ? _txParams$chainId2 : this.getProviderConfig().chainId,
|
|
198
|
+
createdAt: new Date(),
|
|
199
|
+
status: baseControllers.TransactionStatus.approved
|
|
200
|
+
};
|
|
201
|
+
this.updateUserOpMeta(id, userOpMeta);
|
|
202
|
+
const request = await this.bundlerClient.prepareUserOperation({
|
|
203
|
+
account: this.smartAccount,
|
|
204
|
+
calls: [{
|
|
205
|
+
to: txParams.to,
|
|
206
|
+
// Explicit conversation required to avoid value being passed as hex
|
|
207
|
+
value: txParams.value ? BigInt(txParams.value) : undefined,
|
|
208
|
+
data: txParams.data
|
|
209
|
+
}],
|
|
210
|
+
maxFeePerGas: txParams.maxFeePerGas ? BigInt(txParams.maxFeePerGas) : undefined,
|
|
211
|
+
maxPriorityFeePerGas: txParams.maxPriorityFeePerGas ? BigInt(txParams.maxPriorityFeePerGas) : undefined,
|
|
212
|
+
callGasLimit: txParams.callGasLimit ? BigInt(txParams.callGasLimit) : undefined,
|
|
213
|
+
preVerificationGas: txParams.preVerificationGas ? BigInt(txParams.preVerificationGas) : undefined,
|
|
214
|
+
verificationGasLimit: txParams.verificationGasLimit ? BigInt(txParams.verificationGasLimit) : undefined,
|
|
215
|
+
paymasterVerificationGasLimit: txParams.paymasterVerificationGasLimit ? BigInt(txParams.paymasterVerificationGasLimit) : undefined,
|
|
216
|
+
paymasterPostOpGasLimit: txParams.paymasterPostOpGasLimit ? BigInt(txParams.paymasterPostOpGasLimit) : undefined
|
|
217
|
+
});
|
|
218
|
+
const signature = await this.smartAccount.signUserOperation(request);
|
|
219
|
+
this.updateUserOpMeta(id, {
|
|
220
|
+
signature,
|
|
221
|
+
status: baseControllers.TransactionStatus.signed
|
|
222
|
+
});
|
|
223
|
+
return signature;
|
|
224
|
+
}
|
|
189
225
|
async estimateGas(txParams, address) {
|
|
190
226
|
if (address.toLowerCase() !== this.smartAccount.address.toLowerCase()) throw new Error("Invalid address");
|
|
191
227
|
const calls = [{
|
|
@@ -290,11 +290,45 @@ function createRequestAccountsMiddleware({
|
|
|
290
290
|
return undefined;
|
|
291
291
|
});
|
|
292
292
|
}
|
|
293
|
+
/**
|
|
294
|
+
* Middleware to handle bundler/paymaster rpc method
|
|
295
|
+
*/
|
|
296
|
+
function createAAMiddleware({
|
|
297
|
+
bundlerUrl,
|
|
298
|
+
paymasterUrl
|
|
299
|
+
}) {
|
|
300
|
+
// forward request to bundler/paymaster
|
|
301
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
302
|
+
const middlewares = [];
|
|
303
|
+
const bundlerFetchMiddleware = baseControllers.createFetchMiddleware({
|
|
304
|
+
rpcTarget: bundlerUrl
|
|
305
|
+
});
|
|
306
|
+
// NOTE: bundler/paymaster rpc only accept number as request id, we might need to handle that here if client doesn't handle request id themselves
|
|
307
|
+
middlewares.push((request, response, next, end) => {
|
|
308
|
+
if (!constants.BUNDLER_METHOD_TYPES.includes(request.method)) {
|
|
309
|
+
return next();
|
|
310
|
+
}
|
|
311
|
+
bundlerFetchMiddleware(request, response, next, end);
|
|
312
|
+
});
|
|
313
|
+
if (paymasterUrl) {
|
|
314
|
+
const paymasterFetchMiddleware = baseControllers.createFetchMiddleware({
|
|
315
|
+
rpcTarget: paymasterUrl
|
|
316
|
+
});
|
|
317
|
+
middlewares.push((request, response, next, end) => {
|
|
318
|
+
if (!constants.PAYMASTER_METHOD_TYPES.includes(request.method)) {
|
|
319
|
+
return next();
|
|
320
|
+
}
|
|
321
|
+
paymasterFetchMiddleware(request, response, next, end);
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
return auth.mergeMiddleware(middlewares);
|
|
325
|
+
}
|
|
293
326
|
function createEthereumMiddleware(providerHandlers) {
|
|
294
327
|
const {
|
|
295
328
|
requestAccounts,
|
|
296
329
|
getAccounts,
|
|
297
330
|
getPrivateKey,
|
|
331
|
+
getPublicKey,
|
|
298
332
|
processTransaction,
|
|
299
333
|
processSignTransaction,
|
|
300
334
|
processEstimateUserOperationGas,
|
|
@@ -307,16 +341,17 @@ function createEthereumMiddleware(providerHandlers) {
|
|
|
307
341
|
processWalletSwitchChain,
|
|
308
342
|
processAddEthereumChain,
|
|
309
343
|
getProviderState,
|
|
344
|
+
aaConfig,
|
|
310
345
|
version
|
|
311
346
|
} = providerHandlers;
|
|
312
|
-
|
|
347
|
+
const middlewares = [auth.createScaffoldMiddleware({
|
|
313
348
|
version,
|
|
314
349
|
[baseControllers.PROVIDER_JRPC_METHODS.GET_PROVIDER_STATE]: getProviderState
|
|
315
350
|
}), createRequestAccountsMiddleware({
|
|
316
351
|
requestAccounts
|
|
317
352
|
}), createGetAccountsMiddleware({
|
|
318
353
|
getAccounts
|
|
319
|
-
}), baseControllers.createGenericJRPCMiddleware(constants.METHOD_TYPES.ETH_PRIVATE_KEY, getPrivateKey), baseControllers.createGenericJRPCMiddleware(constants.METHOD_TYPES.PRIVATE_KEY, getPrivateKey), createProcessTransactionMiddleware({
|
|
354
|
+
}), baseControllers.createGenericJRPCMiddleware(constants.METHOD_TYPES.ETH_PRIVATE_KEY, getPrivateKey), baseControllers.createGenericJRPCMiddleware(constants.METHOD_TYPES.PRIVATE_KEY, getPrivateKey), baseControllers.createGenericJRPCMiddleware(constants.METHOD_TYPES.ETH_PUBLIC_KEY, getPublicKey), baseControllers.createGenericJRPCMiddleware(constants.METHOD_TYPES.PUBLIC_KEY, getPublicKey), createProcessTransactionMiddleware({
|
|
320
355
|
processTransaction
|
|
321
356
|
}), createProcessSignTransactionMiddleware({
|
|
322
357
|
processSignTransaction
|
|
@@ -338,9 +373,17 @@ function createEthereumMiddleware(providerHandlers) {
|
|
|
338
373
|
processWalletSwitchChain
|
|
339
374
|
}), createProcessAddEthereumChain({
|
|
340
375
|
processAddEthereumChain
|
|
341
|
-
})]
|
|
376
|
+
})];
|
|
377
|
+
if (aaConfig) {
|
|
378
|
+
middlewares.push(createAAMiddleware({
|
|
379
|
+
bundlerUrl: aaConfig.bundlerUrl,
|
|
380
|
+
paymasterUrl: aaConfig.paymasterUrl
|
|
381
|
+
}));
|
|
382
|
+
}
|
|
383
|
+
return auth.mergeMiddleware(middlewares);
|
|
342
384
|
}
|
|
343
385
|
|
|
386
|
+
exports.createAAMiddleware = createAAMiddleware;
|
|
344
387
|
exports.createEthereumMiddleware = createEthereumMiddleware;
|
|
345
388
|
exports.createGetAccountsMiddleware = createGetAccountsMiddleware;
|
|
346
389
|
exports.createPendingNonceMiddleware = createPendingNonceMiddleware;
|
package/dist/lib.cjs/index.js
CHANGED
|
@@ -66,6 +66,7 @@ exports.validateAddress = utils.validateAddress;
|
|
|
66
66
|
exports.validateSignMessageData = utils.validateSignMessageData;
|
|
67
67
|
exports.validateSwitchChainData = utils.validateSwitchChainData;
|
|
68
68
|
exports.validateTypedSignMessageDataV4 = utils.validateTypedSignMessageDataV4;
|
|
69
|
+
exports.createAAMiddleware = createEthereumMiddleware.createAAMiddleware;
|
|
69
70
|
exports.createEthereumMiddleware = createEthereumMiddleware.createEthereumMiddleware;
|
|
70
71
|
exports.createGetAccountsMiddleware = createEthereumMiddleware.createGetAccountsMiddleware;
|
|
71
72
|
exports.createPendingNonceMiddleware = createEthereumMiddleware.createPendingNonceMiddleware;
|
|
@@ -126,6 +127,7 @@ exports.BASE_CHAIN_ID = constants.BASE_CHAIN_ID;
|
|
|
126
127
|
exports.BASE_TESTNET_CHAIN_ID = constants.BASE_TESTNET_CHAIN_ID;
|
|
127
128
|
exports.BSC_MAINNET_CHAIN_ID = constants.BSC_MAINNET_CHAIN_ID;
|
|
128
129
|
exports.BSC_TESTNET_CHAIN_ID = constants.BSC_TESTNET_CHAIN_ID;
|
|
130
|
+
exports.BUNDLER_METHOD_TYPES = constants.BUNDLER_METHOD_TYPES;
|
|
129
131
|
exports.CELO_MAINNET_CHAIN_ID = constants.CELO_MAINNET_CHAIN_ID;
|
|
130
132
|
exports.CHAIN_ID_TO_GAS_LIMIT_BUFFER_MAP = constants.CHAIN_ID_TO_GAS_LIMIT_BUFFER_MAP;
|
|
131
133
|
exports.COINGECKO_PLATFORMS_CHAIN_CODE_MAP = constants.COINGECKO_PLATFORMS_CHAIN_CODE_MAP;
|
|
@@ -149,6 +151,7 @@ exports.MM_TOKEN_API_SUPPORTED_CHAINS = constants.MM_TOKEN_API_SUPPORTED_CHAINS;
|
|
|
149
151
|
exports.OLD_ERC721_LIST = constants.OLD_ERC721_LIST;
|
|
150
152
|
exports.OPTIMISM_MAINNET_CHAIN_ID = constants.OPTIMISM_MAINNET_CHAIN_ID;
|
|
151
153
|
exports.OPTIMISM_TESTNET_CHAIN_ID = constants.OPTIMISM_TESTNET_CHAIN_ID;
|
|
154
|
+
exports.PAYMASTER_METHOD_TYPES = constants.PAYMASTER_METHOD_TYPES;
|
|
152
155
|
exports.POLYGON_AMOY_CHAIN_ID = constants.POLYGON_AMOY_CHAIN_ID;
|
|
153
156
|
exports.POLYGON_CHAIN_ID = constants.POLYGON_CHAIN_ID;
|
|
154
157
|
exports.SEPOLIA_CHAIN_ID = constants.SEPOLIA_CHAIN_ID;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { BaseConfig, BaseController, BaseState, TransactionStatus } from "@toruslabs/base-controllers";
|
|
2
|
-
import { JRPCMiddleware, JRPCRequest, JRPCResponse, SafeEventEmitterProvider } from "@web3auth/auth";
|
|
3
|
-
import { WalletClient } from "viem";
|
|
4
|
-
import { BundlerClient, SmartAccount } from "viem/account-abstraction";
|
|
5
|
-
import { NetworkController } from "../Network/NetworkController";
|
|
6
|
-
import { BundlerConfig, EthereumNetworkState, ISmartAccount, PaymasterConfig, SignTypedDataMessageV4, SmartAccountType, TransactionParams, UserOperationGas } from "../utils/interfaces";
|
|
1
|
+
import { type BaseConfig, BaseController, type BaseState, TransactionStatus } from "@toruslabs/base-controllers";
|
|
2
|
+
import { JRPCMiddleware, type JRPCRequest, type JRPCResponse, type SafeEventEmitterProvider } from "@web3auth/auth";
|
|
3
|
+
import { type WalletClient } from "viem";
|
|
4
|
+
import { type BundlerClient, type SmartAccount } from "viem/account-abstraction";
|
|
5
|
+
import { type NetworkController } from "../Network/NetworkController";
|
|
6
|
+
import type { BundlerConfig, EthereumNetworkState, ISmartAccount, PaymasterConfig, SignTypedDataMessageV4, SmartAccountType, TransactionParams, UserOperationGas } from "../utils/interfaces";
|
|
7
7
|
export interface UserOperationMeta {
|
|
8
8
|
transactionParams: TransactionParams;
|
|
9
9
|
userOpHash?: string;
|
|
10
10
|
status: TransactionStatus;
|
|
11
11
|
chainId: string;
|
|
12
|
+
signature?: string;
|
|
12
13
|
createdAt: Date;
|
|
13
14
|
receipt?: {
|
|
14
15
|
transactionHash: string;
|
|
@@ -50,6 +51,7 @@ export declare class AccountAbstractionController extends BaseController<Account
|
|
|
50
51
|
get walletClient(): WalletClient | null;
|
|
51
52
|
setupProvider(eoaProvider: SafeEventEmitterProvider, eoaAddress: string): Promise<void>;
|
|
52
53
|
sendTransaction(id: string, tx: TransactionParams, address: string): Promise<string>;
|
|
54
|
+
signTransaction(id: string, tx: TransactionParams, address: string): Promise<string>;
|
|
53
55
|
estimateGas(txParams: TransactionParams, address: string): Promise<UserOperationGas>;
|
|
54
56
|
signMessage(message: string, address: string): Promise<string>;
|
|
55
57
|
signPersonalMessage(message: string, address: string): Promise<string>;
|
|
@@ -3,9 +3,14 @@ import { JRPCEngineEndCallback, JRPCEngineNextCallback, JRPCMiddleware, JRPCRequ
|
|
|
3
3
|
import { AddChainMessageParams, BlockParams, EthereumTransactionMeta, TransactionParams, TransactionRPCMeta, TypedMessageParams, UserOperationGas } from "../utils/interfaces";
|
|
4
4
|
export interface IProviderHandlers {
|
|
5
5
|
version: string;
|
|
6
|
+
aaConfig?: {
|
|
7
|
+
bundlerUrl: string;
|
|
8
|
+
paymasterUrl?: string;
|
|
9
|
+
};
|
|
6
10
|
requestAccounts?: (req: JRPCRequest<string[]>) => Promise<string[]>;
|
|
7
11
|
getAccounts: (req: JRPCRequest<string[]>) => Promise<string[]>;
|
|
8
12
|
getPrivateKey?: (req: JRPCRequest<unknown>) => Promise<string>;
|
|
13
|
+
getPublicKey?: (req: JRPCRequest<unknown>) => Promise<string>;
|
|
9
14
|
processTransaction?: (txParams: TransactionParams, req: JRPCRequest<TransactionParams> & UserRequestApprovalParams) => Promise<string>;
|
|
10
15
|
processSignTransaction?: (txParams: TransactionParams, req: JRPCRequest<TransactionParams> & UserRequestApprovalParams) => Promise<string>;
|
|
11
16
|
processEthSignMessage?: (msgParams: MessageParams, req: JRPCRequest<unknown> & UserRequestApprovalParams) => Promise<string>;
|
|
@@ -68,4 +73,11 @@ export declare function createProcessAddEthereumChain({ processAddEthereumChain,
|
|
|
68
73
|
export declare function createRequestAccountsMiddleware({ requestAccounts, }: {
|
|
69
74
|
requestAccounts: IProviderHandlers["requestAccounts"];
|
|
70
75
|
}): JRPCMiddleware<string[], unknown>;
|
|
76
|
+
/**
|
|
77
|
+
* Middleware to handle bundler/paymaster rpc method
|
|
78
|
+
*/
|
|
79
|
+
export declare function createAAMiddleware({ bundlerUrl, paymasterUrl }: {
|
|
80
|
+
bundlerUrl: string;
|
|
81
|
+
paymasterUrl?: string;
|
|
82
|
+
}): JRPCMiddleware<unknown, unknown>;
|
|
71
83
|
export declare function createEthereumMiddleware(providerHandlers: IProviderHandlers): JRPCMiddleware<unknown, unknown>;
|
|
@@ -32,6 +32,20 @@ export declare const METHOD_TYPES: {
|
|
|
32
32
|
readonly ETH_TRANSACTION: "eth_sendTransaction";
|
|
33
33
|
readonly ETH_SIGN_TRANSACTION: "eth_signTransaction";
|
|
34
34
|
readonly ETH_ESTIMATE_USER_OPERATION_GAS: "eth_estimateUserOperationGas";
|
|
35
|
+
readonly ETH_GET_SUPPORTED_ENTRY_POINTS: "eth_supportedEntryPoints";
|
|
36
|
+
readonly ETH_GET_USER_OPERATION: "eth_getUserOperationByHash";
|
|
37
|
+
readonly ETH_GET_USER_OPERATION_RECEIPT: "eth_getUserOperationReceipt";
|
|
38
|
+
readonly ETH_SEND_USER_OPERATION: "eth_sendUserOperation";
|
|
39
|
+
readonly PIMLICO_GET_USER_OPERATION_GAS_PRICE: "pimlico_getUserOperationGasPrice";
|
|
40
|
+
readonly PIMLICO_GET_USER_OPERATION_STATUS: "pimlico_getUserOperationStatus";
|
|
41
|
+
readonly PIMLICO_SIMULATE_ASSET_CHANGES: "pimlico_simulateAssetChanges";
|
|
42
|
+
readonly BICONOMY_GET_GAS_FEE_VALUES: "biconomy_getGasFeeValues";
|
|
43
|
+
readonly BICONOMY_GET_USER_OPERATION_STATUS: "biconomy_getUserOperationStatus";
|
|
44
|
+
readonly ETH_GET_PAYMASTER_DATA: "pm_getPaymasterData";
|
|
45
|
+
readonly ETH_GET_PAYMASTER_STUB_DATA: "pm_getPaymasterStubData";
|
|
46
|
+
readonly ETH_SPONSOR_USER_OPERATION: "pm_sponsorUserOperation";
|
|
47
|
+
readonly ETH_GET_FEE_QUOTE_OR_DATA: "pm_getFeeQuoteOrData";
|
|
48
|
+
readonly PIMLICO_GET_TOKEN_QUOTES: "pimlico_getTokenQuotes";
|
|
35
49
|
readonly ETH_REQUEST_ACCOUNTS: "eth_requestAccounts";
|
|
36
50
|
readonly ETH_SEND_RAW_TRANSACTION: "eth_sendRawTransaction";
|
|
37
51
|
readonly ETH_SIGN: "eth_sign";
|
|
@@ -46,9 +60,13 @@ export declare const METHOD_TYPES: {
|
|
|
46
60
|
readonly ETH_GET_GAS_PRICE: "eth_gasPrice";
|
|
47
61
|
readonly ETH_PRIVATE_KEY: "eth_privateKey";
|
|
48
62
|
readonly PRIVATE_KEY: "private_key";
|
|
63
|
+
readonly ETH_PUBLIC_KEY: "eth_publicKey";
|
|
64
|
+
readonly PUBLIC_KEY: "public_key";
|
|
49
65
|
readonly SWITCH_CHAIN: "wallet_switchEthereumChain";
|
|
50
66
|
readonly ADD_CHAIN: "wallet_addEthereumChain";
|
|
51
67
|
};
|
|
68
|
+
export declare const BUNDLER_METHOD_TYPES: readonly ["eth_estimateUserOperationGas", "eth_supportedEntryPoints", "eth_getUserOperationByHash", "eth_getUserOperationReceipt", "eth_sendUserOperation", "pimlico_getUserOperationGasPrice", "pimlico_getUserOperationStatus", "pimlico_simulateAssetChanges", "biconomy_getGasFeeValues", "biconomy_getUserOperationStatus"];
|
|
69
|
+
export declare const PAYMASTER_METHOD_TYPES: readonly ["pm_getPaymasterData", "pm_getPaymasterStubData", "pm_sponsorUserOperation", "pimlico_getTokenQuotes", "pm_getFeeQuoteOrData"];
|
|
52
70
|
export declare const TRANSACTION_ENVELOPE_TYPES: {
|
|
53
71
|
readonly LEGACY: "0x0";
|
|
54
72
|
readonly ACCESS_LIST: "0x1";
|
|
@@ -231,7 +231,25 @@ const METHOD_TYPES = {
|
|
|
231
231
|
GET_ACCOUNTS: "eth_accounts",
|
|
232
232
|
ETH_TRANSACTION: "eth_sendTransaction",
|
|
233
233
|
ETH_SIGN_TRANSACTION: "eth_signTransaction",
|
|
234
|
+
// start bundler methods
|
|
234
235
|
ETH_ESTIMATE_USER_OPERATION_GAS: "eth_estimateUserOperationGas",
|
|
236
|
+
ETH_GET_SUPPORTED_ENTRY_POINTS: "eth_supportedEntryPoints",
|
|
237
|
+
ETH_GET_USER_OPERATION: "eth_getUserOperationByHash",
|
|
238
|
+
ETH_GET_USER_OPERATION_RECEIPT: "eth_getUserOperationReceipt",
|
|
239
|
+
ETH_SEND_USER_OPERATION: "eth_sendUserOperation",
|
|
240
|
+
PIMLICO_GET_USER_OPERATION_GAS_PRICE: "pimlico_getUserOperationGasPrice",
|
|
241
|
+
PIMLICO_GET_USER_OPERATION_STATUS: "pimlico_getUserOperationStatus",
|
|
242
|
+
PIMLICO_SIMULATE_ASSET_CHANGES: "pimlico_simulateAssetChanges",
|
|
243
|
+
BICONOMY_GET_GAS_FEE_VALUES: "biconomy_getGasFeeValues",
|
|
244
|
+
BICONOMY_GET_USER_OPERATION_STATUS: "biconomy_getUserOperationStatus",
|
|
245
|
+
// end bundler methods
|
|
246
|
+
// start paymaster methods
|
|
247
|
+
ETH_GET_PAYMASTER_DATA: "pm_getPaymasterData",
|
|
248
|
+
ETH_GET_PAYMASTER_STUB_DATA: "pm_getPaymasterStubData",
|
|
249
|
+
ETH_SPONSOR_USER_OPERATION: "pm_sponsorUserOperation",
|
|
250
|
+
ETH_GET_FEE_QUOTE_OR_DATA: "pm_getFeeQuoteOrData",
|
|
251
|
+
PIMLICO_GET_TOKEN_QUOTES: "pimlico_getTokenQuotes",
|
|
252
|
+
// end paymaster methods
|
|
235
253
|
ETH_REQUEST_ACCOUNTS: "eth_requestAccounts",
|
|
236
254
|
ETH_SEND_RAW_TRANSACTION: "eth_sendRawTransaction",
|
|
237
255
|
ETH_SIGN: "eth_sign",
|
|
@@ -246,9 +264,13 @@ const METHOD_TYPES = {
|
|
|
246
264
|
ETH_GET_GAS_PRICE: "eth_gasPrice",
|
|
247
265
|
ETH_PRIVATE_KEY: "eth_privateKey",
|
|
248
266
|
PRIVATE_KEY: "private_key",
|
|
267
|
+
ETH_PUBLIC_KEY: "eth_publicKey",
|
|
268
|
+
PUBLIC_KEY: "public_key",
|
|
249
269
|
SWITCH_CHAIN: "wallet_switchEthereumChain",
|
|
250
270
|
ADD_CHAIN: "wallet_addEthereumChain"
|
|
251
271
|
};
|
|
272
|
+
const BUNDLER_METHOD_TYPES = [METHOD_TYPES.ETH_ESTIMATE_USER_OPERATION_GAS, METHOD_TYPES.ETH_GET_SUPPORTED_ENTRY_POINTS, METHOD_TYPES.ETH_GET_USER_OPERATION, METHOD_TYPES.ETH_GET_USER_OPERATION_RECEIPT, METHOD_TYPES.ETH_SEND_USER_OPERATION, METHOD_TYPES.PIMLICO_GET_USER_OPERATION_GAS_PRICE, METHOD_TYPES.PIMLICO_GET_USER_OPERATION_STATUS, METHOD_TYPES.PIMLICO_SIMULATE_ASSET_CHANGES, METHOD_TYPES.BICONOMY_GET_GAS_FEE_VALUES, METHOD_TYPES.BICONOMY_GET_USER_OPERATION_STATUS];
|
|
273
|
+
const PAYMASTER_METHOD_TYPES = [METHOD_TYPES.ETH_GET_PAYMASTER_DATA, METHOD_TYPES.ETH_GET_PAYMASTER_STUB_DATA, METHOD_TYPES.ETH_SPONSOR_USER_OPERATION, METHOD_TYPES.PIMLICO_GET_TOKEN_QUOTES, METHOD_TYPES.ETH_GET_FEE_QUOTE_OR_DATA];
|
|
252
274
|
const TRANSACTION_ENVELOPE_TYPES = {
|
|
253
275
|
LEGACY: "0x0",
|
|
254
276
|
ACCESS_LIST: "0x1",
|
|
@@ -347,6 +369,7 @@ exports.BASE_CHAIN_ID = BASE_CHAIN_ID;
|
|
|
347
369
|
exports.BASE_TESTNET_CHAIN_ID = BASE_TESTNET_CHAIN_ID;
|
|
348
370
|
exports.BSC_MAINNET_CHAIN_ID = BSC_MAINNET_CHAIN_ID;
|
|
349
371
|
exports.BSC_TESTNET_CHAIN_ID = BSC_TESTNET_CHAIN_ID;
|
|
372
|
+
exports.BUNDLER_METHOD_TYPES = BUNDLER_METHOD_TYPES;
|
|
350
373
|
exports.CELO_MAINNET_CHAIN_ID = CELO_MAINNET_CHAIN_ID;
|
|
351
374
|
exports.CHAIN_ID_TO_GAS_LIMIT_BUFFER_MAP = CHAIN_ID_TO_GAS_LIMIT_BUFFER_MAP;
|
|
352
375
|
exports.COINGECKO_PLATFORMS_CHAIN_CODE_MAP = COINGECKO_PLATFORMS_CHAIN_CODE_MAP;
|
|
@@ -370,6 +393,7 @@ exports.MM_TOKEN_API_SUPPORTED_CHAINS = MM_TOKEN_API_SUPPORTED_CHAINS;
|
|
|
370
393
|
exports.OLD_ERC721_LIST = OLD_ERC721_LIST;
|
|
371
394
|
exports.OPTIMISM_MAINNET_CHAIN_ID = OPTIMISM_MAINNET_CHAIN_ID;
|
|
372
395
|
exports.OPTIMISM_TESTNET_CHAIN_ID = OPTIMISM_TESTNET_CHAIN_ID;
|
|
396
|
+
exports.PAYMASTER_METHOD_TYPES = PAYMASTER_METHOD_TYPES;
|
|
373
397
|
exports.POLYGON_AMOY_CHAIN_ID = POLYGON_AMOY_CHAIN_ID;
|
|
374
398
|
exports.POLYGON_CHAIN_ID = POLYGON_CHAIN_ID;
|
|
375
399
|
exports.SEPOLIA_CHAIN_ID = SEPOLIA_CHAIN_ID;
|
|
@@ -146,7 +146,7 @@ class AccountAbstractionController extends BaseController {
|
|
|
146
146
|
calls: [{
|
|
147
147
|
to: txParams.to,
|
|
148
148
|
// Explicit conversation required to avoid value being passed as hex
|
|
149
|
-
value: BigInt(txParams.value),
|
|
149
|
+
value: txParams.value ? BigInt(txParams.value) : undefined,
|
|
150
150
|
data: txParams.data
|
|
151
151
|
}],
|
|
152
152
|
maxFeePerGas: txParams.maxFeePerGas ? BigInt(txParams.maxFeePerGas) : undefined,
|
|
@@ -185,6 +185,42 @@ class AccountAbstractionController extends BaseController {
|
|
|
185
185
|
});
|
|
186
186
|
return txReceipt.receipt.transactionHash;
|
|
187
187
|
}
|
|
188
|
+
async signTransaction(id, tx, address) {
|
|
189
|
+
var _txParams$chainId2;
|
|
190
|
+
if (address.toLowerCase() !== this.smartAccount.address.toLowerCase()) {
|
|
191
|
+
throw new Error("Invalid address");
|
|
192
|
+
}
|
|
193
|
+
const txParams = tx;
|
|
194
|
+
const userOpMeta = {
|
|
195
|
+
transactionParams: txParams,
|
|
196
|
+
chainId: (_txParams$chainId2 = txParams.chainId) !== null && _txParams$chainId2 !== void 0 ? _txParams$chainId2 : this.getProviderConfig().chainId,
|
|
197
|
+
createdAt: new Date(),
|
|
198
|
+
status: TransactionStatus.approved
|
|
199
|
+
};
|
|
200
|
+
this.updateUserOpMeta(id, userOpMeta);
|
|
201
|
+
const request = await this.bundlerClient.prepareUserOperation({
|
|
202
|
+
account: this.smartAccount,
|
|
203
|
+
calls: [{
|
|
204
|
+
to: txParams.to,
|
|
205
|
+
// Explicit conversation required to avoid value being passed as hex
|
|
206
|
+
value: txParams.value ? BigInt(txParams.value) : undefined,
|
|
207
|
+
data: txParams.data
|
|
208
|
+
}],
|
|
209
|
+
maxFeePerGas: txParams.maxFeePerGas ? BigInt(txParams.maxFeePerGas) : undefined,
|
|
210
|
+
maxPriorityFeePerGas: txParams.maxPriorityFeePerGas ? BigInt(txParams.maxPriorityFeePerGas) : undefined,
|
|
211
|
+
callGasLimit: txParams.callGasLimit ? BigInt(txParams.callGasLimit) : undefined,
|
|
212
|
+
preVerificationGas: txParams.preVerificationGas ? BigInt(txParams.preVerificationGas) : undefined,
|
|
213
|
+
verificationGasLimit: txParams.verificationGasLimit ? BigInt(txParams.verificationGasLimit) : undefined,
|
|
214
|
+
paymasterVerificationGasLimit: txParams.paymasterVerificationGasLimit ? BigInt(txParams.paymasterVerificationGasLimit) : undefined,
|
|
215
|
+
paymasterPostOpGasLimit: txParams.paymasterPostOpGasLimit ? BigInt(txParams.paymasterPostOpGasLimit) : undefined
|
|
216
|
+
});
|
|
217
|
+
const signature = await this.smartAccount.signUserOperation(request);
|
|
218
|
+
this.updateUserOpMeta(id, {
|
|
219
|
+
signature,
|
|
220
|
+
status: TransactionStatus.signed
|
|
221
|
+
});
|
|
222
|
+
return signature;
|
|
223
|
+
}
|
|
188
224
|
async estimateGas(txParams, address) {
|
|
189
225
|
if (address.toLowerCase() !== this.smartAccount.address.toLowerCase()) throw new Error("Invalid address");
|
|
190
226
|
const calls = [{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { PROVIDER_JRPC_METHODS, createGenericJRPCMiddleware } from '@toruslabs/base-controllers';
|
|
1
|
+
import { PROVIDER_JRPC_METHODS, createFetchMiddleware, createGenericJRPCMiddleware } from '@toruslabs/base-controllers';
|
|
2
2
|
import { createAsyncMiddleware, mergeMiddleware, createScaffoldMiddleware } from '@web3auth/auth';
|
|
3
|
-
import { METHOD_TYPES, TRANSACTION_ENVELOPE_TYPES } from '../utils/constants.js';
|
|
3
|
+
import { METHOD_TYPES, TRANSACTION_ENVELOPE_TYPES, BUNDLER_METHOD_TYPES, PAYMASTER_METHOD_TYPES } from '../utils/constants.js';
|
|
4
4
|
|
|
5
5
|
function createGetAccountsMiddleware({
|
|
6
6
|
getAccounts
|
|
@@ -288,11 +288,46 @@ function createRequestAccountsMiddleware({
|
|
|
288
288
|
return undefined;
|
|
289
289
|
});
|
|
290
290
|
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Middleware to handle bundler/paymaster rpc method
|
|
294
|
+
*/
|
|
295
|
+
function createAAMiddleware({
|
|
296
|
+
bundlerUrl,
|
|
297
|
+
paymasterUrl
|
|
298
|
+
}) {
|
|
299
|
+
// forward request to bundler/paymaster
|
|
300
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
301
|
+
const middlewares = [];
|
|
302
|
+
const bundlerFetchMiddleware = createFetchMiddleware({
|
|
303
|
+
rpcTarget: bundlerUrl
|
|
304
|
+
});
|
|
305
|
+
// NOTE: bundler/paymaster rpc only accept number as request id, we might need to handle that here if client doesn't handle request id themselves
|
|
306
|
+
middlewares.push((request, response, next, end) => {
|
|
307
|
+
if (!BUNDLER_METHOD_TYPES.includes(request.method)) {
|
|
308
|
+
return next();
|
|
309
|
+
}
|
|
310
|
+
bundlerFetchMiddleware(request, response, next, end);
|
|
311
|
+
});
|
|
312
|
+
if (paymasterUrl) {
|
|
313
|
+
const paymasterFetchMiddleware = createFetchMiddleware({
|
|
314
|
+
rpcTarget: paymasterUrl
|
|
315
|
+
});
|
|
316
|
+
middlewares.push((request, response, next, end) => {
|
|
317
|
+
if (!PAYMASTER_METHOD_TYPES.includes(request.method)) {
|
|
318
|
+
return next();
|
|
319
|
+
}
|
|
320
|
+
paymasterFetchMiddleware(request, response, next, end);
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
return mergeMiddleware(middlewares);
|
|
324
|
+
}
|
|
291
325
|
function createEthereumMiddleware(providerHandlers) {
|
|
292
326
|
const {
|
|
293
327
|
requestAccounts,
|
|
294
328
|
getAccounts,
|
|
295
329
|
getPrivateKey,
|
|
330
|
+
getPublicKey,
|
|
296
331
|
processTransaction,
|
|
297
332
|
processSignTransaction,
|
|
298
333
|
processEstimateUserOperationGas,
|
|
@@ -305,16 +340,17 @@ function createEthereumMiddleware(providerHandlers) {
|
|
|
305
340
|
processWalletSwitchChain,
|
|
306
341
|
processAddEthereumChain,
|
|
307
342
|
getProviderState,
|
|
343
|
+
aaConfig,
|
|
308
344
|
version
|
|
309
345
|
} = providerHandlers;
|
|
310
|
-
|
|
346
|
+
const middlewares = [createScaffoldMiddleware({
|
|
311
347
|
version,
|
|
312
348
|
[PROVIDER_JRPC_METHODS.GET_PROVIDER_STATE]: getProviderState
|
|
313
349
|
}), createRequestAccountsMiddleware({
|
|
314
350
|
requestAccounts
|
|
315
351
|
}), createGetAccountsMiddleware({
|
|
316
352
|
getAccounts
|
|
317
|
-
}), createGenericJRPCMiddleware(METHOD_TYPES.ETH_PRIVATE_KEY, getPrivateKey), createGenericJRPCMiddleware(METHOD_TYPES.PRIVATE_KEY, getPrivateKey), createProcessTransactionMiddleware({
|
|
353
|
+
}), createGenericJRPCMiddleware(METHOD_TYPES.ETH_PRIVATE_KEY, getPrivateKey), createGenericJRPCMiddleware(METHOD_TYPES.PRIVATE_KEY, getPrivateKey), createGenericJRPCMiddleware(METHOD_TYPES.ETH_PUBLIC_KEY, getPublicKey), createGenericJRPCMiddleware(METHOD_TYPES.PUBLIC_KEY, getPublicKey), createProcessTransactionMiddleware({
|
|
318
354
|
processTransaction
|
|
319
355
|
}), createProcessSignTransactionMiddleware({
|
|
320
356
|
processSignTransaction
|
|
@@ -336,7 +372,14 @@ function createEthereumMiddleware(providerHandlers) {
|
|
|
336
372
|
processWalletSwitchChain
|
|
337
373
|
}), createProcessAddEthereumChain({
|
|
338
374
|
processAddEthereumChain
|
|
339
|
-
})]
|
|
375
|
+
})];
|
|
376
|
+
if (aaConfig) {
|
|
377
|
+
middlewares.push(createAAMiddleware({
|
|
378
|
+
bundlerUrl: aaConfig.bundlerUrl,
|
|
379
|
+
paymasterUrl: aaConfig.paymasterUrl
|
|
380
|
+
}));
|
|
381
|
+
}
|
|
382
|
+
return mergeMiddleware(middlewares);
|
|
340
383
|
}
|
|
341
384
|
|
|
342
|
-
export { createEthereumMiddleware, createGetAccountsMiddleware, createPendingNonceMiddleware, createPendingTxMiddleware, createProcessAddEthereumChain, createProcessEstimateUserOperationGasMiddleware, createProcessEthSignMessage, createProcessPersonalMessage, createProcessSignTransactionMiddleware, createProcessSwitchEthereumChain, createProcessTransactionMiddleware, createProcessTypedMessageV4, createProcessWalletSwitchChain, createRequestAccountsMiddleware, formatTxMetaForRpcResult };
|
|
385
|
+
export { createAAMiddleware, createEthereumMiddleware, createGetAccountsMiddleware, createPendingNonceMiddleware, createPendingTxMiddleware, createProcessAddEthereumChain, createProcessEstimateUserOperationGasMiddleware, createProcessEthSignMessage, createProcessPersonalMessage, createProcessSignTransactionMiddleware, createProcessSwitchEthereumChain, createProcessTransactionMiddleware, createProcessTypedMessageV4, createProcessWalletSwitchChain, createRequestAccountsMiddleware, formatTxMetaForRpcResult };
|
package/dist/lib.esm/index.js
CHANGED
|
@@ -10,7 +10,7 @@ export { PersonalMessageController } from './Message/PersonalMessageController.j
|
|
|
10
10
|
export { SwitchChainController } from './Message/SwitchChainController.js';
|
|
11
11
|
export { TypedMessageController } from './Message/TypedMessageController.js';
|
|
12
12
|
export { normalizeMessageData, validateAddChainData, validateAddress, validateSignMessageData, validateSwitchChainData, validateTypedSignMessageDataV4 } from './Message/utils.js';
|
|
13
|
-
export { createEthereumMiddleware, createGetAccountsMiddleware, createPendingNonceMiddleware, createPendingTxMiddleware, createProcessAddEthereumChain, createProcessEstimateUserOperationGasMiddleware, createProcessEthSignMessage, createProcessPersonalMessage, createProcessSignTransactionMiddleware, createProcessSwitchEthereumChain, createProcessTransactionMiddleware, createProcessTypedMessageV4, createProcessWalletSwitchChain, createRequestAccountsMiddleware, formatTxMetaForRpcResult } from './Network/createEthereumMiddleware.js';
|
|
13
|
+
export { createAAMiddleware, createEthereumMiddleware, createGetAccountsMiddleware, createPendingNonceMiddleware, createPendingTxMiddleware, createProcessAddEthereumChain, createProcessEstimateUserOperationGasMiddleware, createProcessEthSignMessage, createProcessPersonalMessage, createProcessSignTransactionMiddleware, createProcessSwitchEthereumChain, createProcessTransactionMiddleware, createProcessTypedMessageV4, createProcessWalletSwitchChain, createRequestAccountsMiddleware, formatTxMetaForRpcResult } from './Network/createEthereumMiddleware.js';
|
|
14
14
|
export { createChainIdMiddleware, createJsonRpcClient, createProviderConfigMiddleware } from './Network/createJsonRpcClient.js';
|
|
15
15
|
export { NetworkController } from './Network/NetworkController.js';
|
|
16
16
|
export { NftHandler } from './Nfts/NftHandler.js';
|
|
@@ -27,7 +27,7 @@ export { generateHistoryEntry, replayHistory, snapshotFromTxMeta } from './Trans
|
|
|
27
27
|
export { TransactionStateManager } from './Transaction/TransactionStateManager.js';
|
|
28
28
|
export { determineTransactionType, ensureFieldIsString, ensureMutuallyExclusiveFieldsNotProvided, getFinalStates, isEIP1559Transaction, isLegacyTransaction, normalizeAndValidateTxParams, normalizeTxParameters, parseStandardTokenTransactionData, readAddressAsContract, transactionMatchesNetwork, validateFrom, validateRecipient, validateTxParameters } from './Transaction/TransactionUtils.js';
|
|
29
29
|
export { erc1155Abi, erc20Abi, erc721Abi, singleBalanceCheckerAbi } from './utils/abis.js';
|
|
30
|
-
export { ARBITRUM_MAINNET_CHAIN_ID, ARBITRUM_TESTNET_CHAIN_ID, AVALANCHE_MAINNET_CHAIN_ID, AVALANCHE_TESTNET_CHAIN_ID, BASE_CHAIN_ID, BASE_TESTNET_CHAIN_ID, BSC_MAINNET_CHAIN_ID, BSC_TESTNET_CHAIN_ID, CELO_MAINNET_CHAIN_ID, CHAIN_ID_TO_GAS_LIMIT_BUFFER_MAP, COINGECKO_PLATFORMS_CHAIN_CODE_MAP, COINGECKO_SUPPORTED_CURRENCIES, CONTRACT_TYPE_ERC1155, CONTRACT_TYPE_ERC20, CONTRACT_TYPE_ERC721, CONTRACT_TYPE_ETH, ERC1155_INTERFACE_ID, ERC721_ENUMERABLE_INTERFACE_ID, ERC721_INTERFACE_ID, ERC721_METADATA_INTERFACE_ID, GAS_ESTIMATE_TYPES, LINEA_CHAIN_ID, LINEA_SEPOLIA_CHAIN_ID, LOCALHOST, MAINNET_CHAIN_ID, METHOD_TYPES, MM_NFT_API_SUPPORTED_CHAINS, MM_TOKEN_API_SUPPORTED_CHAINS, OLD_ERC721_LIST, OPTIMISM_MAINNET_CHAIN_ID, OPTIMISM_TESTNET_CHAIN_ID, POLYGON_AMOY_CHAIN_ID, POLYGON_CHAIN_ID, SEPOLIA_CHAIN_ID, SMART_ACCOUNT, SUPPORTED_NETWORKS, TEST_CHAINS, TRANSACTION_ENVELOPE_TYPES, XDAI_CHAIN_ID } from './utils/constants.js';
|
|
30
|
+
export { ARBITRUM_MAINNET_CHAIN_ID, ARBITRUM_TESTNET_CHAIN_ID, AVALANCHE_MAINNET_CHAIN_ID, AVALANCHE_TESTNET_CHAIN_ID, BASE_CHAIN_ID, BASE_TESTNET_CHAIN_ID, BSC_MAINNET_CHAIN_ID, BSC_TESTNET_CHAIN_ID, BUNDLER_METHOD_TYPES, CELO_MAINNET_CHAIN_ID, CHAIN_ID_TO_GAS_LIMIT_BUFFER_MAP, COINGECKO_PLATFORMS_CHAIN_CODE_MAP, COINGECKO_SUPPORTED_CURRENCIES, CONTRACT_TYPE_ERC1155, CONTRACT_TYPE_ERC20, CONTRACT_TYPE_ERC721, CONTRACT_TYPE_ETH, ERC1155_INTERFACE_ID, ERC721_ENUMERABLE_INTERFACE_ID, ERC721_INTERFACE_ID, ERC721_METADATA_INTERFACE_ID, GAS_ESTIMATE_TYPES, LINEA_CHAIN_ID, LINEA_SEPOLIA_CHAIN_ID, LOCALHOST, MAINNET_CHAIN_ID, METHOD_TYPES, MM_NFT_API_SUPPORTED_CHAINS, MM_TOKEN_API_SUPPORTED_CHAINS, OLD_ERC721_LIST, OPTIMISM_MAINNET_CHAIN_ID, OPTIMISM_TESTNET_CHAIN_ID, PAYMASTER_METHOD_TYPES, POLYGON_AMOY_CHAIN_ID, POLYGON_CHAIN_ID, SEPOLIA_CHAIN_ID, SMART_ACCOUNT, SUPPORTED_NETWORKS, TEST_CHAINS, TRANSACTION_ENVELOPE_TYPES, XDAI_CHAIN_ID } from './utils/constants.js';
|
|
31
31
|
export { addCurrencies, conversionGTE, conversionGreaterThan, conversionLTE, conversionLessThan, conversionMax, conversionUtil, decGWEIToHexWEI, getBigNumber, hexWEIToDecGWEI, multiplyCurrencies, subtractCurrencies, toNegative } from './utils/conversionUtils.js';
|
|
32
32
|
export { BNToHex, GAS_LIMITS, addEtherscanTransactions, bnLessThan, formatDate, formatPastTx, formatTime, getChainType, getEthTxStatus, getEtherScanHashLink, getIpfsEndpoint, hexToBn, isAddressByChainId, sanitizeNftMetdataUrl, toChecksumAddressByChainId } from './utils/helpers.js';
|
|
33
33
|
export { BiconomySmartAccount } from './AccountAbstraction/smartAccounts/BiconomySmartAccount.js';
|
|
@@ -229,7 +229,25 @@ const METHOD_TYPES = {
|
|
|
229
229
|
GET_ACCOUNTS: "eth_accounts",
|
|
230
230
|
ETH_TRANSACTION: "eth_sendTransaction",
|
|
231
231
|
ETH_SIGN_TRANSACTION: "eth_signTransaction",
|
|
232
|
+
// start bundler methods
|
|
232
233
|
ETH_ESTIMATE_USER_OPERATION_GAS: "eth_estimateUserOperationGas",
|
|
234
|
+
ETH_GET_SUPPORTED_ENTRY_POINTS: "eth_supportedEntryPoints",
|
|
235
|
+
ETH_GET_USER_OPERATION: "eth_getUserOperationByHash",
|
|
236
|
+
ETH_GET_USER_OPERATION_RECEIPT: "eth_getUserOperationReceipt",
|
|
237
|
+
ETH_SEND_USER_OPERATION: "eth_sendUserOperation",
|
|
238
|
+
PIMLICO_GET_USER_OPERATION_GAS_PRICE: "pimlico_getUserOperationGasPrice",
|
|
239
|
+
PIMLICO_GET_USER_OPERATION_STATUS: "pimlico_getUserOperationStatus",
|
|
240
|
+
PIMLICO_SIMULATE_ASSET_CHANGES: "pimlico_simulateAssetChanges",
|
|
241
|
+
BICONOMY_GET_GAS_FEE_VALUES: "biconomy_getGasFeeValues",
|
|
242
|
+
BICONOMY_GET_USER_OPERATION_STATUS: "biconomy_getUserOperationStatus",
|
|
243
|
+
// end bundler methods
|
|
244
|
+
// start paymaster methods
|
|
245
|
+
ETH_GET_PAYMASTER_DATA: "pm_getPaymasterData",
|
|
246
|
+
ETH_GET_PAYMASTER_STUB_DATA: "pm_getPaymasterStubData",
|
|
247
|
+
ETH_SPONSOR_USER_OPERATION: "pm_sponsorUserOperation",
|
|
248
|
+
ETH_GET_FEE_QUOTE_OR_DATA: "pm_getFeeQuoteOrData",
|
|
249
|
+
PIMLICO_GET_TOKEN_QUOTES: "pimlico_getTokenQuotes",
|
|
250
|
+
// end paymaster methods
|
|
233
251
|
ETH_REQUEST_ACCOUNTS: "eth_requestAccounts",
|
|
234
252
|
ETH_SEND_RAW_TRANSACTION: "eth_sendRawTransaction",
|
|
235
253
|
ETH_SIGN: "eth_sign",
|
|
@@ -244,9 +262,13 @@ const METHOD_TYPES = {
|
|
|
244
262
|
ETH_GET_GAS_PRICE: "eth_gasPrice",
|
|
245
263
|
ETH_PRIVATE_KEY: "eth_privateKey",
|
|
246
264
|
PRIVATE_KEY: "private_key",
|
|
265
|
+
ETH_PUBLIC_KEY: "eth_publicKey",
|
|
266
|
+
PUBLIC_KEY: "public_key",
|
|
247
267
|
SWITCH_CHAIN: "wallet_switchEthereumChain",
|
|
248
268
|
ADD_CHAIN: "wallet_addEthereumChain"
|
|
249
269
|
};
|
|
270
|
+
const BUNDLER_METHOD_TYPES = [METHOD_TYPES.ETH_ESTIMATE_USER_OPERATION_GAS, METHOD_TYPES.ETH_GET_SUPPORTED_ENTRY_POINTS, METHOD_TYPES.ETH_GET_USER_OPERATION, METHOD_TYPES.ETH_GET_USER_OPERATION_RECEIPT, METHOD_TYPES.ETH_SEND_USER_OPERATION, METHOD_TYPES.PIMLICO_GET_USER_OPERATION_GAS_PRICE, METHOD_TYPES.PIMLICO_GET_USER_OPERATION_STATUS, METHOD_TYPES.PIMLICO_SIMULATE_ASSET_CHANGES, METHOD_TYPES.BICONOMY_GET_GAS_FEE_VALUES, METHOD_TYPES.BICONOMY_GET_USER_OPERATION_STATUS];
|
|
271
|
+
const PAYMASTER_METHOD_TYPES = [METHOD_TYPES.ETH_GET_PAYMASTER_DATA, METHOD_TYPES.ETH_GET_PAYMASTER_STUB_DATA, METHOD_TYPES.ETH_SPONSOR_USER_OPERATION, METHOD_TYPES.PIMLICO_GET_TOKEN_QUOTES, METHOD_TYPES.ETH_GET_FEE_QUOTE_OR_DATA];
|
|
250
272
|
const TRANSACTION_ENVELOPE_TYPES = {
|
|
251
273
|
LEGACY: "0x0",
|
|
252
274
|
ACCESS_LIST: "0x1",
|
|
@@ -338,4 +360,4 @@ const SMART_ACCOUNT = {
|
|
|
338
360
|
METAMASK: "metamask"
|
|
339
361
|
};
|
|
340
362
|
|
|
341
|
-
export { ARBITRUM_MAINNET_CHAIN_ID, ARBITRUM_TESTNET_CHAIN_ID, AVALANCHE_MAINNET_CHAIN_ID, AVALANCHE_TESTNET_CHAIN_ID, BASE_CHAIN_ID, BASE_TESTNET_CHAIN_ID, BSC_MAINNET_CHAIN_ID, BSC_TESTNET_CHAIN_ID, CELO_MAINNET_CHAIN_ID, CHAIN_ID_TO_GAS_LIMIT_BUFFER_MAP, COINGECKO_PLATFORMS_CHAIN_CODE_MAP, COINGECKO_SUPPORTED_CURRENCIES, CONTRACT_TYPE_ERC1155, CONTRACT_TYPE_ERC20, CONTRACT_TYPE_ERC721, CONTRACT_TYPE_ETH, ERC1155_INTERFACE_ID, ERC721_ENUMERABLE_INTERFACE_ID, ERC721_INTERFACE_ID, ERC721_METADATA_INTERFACE_ID, GAS_ESTIMATE_TYPES, LINEA_CHAIN_ID, LINEA_SEPOLIA_CHAIN_ID, LOCALHOST, MAINNET_CHAIN_ID, METHOD_TYPES, MM_NFT_API_SUPPORTED_CHAINS, MM_TOKEN_API_SUPPORTED_CHAINS, OLD_ERC721_LIST, OPTIMISM_MAINNET_CHAIN_ID, OPTIMISM_TESTNET_CHAIN_ID, POLYGON_AMOY_CHAIN_ID, POLYGON_CHAIN_ID, SEPOLIA_CHAIN_ID, SMART_ACCOUNT, SUPPORTED_NETWORKS, TEST_CHAINS, TRANSACTION_ENVELOPE_TYPES, XDAI_CHAIN_ID };
|
|
363
|
+
export { ARBITRUM_MAINNET_CHAIN_ID, ARBITRUM_TESTNET_CHAIN_ID, AVALANCHE_MAINNET_CHAIN_ID, AVALANCHE_TESTNET_CHAIN_ID, BASE_CHAIN_ID, BASE_TESTNET_CHAIN_ID, BSC_MAINNET_CHAIN_ID, BSC_TESTNET_CHAIN_ID, BUNDLER_METHOD_TYPES, CELO_MAINNET_CHAIN_ID, CHAIN_ID_TO_GAS_LIMIT_BUFFER_MAP, COINGECKO_PLATFORMS_CHAIN_CODE_MAP, COINGECKO_SUPPORTED_CURRENCIES, CONTRACT_TYPE_ERC1155, CONTRACT_TYPE_ERC20, CONTRACT_TYPE_ERC721, CONTRACT_TYPE_ETH, ERC1155_INTERFACE_ID, ERC721_ENUMERABLE_INTERFACE_ID, ERC721_INTERFACE_ID, ERC721_METADATA_INTERFACE_ID, GAS_ESTIMATE_TYPES, LINEA_CHAIN_ID, LINEA_SEPOLIA_CHAIN_ID, LOCALHOST, MAINNET_CHAIN_ID, METHOD_TYPES, MM_NFT_API_SUPPORTED_CHAINS, MM_TOKEN_API_SUPPORTED_CHAINS, OLD_ERC721_LIST, OPTIMISM_MAINNET_CHAIN_ID, OPTIMISM_TESTNET_CHAIN_ID, PAYMASTER_METHOD_TYPES, POLYGON_AMOY_CHAIN_ID, POLYGON_CHAIN_ID, SEPOLIA_CHAIN_ID, SMART_ACCOUNT, SUPPORTED_NETWORKS, TEST_CHAINS, TRANSACTION_ENVELOPE_TYPES, XDAI_CHAIN_ID };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toruslabs/ethereum-controllers",
|
|
3
|
-
"version": "8.4.
|
|
3
|
+
"version": "8.4.4",
|
|
4
4
|
"homepage": "https://github.com/torusresearch/controllers#readme",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -20,21 +20,21 @@
|
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@ethereumjs/util": "^9.1.0",
|
|
23
|
-
"@metamask/delegation-toolkit": "^0.
|
|
24
|
-
"@toruslabs/base-controllers": "^8.4.
|
|
23
|
+
"@metamask/delegation-toolkit": "^0.11.0",
|
|
24
|
+
"@toruslabs/base-controllers": "^8.4.4",
|
|
25
25
|
"@toruslabs/http-helpers": "^8.1.1",
|
|
26
|
-
"@web3auth/auth": "^10.4.
|
|
26
|
+
"@web3auth/auth": "^10.4.1",
|
|
27
27
|
"async-mutex": "^0.5.0",
|
|
28
28
|
"bignumber.js": "^9.2.1",
|
|
29
|
-
"bn.js": "^5.2.
|
|
29
|
+
"bn.js": "^5.2.2",
|
|
30
30
|
"deepmerge": "^4.3.1",
|
|
31
|
-
"ethers": "^6.
|
|
31
|
+
"ethers": "^6.14.0",
|
|
32
32
|
"fast-json-patch": "^3.1.1",
|
|
33
33
|
"fast-safe-stringify": "^2.1.1",
|
|
34
34
|
"jsonschema": "^1.5.0",
|
|
35
35
|
"loglevel": "^1.9.2",
|
|
36
|
-
"permissionless": "^0.2.
|
|
37
|
-
"viem": "^2.
|
|
36
|
+
"permissionless": "^0.2.46",
|
|
37
|
+
"viem": "^2.23.2"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"@babel/runtime": "7.x"
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"publishConfig": {
|
|
64
64
|
"access": "public"
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "7040c38814fe30e35f1dcd9713de118ded2e3d4a",
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@typechain/ethers-v6": "^0.5.1",
|
|
69
69
|
"typechain": "^8.3.2"
|