@bloxchain/sdk 1.0.0-alpha
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/README.md +338 -0
- package/abi/BareBlox.abi.json +1341 -0
- package/abi/BaseStateMachine.abi.json +1308 -0
- package/abi/ControlBlox.abi.json +6210 -0
- package/abi/EngineBlox.abi.json +872 -0
- package/abi/GuardController.abi.json +3045 -0
- package/abi/IDefinition.abi.json +94 -0
- package/abi/RoleBlox.abi.json +4569 -0
- package/abi/RuntimeRBAC.abi.json +1857 -0
- package/abi/RuntimeRBACDefinitions.abi.json +133 -0
- package/abi/SecureBlox.abi.json +4085 -0
- package/abi/SecureOwnable.abi.json +4085 -0
- package/abi/SecureOwnableDefinitions.abi.json +354 -0
- package/abi/SimpleRWA20.abi.json +5545 -0
- package/abi/SimpleRWA20Definitions.abi.json +172 -0
- package/abi/SimpleVault.abi.json +5208 -0
- package/abi/SimpleVaultDefinitions.abi.json +250 -0
- package/dist/abi/BaseStateMachine.abi.json +1308 -0
- package/dist/abi/GuardController.abi.json +3045 -0
- package/dist/abi/IDefinition.abi.json +94 -0
- package/dist/abi/RuntimeRBAC.abi.json +1857 -0
- package/dist/abi/SecureOwnable.abi.json +4085 -0
- package/dist/contracts/BaseStateMachine.d.ts +83 -0
- package/dist/contracts/BaseStateMachine.d.ts.map +1 -0
- package/dist/contracts/BaseStateMachine.js +251 -0
- package/dist/contracts/BaseStateMachine.js.map +1 -0
- package/dist/contracts/GuardController.d.ts +120 -0
- package/dist/contracts/GuardController.d.ts.map +1 -0
- package/dist/contracts/GuardController.js +149 -0
- package/dist/contracts/GuardController.js.map +1 -0
- package/dist/contracts/RuntimeRBAC.d.ts +56 -0
- package/dist/contracts/RuntimeRBAC.d.ts.map +1 -0
- package/dist/contracts/RuntimeRBAC.js +57 -0
- package/dist/contracts/RuntimeRBAC.js.map +1 -0
- package/dist/contracts/SecureOwnable.d.ts +41 -0
- package/dist/contracts/SecureOwnable.d.ts.map +1 -0
- package/dist/contracts/SecureOwnable.js +82 -0
- package/dist/contracts/SecureOwnable.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/base.index.d.ts +18 -0
- package/dist/interfaces/base.index.d.ts.map +1 -0
- package/dist/interfaces/base.index.js +2 -0
- package/dist/interfaces/base.index.js.map +1 -0
- package/dist/interfaces/base.state.machine.index.d.ts +72 -0
- package/dist/interfaces/base.state.machine.index.d.ts.map +1 -0
- package/dist/interfaces/base.state.machine.index.js +2 -0
- package/dist/interfaces/base.state.machine.index.js.map +1 -0
- package/dist/interfaces/core.access.index.d.ts +37 -0
- package/dist/interfaces/core.access.index.d.ts.map +1 -0
- package/dist/interfaces/core.access.index.js +2 -0
- package/dist/interfaces/core.access.index.js.map +1 -0
- package/dist/interfaces/core.execution.index.d.ts +44 -0
- package/dist/interfaces/core.execution.index.d.ts.map +1 -0
- package/dist/interfaces/core.execution.index.js +2 -0
- package/dist/interfaces/core.execution.index.js.map +1 -0
- package/dist/interfaces/core.security.index.d.ts +83 -0
- package/dist/interfaces/core.security.index.d.ts.map +1 -0
- package/dist/interfaces/core.security.index.js +2 -0
- package/dist/interfaces/core.security.index.js.map +1 -0
- package/dist/interfaces/definition.index.d.ts +38 -0
- package/dist/interfaces/definition.index.d.ts.map +1 -0
- package/dist/interfaces/definition.index.js +2 -0
- package/dist/interfaces/definition.index.js.map +1 -0
- package/dist/interfaces/lib.index.d.ts +83 -0
- package/dist/interfaces/lib.index.d.ts.map +1 -0
- package/dist/interfaces/lib.index.js +2 -0
- package/dist/interfaces/lib.index.js.map +1 -0
- package/dist/lib/Definition.d.ts +84 -0
- package/dist/lib/Definition.d.ts.map +1 -0
- package/dist/lib/Definition.js +159 -0
- package/dist/lib/Definition.js.map +1 -0
- package/dist/lib/EngineBlox.d.ts +167 -0
- package/dist/lib/EngineBlox.d.ts.map +1 -0
- package/dist/lib/EngineBlox.js +266 -0
- package/dist/lib/EngineBlox.js.map +1 -0
- package/dist/types/base.state.machine.index.d.ts +45 -0
- package/dist/types/base.state.machine.index.d.ts.map +1 -0
- package/dist/types/base.state.machine.index.js +49 -0
- package/dist/types/base.state.machine.index.js.map +1 -0
- package/dist/types/core.access.index.d.ts +51 -0
- package/dist/types/core.access.index.d.ts.map +1 -0
- package/dist/types/core.access.index.js +41 -0
- package/dist/types/core.access.index.js.map +1 -0
- package/dist/types/core.execution.index.d.ts +36 -0
- package/dist/types/core.execution.index.d.ts.map +1 -0
- package/dist/types/core.execution.index.js +30 -0
- package/dist/types/core.execution.index.js.map +1 -0
- package/dist/types/core.security.index.d.ts +36 -0
- package/dist/types/core.security.index.d.ts.map +1 -0
- package/dist/types/core.security.index.js +37 -0
- package/dist/types/core.security.index.js.map +1 -0
- package/dist/types/definition.index.d.ts +36 -0
- package/dist/types/definition.index.d.ts.map +1 -0
- package/dist/types/definition.index.js +4 -0
- package/dist/types/definition.index.js.map +1 -0
- package/dist/types/lib.index.d.ts +66 -0
- package/dist/types/lib.index.d.ts.map +1 -0
- package/dist/types/lib.index.js +68 -0
- package/dist/types/lib.index.js.map +1 -0
- package/dist/utils/bitmap.d.ts +75 -0
- package/dist/utils/bitmap.d.ts.map +1 -0
- package/dist/utils/bitmap.js +124 -0
- package/dist/utils/bitmap.js.map +1 -0
- package/dist/utils/contract-errors.d.ts +536 -0
- package/dist/utils/contract-errors.d.ts.map +1 -0
- package/dist/utils/contract-errors.js +412 -0
- package/dist/utils/contract-errors.js.map +1 -0
- package/dist/utils/erc20/ERC20Token.abi.json +217 -0
- package/dist/utils/erc20/erc20Token.d.ts +83 -0
- package/dist/utils/erc20/erc20Token.d.ts.map +1 -0
- package/dist/utils/erc20/erc20Token.js +173 -0
- package/dist/utils/erc20/erc20Token.js.map +1 -0
- package/dist/utils/interface-ids.d.ts +59 -0
- package/dist/utils/interface-ids.d.ts.map +1 -0
- package/dist/utils/interface-ids.js +149 -0
- package/dist/utils/interface-ids.js.map +1 -0
- package/dist/utils/metaTx/metaTransaction.d.ts +138 -0
- package/dist/utils/metaTx/metaTransaction.d.ts.map +1 -0
- package/dist/utils/metaTx/metaTransaction.js +271 -0
- package/dist/utils/metaTx/metaTransaction.js.map +1 -0
- package/dist/utils/validations.d.ts +104 -0
- package/dist/utils/validations.d.ts.map +1 -0
- package/dist/utils/validations.js +254 -0
- package/dist/utils/validations.js.map +1 -0
- package/dist/utils/viem-error-handler.d.ts +48 -0
- package/dist/utils/viem-error-handler.d.ts.map +1 -0
- package/dist/utils/viem-error-handler.js +172 -0
- package/dist/utils/viem-error-handler.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Address, PublicClient, WalletClient, Chain, Hex } from 'viem';
|
|
2
|
+
import { TransactionOptions, TransactionResult } from '../interfaces/base.index';
|
|
3
|
+
import { IBaseStateMachine } from '../interfaces/base.state.machine.index';
|
|
4
|
+
import { TxRecord, MetaTransaction, MetaTxParams } from '../interfaces/lib.index';
|
|
5
|
+
import { TxAction } from '../types/lib.index';
|
|
6
|
+
/**
|
|
7
|
+
* @title BaseStateMachine
|
|
8
|
+
* @notice TypeScript wrapper for BaseStateMachine smart contract with common utilities
|
|
9
|
+
*/
|
|
10
|
+
export declare abstract class BaseStateMachine implements IBaseStateMachine {
|
|
11
|
+
protected client: PublicClient;
|
|
12
|
+
protected walletClient: WalletClient | undefined;
|
|
13
|
+
protected contractAddress: Address;
|
|
14
|
+
protected chain: Chain;
|
|
15
|
+
protected abi: any;
|
|
16
|
+
constructor(client: PublicClient, walletClient: WalletClient | undefined, contractAddress: Address, chain: Chain, abi: any);
|
|
17
|
+
/**
|
|
18
|
+
* Validates that wallet client is available for write operations
|
|
19
|
+
*/
|
|
20
|
+
protected validateWalletClient(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Common method to execute write contract operations
|
|
23
|
+
*/
|
|
24
|
+
protected executeWriteContract(functionName: string, args: any[], options: TransactionOptions): Promise<TransactionResult>;
|
|
25
|
+
/**
|
|
26
|
+
* Common method to execute read contract operations
|
|
27
|
+
*/
|
|
28
|
+
protected executeReadContract<T>(functionName: string, args?: any[]): Promise<T>;
|
|
29
|
+
createMetaTxParams(handlerContract: Address, handlerSelector: Hex, action: TxAction, deadline: bigint, maxGasPrice: bigint, signer: Address): Promise<MetaTxParams>;
|
|
30
|
+
generateUnsignedMetaTransactionForNew(requester: Address, target: Address, value: bigint, gasLimit: bigint, operationType: Hex, executionSelector: Hex, executionParams: Hex, metaTxParams: MetaTxParams): Promise<MetaTransaction>;
|
|
31
|
+
generateUnsignedMetaTransactionForExisting(txId: bigint, metaTxParams: MetaTxParams): Promise<MetaTransaction>;
|
|
32
|
+
getTransactionHistory(fromTxId: bigint, toTxId: bigint): Promise<TxRecord[]>;
|
|
33
|
+
getTransaction(txId: bigint): Promise<TxRecord>;
|
|
34
|
+
getPendingTransactions(): Promise<bigint[]>;
|
|
35
|
+
getRole(roleHash: Hex): Promise<{
|
|
36
|
+
roleName: string;
|
|
37
|
+
roleHashReturn: Hex;
|
|
38
|
+
maxWallets: bigint;
|
|
39
|
+
walletCount: bigint;
|
|
40
|
+
isProtected: boolean;
|
|
41
|
+
}>;
|
|
42
|
+
hasRole(roleHash: Hex, wallet: Address): Promise<boolean>;
|
|
43
|
+
/**
|
|
44
|
+
* Gets all roles assigned to a wallet
|
|
45
|
+
* @param wallet The wallet address to get roles for
|
|
46
|
+
* @returns Array of role hashes assigned to the wallet
|
|
47
|
+
* @notice Requires caller to have any role for privacy protection
|
|
48
|
+
* @notice This function uses the reverse index for efficient lookup
|
|
49
|
+
*/
|
|
50
|
+
getWalletRoles(wallet: Address): Promise<Hex[]>;
|
|
51
|
+
isActionSupportedByFunction(functionSelector: Hex, action: TxAction): Promise<boolean>;
|
|
52
|
+
getActiveRolePermissions(roleHash: Hex): Promise<any[]>;
|
|
53
|
+
functionSchemaExists(functionSelector: Hex): Promise<boolean>;
|
|
54
|
+
getSignerNonce(signer: Address): Promise<bigint>;
|
|
55
|
+
getSupportedOperationTypes(): Promise<Hex[]>;
|
|
56
|
+
getSupportedRoles(): Promise<Hex[]>;
|
|
57
|
+
getSupportedFunctions(): Promise<Hex[]>;
|
|
58
|
+
getTimeLockPeriodSec(): Promise<bigint>;
|
|
59
|
+
initialized(): Promise<boolean>;
|
|
60
|
+
/**
|
|
61
|
+
* @dev Returns the owner of the contract
|
|
62
|
+
* @return The owner of the contract
|
|
63
|
+
*/
|
|
64
|
+
owner(): Promise<Address>;
|
|
65
|
+
/**
|
|
66
|
+
* @dev Returns all broadcaster addresses
|
|
67
|
+
* @return Array of broadcaster addresses
|
|
68
|
+
*/
|
|
69
|
+
getBroadcasters(): Promise<Address[]>;
|
|
70
|
+
/**
|
|
71
|
+
* @dev Returns the recovery address
|
|
72
|
+
* @return The recovery address
|
|
73
|
+
*/
|
|
74
|
+
getRecovery(): Promise<Address>;
|
|
75
|
+
supportsInterface(interfaceId: Hex): Promise<boolean>;
|
|
76
|
+
/**
|
|
77
|
+
* @dev Check if this contract supports IBaseStateMachine interface
|
|
78
|
+
* @return Promise<boolean> indicating if IBaseStateMachine is supported
|
|
79
|
+
*/
|
|
80
|
+
supportsBaseStateMachineInterface(): Promise<boolean>;
|
|
81
|
+
}
|
|
82
|
+
export default BaseStateMachine;
|
|
83
|
+
//# sourceMappingURL=BaseStateMachine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseStateMachine.d.ts","sourceRoot":"","sources":["../../contracts/BaseStateMachine.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { handleViemError } from '../utils/viem-error-handler';
|
|
2
|
+
/**
|
|
3
|
+
* @title BaseStateMachine
|
|
4
|
+
* @notice TypeScript wrapper for BaseStateMachine smart contract with common utilities
|
|
5
|
+
*/
|
|
6
|
+
export class BaseStateMachine {
|
|
7
|
+
constructor(client, walletClient, contractAddress, chain, abi) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
this.walletClient = walletClient;
|
|
10
|
+
this.contractAddress = contractAddress;
|
|
11
|
+
this.chain = chain;
|
|
12
|
+
this.abi = abi;
|
|
13
|
+
}
|
|
14
|
+
// ============ COMMON UTILITY METHODS ============
|
|
15
|
+
/**
|
|
16
|
+
* Validates that wallet client is available for write operations
|
|
17
|
+
*/
|
|
18
|
+
validateWalletClient() {
|
|
19
|
+
if (!this.walletClient) {
|
|
20
|
+
throw new Error('Wallet client is required for this operation');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Common method to execute write contract operations
|
|
25
|
+
*/
|
|
26
|
+
async executeWriteContract(functionName, args, options) {
|
|
27
|
+
this.validateWalletClient();
|
|
28
|
+
// Viem's writeContract will use the WalletClient's account if available
|
|
29
|
+
// Only pass account explicitly if it differs from WalletClient's account
|
|
30
|
+
// Otherwise, let Viem use the WalletClient's account automatically
|
|
31
|
+
const walletClientAccount = this.walletClient.account?.address;
|
|
32
|
+
const requestedAccount = options.from.toLowerCase();
|
|
33
|
+
// For meta-transaction functions, ensure the structure is correct
|
|
34
|
+
if (functionName.includes('RequestAndApprove') || functionName.includes('MetaTx')) {
|
|
35
|
+
if (args.length > 0 && args[0] && typeof args[0] === 'object' && 'txRecord' in args[0]) {
|
|
36
|
+
const metaTx = args[0];
|
|
37
|
+
// Ensure all nested structures are properly formatted
|
|
38
|
+
if (metaTx.txRecord && typeof metaTx.txRecord === 'object') {
|
|
39
|
+
// Ensure txRecord.params exists and is an object
|
|
40
|
+
if (!metaTx.txRecord.params || typeof metaTx.txRecord.params !== 'object') {
|
|
41
|
+
throw new Error('Invalid meta-transaction: txRecord.params must be an object');
|
|
42
|
+
}
|
|
43
|
+
// Ensure txRecord.payment exists and is an object
|
|
44
|
+
if (!metaTx.txRecord.payment || typeof metaTx.txRecord.payment !== 'object') {
|
|
45
|
+
throw new Error('Invalid meta-transaction: txRecord.payment must be an object');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (metaTx.params && typeof metaTx.params === 'object') {
|
|
49
|
+
// Ensure params is properly formatted
|
|
50
|
+
if (typeof metaTx.params.action !== 'number') {
|
|
51
|
+
throw new Error('Invalid meta-transaction: params.action must be a number');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const writeContractParams = {
|
|
57
|
+
chain: this.chain,
|
|
58
|
+
address: this.contractAddress,
|
|
59
|
+
abi: this.abi,
|
|
60
|
+
functionName,
|
|
61
|
+
args,
|
|
62
|
+
};
|
|
63
|
+
// Only set account if it differs from WalletClient's account
|
|
64
|
+
// This ensures consistency and avoids potential conflicts
|
|
65
|
+
if (!walletClientAccount || walletClientAccount.toLowerCase() !== requestedAccount) {
|
|
66
|
+
writeContractParams.account = options.from;
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
// First, simulate the contract call to get better error messages
|
|
70
|
+
try {
|
|
71
|
+
await this.client.simulateContract({
|
|
72
|
+
...writeContractParams,
|
|
73
|
+
account: writeContractParams.account || this.walletClient.account
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
catch (simulateError) {
|
|
77
|
+
// Re-throw to get better error handling
|
|
78
|
+
throw simulateError;
|
|
79
|
+
}
|
|
80
|
+
const hash = await this.walletClient.writeContract(writeContractParams);
|
|
81
|
+
return {
|
|
82
|
+
hash,
|
|
83
|
+
wait: () => this.client.waitForTransactionReceipt({ hash })
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
// Use utility to handle and enhance error with contract error decoding
|
|
88
|
+
// handleViemError returns Promise<never> and always throws, so this will never return
|
|
89
|
+
// TypeScript doesn't recognize Promise<never> in control flow, so we explicitly throw
|
|
90
|
+
throw await handleViemError(error, this.abi);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Common method to execute read contract operations
|
|
95
|
+
*/
|
|
96
|
+
async executeReadContract(functionName, args = []) {
|
|
97
|
+
try {
|
|
98
|
+
const result = await this.client.readContract({
|
|
99
|
+
address: this.contractAddress,
|
|
100
|
+
abi: this.abi,
|
|
101
|
+
functionName,
|
|
102
|
+
args,
|
|
103
|
+
// Include account for permission checks if wallet client is available
|
|
104
|
+
account: this.walletClient?.account
|
|
105
|
+
});
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
// Try to decode the error if it's a contract revert
|
|
110
|
+
if (error.data || error.cause?.data) {
|
|
111
|
+
const errorData = error.data || error.cause?.data;
|
|
112
|
+
if (errorData && typeof errorData === 'string' && errorData.startsWith('0x')) {
|
|
113
|
+
try {
|
|
114
|
+
const { decodeErrorResult } = await import('viem');
|
|
115
|
+
const decoded = decodeErrorResult({
|
|
116
|
+
abi: this.abi,
|
|
117
|
+
data: errorData
|
|
118
|
+
});
|
|
119
|
+
throw new Error(`${decoded.errorName}(${JSON.stringify(decoded.args)})`);
|
|
120
|
+
}
|
|
121
|
+
catch (decodeError) {
|
|
122
|
+
// If decoding fails, throw the original error
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// ============ META-TRANSACTION UTILITIES ============
|
|
131
|
+
async createMetaTxParams(handlerContract, handlerSelector, action, deadline, maxGasPrice, signer) {
|
|
132
|
+
return this.executeReadContract('createMetaTxParams', [
|
|
133
|
+
handlerContract,
|
|
134
|
+
handlerSelector,
|
|
135
|
+
action,
|
|
136
|
+
deadline,
|
|
137
|
+
maxGasPrice,
|
|
138
|
+
signer
|
|
139
|
+
]);
|
|
140
|
+
}
|
|
141
|
+
async generateUnsignedMetaTransactionForNew(requester, target, value, gasLimit, operationType, executionSelector, executionParams, metaTxParams) {
|
|
142
|
+
return this.executeReadContract('generateUnsignedMetaTransactionForNew', [
|
|
143
|
+
requester,
|
|
144
|
+
target,
|
|
145
|
+
value,
|
|
146
|
+
gasLimit,
|
|
147
|
+
operationType,
|
|
148
|
+
executionSelector,
|
|
149
|
+
executionParams,
|
|
150
|
+
metaTxParams
|
|
151
|
+
]);
|
|
152
|
+
}
|
|
153
|
+
async generateUnsignedMetaTransactionForExisting(txId, metaTxParams) {
|
|
154
|
+
return this.executeReadContract('generateUnsignedMetaTransactionForExisting', [
|
|
155
|
+
txId,
|
|
156
|
+
metaTxParams
|
|
157
|
+
]);
|
|
158
|
+
}
|
|
159
|
+
// ============ STATE QUERIES ============
|
|
160
|
+
async getTransactionHistory(fromTxId, toTxId) {
|
|
161
|
+
return this.executeReadContract('getTransactionHistory', [fromTxId, toTxId]);
|
|
162
|
+
}
|
|
163
|
+
async getTransaction(txId) {
|
|
164
|
+
return this.executeReadContract('getTransaction', [txId]);
|
|
165
|
+
}
|
|
166
|
+
async getPendingTransactions() {
|
|
167
|
+
return this.executeReadContract('getPendingTransactions');
|
|
168
|
+
}
|
|
169
|
+
// ============ ROLE AND PERMISSION QUERIES ============
|
|
170
|
+
async getRole(roleHash) {
|
|
171
|
+
return this.executeReadContract('getRole', [roleHash]);
|
|
172
|
+
}
|
|
173
|
+
async hasRole(roleHash, wallet) {
|
|
174
|
+
return this.executeReadContract('hasRole', [roleHash, wallet]);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Gets all roles assigned to a wallet
|
|
178
|
+
* @param wallet The wallet address to get roles for
|
|
179
|
+
* @returns Array of role hashes assigned to the wallet
|
|
180
|
+
* @notice Requires caller to have any role for privacy protection
|
|
181
|
+
* @notice This function uses the reverse index for efficient lookup
|
|
182
|
+
*/
|
|
183
|
+
async getWalletRoles(wallet) {
|
|
184
|
+
return this.executeReadContract('getWalletRoles', [wallet]);
|
|
185
|
+
}
|
|
186
|
+
async isActionSupportedByFunction(functionSelector, action) {
|
|
187
|
+
return this.executeReadContract('isActionSupportedByFunction', [functionSelector, action]);
|
|
188
|
+
}
|
|
189
|
+
async getActiveRolePermissions(roleHash) {
|
|
190
|
+
return this.executeReadContract('getActiveRolePermissions', [roleHash]);
|
|
191
|
+
}
|
|
192
|
+
async functionSchemaExists(functionSelector) {
|
|
193
|
+
return this.executeReadContract('functionSchemaExists', [functionSelector]);
|
|
194
|
+
}
|
|
195
|
+
async getSignerNonce(signer) {
|
|
196
|
+
return this.executeReadContract('getSignerNonce', [signer]);
|
|
197
|
+
}
|
|
198
|
+
// ============ SYSTEM STATE QUERIES ============
|
|
199
|
+
async getSupportedOperationTypes() {
|
|
200
|
+
return this.executeReadContract('getSupportedOperationTypes');
|
|
201
|
+
}
|
|
202
|
+
async getSupportedRoles() {
|
|
203
|
+
return this.executeReadContract('getSupportedRoles');
|
|
204
|
+
}
|
|
205
|
+
async getSupportedFunctions() {
|
|
206
|
+
return this.executeReadContract('getSupportedFunctions');
|
|
207
|
+
}
|
|
208
|
+
async getTimeLockPeriodSec() {
|
|
209
|
+
return this.executeReadContract('getTimeLockPeriodSec');
|
|
210
|
+
}
|
|
211
|
+
async initialized() {
|
|
212
|
+
return this.executeReadContract('initialized');
|
|
213
|
+
}
|
|
214
|
+
// ============ SYSTEM ROLE QUERY FUNCTIONS ============
|
|
215
|
+
/**
|
|
216
|
+
* @dev Returns the owner of the contract
|
|
217
|
+
* @return The owner of the contract
|
|
218
|
+
*/
|
|
219
|
+
async owner() {
|
|
220
|
+
return this.executeReadContract('owner');
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* @dev Returns all broadcaster addresses
|
|
224
|
+
* @return Array of broadcaster addresses
|
|
225
|
+
*/
|
|
226
|
+
async getBroadcasters() {
|
|
227
|
+
return this.executeReadContract('getBroadcasters');
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* @dev Returns the recovery address
|
|
231
|
+
* @return The recovery address
|
|
232
|
+
*/
|
|
233
|
+
async getRecovery() {
|
|
234
|
+
return this.executeReadContract('getRecovery');
|
|
235
|
+
}
|
|
236
|
+
// ============ INTERFACE SUPPORT ============
|
|
237
|
+
async supportsInterface(interfaceId) {
|
|
238
|
+
return this.executeReadContract('supportsInterface', [interfaceId]);
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* @dev Check if this contract supports IBaseStateMachine interface
|
|
242
|
+
* @return Promise<boolean> indicating if IBaseStateMachine is supported
|
|
243
|
+
*/
|
|
244
|
+
async supportsBaseStateMachineInterface() {
|
|
245
|
+
// Import dynamically to avoid circular dependencies
|
|
246
|
+
const { INTERFACE_IDS } = await import('../utils/interface-ids');
|
|
247
|
+
return this.supportsInterface(INTERFACE_IDS.IBaseStateMachine);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
export default BaseStateMachine;
|
|
251
|
+
//# sourceMappingURL=BaseStateMachine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseStateMachine.js","sourceRoot":"","sources":["../../contracts/BaseStateMachine.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Address, PublicClient, WalletClient, Chain, Hex } from 'viem';
|
|
2
|
+
import { TransactionOptions, TransactionResult } from '../interfaces/base.index';
|
|
3
|
+
import { IGuardController } from '../interfaces/core.execution.index';
|
|
4
|
+
import { MetaTransaction } from '../interfaces/lib.index';
|
|
5
|
+
import { BaseStateMachine } from './BaseStateMachine';
|
|
6
|
+
/**
|
|
7
|
+
* @title GuardController
|
|
8
|
+
* @notice TypeScript wrapper for GuardController smart contract
|
|
9
|
+
* @dev Lightweight controller for generic contract delegation with full EngineBlox workflows
|
|
10
|
+
*
|
|
11
|
+
* This contract provides a complete solution for delegating control to external addresses.
|
|
12
|
+
* It extends BaseStateMachine for core state machine functionality and supports all EngineBlox
|
|
13
|
+
* execution patterns including time-locked transactions, meta-transactions, and payment management.
|
|
14
|
+
*
|
|
15
|
+
* This contract is modular and can be combined with RuntimeRBAC and SecureOwnable for role management.
|
|
16
|
+
*/
|
|
17
|
+
export declare class GuardController extends BaseStateMachine implements IGuardController {
|
|
18
|
+
constructor(client: PublicClient, walletClient: WalletClient | undefined, contractAddress: Address, chain: Chain);
|
|
19
|
+
/**
|
|
20
|
+
* @notice Initializer to initialize GuardController
|
|
21
|
+
* @param initialOwner The initial owner address
|
|
22
|
+
* @param broadcaster The broadcaster address
|
|
23
|
+
* @param recovery The recovery address
|
|
24
|
+
* @param timeLockPeriodSec The timelock period in seconds
|
|
25
|
+
* @param eventForwarder The event forwarder address
|
|
26
|
+
* @param options Transaction options including from address
|
|
27
|
+
* @return TransactionResult with hash and wait function
|
|
28
|
+
*/
|
|
29
|
+
initialize(initialOwner: Address, broadcaster: Address, recovery: Address, timeLockPeriodSec: bigint, eventForwarder: Address, options: TransactionOptions): Promise<TransactionResult>;
|
|
30
|
+
/**
|
|
31
|
+
* @dev Requests a time-locked execution via EngineBlox workflow
|
|
32
|
+
* @param target The address of the target contract
|
|
33
|
+
* @param value The ETH value to send (0 for standard function calls)
|
|
34
|
+
* @param functionSelector The function selector to execute (0x00000000 for simple ETH transfers)
|
|
35
|
+
* @param params The encoded parameters for the function (empty for simple ETH transfers)
|
|
36
|
+
* @param gasLimit The gas limit for execution
|
|
37
|
+
* @param operationType The operation type hash
|
|
38
|
+
* @param options Transaction options including from address
|
|
39
|
+
* @return TransactionResult with hash and wait function
|
|
40
|
+
* @notice Creates a time-locked transaction that must be approved after the timelock period
|
|
41
|
+
* @notice Requires EXECUTE_TIME_DELAY_REQUEST permission for the function selector
|
|
42
|
+
* @notice For standard function calls: value=0, functionSelector=non-zero, params=encoded data
|
|
43
|
+
* @notice For simple ETH transfers: value>0, functionSelector=0x00000000, params=""
|
|
44
|
+
*/
|
|
45
|
+
executeWithTimeLock(target: Address, value: bigint, functionSelector: Hex, params: Hex, gasLimit: bigint, operationType: Hex, options: TransactionOptions): Promise<TransactionResult>;
|
|
46
|
+
/**
|
|
47
|
+
* @dev Approves and executes a time-locked transaction
|
|
48
|
+
* @param txId The transaction ID
|
|
49
|
+
* @param options Transaction options including from address
|
|
50
|
+
* @return TransactionResult with hash and wait function
|
|
51
|
+
* @notice Requires STANDARD execution type and EXECUTE_TIME_DELAY_APPROVE permission for the execution function
|
|
52
|
+
*/
|
|
53
|
+
approveTimeLockExecution(txId: bigint, options: TransactionOptions): Promise<TransactionResult>;
|
|
54
|
+
/**
|
|
55
|
+
* @dev Cancels a time-locked transaction
|
|
56
|
+
* @param txId The transaction ID
|
|
57
|
+
* @param options Transaction options including from address
|
|
58
|
+
* @return TransactionResult with hash and wait function
|
|
59
|
+
* @notice Requires STANDARD execution type and EXECUTE_TIME_DELAY_CANCEL permission for the execution function
|
|
60
|
+
*/
|
|
61
|
+
cancelTimeLockExecution(txId: bigint, options: TransactionOptions): Promise<TransactionResult>;
|
|
62
|
+
/**
|
|
63
|
+
* @dev Approves a time-locked transaction using a meta-transaction
|
|
64
|
+
* @param metaTx The meta-transaction containing the transaction record and signature
|
|
65
|
+
* @param options Transaction options including from address
|
|
66
|
+
* @return TransactionResult with hash and wait function
|
|
67
|
+
* @notice Requires STANDARD execution type and EXECUTE_META_APPROVE permission for the execution function
|
|
68
|
+
*/
|
|
69
|
+
approveTimeLockExecutionWithMetaTx(metaTx: MetaTransaction, options: TransactionOptions): Promise<TransactionResult>;
|
|
70
|
+
/**
|
|
71
|
+
* @dev Cancels a time-locked transaction using a meta-transaction
|
|
72
|
+
* @param metaTx The meta-transaction containing the transaction record and signature
|
|
73
|
+
* @param options Transaction options including from address
|
|
74
|
+
* @return TransactionResult with hash and wait function
|
|
75
|
+
* @notice Requires STANDARD execution type and EXECUTE_META_CANCEL permission for the execution function
|
|
76
|
+
*/
|
|
77
|
+
cancelTimeLockExecutionWithMetaTx(metaTx: MetaTransaction, options: TransactionOptions): Promise<TransactionResult>;
|
|
78
|
+
/**
|
|
79
|
+
* @dev Requests and approves a transaction in one step using a meta-transaction
|
|
80
|
+
* @param metaTx The meta-transaction containing the transaction record and signature
|
|
81
|
+
* @param options Transaction options including from address
|
|
82
|
+
* @return TransactionResult with hash and wait function
|
|
83
|
+
* @notice Requires STANDARD execution type
|
|
84
|
+
* @notice Validates function schema and permissions for the execution function (same as executeWithTimeLock)
|
|
85
|
+
* @notice Requires EXECUTE_META_REQUEST_AND_APPROVE permission for the execution function selector
|
|
86
|
+
*/
|
|
87
|
+
requestAndApproveExecution(metaTx: MetaTransaction, options: TransactionOptions): Promise<TransactionResult>;
|
|
88
|
+
/**
|
|
89
|
+
* @dev Creates execution params for a guard configuration batch
|
|
90
|
+
* @param actions Encoded guard configuration actions
|
|
91
|
+
* @return Promise<Hex> The execution params to be used in a meta-transaction
|
|
92
|
+
*/
|
|
93
|
+
guardConfigBatchExecutionParams(actions: Array<{
|
|
94
|
+
actionType: number;
|
|
95
|
+
data: Hex;
|
|
96
|
+
}>): Promise<Hex>;
|
|
97
|
+
/**
|
|
98
|
+
* @dev Requests and approves a guard configuration batch using a meta-transaction
|
|
99
|
+
* @param metaTx The meta-transaction describing the guard configuration batch
|
|
100
|
+
* @param options Transaction options including from address
|
|
101
|
+
* @return TransactionResult with hash and wait function
|
|
102
|
+
* @notice OWNER signs, BROADCASTER executes according to GuardControllerDefinitions
|
|
103
|
+
* @notice Supports whitelist management and function schema registration
|
|
104
|
+
*/
|
|
105
|
+
guardConfigBatchRequestAndApprove(metaTx: MetaTransaction, options: TransactionOptions): Promise<TransactionResult>;
|
|
106
|
+
/**
|
|
107
|
+
* @dev Gets all whitelisted targets for a function selector.
|
|
108
|
+
* @param functionSelector The function selector
|
|
109
|
+
* @return Promise<Address[]> Array of whitelisted target addresses
|
|
110
|
+
* @notice Requires caller to have any role (via _validateAnyRole) for privacy protection
|
|
111
|
+
*/
|
|
112
|
+
getAllowedTargets(functionSelector: Hex): Promise<Address[]>;
|
|
113
|
+
/**
|
|
114
|
+
* @dev Check if this contract supports IGuardController interface
|
|
115
|
+
* @return Promise<boolean> indicating if IGuardController is supported
|
|
116
|
+
*/
|
|
117
|
+
supportsGuardControllerInterface(): Promise<boolean>;
|
|
118
|
+
}
|
|
119
|
+
export default GuardController;
|
|
120
|
+
//# sourceMappingURL=GuardController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuardController.d.ts","sourceRoot":"","sources":["../../contracts/GuardController.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD;;;;;;;;;;GAUG;AACH,qBAAa,eAAgB,SAAQ,gBAAiB,YAAW,gBAAgB;gBAE7E,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,eAAe,EAAE,OAAO,EACxB,KAAK,EAAE,KAAK;IAOd;;;;;;;;;OASG;IACG,UAAU,CACd,YAAY,EAAE,OAAO,EACrB,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,OAAO,EACjB,iBAAiB,EAAE,MAAM,EACzB,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAU7B;;;;;;;;;;;;;;OAcG;IACG,mBAAmB,CACvB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,GAAG,EACrB,MAAM,EAAE,GAAG,EACX,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,GAAG,EAClB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAQ7B;;;;;;OAMG;IACG,wBAAwB,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAQ7B;;;;;;OAMG;IACG,uBAAuB,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAQ7B;;;;;;OAMG;IACG,kCAAkC,CACtC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAQ7B;;;;;;OAMG;IACG,iCAAiC,CACrC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAQ7B;;;;;;;;OAQG;IACG,0BAA0B,CAC9B,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAU7B;;;;OAIG;IACG,+BAA+B,CACnC,OAAO,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,CAAC,GAChD,OAAO,CAAC,GAAG,CAAC;IAIf;;;;;;;OAOG;IACG,iCAAiC,CACrC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAI7B;;;;;OAKG;IACG,iBAAiB,CACrB,gBAAgB,EAAE,GAAG,GACpB,OAAO,CAAC,OAAO,EAAE,CAAC;IAcrB;;;OAGG;IACG,gCAAgC,IAAI,OAAO,CAAC,OAAO,CAAC;CAY3D;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import GuardControllerABIJson from '../abi/GuardController.abi.json';
|
|
2
|
+
import { BaseStateMachine } from './BaseStateMachine';
|
|
3
|
+
import { INTERFACE_IDS } from '../utils/interface-ids';
|
|
4
|
+
/**
|
|
5
|
+
* @title GuardController
|
|
6
|
+
* @notice TypeScript wrapper for GuardController smart contract
|
|
7
|
+
* @dev Lightweight controller for generic contract delegation with full EngineBlox workflows
|
|
8
|
+
*
|
|
9
|
+
* This contract provides a complete solution for delegating control to external addresses.
|
|
10
|
+
* It extends BaseStateMachine for core state machine functionality and supports all EngineBlox
|
|
11
|
+
* execution patterns including time-locked transactions, meta-transactions, and payment management.
|
|
12
|
+
*
|
|
13
|
+
* This contract is modular and can be combined with RuntimeRBAC and SecureOwnable for role management.
|
|
14
|
+
*/
|
|
15
|
+
export class GuardController extends BaseStateMachine {
|
|
16
|
+
constructor(client, walletClient, contractAddress, chain) {
|
|
17
|
+
super(client, walletClient, contractAddress, chain, GuardControllerABIJson);
|
|
18
|
+
}
|
|
19
|
+
// ============ INITIALIZATION ============
|
|
20
|
+
/**
|
|
21
|
+
* @notice Initializer to initialize GuardController
|
|
22
|
+
* @param initialOwner The initial owner address
|
|
23
|
+
* @param broadcaster The broadcaster address
|
|
24
|
+
* @param recovery The recovery address
|
|
25
|
+
* @param timeLockPeriodSec The timelock period in seconds
|
|
26
|
+
* @param eventForwarder The event forwarder address
|
|
27
|
+
* @param options Transaction options including from address
|
|
28
|
+
* @return TransactionResult with hash and wait function
|
|
29
|
+
*/
|
|
30
|
+
async initialize(initialOwner, broadcaster, recovery, timeLockPeriodSec, eventForwarder, options) {
|
|
31
|
+
return this.executeWriteContract('initialize', [initialOwner, broadcaster, recovery, timeLockPeriodSec, eventForwarder], options);
|
|
32
|
+
}
|
|
33
|
+
// ============ EXECUTION FUNCTIONS ============
|
|
34
|
+
/**
|
|
35
|
+
* @dev Requests a time-locked execution via EngineBlox workflow
|
|
36
|
+
* @param target The address of the target contract
|
|
37
|
+
* @param value The ETH value to send (0 for standard function calls)
|
|
38
|
+
* @param functionSelector The function selector to execute (0x00000000 for simple ETH transfers)
|
|
39
|
+
* @param params The encoded parameters for the function (empty for simple ETH transfers)
|
|
40
|
+
* @param gasLimit The gas limit for execution
|
|
41
|
+
* @param operationType The operation type hash
|
|
42
|
+
* @param options Transaction options including from address
|
|
43
|
+
* @return TransactionResult with hash and wait function
|
|
44
|
+
* @notice Creates a time-locked transaction that must be approved after the timelock period
|
|
45
|
+
* @notice Requires EXECUTE_TIME_DELAY_REQUEST permission for the function selector
|
|
46
|
+
* @notice For standard function calls: value=0, functionSelector=non-zero, params=encoded data
|
|
47
|
+
* @notice For simple ETH transfers: value>0, functionSelector=0x00000000, params=""
|
|
48
|
+
*/
|
|
49
|
+
async executeWithTimeLock(target, value, functionSelector, params, gasLimit, operationType, options) {
|
|
50
|
+
return this.executeWriteContract('executeWithTimeLock', [target, value, functionSelector, params, gasLimit, operationType], options);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @dev Approves and executes a time-locked transaction
|
|
54
|
+
* @param txId The transaction ID
|
|
55
|
+
* @param options Transaction options including from address
|
|
56
|
+
* @return TransactionResult with hash and wait function
|
|
57
|
+
* @notice Requires STANDARD execution type and EXECUTE_TIME_DELAY_APPROVE permission for the execution function
|
|
58
|
+
*/
|
|
59
|
+
async approveTimeLockExecution(txId, options) {
|
|
60
|
+
return this.executeWriteContract('approveTimeLockExecution', [txId], options);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* @dev Cancels a time-locked transaction
|
|
64
|
+
* @param txId The transaction ID
|
|
65
|
+
* @param options Transaction options including from address
|
|
66
|
+
* @return TransactionResult with hash and wait function
|
|
67
|
+
* @notice Requires STANDARD execution type and EXECUTE_TIME_DELAY_CANCEL permission for the execution function
|
|
68
|
+
*/
|
|
69
|
+
async cancelTimeLockExecution(txId, options) {
|
|
70
|
+
return this.executeWriteContract('cancelTimeLockExecution', [txId], options);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* @dev Approves a time-locked transaction using a meta-transaction
|
|
74
|
+
* @param metaTx The meta-transaction containing the transaction record and signature
|
|
75
|
+
* @param options Transaction options including from address
|
|
76
|
+
* @return TransactionResult with hash and wait function
|
|
77
|
+
* @notice Requires STANDARD execution type and EXECUTE_META_APPROVE permission for the execution function
|
|
78
|
+
*/
|
|
79
|
+
async approveTimeLockExecutionWithMetaTx(metaTx, options) {
|
|
80
|
+
return this.executeWriteContract('approveTimeLockExecutionWithMetaTx', [metaTx], options);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* @dev Cancels a time-locked transaction using a meta-transaction
|
|
84
|
+
* @param metaTx The meta-transaction containing the transaction record and signature
|
|
85
|
+
* @param options Transaction options including from address
|
|
86
|
+
* @return TransactionResult with hash and wait function
|
|
87
|
+
* @notice Requires STANDARD execution type and EXECUTE_META_CANCEL permission for the execution function
|
|
88
|
+
*/
|
|
89
|
+
async cancelTimeLockExecutionWithMetaTx(metaTx, options) {
|
|
90
|
+
return this.executeWriteContract('cancelTimeLockExecutionWithMetaTx', [metaTx], options);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* @dev Requests and approves a transaction in one step using a meta-transaction
|
|
94
|
+
* @param metaTx The meta-transaction containing the transaction record and signature
|
|
95
|
+
* @param options Transaction options including from address
|
|
96
|
+
* @return TransactionResult with hash and wait function
|
|
97
|
+
* @notice Requires STANDARD execution type
|
|
98
|
+
* @notice Validates function schema and permissions for the execution function (same as executeWithTimeLock)
|
|
99
|
+
* @notice Requires EXECUTE_META_REQUEST_AND_APPROVE permission for the execution function selector
|
|
100
|
+
*/
|
|
101
|
+
async requestAndApproveExecution(metaTx, options) {
|
|
102
|
+
return this.executeWriteContract('requestAndApproveExecution', [metaTx], options);
|
|
103
|
+
}
|
|
104
|
+
// ============ GUARD CONFIGURATION BATCH ============
|
|
105
|
+
/**
|
|
106
|
+
* @dev Creates execution params for a guard configuration batch
|
|
107
|
+
* @param actions Encoded guard configuration actions
|
|
108
|
+
* @return Promise<Hex> The execution params to be used in a meta-transaction
|
|
109
|
+
*/
|
|
110
|
+
async guardConfigBatchExecutionParams(actions) {
|
|
111
|
+
return this.executeReadContract('guardConfigBatchExecutionParams', [actions]);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* @dev Requests and approves a guard configuration batch using a meta-transaction
|
|
115
|
+
* @param metaTx The meta-transaction describing the guard configuration batch
|
|
116
|
+
* @param options Transaction options including from address
|
|
117
|
+
* @return TransactionResult with hash and wait function
|
|
118
|
+
* @notice OWNER signs, BROADCASTER executes according to GuardControllerDefinitions
|
|
119
|
+
* @notice Supports whitelist management and function schema registration
|
|
120
|
+
*/
|
|
121
|
+
async guardConfigBatchRequestAndApprove(metaTx, options) {
|
|
122
|
+
return this.executeWriteContract('guardConfigBatchRequestAndApprove', [metaTx], options);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* @dev Gets all whitelisted targets for a function selector.
|
|
126
|
+
* @param functionSelector The function selector
|
|
127
|
+
* @return Promise<Address[]> Array of whitelisted target addresses
|
|
128
|
+
* @notice Requires caller to have any role (via _validateAnyRole) for privacy protection
|
|
129
|
+
*/
|
|
130
|
+
async getAllowedTargets(functionSelector) {
|
|
131
|
+
const result = await this.executeReadContract('getAllowedTargets', [
|
|
132
|
+
functionSelector
|
|
133
|
+
]);
|
|
134
|
+
if (!Array.isArray(result)) {
|
|
135
|
+
throw new Error(`Unexpected return type from getAllowedTargets: ${typeof result}`);
|
|
136
|
+
}
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
// ============ INTERFACE SUPPORT ============
|
|
140
|
+
/**
|
|
141
|
+
* @dev Check if this contract supports IGuardController interface
|
|
142
|
+
* @return Promise<boolean> indicating if IGuardController is supported
|
|
143
|
+
*/
|
|
144
|
+
async supportsGuardControllerInterface() {
|
|
145
|
+
return this.supportsInterface(INTERFACE_IDS.IGuardController);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
export default GuardController;
|
|
149
|
+
//# sourceMappingURL=GuardController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuardController.js","sourceRoot":"","sources":["../../contracts/GuardController.tsx"],"names":[],"mappings":"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"}
|