@gzeoneth/gov-tracker 0.2.0-0 → 0.2.0-2
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 +3 -0
- package/dist/calldata/decoder.d.ts.map +1 -1
- package/dist/calldata/decoder.js +14 -8
- package/dist/calldata/decoder.js.map +1 -1
- package/dist/calldata/parameter-decoder.js +8 -8
- package/dist/calldata/parameter-decoder.js.map +1 -1
- package/dist/cli/lib/cli.d.ts.map +1 -1
- package/dist/cli/lib/cli.js +5 -6
- package/dist/cli/lib/cli.js.map +1 -1
- package/dist/cli/lib/json-state.d.ts.map +1 -1
- package/dist/cli/lib/json-state.js +12 -11
- package/dist/cli/lib/json-state.js.map +1 -1
- package/dist/cli/monitor.js +2 -2
- package/dist/cli/monitor.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -20
- package/dist/index.js.map +1 -1
- package/dist/simulation/simulation-data.js +2 -2
- package/dist/simulation/simulation-data.js.map +1 -1
- package/dist/stages/{stage-builder.d.ts → builder.d.ts} +11 -7
- package/dist/stages/builder.d.ts.map +1 -0
- package/dist/stages/{stage-builder.js → builder.js} +12 -3
- package/dist/stages/builder.js.map +1 -0
- package/dist/stages/l2-to-l1-message.d.ts +3 -3
- package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
- package/dist/stages/l2-to-l1-message.js +11 -12
- package/dist/stages/l2-to-l1-message.js.map +1 -1
- package/dist/stages/proposal-created.d.ts +2 -2
- package/dist/stages/proposal-created.d.ts.map +1 -1
- package/dist/stages/proposal-created.js +4 -4
- package/dist/stages/proposal-created.js.map +1 -1
- package/dist/stages/proposal-queued.d.ts +2 -2
- package/dist/stages/proposal-queued.d.ts.map +1 -1
- package/dist/stages/proposal-queued.js +8 -9
- package/dist/stages/proposal-queued.js.map +1 -1
- package/dist/stages/retryables.d.ts +3 -3
- package/dist/stages/retryables.d.ts.map +1 -1
- package/dist/stages/retryables.js +14 -15
- package/dist/stages/retryables.js.map +1 -1
- package/dist/stages/timelock.d.ts +3 -3
- package/dist/stages/timelock.d.ts.map +1 -1
- package/dist/stages/timelock.js +32 -32
- package/dist/stages/timelock.js.map +1 -1
- package/dist/stages/{base.d.ts → utils.d.ts} +78 -35
- package/dist/stages/utils.d.ts.map +1 -0
- package/dist/stages/{base.js → utils.js} +208 -63
- package/dist/stages/utils.js.map +1 -0
- package/dist/stages/voting.d.ts +2 -2
- package/dist/stages/voting.d.ts.map +1 -1
- package/dist/stages/voting.js +2 -2
- package/dist/stages/voting.js.map +1 -1
- package/dist/tracker/cache.d.ts +104 -0
- package/dist/tracker/cache.d.ts.map +1 -0
- package/dist/tracker/cache.js +287 -0
- package/dist/tracker/cache.js.map +1 -0
- package/dist/tracker/execute.js +8 -8
- package/dist/tracker/execute.js.map +1 -1
- package/dist/tracker/pipeline.d.ts +3 -3
- package/dist/tracker/pipeline.d.ts.map +1 -1
- package/dist/tracker/pipeline.js +38 -35
- package/dist/tracker/pipeline.js.map +1 -1
- package/dist/tracker/query.js +3 -3
- package/dist/tracker/query.js.map +1 -1
- package/dist/tracker/state.d.ts +88 -81
- package/dist/tracker/state.d.ts.map +1 -1
- package/dist/tracker/state.js +241 -264
- package/dist/tracker/state.js.map +1 -1
- package/dist/tracker.d.ts +4 -4
- package/dist/tracker.d.ts.map +1 -1
- package/dist/tracker.js +22 -20
- package/dist/tracker.js.map +1 -1
- package/dist/types/calldata.d.ts +15 -3
- package/dist/types/calldata.d.ts.map +1 -1
- package/dist/types/calldata.js +7 -0
- package/dist/types/calldata.js.map +1 -1
- package/dist/types/core.d.ts +12 -0
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/core.js +30 -0
- package/dist/types/core.js.map +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +7 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/stages.d.ts +32 -17
- package/dist/types/stages.d.ts.map +1 -1
- package/dist/types/stages.js +2 -0
- package/dist/types/stages.js.map +1 -1
- package/package.json +2 -1
- package/dist/stages/base.d.ts.map +0 -1
- package/dist/stages/base.js.map +0 -1
- package/dist/stages/stage-builder.d.ts.map +0 -1
- package/dist/stages/stage-builder.js.map +0 -1
- package/dist/tracker/context.d.ts +0 -111
- package/dist/tracker/context.d.ts.map +0 -1
- package/dist/tracker/context.js +0 -264
- package/dist/tracker/context.js.map +0 -1
- package/dist/utils/stage-helpers.d.ts +0 -50
- package/dist/utils/stage-helpers.d.ts.map +0 -1
- package/dist/utils/stage-helpers.js +0 -135
- package/dist/utils/stage-helpers.js.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Stage Utilities
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Consolidated utilities for stage tracking, serialization, and timelock operations.
|
|
5
|
+
* Previously split between stages/base.ts and utils/stage-helpers.ts.
|
|
5
6
|
*/
|
|
6
7
|
import { ethers } from "ethers";
|
|
7
|
-
import { CallScheduledData, PrepareResult, SerializedCallScheduledData, StageType, TrackedStage } from "../types";
|
|
8
|
+
import { CallScheduledData, Chain, OperationState, PrepareResult, SerializedCallScheduledData, StageType, TimelockState, TrackedStage } from "../types";
|
|
8
9
|
/** Generic serializer: converts BigNumber fields to strings for JSON storage. */
|
|
9
10
|
export declare function serialize<T>(data: T, bigNumFields: readonly string[]): T;
|
|
10
11
|
/** Generic deserializer: converts string fields back to BigNumber. */
|
|
@@ -16,27 +17,6 @@ export declare const deserializeCallScheduledData: (data: SerializedCallSchedule
|
|
|
16
17
|
/** Serialize/deserialize arrays. */
|
|
17
18
|
export declare const serializeCallScheduledDataArray: (data: CallScheduledData[]) => SerializedCallScheduledData[];
|
|
18
19
|
export declare const deserializeCallScheduledDataArray: (data: SerializedCallScheduledData[]) => CallScheduledData[];
|
|
19
|
-
/**
|
|
20
|
-
* Calculate ETA from CallScheduled event data
|
|
21
|
-
*
|
|
22
|
-
* ETA = block timestamp + delay seconds
|
|
23
|
-
* This works even when operation is done (contract returns _DONE_TIMESTAMP=1)
|
|
24
|
-
*/
|
|
25
|
-
export declare function calculateEtaFromScheduledData(blockNumber: number, delaySeconds: number, provider: ethers.providers.Provider): Promise<number>;
|
|
26
|
-
/**
|
|
27
|
-
* Check if a proposal is Constitutional (requires L1 round-trip).
|
|
28
|
-
*
|
|
29
|
-
* Constitutional proposals (from Constitutional Governor) go through:
|
|
30
|
-
* L2 Timelock (8 days) → L2→L1 Message → L1 Timelock (3 days) → Retryables
|
|
31
|
-
*
|
|
32
|
-
* Non-Constitutional proposals (from Non-Constitutional Governor) are L2-only:
|
|
33
|
-
* L2 Timelock (3 days) → L2 Execution
|
|
34
|
-
*
|
|
35
|
-
* Also works with timelock addresses for direct timelock entry.
|
|
36
|
-
*
|
|
37
|
-
* @see https://docs.arbitrum.foundation/concepts/lifecycle-anatomy-aip-proposal
|
|
38
|
-
*/
|
|
39
|
-
export declare function isConstitutional(governorOrTimelockAddress: string): boolean;
|
|
40
20
|
/**
|
|
41
21
|
* Get all stages for a governor path
|
|
42
22
|
*
|
|
@@ -65,20 +45,10 @@ export declare function getCurrentStage(stages: TrackedStage[]): TrackedStage |
|
|
|
65
45
|
* Check if all stages are complete
|
|
66
46
|
*/
|
|
67
47
|
export declare function areAllStagesComplete(stages: TrackedStage[]): boolean;
|
|
68
|
-
/**
|
|
69
|
-
* Get block timestamp from provider
|
|
70
|
-
*/
|
|
71
|
-
export declare function getBlockTimestamp(blockNumber: number, provider: ethers.providers.Provider): Promise<number>;
|
|
72
48
|
/**
|
|
73
49
|
* Find first READY stage that's executable
|
|
74
50
|
*/
|
|
75
51
|
export declare function findExecutableStage(stages: TrackedStage[]): TrackedStage | null;
|
|
76
|
-
/** Timelock stage types (consolidated stages that require execution) */
|
|
77
|
-
export declare const TIMELOCK_STAGE_TYPES: readonly ["L2_TIMELOCK", "L1_TIMELOCK"];
|
|
78
|
-
/**
|
|
79
|
-
* Check if a stage type is a timelock stage
|
|
80
|
-
*/
|
|
81
|
-
export declare function isTimelockStage(type: StageType | string): boolean;
|
|
82
52
|
/**
|
|
83
53
|
* Find all READY executable stages
|
|
84
54
|
*/
|
|
@@ -114,6 +84,37 @@ export declare function getTrackingStatusSummary(stages: TrackedStage[]): {
|
|
|
114
84
|
* @returns The operationId if found, undefined otherwise
|
|
115
85
|
*/
|
|
116
86
|
export declare function extractOperationId(stages: TrackedStage[]): string | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* Check if a proposal is Constitutional (requires L1 round-trip).
|
|
89
|
+
*
|
|
90
|
+
* Constitutional proposals (from Constitutional Governor) go through:
|
|
91
|
+
* L2 Timelock (8 days) → L2→L1 Message → L1 Timelock (3 days) → Retryables
|
|
92
|
+
*
|
|
93
|
+
* Non-Constitutional proposals (from Non-Constitutional Governor) are L2-only:
|
|
94
|
+
* L2 Timelock (3 days) → L2 Execution
|
|
95
|
+
*
|
|
96
|
+
* Also works with timelock addresses for direct timelock entry.
|
|
97
|
+
*
|
|
98
|
+
* @see https://docs.arbitrum.foundation/concepts/lifecycle-anatomy-aip-proposal
|
|
99
|
+
*/
|
|
100
|
+
export declare function isConstitutional(governorOrTimelockAddress: string): boolean;
|
|
101
|
+
/** Timelock stage types (consolidated stages that require execution) */
|
|
102
|
+
export declare const TIMELOCK_STAGE_TYPES: readonly ["L2_TIMELOCK", "L1_TIMELOCK"];
|
|
103
|
+
/**
|
|
104
|
+
* Check if a stage type is a timelock stage
|
|
105
|
+
*/
|
|
106
|
+
export declare function isTimelockStage(type: StageType | string): boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Get block timestamp from provider
|
|
109
|
+
*/
|
|
110
|
+
export declare function getBlockTimestamp(blockNumber: number, provider: ethers.providers.Provider): Promise<number>;
|
|
111
|
+
/**
|
|
112
|
+
* Calculate ETA from CallScheduled event data
|
|
113
|
+
*
|
|
114
|
+
* ETA = block timestamp + delay seconds
|
|
115
|
+
* This works even when operation is done (contract returns _DONE_TIMESTAMP=1)
|
|
116
|
+
*/
|
|
117
|
+
export declare function calculateEtaFromScheduledData(blockNumber: number, delaySeconds: number, provider: ethers.providers.Provider): Promise<number>;
|
|
117
118
|
/**
|
|
118
119
|
* Create a failed PrepareResult with an error message.
|
|
119
120
|
* Reduces boilerplate for the common pattern: { success: false, error: "..." }
|
|
@@ -124,4 +125,46 @@ export declare function failPrepare(error: string): PrepareResult;
|
|
|
124
125
|
* Returns null if ready, or an error result if not ready or already executed.
|
|
125
126
|
*/
|
|
126
127
|
export declare function checkOperationReady(timelockAddress: string, operationId: string, provider: ethers.providers.Provider): Promise<PrepareResult | null>;
|
|
127
|
-
|
|
128
|
+
/** Execution payload data for timelock operations. */
|
|
129
|
+
export interface TimelockExecutionPayload {
|
|
130
|
+
timelockAddress: string;
|
|
131
|
+
operationId: string;
|
|
132
|
+
callScheduledData: CallScheduledData[];
|
|
133
|
+
isSecurityCouncilOperation?: boolean;
|
|
134
|
+
securityCouncilMembers?: string[];
|
|
135
|
+
securityCouncilNonce?: string;
|
|
136
|
+
}
|
|
137
|
+
/** Extract timelock execution payload from a stage. */
|
|
138
|
+
export declare function createTimelockStageData(stage: TrackedStage): TimelockExecutionPayload | null;
|
|
139
|
+
/** Collect all CallScheduledData from a timelock state. */
|
|
140
|
+
export declare function collectAllScheduledData(timelockState: TimelockState): CallScheduledData[];
|
|
141
|
+
/** Calculate ETA for a timelock operation. */
|
|
142
|
+
export declare function calculateTimelockEta(timelockState: TimelockState, operationState: OperationState, provider: ethers.providers.Provider): Promise<number | undefined>;
|
|
143
|
+
/** Build serialized execution payload data for stage storage. */
|
|
144
|
+
export declare function buildExecutionPayloadData(timelockAddress: string, operationId: string, allScheduledData: CallScheduledData[]): Record<string, unknown>;
|
|
145
|
+
export interface PrepareValidationOptions {
|
|
146
|
+
prepareCompleted?: boolean;
|
|
147
|
+
expectedTypes?: StageType[];
|
|
148
|
+
}
|
|
149
|
+
/** Validate stage for preparation. Returns error or null if valid. */
|
|
150
|
+
export declare function validateStageForPrepare(stage: TrackedStage, options?: PrepareValidationOptions): PrepareResult | null;
|
|
151
|
+
export interface BulkPrepareResult<T extends Chain = Chain> {
|
|
152
|
+
total: number;
|
|
153
|
+
results: PrepareResult[];
|
|
154
|
+
targetChain: T;
|
|
155
|
+
}
|
|
156
|
+
export interface SimpleBulkResult {
|
|
157
|
+
total: number;
|
|
158
|
+
results: PrepareResult[];
|
|
159
|
+
}
|
|
160
|
+
export declare function bulkPrepareError<T extends Chain>(error: string, targetChain: T): BulkPrepareResult<T>;
|
|
161
|
+
export declare function simpleBulkError(error: string): SimpleBulkResult;
|
|
162
|
+
export declare function validateStageForBulkPrepare<T extends Chain>(stage: TrackedStage, targetChain: T, options?: PrepareValidationOptions): BulkPrepareResult<T> | null;
|
|
163
|
+
export declare function validateStageForSimpleBulk(stage: TrackedStage, options?: PrepareValidationOptions): SimpleBulkResult | null;
|
|
164
|
+
/** Search for timelock execution event and complete stage. */
|
|
165
|
+
export declare function searchAndCompleteTimelockExecution(stage: TrackedStage, timelockAddress: string, operationId: string, provider: ethers.providers.Provider, chain: Chain, fromBlock: number, toBlock?: number, queueTimestamp?: number): Promise<{
|
|
166
|
+
stage: TrackedStage;
|
|
167
|
+
executionTxHash: string | null;
|
|
168
|
+
executionBlock: number | null;
|
|
169
|
+
}>;
|
|
170
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/stages/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Stage Utilities
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Consolidated utilities for stage tracking, serialization, and timelock operations.
|
|
6
|
+
* Previously split between stages/base.ts and utils/stage-helpers.ts.
|
|
6
7
|
*/
|
|
7
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
9
|
exports.TIMELOCK_STAGE_TYPES = exports.deserializeCallScheduledDataArray = exports.serializeCallScheduledDataArray = exports.deserializeCallScheduledData = exports.serializeCallScheduledData = void 0;
|
|
9
10
|
exports.serialize = serialize;
|
|
10
11
|
exports.deserialize = deserialize;
|
|
11
|
-
exports.calculateEtaFromScheduledData = calculateEtaFromScheduledData;
|
|
12
|
-
exports.isConstitutional = isConstitutional;
|
|
13
12
|
exports.getStagesForPath = getStagesForPath;
|
|
14
13
|
exports.initializeStagesForPath = initializeStagesForPath;
|
|
15
14
|
exports.findStage = findStage;
|
|
16
15
|
exports.updateStageInList = updateStageInList;
|
|
17
16
|
exports.getCurrentStage = getCurrentStage;
|
|
18
17
|
exports.areAllStagesComplete = areAllStagesComplete;
|
|
19
|
-
exports.getBlockTimestamp = getBlockTimestamp;
|
|
20
18
|
exports.findExecutableStage = findExecutableStage;
|
|
21
|
-
exports.isTimelockStage = isTimelockStage;
|
|
22
19
|
exports.findAllExecutableStages = findAllExecutableStages;
|
|
23
20
|
exports.needsAction = needsAction;
|
|
24
21
|
exports.getTrackingStatusSummary = getTrackingStatusSummary;
|
|
25
22
|
exports.extractOperationId = extractOperationId;
|
|
23
|
+
exports.isConstitutional = isConstitutional;
|
|
24
|
+
exports.isTimelockStage = isTimelockStage;
|
|
25
|
+
exports.getBlockTimestamp = getBlockTimestamp;
|
|
26
|
+
exports.calculateEtaFromScheduledData = calculateEtaFromScheduledData;
|
|
26
27
|
exports.failPrepare = failPrepare;
|
|
27
28
|
exports.checkOperationReady = checkOperationReady;
|
|
29
|
+
exports.createTimelockStageData = createTimelockStageData;
|
|
30
|
+
exports.collectAllScheduledData = collectAllScheduledData;
|
|
31
|
+
exports.calculateTimelockEta = calculateTimelockEta;
|
|
32
|
+
exports.buildExecutionPayloadData = buildExecutionPayloadData;
|
|
33
|
+
exports.validateStageForPrepare = validateStageForPrepare;
|
|
34
|
+
exports.bulkPrepareError = bulkPrepareError;
|
|
35
|
+
exports.simpleBulkError = simpleBulkError;
|
|
36
|
+
exports.validateStageForBulkPrepare = validateStageForBulkPrepare;
|
|
37
|
+
exports.validateStageForSimpleBulk = validateStageForSimpleBulk;
|
|
38
|
+
exports.searchAndCompleteTimelockExecution = searchAndCompleteTimelockExecution;
|
|
28
39
|
const ethers_1 = require("ethers");
|
|
29
40
|
const types_1 = require("../types");
|
|
30
41
|
const abis_1 = require("../abis");
|
|
31
42
|
const constants_1 = require("../constants");
|
|
32
43
|
const chain_1 = require("../utils/chain");
|
|
33
44
|
const rpc_utils_1 = require("../utils/rpc-utils");
|
|
45
|
+
const builder_1 = require("./builder");
|
|
46
|
+
const timelock_discovery_1 = require("../discovery/timelock-discovery");
|
|
34
47
|
// ============================================================================
|
|
35
|
-
// Serialization Utilities
|
|
48
|
+
// Section 1: Serialization Utilities
|
|
36
49
|
// ============================================================================
|
|
37
50
|
const CALL_SCHEDULED_BIGNUM_FIELDS = ["index", "value", "delay"];
|
|
38
51
|
/** Generic serializer: converts BigNumber fields to strings for JSON storage. */
|
|
@@ -71,13 +84,16 @@ exports.serializeCallScheduledDataArray = serializeCallScheduledDataArray;
|
|
|
71
84
|
const deserializeCallScheduledDataArray = (data) => data.map(exports.deserializeCallScheduledData);
|
|
72
85
|
exports.deserializeCallScheduledDataArray = deserializeCallScheduledDataArray;
|
|
73
86
|
// ============================================================================
|
|
74
|
-
// Stage Creation and Management
|
|
87
|
+
// Section 2: Stage Creation and Management
|
|
75
88
|
// ============================================================================
|
|
76
89
|
/**
|
|
77
|
-
* Create a new tracked stage with default values
|
|
90
|
+
* Create a new tracked stage with default values.
|
|
91
|
+
* Used for initializing placeholder stages that will be filled in later.
|
|
78
92
|
*/
|
|
79
93
|
function createStage(type, chain, status = "NOT_STARTED") {
|
|
80
|
-
const chainId = (0, types_1.chainToChainId)(chain) ?? 0;
|
|
94
|
+
const chainId = (0, types_1.chainToChainId)(chain) ?? 0;
|
|
95
|
+
// Assertion needed: we create placeholder stages with empty data that get
|
|
96
|
+
// replaced by properly-built stages. TypeScript can't track this flow.
|
|
81
97
|
return {
|
|
82
98
|
type,
|
|
83
99
|
status,
|
|
@@ -88,35 +104,6 @@ function createStage(type, chain, status = "NOT_STARTED") {
|
|
|
88
104
|
executable: false,
|
|
89
105
|
};
|
|
90
106
|
}
|
|
91
|
-
/**
|
|
92
|
-
* Calculate ETA from CallScheduled event data
|
|
93
|
-
*
|
|
94
|
-
* ETA = block timestamp + delay seconds
|
|
95
|
-
* This works even when operation is done (contract returns _DONE_TIMESTAMP=1)
|
|
96
|
-
*/
|
|
97
|
-
async function calculateEtaFromScheduledData(blockNumber, delaySeconds, provider) {
|
|
98
|
-
const timestamp = await getBlockTimestamp(blockNumber, provider);
|
|
99
|
-
return timestamp + delaySeconds;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Check if a proposal is Constitutional (requires L1 round-trip).
|
|
103
|
-
*
|
|
104
|
-
* Constitutional proposals (from Constitutional Governor) go through:
|
|
105
|
-
* L2 Timelock (8 days) → L2→L1 Message → L1 Timelock (3 days) → Retryables
|
|
106
|
-
*
|
|
107
|
-
* Non-Constitutional proposals (from Non-Constitutional Governor) are L2-only:
|
|
108
|
-
* L2 Timelock (3 days) → L2 Execution
|
|
109
|
-
*
|
|
110
|
-
* Also works with timelock addresses for direct timelock entry.
|
|
111
|
-
*
|
|
112
|
-
* @see https://docs.arbitrum.foundation/concepts/lifecycle-anatomy-aip-proposal
|
|
113
|
-
*/
|
|
114
|
-
function isConstitutional(governorOrTimelockAddress) {
|
|
115
|
-
return (0, chain_1.isAddressIn)(governorOrTimelockAddress, [
|
|
116
|
-
constants_1.ADDRESSES.CONSTITUTIONAL_GOVERNOR,
|
|
117
|
-
constants_1.ADDRESSES.L2_CONSTITUTIONAL_TIMELOCK,
|
|
118
|
-
]);
|
|
119
|
-
}
|
|
120
107
|
/**
|
|
121
108
|
* Get all stages for a governor path
|
|
122
109
|
*
|
|
@@ -161,6 +148,9 @@ function findStage(stages, type) {
|
|
|
161
148
|
function updateStageInList(stages, updatedStage) {
|
|
162
149
|
return stages.map((s) => (s.type === updatedStage.type ? updatedStage : s));
|
|
163
150
|
}
|
|
151
|
+
// ============================================================================
|
|
152
|
+
// Section 3: Stage Querying and Status
|
|
153
|
+
// ============================================================================
|
|
164
154
|
/**
|
|
165
155
|
* Get the current active stage (first non-completed stage)
|
|
166
156
|
*/
|
|
@@ -178,30 +168,12 @@ function getCurrentStage(stages) {
|
|
|
178
168
|
function areAllStagesComplete(stages) {
|
|
179
169
|
return stages.every((s) => s.status === "COMPLETED" || s.status === "SKIPPED" || s.status === "FAILED");
|
|
180
170
|
}
|
|
181
|
-
/**
|
|
182
|
-
* Get block timestamp from provider
|
|
183
|
-
*/
|
|
184
|
-
async function getBlockTimestamp(blockNumber, provider) {
|
|
185
|
-
const block = await (0, rpc_utils_1.queryWithRetry)(() => provider.getBlock(blockNumber));
|
|
186
|
-
if (!block) {
|
|
187
|
-
throw new Error(`Block ${blockNumber} not found`);
|
|
188
|
-
}
|
|
189
|
-
return block.timestamp;
|
|
190
|
-
}
|
|
191
171
|
/**
|
|
192
172
|
* Find first READY stage that's executable
|
|
193
173
|
*/
|
|
194
174
|
function findExecutableStage(stages) {
|
|
195
175
|
return stages.find((s) => s.status === "READY" && s.executable === true) ?? null;
|
|
196
176
|
}
|
|
197
|
-
/** Timelock stage types (consolidated stages that require execution) */
|
|
198
|
-
exports.TIMELOCK_STAGE_TYPES = ["L2_TIMELOCK", "L1_TIMELOCK"];
|
|
199
|
-
/**
|
|
200
|
-
* Check if a stage type is a timelock stage
|
|
201
|
-
*/
|
|
202
|
-
function isTimelockStage(type) {
|
|
203
|
-
return exports.TIMELOCK_STAGE_TYPES.includes(type);
|
|
204
|
-
}
|
|
205
177
|
/**
|
|
206
178
|
* Find all READY executable stages
|
|
207
179
|
*/
|
|
@@ -247,17 +219,80 @@ function getTrackingStatusSummary(stages) {
|
|
|
247
219
|
* @returns The operationId if found, undefined otherwise
|
|
248
220
|
*/
|
|
249
221
|
function extractOperationId(stages) {
|
|
250
|
-
// Check
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
const
|
|
254
|
-
|
|
222
|
+
// Check PROPOSAL_QUEUED first (most common)
|
|
223
|
+
const queuedStage = stages.find((s) => s.type === "PROPOSAL_QUEUED");
|
|
224
|
+
if (queuedStage?.type === "PROPOSAL_QUEUED") {
|
|
225
|
+
const opId = queuedStage.data.operationId;
|
|
226
|
+
if (typeof opId === "string" && opId.length > 0) {
|
|
227
|
+
return opId;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// Fallback to L2_TIMELOCK
|
|
231
|
+
const l2TimelockStage = stages.find((s) => s.type === "L2_TIMELOCK");
|
|
232
|
+
if (l2TimelockStage?.type === "L2_TIMELOCK") {
|
|
233
|
+
const opId = l2TimelockStage.data.operationId;
|
|
255
234
|
if (typeof opId === "string" && opId.length > 0) {
|
|
256
235
|
return opId;
|
|
257
236
|
}
|
|
258
237
|
}
|
|
259
238
|
return undefined;
|
|
260
239
|
}
|
|
240
|
+
// ============================================================================
|
|
241
|
+
// Section 4: Governance Logic
|
|
242
|
+
// ============================================================================
|
|
243
|
+
/**
|
|
244
|
+
* Check if a proposal is Constitutional (requires L1 round-trip).
|
|
245
|
+
*
|
|
246
|
+
* Constitutional proposals (from Constitutional Governor) go through:
|
|
247
|
+
* L2 Timelock (8 days) → L2→L1 Message → L1 Timelock (3 days) → Retryables
|
|
248
|
+
*
|
|
249
|
+
* Non-Constitutional proposals (from Non-Constitutional Governor) are L2-only:
|
|
250
|
+
* L2 Timelock (3 days) → L2 Execution
|
|
251
|
+
*
|
|
252
|
+
* Also works with timelock addresses for direct timelock entry.
|
|
253
|
+
*
|
|
254
|
+
* @see https://docs.arbitrum.foundation/concepts/lifecycle-anatomy-aip-proposal
|
|
255
|
+
*/
|
|
256
|
+
function isConstitutional(governorOrTimelockAddress) {
|
|
257
|
+
return (0, chain_1.isAddressIn)(governorOrTimelockAddress, [
|
|
258
|
+
constants_1.ADDRESSES.CONSTITUTIONAL_GOVERNOR,
|
|
259
|
+
constants_1.ADDRESSES.L2_CONSTITUTIONAL_TIMELOCK,
|
|
260
|
+
]);
|
|
261
|
+
}
|
|
262
|
+
/** Timelock stage types (consolidated stages that require execution) */
|
|
263
|
+
exports.TIMELOCK_STAGE_TYPES = ["L2_TIMELOCK", "L1_TIMELOCK"];
|
|
264
|
+
/**
|
|
265
|
+
* Check if a stage type is a timelock stage
|
|
266
|
+
*/
|
|
267
|
+
function isTimelockStage(type) {
|
|
268
|
+
return exports.TIMELOCK_STAGE_TYPES.includes(type);
|
|
269
|
+
}
|
|
270
|
+
// ============================================================================
|
|
271
|
+
// Section 5: Block & Timing Utilities
|
|
272
|
+
// ============================================================================
|
|
273
|
+
/**
|
|
274
|
+
* Get block timestamp from provider
|
|
275
|
+
*/
|
|
276
|
+
async function getBlockTimestamp(blockNumber, provider) {
|
|
277
|
+
const block = await (0, rpc_utils_1.queryWithRetry)(() => provider.getBlock(blockNumber));
|
|
278
|
+
if (!block) {
|
|
279
|
+
throw new Error(`Block ${blockNumber} not found`);
|
|
280
|
+
}
|
|
281
|
+
return block.timestamp;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Calculate ETA from CallScheduled event data
|
|
285
|
+
*
|
|
286
|
+
* ETA = block timestamp + delay seconds
|
|
287
|
+
* This works even when operation is done (contract returns _DONE_TIMESTAMP=1)
|
|
288
|
+
*/
|
|
289
|
+
async function calculateEtaFromScheduledData(blockNumber, delaySeconds, provider) {
|
|
290
|
+
const timestamp = await getBlockTimestamp(blockNumber, provider);
|
|
291
|
+
return timestamp + delaySeconds;
|
|
292
|
+
}
|
|
293
|
+
// ============================================================================
|
|
294
|
+
// Section 6: Preparation Helpers
|
|
295
|
+
// ============================================================================
|
|
261
296
|
/**
|
|
262
297
|
* Create a failed PrepareResult with an error message.
|
|
263
298
|
* Reduces boilerplate for the common pattern: { success: false, error: "..." }
|
|
@@ -280,4 +315,114 @@ async function checkOperationReady(timelockAddress, operationId, provider) {
|
|
|
280
315
|
}
|
|
281
316
|
return failPrepare("Operation is not ready for execution");
|
|
282
317
|
}
|
|
283
|
-
|
|
318
|
+
/** Extract timelock execution payload from a stage. */
|
|
319
|
+
function createTimelockStageData(stage) {
|
|
320
|
+
let stageData = null;
|
|
321
|
+
for (const stageType of exports.TIMELOCK_STAGE_TYPES) {
|
|
322
|
+
stageData = (0, types_1.getStageData)(stage, stageType);
|
|
323
|
+
if (stageData)
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
if (!stageData?.timelockAddress ||
|
|
327
|
+
!stageData?.operationId ||
|
|
328
|
+
!stageData?.callScheduledData?.length) {
|
|
329
|
+
return null;
|
|
330
|
+
}
|
|
331
|
+
const payload = {
|
|
332
|
+
timelockAddress: stageData.timelockAddress,
|
|
333
|
+
operationId: stageData.operationId,
|
|
334
|
+
callScheduledData: (0, exports.deserializeCallScheduledDataArray)(stageData.callScheduledData),
|
|
335
|
+
};
|
|
336
|
+
if (stageData.isSecurityCouncilOperation) {
|
|
337
|
+
payload.isSecurityCouncilOperation = true;
|
|
338
|
+
payload.securityCouncilMembers = stageData.securityCouncilMembers;
|
|
339
|
+
payload.securityCouncilNonce = stageData.securityCouncilNonce;
|
|
340
|
+
}
|
|
341
|
+
return payload;
|
|
342
|
+
}
|
|
343
|
+
/** Collect all CallScheduledData from a timelock state. */
|
|
344
|
+
function collectAllScheduledData(timelockState) {
|
|
345
|
+
return (timelockState.allScheduledData ??
|
|
346
|
+
(timelockState.scheduledData ? [timelockState.scheduledData] : []));
|
|
347
|
+
}
|
|
348
|
+
/** Calculate ETA for a timelock operation. */
|
|
349
|
+
async function calculateTimelockEta(timelockState, operationState, provider) {
|
|
350
|
+
if (timelockState.scheduledData) {
|
|
351
|
+
return calculateEtaFromScheduledData(timelockState.scheduledData.blockNumber, timelockState.scheduledData.delay.toNumber(), provider);
|
|
352
|
+
}
|
|
353
|
+
const contractTimestamp = operationState.timestamp.toNumber();
|
|
354
|
+
return !operationState.isDone && contractTimestamp > 1 ? contractTimestamp : undefined;
|
|
355
|
+
}
|
|
356
|
+
/** Build serialized execution payload data for stage storage. */
|
|
357
|
+
function buildExecutionPayloadData(timelockAddress, operationId, allScheduledData) {
|
|
358
|
+
const payload = { timelockAddress, operationId };
|
|
359
|
+
if (allScheduledData.length > 0) {
|
|
360
|
+
payload.callScheduledData = (0, exports.serializeCallScheduledDataArray)(allScheduledData);
|
|
361
|
+
}
|
|
362
|
+
return payload;
|
|
363
|
+
}
|
|
364
|
+
/** Validate stage for preparation. Returns error or null if valid. */
|
|
365
|
+
function validateStageForPrepare(stage, options = {}) {
|
|
366
|
+
if (!options.prepareCompleted && stage.status !== "READY") {
|
|
367
|
+
return failPrepare(`Stage is not ready. Current status: ${stage.status}`);
|
|
368
|
+
}
|
|
369
|
+
if (options.expectedTypes?.length && !options.expectedTypes.includes(stage.type)) {
|
|
370
|
+
return failPrepare(`Unexpected stage type: ${stage.type}. Expected: ${options.expectedTypes.join(", ")}`);
|
|
371
|
+
}
|
|
372
|
+
return null;
|
|
373
|
+
}
|
|
374
|
+
function bulkPrepareError(error, targetChain) {
|
|
375
|
+
return { total: 0, results: [{ success: false, error }], targetChain };
|
|
376
|
+
}
|
|
377
|
+
function simpleBulkError(error) {
|
|
378
|
+
return { total: 0, results: [{ success: false, error }] };
|
|
379
|
+
}
|
|
380
|
+
function validateStageForBulkPrepare(stage, targetChain, options = {}) {
|
|
381
|
+
const error = validateStageForPrepare(stage, options);
|
|
382
|
+
return error ? { total: 0, results: [error], targetChain } : null;
|
|
383
|
+
}
|
|
384
|
+
function validateStageForSimpleBulk(stage, options = {}) {
|
|
385
|
+
const error = validateStageForPrepare(stage, options);
|
|
386
|
+
return error ? { total: 0, results: [error] } : null;
|
|
387
|
+
}
|
|
388
|
+
// ============================================================================
|
|
389
|
+
// Section 9: Execution Search Helper
|
|
390
|
+
// ============================================================================
|
|
391
|
+
/** Search for timelock execution event and complete stage. */
|
|
392
|
+
async function searchAndCompleteTimelockExecution(stage, timelockAddress, operationId, provider, chain, fromBlock, toBlock, queueTimestamp) {
|
|
393
|
+
const event = await (0, timelock_discovery_1.findCallExecutedEvent)(timelockAddress, operationId, provider, {
|
|
394
|
+
startBlock: fromBlock,
|
|
395
|
+
endBlock: toBlock,
|
|
396
|
+
});
|
|
397
|
+
const builder = new builder_1.StageBuilder(stage.type, stage.chain)
|
|
398
|
+
.data(stage.data)
|
|
399
|
+
.transactions(stage.transactions);
|
|
400
|
+
if (stage.timing)
|
|
401
|
+
builder.timing(stage.timing);
|
|
402
|
+
if (event) {
|
|
403
|
+
const execTimestamp = await getBlockTimestamp(event.blockNumber, provider);
|
|
404
|
+
const chainId = (0, types_1.chainToChainId)(chain) ?? 0;
|
|
405
|
+
builder
|
|
406
|
+
.status("COMPLETED")
|
|
407
|
+
.tx(event.txHash, event.blockNumber, chain, chainId, {
|
|
408
|
+
timestamp: execTimestamp,
|
|
409
|
+
description: "executed",
|
|
410
|
+
})
|
|
411
|
+
.timing({ startedAt: queueTimestamp ?? execTimestamp })
|
|
412
|
+
.data({ operationId });
|
|
413
|
+
return {
|
|
414
|
+
stage: builder.build(),
|
|
415
|
+
executionTxHash: event.txHash,
|
|
416
|
+
executionBlock: event.blockNumber,
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
return {
|
|
420
|
+
stage: builder
|
|
421
|
+
.status("COMPLETED")
|
|
422
|
+
.data({ operationId, note: "Execution confirmed by state, event not found" })
|
|
423
|
+
.build(),
|
|
424
|
+
executionTxHash: null,
|
|
425
|
+
executionBlock: null,
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/stages/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/stages/voting.d.ts
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
* When calculating ETA for vetting period, we must use L1 block time.
|
|
8
8
|
*/
|
|
9
9
|
import { ethers } from "ethers";
|
|
10
|
-
import { ProposalData,
|
|
10
|
+
import { ProposalData, TypedTrackedStage, VotingData } from "../types";
|
|
11
11
|
/**
|
|
12
12
|
* Track voting stage for a proposal
|
|
13
13
|
*/
|
|
14
14
|
export declare function trackVotingStage(governorAddress: string, proposalId: string, proposalData: ProposalData, provider: ethers.providers.Provider): Promise<{
|
|
15
|
-
stage:
|
|
15
|
+
stage: TypedTrackedStage<"VOTING_ACTIVE">;
|
|
16
16
|
votingData: VotingData | null;
|
|
17
17
|
}>;
|
|
18
18
|
//# sourceMappingURL=voting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voting.d.ts","sourceRoot":"","sources":["../../src/stages/voting.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"voting.d.ts","sourceRoot":"","sources":["../../src/stages/voting.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAevE;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAClC,OAAO,CAAC;IACT,KAAK,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC1C,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B,CAAC,CA8HD"}
|
package/dist/stages/voting.js
CHANGED
|
@@ -12,14 +12,14 @@ exports.trackVotingStage = trackVotingStage;
|
|
|
12
12
|
const ethers_1 = require("ethers");
|
|
13
13
|
const governor_discovery_1 = require("../discovery/governor-discovery");
|
|
14
14
|
const security_council_1 = require("../discovery/security-council");
|
|
15
|
-
const
|
|
15
|
+
const builder_1 = require("./builder");
|
|
16
16
|
const timing_1 = require("../utils/timing");
|
|
17
17
|
const constants_1 = require("../constants");
|
|
18
18
|
/**
|
|
19
19
|
* Track voting stage for a proposal
|
|
20
20
|
*/
|
|
21
21
|
async function trackVotingStage(governorAddress, proposalId, proposalData, provider) {
|
|
22
|
-
const builder = new
|
|
22
|
+
const builder = new builder_1.StageBuilder("VOTING_ACTIVE", "arb1");
|
|
23
23
|
// Get current block info
|
|
24
24
|
const { blockNumber: currentBlock, timestamp: currentTimestamp } = await (0, timing_1.getCurrentBlockInfo)(provider);
|
|
25
25
|
// Check if voting has started
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voting.js","sourceRoot":"","sources":["../../src/stages/voting.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAqBH,4CAsIC;AAzJD,mCAAgC;AAEhC,wEAIyC;AACzC,oEAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"voting.js","sourceRoot":"","sources":["../../src/stages/voting.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAqBH,4CAsIC;AAzJD,mCAAgC;AAEhC,wEAIyC;AACzC,oEAAmE;AACnE,uCAAyC;AACzC,4CAIyB;AACzB,4CAA2C;AAE3C;;GAEG;AACI,KAAK,UAAU,gBAAgB,CACpC,eAAuB,EACvB,UAAkB,EAClB,YAA0B,EAC1B,QAAmC;IAKnC,MAAM,OAAO,GAAG,IAAI,sBAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAE1D,yBAAyB;IACzB,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAC9D,MAAM,IAAA,4BAAmB,EAAC,QAAQ,CAAC,CAAC;IAEtC,8BAA8B;IAC9B,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7C,yBAAyB;QACzB,MAAM,gBAAgB,GAAG,IAAA,kCAAyB,EAChD,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,EAClC,YAAY,EACZ,uBAAW,CAAC,EAAE,CACf,CAAC;QAEF,OAAO;aACJ,MAAM,CAAC,aAAa,CAAC;aACrB,MAAM,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;aACjF,IAAI,CAAC;YACJ,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC9C,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE;SACtC,CAAC,CAAC;QAEL,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACtD,CAAC;IAED,gCAAgC;IAChC,MAAM,UAAU,GAAG,MAAM,IAAA,kCAAa,EAAC,eAAe,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE9E,0EAA0E;IAC1E,MAAM,YAAY,GAAG,IAAA,uCAAkB,EAAC,eAAe,CAAC,CAAC;IACzD,MAAM,kBAAkB,GACtB,YAAY,KAAK,kBAAkB,IAAI,YAAY,KAAK,iBAAiB,CAAC;IAE5E,MAAM,WAAW,GAAG,kBAAkB;QACpC,CAAC,CAAC,MAAM,IAAA,qCAAkB,EAAC,eAAe,EAAE,UAAU,EAAE,QAAQ,CAAC;QACjE,CAAC,CAAC;YACE,gBAAgB,EAAE,KAAK;YACvB,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,IAAI;SACpB,CAAC;IAEN,+BAA+B;IAC/B,MAAM,WAAW,GACf,UAAU,CAAC,gBAAgB,KAAK,SAAS;QACzC,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,iBAAiB,GAAG,CAAC,UAAU,CAAC,kBAAkB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;IAEzF,+CAA+C;IAC/C,MAAM,WAAW,GAAG,CAAC,KAAuB,EAAU,EAAE;QACtD,MAAM,SAAS,GAAG,eAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClD,sDAAsD;QACtD,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC;IAClD,CAAC,CAAC;IAEF,wBAAwB;IACxB,OAAO,CAAC,IAAI,CAAC;QACX,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC1C,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE;QAC3C,YAAY,EAAE,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC;QAClD,eAAe,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE;QACnD,YAAY,EAAE,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC;QAClD,eAAe,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE;QACnD,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;QACtC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE;QACvC,aAAa,EAAE,UAAU,CAAC,gBAAgB;QAC1C,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACxC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAAE,QAAQ,EAAE;QACzD,WAAW;QACX,iBAAiB;QACjB,gBAAgB,EAAE,WAAW,CAAC,gBAAgB;QAC9C,eAAe,EAAE,WAAW,CAAC,eAAe,EAAE,QAAQ,EAAE;QACxD,eAAe,EAAE,WAAW,CAAC,eAAe;KAC7C,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,aAAa,GAAG,MAAM,IAAA,qCAAgB,EAAC,eAAe,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpF,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IAEhC,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,gBAAgB,GAAG,IAAA,kCAAyB,EAChD,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAC9B,YAAY,EACZ,uBAAW,CAAC,EAAE,CACf,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;YAC/B,SAAS,EAAE,gBAAgB;YAC3B,GAAG,EAAE,gBAAgB,GAAG,gBAAgB;YACxC,YAAY,EAAE,gBAAgB;SAC/B,CAAC,CAAC;IACL,CAAC;SAAM,IACL,aAAa,KAAK,WAAW;QAC7B,aAAa,KAAK,QAAQ;QAC1B,aAAa,KAAK,UAAU,EAC5B,CAAC;QACD,6BAA6B;QAC7B,IAAI,WAAW,CAAC,eAAe,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC;YAC/D,MAAM,cAAc,GAAG,MAAM,IAAA,+BAAsB,EAAC,QAAQ,CAAC,CAAC;YAC9D,MAAM,gBAAgB,GAAG,IAAA,kCAAyB,EAChD,WAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,EACtC,cAAc,CAAC,QAAQ,EAAE,EACzB,uBAAW,CAAC,EAAE,CACf,CAAC;YACF,OAAO;iBACJ,MAAM,CAAC,SAAS,CAAC;iBACjB,IAAI,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;iBACjC,MAAM,CAAC;gBACN,GAAG,EAAE,gBAAgB,GAAG,gBAAgB;gBACxC,YAAY,EAAE,gBAAgB;aAC/B,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;SAAM,IACL,aAAa,KAAK,UAAU;QAC5B,aAAa,KAAK,UAAU;QAC5B,aAAa,KAAK,SAAS,EAC3B,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;SAAM,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC;AAChD,CAAC"}
|