@metamask-previews/transaction-controller 45.1.0-preview-ee98fad1 → 45.1.0-preview-df91d059
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 +0 -21
- package/dist/TransactionController.cjs +4 -45
- package/dist/TransactionController.cjs.map +1 -1
- package/dist/TransactionController.d.cts +3 -20
- package/dist/TransactionController.d.cts.map +1 -1
- package/dist/TransactionController.d.mts +3 -20
- package/dist/TransactionController.d.mts.map +1 -1
- package/dist/TransactionController.mjs +4 -45
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs +0 -5
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +0 -51
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +0 -51
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +0 -5
- package/dist/types.mjs.map +1 -1
- package/dist/utils/eip7702.cjs +1 -74
- package/dist/utils/eip7702.cjs.map +1 -1
- package/dist/utils/eip7702.d.cts +1 -38
- package/dist/utils/eip7702.d.cts.map +1 -1
- package/dist/utils/eip7702.d.mts +1 -38
- package/dist/utils/eip7702.d.mts.map +1 -1
- package/dist/utils/eip7702.mjs +2 -72
- package/dist/utils/eip7702.mjs.map +1 -1
- package/dist/utils/validation.cjs +4 -15
- package/dist/utils/validation.cjs.map +1 -1
- package/dist/utils/validation.d.cts +3 -7
- package/dist/utils/validation.d.cts.map +1 -1
- package/dist/utils/validation.d.mts +3 -7
- package/dist/utils/validation.d.mts.map +1 -1
- package/dist/utils/validation.mjs +5 -16
- package/dist/utils/validation.mjs.map +1 -1
- package/package.json +3 -5
- package/dist/abi/IERC7821.cjs +0 -23
- package/dist/abi/IERC7821.cjs.map +0 -1
- package/dist/abi/IERC7821.d.cts +0 -16
- package/dist/abi/IERC7821.d.cts.map +0 -1
- package/dist/abi/IERC7821.d.mts +0 -16
- package/dist/abi/IERC7821.d.mts.map +0 -1
- package/dist/abi/IERC7821.mjs +0 -20
- package/dist/abi/IERC7821.mjs.map +0 -1
- package/dist/utils/batch.cjs +0 -84
- package/dist/utils/batch.cjs.map +0 -1
- package/dist/utils/batch.d.cts +0 -32
- package/dist/utils/batch.d.cts.map +0 -1
- package/dist/utils/batch.d.mts +0 -32
- package/dist/utils/batch.d.mts.map +0 -1
- package/dist/utils/batch.mjs +0 -79
- package/dist/utils/batch.mjs.map +0 -1
- package/dist/utils/feature-flags.cjs +0 -53
- package/dist/utils/feature-flags.cjs.map +0 -1
- package/dist/utils/feature-flags.d.cts +0 -34
- package/dist/utils/feature-flags.d.cts.map +0 -1
- package/dist/utils/feature-flags.d.mts +0 -34
- package/dist/utils/feature-flags.d.mts.map +0 -1
- package/dist/utils/feature-flags.mjs +0 -47
- package/dist/utils/feature-flags.mjs.map +0 -1
package/dist/utils/batch.cjs
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isAtomicBatchSupported = exports.addTransactionBatch = void 0;
|
|
4
|
-
const rpc_errors_1 = require("@metamask/rpc-errors");
|
|
5
|
-
const utils_1 = require("@metamask/utils");
|
|
6
|
-
const eip7702_1 = require("./eip7702.cjs");
|
|
7
|
-
const feature_flags_1 = require("./feature-flags.cjs");
|
|
8
|
-
const logger_1 = require("../logger.cjs");
|
|
9
|
-
const types_1 = require("../types.cjs");
|
|
10
|
-
const log = (0, utils_1.createModuleLogger)(logger_1.projectLogger, 'batch');
|
|
11
|
-
/**
|
|
12
|
-
* Add a batch transaction.
|
|
13
|
-
*
|
|
14
|
-
* @param request - The request object including the user request and necessary callbacks.
|
|
15
|
-
* @returns The batch result object including the batch ID.
|
|
16
|
-
*/
|
|
17
|
-
async function addTransactionBatch(request) {
|
|
18
|
-
const { addTransaction, getChainId, messenger, request: userRequest, } = request;
|
|
19
|
-
const { from, networkClientId, requireApproval, transactions } = userRequest;
|
|
20
|
-
log('Adding', userRequest);
|
|
21
|
-
const chainId = getChainId(networkClientId);
|
|
22
|
-
const ethQuery = request.getEthQuery(networkClientId);
|
|
23
|
-
const isChainSupported = (0, eip7702_1.doesChainSupportEIP7702)(chainId, messenger);
|
|
24
|
-
if (!isChainSupported) {
|
|
25
|
-
log('Chain does not support EIP-7702', chainId);
|
|
26
|
-
throw rpc_errors_1.rpcErrors.internal('Chain does not support EIP-7702');
|
|
27
|
-
}
|
|
28
|
-
const { delegationAddress, isSupported } = await (0, eip7702_1.isAccountUpgradedToEIP7702)(from, chainId, messenger, ethQuery);
|
|
29
|
-
log('Account', { delegationAddress, isSupported });
|
|
30
|
-
if (!isSupported && delegationAddress) {
|
|
31
|
-
log('Account upgraded to unsupported contract', from, delegationAddress);
|
|
32
|
-
throw rpc_errors_1.rpcErrors.internal('Account upgraded to unsupported contract');
|
|
33
|
-
}
|
|
34
|
-
const nestedTransactions = transactions.map((tx) => tx.params);
|
|
35
|
-
const batchParams = (0, eip7702_1.generateEIP7702BatchTransaction)(from, nestedTransactions);
|
|
36
|
-
const txParams = {
|
|
37
|
-
from,
|
|
38
|
-
...batchParams,
|
|
39
|
-
};
|
|
40
|
-
if (!isSupported) {
|
|
41
|
-
const upgradeContractAddress = (0, feature_flags_1.getEIP7702UpgradeContractAddress)(chainId, messenger);
|
|
42
|
-
if (!upgradeContractAddress) {
|
|
43
|
-
throw rpc_errors_1.rpcErrors.internal('Upgrade contract address not found');
|
|
44
|
-
}
|
|
45
|
-
txParams.type = types_1.TransactionEnvelopeType.setCode;
|
|
46
|
-
txParams.authorizationList = [{ address: upgradeContractAddress }];
|
|
47
|
-
}
|
|
48
|
-
log('Adding batch transaction', txParams, networkClientId);
|
|
49
|
-
const { transactionMeta, result } = await addTransaction(txParams, {
|
|
50
|
-
nestedTransactions,
|
|
51
|
-
networkClientId,
|
|
52
|
-
requireApproval,
|
|
53
|
-
type: types_1.TransactionType.batch,
|
|
54
|
-
});
|
|
55
|
-
const batchId = transactionMeta.id;
|
|
56
|
-
// Wait for the transaction to be published.
|
|
57
|
-
await result;
|
|
58
|
-
return {
|
|
59
|
-
batchId,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
exports.addTransactionBatch = addTransactionBatch;
|
|
63
|
-
/**
|
|
64
|
-
* Determine which chains support atomic batch transactions for the given account.
|
|
65
|
-
*
|
|
66
|
-
* @param request - The request object including the account address and necessary callbacks.
|
|
67
|
-
* @returns The chain IDs that support atomic batch transactions.
|
|
68
|
-
*/
|
|
69
|
-
async function isAtomicBatchSupported(request) {
|
|
70
|
-
const { address, getEthQuery, messenger } = request;
|
|
71
|
-
const chainIds7702 = (0, feature_flags_1.getEIP7702SupportedChains)(messenger);
|
|
72
|
-
const chainIds = [];
|
|
73
|
-
for (const chainId of chainIds7702) {
|
|
74
|
-
const ethQuery = getEthQuery(chainId);
|
|
75
|
-
const { isSupported, delegationAddress } = await (0, eip7702_1.isAccountUpgradedToEIP7702)(address, chainId, messenger, ethQuery);
|
|
76
|
-
if (!delegationAddress || isSupported) {
|
|
77
|
-
chainIds.push(chainId);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
log('Atomic batch supported chains', chainIds);
|
|
81
|
-
return chainIds;
|
|
82
|
-
}
|
|
83
|
-
exports.isAtomicBatchSupported = isAtomicBatchSupported;
|
|
84
|
-
//# sourceMappingURL=batch.cjs.map
|
package/dist/utils/batch.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batch.cjs","sourceRoot":"","sources":["../../src/utils/batch.ts"],"names":[],"mappings":"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","sourcesContent":["import type EthQuery from '@metamask/eth-query';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { Hex } from '@metamask/utils';\nimport { createModuleLogger } from '@metamask/utils';\n\nimport {\n doesChainSupportEIP7702,\n generateEIP7702BatchTransaction,\n isAccountUpgradedToEIP7702,\n} from './eip7702';\nimport {\n getEIP7702SupportedChains,\n getEIP7702UpgradeContractAddress,\n} from './feature-flags';\nimport type { TransactionController, TransactionControllerMessenger } from '..';\nimport { projectLogger } from '../logger';\nimport {\n TransactionEnvelopeType,\n type TransactionBatchRequest,\n type TransactionBatchResult,\n type TransactionParams,\n TransactionType,\n} from '../types';\n\ntype AddTransactionBatchRequest = {\n addTransaction: TransactionController['addTransaction'];\n getChainId: (networkClientId: string) => Hex;\n getEthQuery: (networkClientId: string) => EthQuery;\n messenger: TransactionControllerMessenger;\n request: TransactionBatchRequest;\n};\n\ntype IsAtomicBatchSupportedRequest = {\n address: Hex;\n getEthQuery: (chainId: Hex) => EthQuery;\n messenger: TransactionControllerMessenger;\n};\n\nconst log = createModuleLogger(projectLogger, 'batch');\n\n/**\n * Add a batch transaction.\n *\n * @param request - The request object including the user request and necessary callbacks.\n * @returns The batch result object including the batch ID.\n */\nexport async function addTransactionBatch(\n request: AddTransactionBatchRequest,\n): Promise<TransactionBatchResult> {\n const {\n addTransaction,\n getChainId,\n messenger,\n request: userRequest,\n } = request;\n\n const { from, networkClientId, requireApproval, transactions } = userRequest;\n\n log('Adding', userRequest);\n\n const chainId = getChainId(networkClientId);\n const ethQuery = request.getEthQuery(networkClientId);\n const isChainSupported = doesChainSupportEIP7702(chainId, messenger);\n\n if (!isChainSupported) {\n log('Chain does not support EIP-7702', chainId);\n throw rpcErrors.internal('Chain does not support EIP-7702');\n }\n\n const { delegationAddress, isSupported } = await isAccountUpgradedToEIP7702(\n from,\n chainId,\n messenger,\n ethQuery,\n );\n\n log('Account', { delegationAddress, isSupported });\n\n if (!isSupported && delegationAddress) {\n log('Account upgraded to unsupported contract', from, delegationAddress);\n throw rpcErrors.internal('Account upgraded to unsupported contract');\n }\n\n const nestedTransactions = transactions.map((tx) => tx.params);\n const batchParams = generateEIP7702BatchTransaction(from, nestedTransactions);\n\n const txParams: TransactionParams = {\n from,\n ...batchParams,\n };\n\n if (!isSupported) {\n const upgradeContractAddress = getEIP7702UpgradeContractAddress(\n chainId,\n messenger,\n );\n\n if (!upgradeContractAddress) {\n throw rpcErrors.internal('Upgrade contract address not found');\n }\n\n txParams.type = TransactionEnvelopeType.setCode;\n txParams.authorizationList = [{ address: upgradeContractAddress }];\n }\n\n log('Adding batch transaction', txParams, networkClientId);\n\n const { transactionMeta, result } = await addTransaction(txParams, {\n nestedTransactions,\n networkClientId,\n requireApproval,\n type: TransactionType.batch,\n });\n\n const batchId = transactionMeta.id;\n\n // Wait for the transaction to be published.\n await result;\n\n return {\n batchId,\n };\n}\n\n/**\n * Determine which chains support atomic batch transactions for the given account.\n *\n * @param request - The request object including the account address and necessary callbacks.\n * @returns The chain IDs that support atomic batch transactions.\n */\nexport async function isAtomicBatchSupported(\n request: IsAtomicBatchSupportedRequest,\n): Promise<Hex[]> {\n const { address, getEthQuery, messenger } = request;\n\n const chainIds7702 = getEIP7702SupportedChains(messenger);\n const chainIds: Hex[] = [];\n\n for (const chainId of chainIds7702) {\n const ethQuery = getEthQuery(chainId);\n\n const { isSupported, delegationAddress } = await isAccountUpgradedToEIP7702(\n address,\n chainId,\n messenger,\n ethQuery,\n );\n\n if (!delegationAddress || isSupported) {\n chainIds.push(chainId);\n }\n }\n\n log('Atomic batch supported chains', chainIds);\n\n return chainIds;\n}\n"]}
|
package/dist/utils/batch.d.cts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type EthQuery from "@metamask/eth-query";
|
|
2
|
-
import type { Hex } from "@metamask/utils";
|
|
3
|
-
import type { TransactionController, TransactionControllerMessenger } from "../index.cjs";
|
|
4
|
-
import { type TransactionBatchRequest, type TransactionBatchResult } from "../types.cjs";
|
|
5
|
-
type AddTransactionBatchRequest = {
|
|
6
|
-
addTransaction: TransactionController['addTransaction'];
|
|
7
|
-
getChainId: (networkClientId: string) => Hex;
|
|
8
|
-
getEthQuery: (networkClientId: string) => EthQuery;
|
|
9
|
-
messenger: TransactionControllerMessenger;
|
|
10
|
-
request: TransactionBatchRequest;
|
|
11
|
-
};
|
|
12
|
-
type IsAtomicBatchSupportedRequest = {
|
|
13
|
-
address: Hex;
|
|
14
|
-
getEthQuery: (chainId: Hex) => EthQuery;
|
|
15
|
-
messenger: TransactionControllerMessenger;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* Add a batch transaction.
|
|
19
|
-
*
|
|
20
|
-
* @param request - The request object including the user request and necessary callbacks.
|
|
21
|
-
* @returns The batch result object including the batch ID.
|
|
22
|
-
*/
|
|
23
|
-
export declare function addTransactionBatch(request: AddTransactionBatchRequest): Promise<TransactionBatchResult>;
|
|
24
|
-
/**
|
|
25
|
-
* Determine which chains support atomic batch transactions for the given account.
|
|
26
|
-
*
|
|
27
|
-
* @param request - The request object including the account address and necessary callbacks.
|
|
28
|
-
* @returns The chain IDs that support atomic batch transactions.
|
|
29
|
-
*/
|
|
30
|
-
export declare function isAtomicBatchSupported(request: IsAtomicBatchSupportedRequest): Promise<Hex[]>;
|
|
31
|
-
export {};
|
|
32
|
-
//# sourceMappingURL=batch.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batch.d.cts","sourceRoot":"","sources":["../../src/utils/batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,4BAA4B;AAEhD,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAY3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,qBAAW;AAEhF,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAG5B,qBAAiB;AAElB,KAAK,0BAA0B,GAAG;IAChC,cAAc,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACxD,UAAU,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,GAAG,CAAC;IAC7C,WAAW,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,QAAQ,CAAC;IACnD,SAAS,EAAE,8BAA8B,CAAC;IAC1C,OAAO,EAAE,uBAAuB,CAAC;CAClC,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,OAAO,EAAE,GAAG,CAAC;IACb,WAAW,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,QAAQ,CAAC;IACxC,SAAS,EAAE,8BAA8B,CAAC;CAC3C,CAAC;AAIF;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,sBAAsB,CAAC,CA0EjC;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,GAAG,EAAE,CAAC,CAwBhB"}
|
package/dist/utils/batch.d.mts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type EthQuery from "@metamask/eth-query";
|
|
2
|
-
import type { Hex } from "@metamask/utils";
|
|
3
|
-
import type { TransactionController, TransactionControllerMessenger } from "../index.mjs";
|
|
4
|
-
import { type TransactionBatchRequest, type TransactionBatchResult } from "../types.mjs";
|
|
5
|
-
type AddTransactionBatchRequest = {
|
|
6
|
-
addTransaction: TransactionController['addTransaction'];
|
|
7
|
-
getChainId: (networkClientId: string) => Hex;
|
|
8
|
-
getEthQuery: (networkClientId: string) => EthQuery;
|
|
9
|
-
messenger: TransactionControllerMessenger;
|
|
10
|
-
request: TransactionBatchRequest;
|
|
11
|
-
};
|
|
12
|
-
type IsAtomicBatchSupportedRequest = {
|
|
13
|
-
address: Hex;
|
|
14
|
-
getEthQuery: (chainId: Hex) => EthQuery;
|
|
15
|
-
messenger: TransactionControllerMessenger;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* Add a batch transaction.
|
|
19
|
-
*
|
|
20
|
-
* @param request - The request object including the user request and necessary callbacks.
|
|
21
|
-
* @returns The batch result object including the batch ID.
|
|
22
|
-
*/
|
|
23
|
-
export declare function addTransactionBatch(request: AddTransactionBatchRequest): Promise<TransactionBatchResult>;
|
|
24
|
-
/**
|
|
25
|
-
* Determine which chains support atomic batch transactions for the given account.
|
|
26
|
-
*
|
|
27
|
-
* @param request - The request object including the account address and necessary callbacks.
|
|
28
|
-
* @returns The chain IDs that support atomic batch transactions.
|
|
29
|
-
*/
|
|
30
|
-
export declare function isAtomicBatchSupported(request: IsAtomicBatchSupportedRequest): Promise<Hex[]>;
|
|
31
|
-
export {};
|
|
32
|
-
//# sourceMappingURL=batch.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batch.d.mts","sourceRoot":"","sources":["../../src/utils/batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,4BAA4B;AAEhD,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAY3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,qBAAW;AAEhF,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAG5B,qBAAiB;AAElB,KAAK,0BAA0B,GAAG;IAChC,cAAc,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACxD,UAAU,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,GAAG,CAAC;IAC7C,WAAW,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,QAAQ,CAAC;IACnD,SAAS,EAAE,8BAA8B,CAAC;IAC1C,OAAO,EAAE,uBAAuB,CAAC;CAClC,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,OAAO,EAAE,GAAG,CAAC;IACb,WAAW,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,QAAQ,CAAC;IACxC,SAAS,EAAE,8BAA8B,CAAC;CAC3C,CAAC;AAIF;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,sBAAsB,CAAC,CA0EjC;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,GAAG,EAAE,CAAC,CAwBhB"}
|
package/dist/utils/batch.mjs
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { rpcErrors } from "@metamask/rpc-errors";
|
|
2
|
-
import { createModuleLogger } from "@metamask/utils";
|
|
3
|
-
import { doesChainSupportEIP7702, generateEIP7702BatchTransaction, isAccountUpgradedToEIP7702 } from "./eip7702.mjs";
|
|
4
|
-
import { getEIP7702SupportedChains, getEIP7702UpgradeContractAddress } from "./feature-flags.mjs";
|
|
5
|
-
import { projectLogger } from "../logger.mjs";
|
|
6
|
-
import { TransactionEnvelopeType, TransactionType } from "../types.mjs";
|
|
7
|
-
const log = createModuleLogger(projectLogger, 'batch');
|
|
8
|
-
/**
|
|
9
|
-
* Add a batch transaction.
|
|
10
|
-
*
|
|
11
|
-
* @param request - The request object including the user request and necessary callbacks.
|
|
12
|
-
* @returns The batch result object including the batch ID.
|
|
13
|
-
*/
|
|
14
|
-
export async function addTransactionBatch(request) {
|
|
15
|
-
const { addTransaction, getChainId, messenger, request: userRequest, } = request;
|
|
16
|
-
const { from, networkClientId, requireApproval, transactions } = userRequest;
|
|
17
|
-
log('Adding', userRequest);
|
|
18
|
-
const chainId = getChainId(networkClientId);
|
|
19
|
-
const ethQuery = request.getEthQuery(networkClientId);
|
|
20
|
-
const isChainSupported = doesChainSupportEIP7702(chainId, messenger);
|
|
21
|
-
if (!isChainSupported) {
|
|
22
|
-
log('Chain does not support EIP-7702', chainId);
|
|
23
|
-
throw rpcErrors.internal('Chain does not support EIP-7702');
|
|
24
|
-
}
|
|
25
|
-
const { delegationAddress, isSupported } = await isAccountUpgradedToEIP7702(from, chainId, messenger, ethQuery);
|
|
26
|
-
log('Account', { delegationAddress, isSupported });
|
|
27
|
-
if (!isSupported && delegationAddress) {
|
|
28
|
-
log('Account upgraded to unsupported contract', from, delegationAddress);
|
|
29
|
-
throw rpcErrors.internal('Account upgraded to unsupported contract');
|
|
30
|
-
}
|
|
31
|
-
const nestedTransactions = transactions.map((tx) => tx.params);
|
|
32
|
-
const batchParams = generateEIP7702BatchTransaction(from, nestedTransactions);
|
|
33
|
-
const txParams = {
|
|
34
|
-
from,
|
|
35
|
-
...batchParams,
|
|
36
|
-
};
|
|
37
|
-
if (!isSupported) {
|
|
38
|
-
const upgradeContractAddress = getEIP7702UpgradeContractAddress(chainId, messenger);
|
|
39
|
-
if (!upgradeContractAddress) {
|
|
40
|
-
throw rpcErrors.internal('Upgrade contract address not found');
|
|
41
|
-
}
|
|
42
|
-
txParams.type = TransactionEnvelopeType.setCode;
|
|
43
|
-
txParams.authorizationList = [{ address: upgradeContractAddress }];
|
|
44
|
-
}
|
|
45
|
-
log('Adding batch transaction', txParams, networkClientId);
|
|
46
|
-
const { transactionMeta, result } = await addTransaction(txParams, {
|
|
47
|
-
nestedTransactions,
|
|
48
|
-
networkClientId,
|
|
49
|
-
requireApproval,
|
|
50
|
-
type: TransactionType.batch,
|
|
51
|
-
});
|
|
52
|
-
const batchId = transactionMeta.id;
|
|
53
|
-
// Wait for the transaction to be published.
|
|
54
|
-
await result;
|
|
55
|
-
return {
|
|
56
|
-
batchId,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Determine which chains support atomic batch transactions for the given account.
|
|
61
|
-
*
|
|
62
|
-
* @param request - The request object including the account address and necessary callbacks.
|
|
63
|
-
* @returns The chain IDs that support atomic batch transactions.
|
|
64
|
-
*/
|
|
65
|
-
export async function isAtomicBatchSupported(request) {
|
|
66
|
-
const { address, getEthQuery, messenger } = request;
|
|
67
|
-
const chainIds7702 = getEIP7702SupportedChains(messenger);
|
|
68
|
-
const chainIds = [];
|
|
69
|
-
for (const chainId of chainIds7702) {
|
|
70
|
-
const ethQuery = getEthQuery(chainId);
|
|
71
|
-
const { isSupported, delegationAddress } = await isAccountUpgradedToEIP7702(address, chainId, messenger, ethQuery);
|
|
72
|
-
if (!delegationAddress || isSupported) {
|
|
73
|
-
chainIds.push(chainId);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
log('Atomic batch supported chains', chainIds);
|
|
77
|
-
return chainIds;
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=batch.mjs.map
|
package/dist/utils/batch.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batch.mjs","sourceRoot":"","sources":["../../src/utils/batch.ts"],"names":[],"mappings":"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","sourcesContent":["import type EthQuery from '@metamask/eth-query';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { Hex } from '@metamask/utils';\nimport { createModuleLogger } from '@metamask/utils';\n\nimport {\n doesChainSupportEIP7702,\n generateEIP7702BatchTransaction,\n isAccountUpgradedToEIP7702,\n} from './eip7702';\nimport {\n getEIP7702SupportedChains,\n getEIP7702UpgradeContractAddress,\n} from './feature-flags';\nimport type { TransactionController, TransactionControllerMessenger } from '..';\nimport { projectLogger } from '../logger';\nimport {\n TransactionEnvelopeType,\n type TransactionBatchRequest,\n type TransactionBatchResult,\n type TransactionParams,\n TransactionType,\n} from '../types';\n\ntype AddTransactionBatchRequest = {\n addTransaction: TransactionController['addTransaction'];\n getChainId: (networkClientId: string) => Hex;\n getEthQuery: (networkClientId: string) => EthQuery;\n messenger: TransactionControllerMessenger;\n request: TransactionBatchRequest;\n};\n\ntype IsAtomicBatchSupportedRequest = {\n address: Hex;\n getEthQuery: (chainId: Hex) => EthQuery;\n messenger: TransactionControllerMessenger;\n};\n\nconst log = createModuleLogger(projectLogger, 'batch');\n\n/**\n * Add a batch transaction.\n *\n * @param request - The request object including the user request and necessary callbacks.\n * @returns The batch result object including the batch ID.\n */\nexport async function addTransactionBatch(\n request: AddTransactionBatchRequest,\n): Promise<TransactionBatchResult> {\n const {\n addTransaction,\n getChainId,\n messenger,\n request: userRequest,\n } = request;\n\n const { from, networkClientId, requireApproval, transactions } = userRequest;\n\n log('Adding', userRequest);\n\n const chainId = getChainId(networkClientId);\n const ethQuery = request.getEthQuery(networkClientId);\n const isChainSupported = doesChainSupportEIP7702(chainId, messenger);\n\n if (!isChainSupported) {\n log('Chain does not support EIP-7702', chainId);\n throw rpcErrors.internal('Chain does not support EIP-7702');\n }\n\n const { delegationAddress, isSupported } = await isAccountUpgradedToEIP7702(\n from,\n chainId,\n messenger,\n ethQuery,\n );\n\n log('Account', { delegationAddress, isSupported });\n\n if (!isSupported && delegationAddress) {\n log('Account upgraded to unsupported contract', from, delegationAddress);\n throw rpcErrors.internal('Account upgraded to unsupported contract');\n }\n\n const nestedTransactions = transactions.map((tx) => tx.params);\n const batchParams = generateEIP7702BatchTransaction(from, nestedTransactions);\n\n const txParams: TransactionParams = {\n from,\n ...batchParams,\n };\n\n if (!isSupported) {\n const upgradeContractAddress = getEIP7702UpgradeContractAddress(\n chainId,\n messenger,\n );\n\n if (!upgradeContractAddress) {\n throw rpcErrors.internal('Upgrade contract address not found');\n }\n\n txParams.type = TransactionEnvelopeType.setCode;\n txParams.authorizationList = [{ address: upgradeContractAddress }];\n }\n\n log('Adding batch transaction', txParams, networkClientId);\n\n const { transactionMeta, result } = await addTransaction(txParams, {\n nestedTransactions,\n networkClientId,\n requireApproval,\n type: TransactionType.batch,\n });\n\n const batchId = transactionMeta.id;\n\n // Wait for the transaction to be published.\n await result;\n\n return {\n batchId,\n };\n}\n\n/**\n * Determine which chains support atomic batch transactions for the given account.\n *\n * @param request - The request object including the account address and necessary callbacks.\n * @returns The chain IDs that support atomic batch transactions.\n */\nexport async function isAtomicBatchSupported(\n request: IsAtomicBatchSupportedRequest,\n): Promise<Hex[]> {\n const { address, getEthQuery, messenger } = request;\n\n const chainIds7702 = getEIP7702SupportedChains(messenger);\n const chainIds: Hex[] = [];\n\n for (const chainId of chainIds7702) {\n const ethQuery = getEthQuery(chainId);\n\n const { isSupported, delegationAddress } = await isAccountUpgradedToEIP7702(\n address,\n chainId,\n messenger,\n ethQuery,\n );\n\n if (!delegationAddress || isSupported) {\n chainIds.push(chainId);\n }\n }\n\n log('Atomic batch supported chains', chainIds);\n\n return chainIds;\n}\n"]}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getEIP7702UpgradeContractAddress = exports.getEIP7702ContractAddresses = exports.getEIP7702SupportedChains = exports.FEATURE_FLAG_EIP_7702 = void 0;
|
|
4
|
-
const utils_1 = require("@metamask/utils");
|
|
5
|
-
const logger_1 = require("../logger.cjs");
|
|
6
|
-
exports.FEATURE_FLAG_EIP_7702 = 'confirmations-eip-7702';
|
|
7
|
-
const log = (0, utils_1.createModuleLogger)(logger_1.projectLogger, 'feature-flags');
|
|
8
|
-
/**
|
|
9
|
-
* Retrieves the supported EIP-7702 chains.
|
|
10
|
-
*
|
|
11
|
-
* @param messenger - The controller messenger instance.
|
|
12
|
-
* @returns The supported chains.
|
|
13
|
-
*/
|
|
14
|
-
function getEIP7702SupportedChains(messenger) {
|
|
15
|
-
const featureFlags = getFeatureFlags(messenger);
|
|
16
|
-
return featureFlags?.[exports.FEATURE_FLAG_EIP_7702]?.supportedChains ?? [];
|
|
17
|
-
}
|
|
18
|
-
exports.getEIP7702SupportedChains = getEIP7702SupportedChains;
|
|
19
|
-
/**
|
|
20
|
-
* Retrieves the supported EIP-7702 contract addresses for a given chain ID.
|
|
21
|
-
*
|
|
22
|
-
* @param chainId - The chain ID.
|
|
23
|
-
* @param messenger - The controller messenger instance.
|
|
24
|
-
* @returns The supported contract addresses.
|
|
25
|
-
*/
|
|
26
|
-
function getEIP7702ContractAddresses(chainId, messenger) {
|
|
27
|
-
const featureFlags = getFeatureFlags(messenger);
|
|
28
|
-
return (featureFlags?.[exports.FEATURE_FLAG_EIP_7702]?.contractAddresses?.[chainId.toLowerCase()] ?? []);
|
|
29
|
-
}
|
|
30
|
-
exports.getEIP7702ContractAddresses = getEIP7702ContractAddresses;
|
|
31
|
-
/**
|
|
32
|
-
* Retrieves the EIP-7702 upgrade contract address.
|
|
33
|
-
*
|
|
34
|
-
* @param chainId - The chain ID.
|
|
35
|
-
* @param messenger - The controller messenger instance.
|
|
36
|
-
* @returns The upgrade contract address.
|
|
37
|
-
*/
|
|
38
|
-
function getEIP7702UpgradeContractAddress(chainId, messenger) {
|
|
39
|
-
return getEIP7702ContractAddresses(chainId, messenger)?.[0];
|
|
40
|
-
}
|
|
41
|
-
exports.getEIP7702UpgradeContractAddress = getEIP7702UpgradeContractAddress;
|
|
42
|
-
/**
|
|
43
|
-
* Retrieves the relevant feature flags from the remote feature flag controller.
|
|
44
|
-
*
|
|
45
|
-
* @param messenger - The messenger instance.
|
|
46
|
-
* @returns The feature flags.
|
|
47
|
-
*/
|
|
48
|
-
function getFeatureFlags(messenger) {
|
|
49
|
-
const featureFlags = messenger.call('RemoteFeatureFlagController:getState').remoteFeatureFlags;
|
|
50
|
-
log('Retrieved feature flags', featureFlags);
|
|
51
|
-
return featureFlags;
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=feature-flags.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags.cjs","sourceRoot":"","sources":["../../src/utils/feature-flags.ts"],"names":[],"mappings":";;;AAAA,2CAA+D;AAE/D,0CAA0C;AAG7B,QAAA,qBAAqB,GAAG,wBAAwB,CAAC;AAU9D,MAAM,GAAG,GAAG,IAAA,0BAAkB,EAAC,sBAAa,EAAE,eAAe,CAAC,CAAC;AAE/D;;;;;GAKG;AACH,SAAgB,yBAAyB,CACvC,SAAyC;IAEzC,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAChD,OAAO,YAAY,EAAE,CAAC,6BAAqB,CAAC,EAAE,eAAe,IAAI,EAAE,CAAC;AACtE,CAAC;AALD,8DAKC;AAED;;;;;;GAMG;AACH,SAAgB,2BAA2B,CACzC,OAAY,EACZ,SAAyC;IAEzC,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAEhD,OAAO,CACL,YAAY,EAAE,CAAC,6BAAqB,CAAC,EAAE,iBAAiB,EAAE,CACxD,OAAO,CAAC,WAAW,EAAS,CAC7B,IAAI,EAAE,CACR,CAAC;AACJ,CAAC;AAXD,kEAWC;AAED;;;;;;GAMG;AACH,SAAgB,gCAAgC,CAC9C,OAAY,EACZ,SAAyC;IAEzC,OAAO,2BAA2B,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AALD,4EAKC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CACtB,SAAyC;IAEzC,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CACjC,sCAAsC,CACvC,CAAC,kBAAkB,CAAC;IAErB,GAAG,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;IAE7C,OAAO,YAAiD,CAAC;AAC3D,CAAC","sourcesContent":["import { createModuleLogger, type Hex } from '@metamask/utils';\n\nimport { projectLogger } from '../logger';\nimport type { TransactionControllerMessenger } from '../TransactionController';\n\nexport const FEATURE_FLAG_EIP_7702 = 'confirmations-eip-7702';\n\nexport type TransactionControllerFeatureFlags = {\n [FEATURE_FLAG_EIP_7702]: {\n contractAddresses: Record<Hex, Hex[]>;\n supportedChains: Hex[];\n upgradeContractAddress: Hex;\n };\n};\n\nconst log = createModuleLogger(projectLogger, 'feature-flags');\n\n/**\n * Retrieves the supported EIP-7702 chains.\n *\n * @param messenger - The controller messenger instance.\n * @returns The supported chains.\n */\nexport function getEIP7702SupportedChains(\n messenger: TransactionControllerMessenger,\n): Hex[] {\n const featureFlags = getFeatureFlags(messenger);\n return featureFlags?.[FEATURE_FLAG_EIP_7702]?.supportedChains ?? [];\n}\n\n/**\n * Retrieves the supported EIP-7702 contract addresses for a given chain ID.\n *\n * @param chainId - The chain ID.\n * @param messenger - The controller messenger instance.\n * @returns The supported contract addresses.\n */\nexport function getEIP7702ContractAddresses(\n chainId: Hex,\n messenger: TransactionControllerMessenger,\n): Hex[] {\n const featureFlags = getFeatureFlags(messenger);\n\n return (\n featureFlags?.[FEATURE_FLAG_EIP_7702]?.contractAddresses?.[\n chainId.toLowerCase() as Hex\n ] ?? []\n );\n}\n\n/**\n * Retrieves the EIP-7702 upgrade contract address.\n *\n * @param chainId - The chain ID.\n * @param messenger - The controller messenger instance.\n * @returns The upgrade contract address.\n */\nexport function getEIP7702UpgradeContractAddress(\n chainId: Hex,\n messenger: TransactionControllerMessenger,\n): Hex | undefined {\n return getEIP7702ContractAddresses(chainId, messenger)?.[0];\n}\n\n/**\n * Retrieves the relevant feature flags from the remote feature flag controller.\n *\n * @param messenger - The messenger instance.\n * @returns The feature flags.\n */\nfunction getFeatureFlags(\n messenger: TransactionControllerMessenger,\n): TransactionControllerFeatureFlags {\n const featureFlags = messenger.call(\n 'RemoteFeatureFlagController:getState',\n ).remoteFeatureFlags;\n\n log('Retrieved feature flags', featureFlags);\n\n return featureFlags as TransactionControllerFeatureFlags;\n}\n"]}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { type Hex } from "@metamask/utils";
|
|
2
|
-
import type { TransactionControllerMessenger } from "../TransactionController.cjs";
|
|
3
|
-
export declare const FEATURE_FLAG_EIP_7702 = "confirmations-eip-7702";
|
|
4
|
-
export type TransactionControllerFeatureFlags = {
|
|
5
|
-
[FEATURE_FLAG_EIP_7702]: {
|
|
6
|
-
contractAddresses: Record<Hex, Hex[]>;
|
|
7
|
-
supportedChains: Hex[];
|
|
8
|
-
upgradeContractAddress: Hex;
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* Retrieves the supported EIP-7702 chains.
|
|
13
|
-
*
|
|
14
|
-
* @param messenger - The controller messenger instance.
|
|
15
|
-
* @returns The supported chains.
|
|
16
|
-
*/
|
|
17
|
-
export declare function getEIP7702SupportedChains(messenger: TransactionControllerMessenger): Hex[];
|
|
18
|
-
/**
|
|
19
|
-
* Retrieves the supported EIP-7702 contract addresses for a given chain ID.
|
|
20
|
-
*
|
|
21
|
-
* @param chainId - The chain ID.
|
|
22
|
-
* @param messenger - The controller messenger instance.
|
|
23
|
-
* @returns The supported contract addresses.
|
|
24
|
-
*/
|
|
25
|
-
export declare function getEIP7702ContractAddresses(chainId: Hex, messenger: TransactionControllerMessenger): Hex[];
|
|
26
|
-
/**
|
|
27
|
-
* Retrieves the EIP-7702 upgrade contract address.
|
|
28
|
-
*
|
|
29
|
-
* @param chainId - The chain ID.
|
|
30
|
-
* @param messenger - The controller messenger instance.
|
|
31
|
-
* @returns The upgrade contract address.
|
|
32
|
-
*/
|
|
33
|
-
export declare function getEIP7702UpgradeContractAddress(chainId: Hex, messenger: TransactionControllerMessenger): Hex | undefined;
|
|
34
|
-
//# sourceMappingURL=feature-flags.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags.d.cts","sourceRoot":"","sources":["../../src/utils/feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,GAAG,EAAE,wBAAwB;AAG/D,OAAO,KAAK,EAAE,8BAA8B,EAAE,qCAAiC;AAE/E,eAAO,MAAM,qBAAqB,2BAA2B,CAAC;AAE9D,MAAM,MAAM,iCAAiC,GAAG;IAC9C,CAAC,qBAAqB,CAAC,EAAE;QACvB,iBAAiB,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACtC,eAAe,EAAE,GAAG,EAAE,CAAC;QACvB,sBAAsB,EAAE,GAAG,CAAC;KAC7B,CAAC;CACH,CAAC;AAIF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,8BAA8B,GACxC,GAAG,EAAE,CAGP;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,8BAA8B,GACxC,GAAG,EAAE,CAQP;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,8BAA8B,GACxC,GAAG,GAAG,SAAS,CAEjB"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { type Hex } from "@metamask/utils";
|
|
2
|
-
import type { TransactionControllerMessenger } from "../TransactionController.mjs";
|
|
3
|
-
export declare const FEATURE_FLAG_EIP_7702 = "confirmations-eip-7702";
|
|
4
|
-
export type TransactionControllerFeatureFlags = {
|
|
5
|
-
[FEATURE_FLAG_EIP_7702]: {
|
|
6
|
-
contractAddresses: Record<Hex, Hex[]>;
|
|
7
|
-
supportedChains: Hex[];
|
|
8
|
-
upgradeContractAddress: Hex;
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* Retrieves the supported EIP-7702 chains.
|
|
13
|
-
*
|
|
14
|
-
* @param messenger - The controller messenger instance.
|
|
15
|
-
* @returns The supported chains.
|
|
16
|
-
*/
|
|
17
|
-
export declare function getEIP7702SupportedChains(messenger: TransactionControllerMessenger): Hex[];
|
|
18
|
-
/**
|
|
19
|
-
* Retrieves the supported EIP-7702 contract addresses for a given chain ID.
|
|
20
|
-
*
|
|
21
|
-
* @param chainId - The chain ID.
|
|
22
|
-
* @param messenger - The controller messenger instance.
|
|
23
|
-
* @returns The supported contract addresses.
|
|
24
|
-
*/
|
|
25
|
-
export declare function getEIP7702ContractAddresses(chainId: Hex, messenger: TransactionControllerMessenger): Hex[];
|
|
26
|
-
/**
|
|
27
|
-
* Retrieves the EIP-7702 upgrade contract address.
|
|
28
|
-
*
|
|
29
|
-
* @param chainId - The chain ID.
|
|
30
|
-
* @param messenger - The controller messenger instance.
|
|
31
|
-
* @returns The upgrade contract address.
|
|
32
|
-
*/
|
|
33
|
-
export declare function getEIP7702UpgradeContractAddress(chainId: Hex, messenger: TransactionControllerMessenger): Hex | undefined;
|
|
34
|
-
//# sourceMappingURL=feature-flags.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags.d.mts","sourceRoot":"","sources":["../../src/utils/feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,GAAG,EAAE,wBAAwB;AAG/D,OAAO,KAAK,EAAE,8BAA8B,EAAE,qCAAiC;AAE/E,eAAO,MAAM,qBAAqB,2BAA2B,CAAC;AAE9D,MAAM,MAAM,iCAAiC,GAAG;IAC9C,CAAC,qBAAqB,CAAC,EAAE;QACvB,iBAAiB,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACtC,eAAe,EAAE,GAAG,EAAE,CAAC;QACvB,sBAAsB,EAAE,GAAG,CAAC;KAC7B,CAAC;CACH,CAAC;AAIF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,8BAA8B,GACxC,GAAG,EAAE,CAGP;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,8BAA8B,GACxC,GAAG,EAAE,CAQP;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,8BAA8B,GACxC,GAAG,GAAG,SAAS,CAEjB"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { createModuleLogger } from "@metamask/utils";
|
|
2
|
-
import { projectLogger } from "../logger.mjs";
|
|
3
|
-
export const FEATURE_FLAG_EIP_7702 = 'confirmations-eip-7702';
|
|
4
|
-
const log = createModuleLogger(projectLogger, 'feature-flags');
|
|
5
|
-
/**
|
|
6
|
-
* Retrieves the supported EIP-7702 chains.
|
|
7
|
-
*
|
|
8
|
-
* @param messenger - The controller messenger instance.
|
|
9
|
-
* @returns The supported chains.
|
|
10
|
-
*/
|
|
11
|
-
export function getEIP7702SupportedChains(messenger) {
|
|
12
|
-
const featureFlags = getFeatureFlags(messenger);
|
|
13
|
-
return featureFlags?.[FEATURE_FLAG_EIP_7702]?.supportedChains ?? [];
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Retrieves the supported EIP-7702 contract addresses for a given chain ID.
|
|
17
|
-
*
|
|
18
|
-
* @param chainId - The chain ID.
|
|
19
|
-
* @param messenger - The controller messenger instance.
|
|
20
|
-
* @returns The supported contract addresses.
|
|
21
|
-
*/
|
|
22
|
-
export function getEIP7702ContractAddresses(chainId, messenger) {
|
|
23
|
-
const featureFlags = getFeatureFlags(messenger);
|
|
24
|
-
return (featureFlags?.[FEATURE_FLAG_EIP_7702]?.contractAddresses?.[chainId.toLowerCase()] ?? []);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Retrieves the EIP-7702 upgrade contract address.
|
|
28
|
-
*
|
|
29
|
-
* @param chainId - The chain ID.
|
|
30
|
-
* @param messenger - The controller messenger instance.
|
|
31
|
-
* @returns The upgrade contract address.
|
|
32
|
-
*/
|
|
33
|
-
export function getEIP7702UpgradeContractAddress(chainId, messenger) {
|
|
34
|
-
return getEIP7702ContractAddresses(chainId, messenger)?.[0];
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Retrieves the relevant feature flags from the remote feature flag controller.
|
|
38
|
-
*
|
|
39
|
-
* @param messenger - The messenger instance.
|
|
40
|
-
* @returns The feature flags.
|
|
41
|
-
*/
|
|
42
|
-
function getFeatureFlags(messenger) {
|
|
43
|
-
const featureFlags = messenger.call('RemoteFeatureFlagController:getState').remoteFeatureFlags;
|
|
44
|
-
log('Retrieved feature flags', featureFlags);
|
|
45
|
-
return featureFlags;
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=feature-flags.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags.mjs","sourceRoot":"","sources":["../../src/utils/feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAY,wBAAwB;AAE/D,OAAO,EAAE,aAAa,EAAE,sBAAkB;AAG1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAU9D,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAAyC;IAEzC,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAChD,OAAO,YAAY,EAAE,CAAC,qBAAqB,CAAC,EAAE,eAAe,IAAI,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,OAAY,EACZ,SAAyC;IAEzC,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAEhD,OAAO,CACL,YAAY,EAAE,CAAC,qBAAqB,CAAC,EAAE,iBAAiB,EAAE,CACxD,OAAO,CAAC,WAAW,EAAS,CAC7B,IAAI,EAAE,CACR,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gCAAgC,CAC9C,OAAY,EACZ,SAAyC;IAEzC,OAAO,2BAA2B,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CACtB,SAAyC;IAEzC,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CACjC,sCAAsC,CACvC,CAAC,kBAAkB,CAAC;IAErB,GAAG,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;IAE7C,OAAO,YAAiD,CAAC;AAC3D,CAAC","sourcesContent":["import { createModuleLogger, type Hex } from '@metamask/utils';\n\nimport { projectLogger } from '../logger';\nimport type { TransactionControllerMessenger } from '../TransactionController';\n\nexport const FEATURE_FLAG_EIP_7702 = 'confirmations-eip-7702';\n\nexport type TransactionControllerFeatureFlags = {\n [FEATURE_FLAG_EIP_7702]: {\n contractAddresses: Record<Hex, Hex[]>;\n supportedChains: Hex[];\n upgradeContractAddress: Hex;\n };\n};\n\nconst log = createModuleLogger(projectLogger, 'feature-flags');\n\n/**\n * Retrieves the supported EIP-7702 chains.\n *\n * @param messenger - The controller messenger instance.\n * @returns The supported chains.\n */\nexport function getEIP7702SupportedChains(\n messenger: TransactionControllerMessenger,\n): Hex[] {\n const featureFlags = getFeatureFlags(messenger);\n return featureFlags?.[FEATURE_FLAG_EIP_7702]?.supportedChains ?? [];\n}\n\n/**\n * Retrieves the supported EIP-7702 contract addresses for a given chain ID.\n *\n * @param chainId - The chain ID.\n * @param messenger - The controller messenger instance.\n * @returns The supported contract addresses.\n */\nexport function getEIP7702ContractAddresses(\n chainId: Hex,\n messenger: TransactionControllerMessenger,\n): Hex[] {\n const featureFlags = getFeatureFlags(messenger);\n\n return (\n featureFlags?.[FEATURE_FLAG_EIP_7702]?.contractAddresses?.[\n chainId.toLowerCase() as Hex\n ] ?? []\n );\n}\n\n/**\n * Retrieves the EIP-7702 upgrade contract address.\n *\n * @param chainId - The chain ID.\n * @param messenger - The controller messenger instance.\n * @returns The upgrade contract address.\n */\nexport function getEIP7702UpgradeContractAddress(\n chainId: Hex,\n messenger: TransactionControllerMessenger,\n): Hex | undefined {\n return getEIP7702ContractAddresses(chainId, messenger)?.[0];\n}\n\n/**\n * Retrieves the relevant feature flags from the remote feature flag controller.\n *\n * @param messenger - The messenger instance.\n * @returns The feature flags.\n */\nfunction getFeatureFlags(\n messenger: TransactionControllerMessenger,\n): TransactionControllerFeatureFlags {\n const featureFlags = messenger.call(\n 'RemoteFeatureFlagController:getState',\n ).remoteFeatureFlags;\n\n log('Retrieved feature flags', featureFlags);\n\n return featureFlags as TransactionControllerFeatureFlags;\n}\n"]}
|