@gzeoneth/gov-tracker 0.1.2 → 0.2.0-1
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/abis.d.ts +0 -32
- package/dist/abis.d.ts.map +1 -1
- package/dist/abis.js +17 -17
- package/dist/abis.js.map +1 -1
- package/dist/calldata/decoder.d.ts +12 -3
- package/dist/calldata/decoder.d.ts.map +1 -1
- package/dist/calldata/decoder.js +56 -9
- package/dist/calldata/decoder.js.map +1 -1
- package/dist/calldata/index.d.ts +4 -7
- package/dist/calldata/index.d.ts.map +1 -1
- package/dist/calldata/index.js +5 -19
- package/dist/calldata/index.js.map +1 -1
- package/dist/calldata/parameter-decoder.d.ts +11 -2
- package/dist/calldata/parameter-decoder.d.ts.map +1 -1
- package/dist/calldata/parameter-decoder.js +67 -8
- package/dist/calldata/parameter-decoder.js.map +1 -1
- package/dist/calldata/retryable-ticket.d.ts +1 -17
- package/dist/calldata/retryable-ticket.d.ts.map +1 -1
- package/dist/calldata/retryable-ticket.js +10 -17
- package/dist/calldata/retryable-ticket.js.map +1 -1
- package/dist/calldata/signature-lookup.d.ts +0 -11
- package/dist/calldata/signature-lookup.d.ts.map +1 -1
- package/dist/calldata/signature-lookup.js +0 -8
- package/dist/calldata/signature-lookup.js.map +1 -1
- package/dist/cli/lib/cli.d.ts +1 -3
- package/dist/cli/lib/cli.d.ts.map +1 -1
- package/dist/cli/lib/cli.js +12 -27
- package/dist/cli/lib/cli.js.map +1 -1
- package/dist/cli/lib/election-check.d.ts +2 -2
- package/dist/cli/lib/election-check.d.ts.map +1 -1
- package/dist/cli/lib/election-check.js.map +1 -1
- package/dist/cli/lib/json-state.d.ts +2 -29
- package/dist/cli/lib/json-state.d.ts.map +1 -1
- package/dist/cli/lib/json-state.js +12 -56
- package/dist/cli/lib/json-state.js.map +1 -1
- package/dist/cli/monitor.js +1 -2
- package/dist/cli/monitor.js.map +1 -1
- package/dist/constants.d.ts +41 -7
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +64 -4
- package/dist/constants.js.map +1 -1
- package/dist/discovery/timelock-discovery.js +1 -1
- package/dist/discovery/timelock-discovery.js.map +1 -1
- package/dist/election.d.ts.map +1 -1
- package/dist/election.js +7 -4
- package/dist/election.js.map +1 -1
- package/dist/index.d.ts +10 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -26
- package/dist/index.js.map +1 -1
- package/dist/simulation/index.d.ts +3 -4
- package/dist/simulation/index.d.ts.map +1 -1
- package/dist/simulation/index.js +3 -9
- package/dist/simulation/index.js.map +1 -1
- package/dist/simulation/simulation-data.d.ts +6 -31
- package/dist/simulation/simulation-data.d.ts.map +1 -1
- package/dist/simulation/simulation-data.js +25 -58
- package/dist/simulation/simulation-data.js.map +1 -1
- package/dist/stages/{stage-builder.d.ts → builder.d.ts} +14 -9
- package/dist/stages/builder.d.ts.map +1 -0
- package/dist/stages/{stage-builder.js → builder.js} +19 -5
- 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 +17 -17
- 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 +5 -5
- 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 +11 -11
- package/dist/stages/proposal-queued.js.map +1 -1
- package/dist/stages/retryables.d.ts +7 -7
- package/dist/stages/retryables.d.ts.map +1 -1
- package/dist/stages/retryables.js +75 -61
- package/dist/stages/retryables.js.map +1 -1
- package/dist/stages/timelock.d.ts +3 -24
- package/dist/stages/timelock.d.ts.map +1 -1
- package/dist/stages/timelock.js +47 -39
- 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} +211 -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 +9 -9
- package/dist/tracker/execute.js.map +1 -1
- package/dist/tracker/pipeline.d.ts +3 -32
- package/dist/tracker/pipeline.d.ts.map +1 -1
- package/dist/tracker/pipeline.js +40 -43
- package/dist/tracker/pipeline.js.map +1 -1
- package/dist/tracker/query.js +4 -4
- 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 +24 -22
- package/dist/tracker.js.map +1 -1
- package/dist/types/calldata.d.ts +4 -6
- package/dist/types/calldata.d.ts.map +1 -1
- package/dist/types/core.d.ts +36 -34
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/core.js +33 -0
- package/dist/types/core.js.map +1 -1
- package/dist/types/cross-chain.d.ts +5 -61
- package/dist/types/cross-chain.d.ts.map +1 -1
- package/dist/types/election.d.ts +3 -6
- package/dist/types/election.d.ts.map +1 -1
- package/dist/types/index.d.ts +7 -7
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +6 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/simulation.d.ts +5 -7
- package/dist/types/simulation.d.ts.map +1 -1
- package/dist/types/stages.d.ts +50 -32
- package/dist/types/stages.d.ts.map +1 -1
- package/dist/types/stages.js +10 -1
- package/dist/types/stages.js.map +1 -1
- package/dist/types/tracking.d.ts +3 -30
- package/dist/types/tracking.d.ts.map +1 -1
- package/dist/utils/chain.d.ts +7 -3
- package/dist/utils/chain.d.ts.map +1 -1
- package/dist/utils/chain.js +13 -9
- package/dist/utils/chain.js.map +1 -1
- package/dist/utils/logger.d.ts +9 -3
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +53 -19
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/rpc-utils.d.ts +7 -8
- package/dist/utils/rpc-utils.d.ts.map +1 -1
- package/dist/utils/rpc-utils.js +20 -2
- package/dist/utils/rpc-utils.js.map +1 -1
- package/dist/utils/salt-computation.d.ts.map +1 -1
- package/dist/utils/salt-computation.js +2 -3
- package/dist/utils/salt-computation.js.map +1 -1
- package/dist/utils/stage-metadata.d.ts +2 -2
- package/dist/utils/stage-metadata.d.ts.map +1 -1
- package/dist/utils/stage-metadata.js +5 -5
- package/dist/utils/stage-metadata.js.map +1 -1
- package/package.json +9 -5
- package/dist/calldata/address-utils.d.ts +0 -23
- package/dist/calldata/address-utils.d.ts.map +0 -1
- package/dist/calldata/address-utils.js +0 -84
- package/dist/calldata/address-utils.js.map +0 -1
- package/dist/calldata/extraction.d.ts +0 -17
- package/dist/calldata/extraction.d.ts.map +0 -1
- package/dist/calldata/extraction.js +0 -56
- package/dist/calldata/extraction.js.map +0 -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/tracker/index.d.ts +0 -18
- package/dist/tracker/index.d.ts.map +0 -1
- package/dist/tracker/index.js +0 -70
- package/dist/tracker/index.js.map +0 -1
- package/dist/types.d.ts +0 -6
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -22
- package/dist/types.js.map +0 -1
- package/dist/utils/error-classification.d.ts +0 -13
- package/dist/utils/error-classification.d.ts.map +0 -1
- package/dist/utils/error-classification.js +0 -28
- package/dist/utils/error-classification.js.map +0 -1
- package/dist/utils/scoped-logger.d.ts +0 -43
- package/dist/utils/scoped-logger.d.ts.map +0 -1
- package/dist/utils/scoped-logger.js +0 -72
- package/dist/utils/scoped-logger.js.map +0 -1
- package/dist/utils/stage-helpers.d.ts +0 -51
- package/dist/utils/stage-helpers.d.ts.map +0 -1
- package/dist/utils/stage-helpers.js +0 -143
- package/dist/utils/stage-helpers.js.map +0 -1
- package/dist/utils/urls.d.ts +0 -28
- package/dist/utils/urls.d.ts.map +0 -1
- package/dist/utils/urls.js +0 -71
- package/dist/utils/urls.js.map +0 -1
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stage Helpers
|
|
3
|
-
*
|
|
4
|
-
* Utility functions for timelock stage operations and validation.
|
|
5
|
-
*/
|
|
6
|
-
import { ethers } from "ethers";
|
|
7
|
-
import { TrackedStage, PrepareResult, StageType, ChainType, CallScheduledData, TimelockState, OperationState } from "../types";
|
|
8
|
-
export { serialize, deserialize, serializeCallScheduledData, deserializeCallScheduledData, serializeCallScheduledDataArray, deserializeCallScheduledDataArray, } from "../stages/base";
|
|
9
|
-
/** Execution payload data for timelock operations. */
|
|
10
|
-
export interface TimelockExecutionPayload {
|
|
11
|
-
timelockAddress: string;
|
|
12
|
-
operationId: string;
|
|
13
|
-
callScheduledData: CallScheduledData[];
|
|
14
|
-
isSecurityCouncilOperation?: boolean;
|
|
15
|
-
securityCouncilMembers?: string[];
|
|
16
|
-
securityCouncilNonce?: string;
|
|
17
|
-
}
|
|
18
|
-
/** Extract timelock execution payload from a stage. */
|
|
19
|
-
export declare function createTimelockStageData(stage: TrackedStage): TimelockExecutionPayload | null;
|
|
20
|
-
/** Collect all CallScheduledData from a timelock state. */
|
|
21
|
-
export declare function collectAllScheduledData(timelockState: TimelockState): CallScheduledData[];
|
|
22
|
-
/** Calculate ETA for a timelock operation. */
|
|
23
|
-
export declare function calculateTimelockEta(timelockState: TimelockState, operationState: OperationState, provider: ethers.providers.Provider): Promise<number | undefined>;
|
|
24
|
-
/** Build serialized execution payload data for stage storage. */
|
|
25
|
-
export declare function buildExecutionPayloadData(timelockAddress: string, operationId: string, allScheduledData: CallScheduledData[]): Record<string, unknown>;
|
|
26
|
-
export interface PrepareValidationOptions {
|
|
27
|
-
prepareCompleted?: boolean;
|
|
28
|
-
expectedTypes?: StageType[];
|
|
29
|
-
}
|
|
30
|
-
/** Validate stage for preparation. Returns error or null if valid. */
|
|
31
|
-
export declare function validateStageForPrepare(stage: TrackedStage, options?: PrepareValidationOptions): PrepareResult | null;
|
|
32
|
-
export interface BulkPrepareResult<T extends ChainType = ChainType> {
|
|
33
|
-
total: number;
|
|
34
|
-
results: PrepareResult[];
|
|
35
|
-
targetChain: T;
|
|
36
|
-
}
|
|
37
|
-
export interface SimpleBulkResult {
|
|
38
|
-
total: number;
|
|
39
|
-
results: PrepareResult[];
|
|
40
|
-
}
|
|
41
|
-
export declare function bulkPrepareError<T extends ChainType>(error: string, targetChain: T): BulkPrepareResult<T>;
|
|
42
|
-
export declare function simpleBulkError(error: string): SimpleBulkResult;
|
|
43
|
-
export declare function validateStageForBulkPrepare<T extends ChainType>(stage: TrackedStage, targetChain: T, options?: PrepareValidationOptions): BulkPrepareResult<T> | null;
|
|
44
|
-
export declare function validateStageForSimpleBulk(stage: TrackedStage, options?: PrepareValidationOptions): SimpleBulkResult | null;
|
|
45
|
-
/** Search for timelock execution event and complete stage. */
|
|
46
|
-
export declare function searchAndCompleteTimelockExecution(stage: TrackedStage, timelockAddress: string, operationId: string, provider: ethers.providers.Provider, chain: ChainType, fromBlock: number, toBlock?: number, queueTimestamp?: number): Promise<{
|
|
47
|
-
stage: TrackedStage;
|
|
48
|
-
executionTxHash: string | null;
|
|
49
|
-
executionBlock: number | null;
|
|
50
|
-
}>;
|
|
51
|
-
//# sourceMappingURL=stage-helpers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stage-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/stage-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,aAAa,EAEb,SAAS,EACT,SAAS,EAGT,iBAAiB,EACjB,aAAa,EACb,cAAc,EACf,MAAM,UAAU,CAAC;AAalB,OAAO,EACL,SAAS,EACT,WAAW,EACX,0BAA0B,EAC1B,4BAA4B,EAC5B,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,gBAAgB,CAAC;AAMxB,sDAAsD;AACtD,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;IACvC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,uDAAuD;AACvD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,wBAAwB,GAAG,IAAI,CA4B5F;AAMD,2DAA2D;AAC3D,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,aAAa,GAAG,iBAAiB,EAAE,CAKzF;AAED,8CAA8C;AAC9C,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAClC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAU7B;AAED,iEAAiE;AACjE,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,iBAAiB,EAAE,GACpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAMD,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;CAC7B;AAED,sEAAsE;AACtE,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,wBAA6B,GACrC,aAAa,GAAG,IAAI,CAUtB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAClD,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,CAAC,GACb,iBAAiB,CAAC,CAAC,CAAC,CAEtB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAE/D;AAED,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,SAAS,EAC7D,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,CAAC,EACd,OAAO,GAAE,wBAA6B,GACrC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAG7B;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,wBAA6B,GACrC,gBAAgB,GAAG,IAAI,CAGzB;AAMD,8DAA8D;AAC9D,wBAAsB,kCAAkC,CACtD,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAqCjG"}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Stage Helpers
|
|
4
|
-
*
|
|
5
|
-
* Utility functions for timelock stage operations and validation.
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.deserializeCallScheduledDataArray = exports.serializeCallScheduledDataArray = exports.deserializeCallScheduledData = exports.serializeCallScheduledData = exports.deserialize = exports.serialize = void 0;
|
|
9
|
-
exports.createTimelockStageData = createTimelockStageData;
|
|
10
|
-
exports.collectAllScheduledData = collectAllScheduledData;
|
|
11
|
-
exports.calculateTimelockEta = calculateTimelockEta;
|
|
12
|
-
exports.buildExecutionPayloadData = buildExecutionPayloadData;
|
|
13
|
-
exports.validateStageForPrepare = validateStageForPrepare;
|
|
14
|
-
exports.bulkPrepareError = bulkPrepareError;
|
|
15
|
-
exports.simpleBulkError = simpleBulkError;
|
|
16
|
-
exports.validateStageForBulkPrepare = validateStageForBulkPrepare;
|
|
17
|
-
exports.validateStageForSimpleBulk = validateStageForSimpleBulk;
|
|
18
|
-
exports.searchAndCompleteTimelockExecution = searchAndCompleteTimelockExecution;
|
|
19
|
-
const types_1 = require("../types");
|
|
20
|
-
const base_1 = require("../stages/base");
|
|
21
|
-
const stage_builder_1 = require("../stages/stage-builder");
|
|
22
|
-
const timelock_discovery_1 = require("../discovery/timelock-discovery");
|
|
23
|
-
// Re-export serialization from base for backwards compatibility
|
|
24
|
-
var base_2 = require("../stages/base");
|
|
25
|
-
Object.defineProperty(exports, "serialize", { enumerable: true, get: function () { return base_2.serialize; } });
|
|
26
|
-
Object.defineProperty(exports, "deserialize", { enumerable: true, get: function () { return base_2.deserialize; } });
|
|
27
|
-
Object.defineProperty(exports, "serializeCallScheduledData", { enumerable: true, get: function () { return base_2.serializeCallScheduledData; } });
|
|
28
|
-
Object.defineProperty(exports, "deserializeCallScheduledData", { enumerable: true, get: function () { return base_2.deserializeCallScheduledData; } });
|
|
29
|
-
Object.defineProperty(exports, "serializeCallScheduledDataArray", { enumerable: true, get: function () { return base_2.serializeCallScheduledDataArray; } });
|
|
30
|
-
Object.defineProperty(exports, "deserializeCallScheduledDataArray", { enumerable: true, get: function () { return base_2.deserializeCallScheduledDataArray; } });
|
|
31
|
-
/** Extract timelock execution payload from a stage. */
|
|
32
|
-
function createTimelockStageData(stage) {
|
|
33
|
-
let stageData = null;
|
|
34
|
-
for (const stageType of base_1.TIMELOCK_STAGE_TYPES) {
|
|
35
|
-
stageData = (0, types_1.getStageData)(stage, stageType);
|
|
36
|
-
if (stageData)
|
|
37
|
-
break;
|
|
38
|
-
}
|
|
39
|
-
if (!stageData?.timelockAddress ||
|
|
40
|
-
!stageData?.operationId ||
|
|
41
|
-
!stageData?.callScheduledData?.length) {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
const payload = {
|
|
45
|
-
timelockAddress: stageData.timelockAddress,
|
|
46
|
-
operationId: stageData.operationId,
|
|
47
|
-
callScheduledData: (0, base_1.deserializeCallScheduledDataArray)(stageData.callScheduledData),
|
|
48
|
-
};
|
|
49
|
-
if (stageData.isSecurityCouncilOperation) {
|
|
50
|
-
payload.isSecurityCouncilOperation = true;
|
|
51
|
-
payload.securityCouncilMembers = stageData.securityCouncilMembers;
|
|
52
|
-
payload.securityCouncilNonce = stageData.securityCouncilNonce;
|
|
53
|
-
}
|
|
54
|
-
return payload;
|
|
55
|
-
}
|
|
56
|
-
// ============================================================================
|
|
57
|
-
// Timelock State Helpers
|
|
58
|
-
// ============================================================================
|
|
59
|
-
/** Collect all CallScheduledData from a timelock state. */
|
|
60
|
-
function collectAllScheduledData(timelockState) {
|
|
61
|
-
return (timelockState.allScheduledData ??
|
|
62
|
-
(timelockState.scheduledData ? [timelockState.scheduledData] : []));
|
|
63
|
-
}
|
|
64
|
-
/** Calculate ETA for a timelock operation. */
|
|
65
|
-
async function calculateTimelockEta(timelockState, operationState, provider) {
|
|
66
|
-
if (timelockState.scheduledData) {
|
|
67
|
-
return (0, base_1.calculateEtaFromScheduledData)(timelockState.scheduledData.blockNumber, timelockState.scheduledData.delay.toNumber(), provider);
|
|
68
|
-
}
|
|
69
|
-
const contractTimestamp = operationState.timestamp.toNumber();
|
|
70
|
-
return !operationState.isDone && contractTimestamp > 1 ? contractTimestamp : undefined;
|
|
71
|
-
}
|
|
72
|
-
/** Build serialized execution payload data for stage storage. */
|
|
73
|
-
function buildExecutionPayloadData(timelockAddress, operationId, allScheduledData) {
|
|
74
|
-
const payload = { timelockAddress, operationId };
|
|
75
|
-
if (allScheduledData.length > 0) {
|
|
76
|
-
payload.callScheduledData = (0, base_1.serializeCallScheduledDataArray)(allScheduledData);
|
|
77
|
-
}
|
|
78
|
-
return payload;
|
|
79
|
-
}
|
|
80
|
-
/** Validate stage for preparation. Returns error or null if valid. */
|
|
81
|
-
function validateStageForPrepare(stage, options = {}) {
|
|
82
|
-
if (!options.prepareCompleted && stage.status !== "READY") {
|
|
83
|
-
return (0, base_1.failPrepare)(`Stage is not ready. Current status: ${stage.status}`);
|
|
84
|
-
}
|
|
85
|
-
if (options.expectedTypes?.length && !options.expectedTypes.includes(stage.type)) {
|
|
86
|
-
return (0, base_1.failPrepare)(`Unexpected stage type: ${stage.type}. Expected: ${options.expectedTypes.join(", ")}`);
|
|
87
|
-
}
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
function bulkPrepareError(error, targetChain) {
|
|
91
|
-
return { total: 0, results: [{ success: false, error }], targetChain };
|
|
92
|
-
}
|
|
93
|
-
function simpleBulkError(error) {
|
|
94
|
-
return { total: 0, results: [{ success: false, error }] };
|
|
95
|
-
}
|
|
96
|
-
function validateStageForBulkPrepare(stage, targetChain, options = {}) {
|
|
97
|
-
const error = validateStageForPrepare(stage, options);
|
|
98
|
-
return error ? { total: 0, results: [error], targetChain } : null;
|
|
99
|
-
}
|
|
100
|
-
function validateStageForSimpleBulk(stage, options = {}) {
|
|
101
|
-
const error = validateStageForPrepare(stage, options);
|
|
102
|
-
return error ? { total: 0, results: [error] } : null;
|
|
103
|
-
}
|
|
104
|
-
// ============================================================================
|
|
105
|
-
// Execution Search Helper
|
|
106
|
-
// ============================================================================
|
|
107
|
-
/** Search for timelock execution event and complete stage. */
|
|
108
|
-
async function searchAndCompleteTimelockExecution(stage, timelockAddress, operationId, provider, chain, fromBlock, toBlock, queueTimestamp) {
|
|
109
|
-
const event = await (0, timelock_discovery_1.findCallExecutedEvent)(timelockAddress, operationId, provider, {
|
|
110
|
-
startBlock: fromBlock,
|
|
111
|
-
endBlock: toBlock,
|
|
112
|
-
});
|
|
113
|
-
const builder = new stage_builder_1.StageBuilder(stage.type, stage.chain)
|
|
114
|
-
.data(stage.data)
|
|
115
|
-
.transactions(stage.transactions);
|
|
116
|
-
if (stage.timing)
|
|
117
|
-
builder.timing(stage.timing);
|
|
118
|
-
if (event) {
|
|
119
|
-
const execTimestamp = await (0, base_1.getBlockTimestamp)(event.blockNumber, provider);
|
|
120
|
-
builder
|
|
121
|
-
.status("COMPLETED")
|
|
122
|
-
.tx(event.txHash, event.blockNumber, chain, {
|
|
123
|
-
timestamp: execTimestamp,
|
|
124
|
-
description: "executed",
|
|
125
|
-
})
|
|
126
|
-
.timing({ startedAt: queueTimestamp ?? execTimestamp })
|
|
127
|
-
.data({ operationId });
|
|
128
|
-
return {
|
|
129
|
-
stage: builder.build(),
|
|
130
|
-
executionTxHash: event.txHash,
|
|
131
|
-
executionBlock: event.blockNumber,
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
return {
|
|
135
|
-
stage: builder
|
|
136
|
-
.status("COMPLETED")
|
|
137
|
-
.data({ operationId, note: "Execution confirmed by state, event not found" })
|
|
138
|
-
.build(),
|
|
139
|
-
executionTxHash: null,
|
|
140
|
-
executionBlock: null,
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
//# sourceMappingURL=stage-helpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stage-helpers.js","sourceRoot":"","sources":["../../src/utils/stage-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/urls.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { ChainType, StageTransaction, ChainContext } from "../types";
|
|
2
|
-
/**
|
|
3
|
-
* Map ChainType to numeric chain ID
|
|
4
|
-
*/
|
|
5
|
-
export declare function chainTypeToId(chain: ChainType): number;
|
|
6
|
-
export declare function getExplorerUrl(chainId: number, type: "tx" | "address", hash: string): string;
|
|
7
|
-
export declare function getTxUrl(chainId: number, txHash: string): string;
|
|
8
|
-
/**
|
|
9
|
-
* Get block explorer URL for a stage transaction
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```typescript
|
|
13
|
-
* const stage = result.stages[0];
|
|
14
|
-
* for (const tx of stage.transactions) {
|
|
15
|
-
* console.log(`${tx.hash}: ${getStageTransactionUrl(tx)}`);
|
|
16
|
-
* }
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
export declare function getStageTransactionUrl(tx: StageTransaction): string;
|
|
20
|
-
/**
|
|
21
|
-
* Get block explorer URL for a transaction
|
|
22
|
-
*
|
|
23
|
-
* @param txHash - Transaction hash
|
|
24
|
-
* @param chain - Chain context
|
|
25
|
-
* @returns Full explorer URL
|
|
26
|
-
*/
|
|
27
|
-
export declare function getTxExplorerUrl(txHash: string, chain: ChainContext): string;
|
|
28
|
-
//# sourceMappingURL=urls.d.ts.map
|
package/dist/utils/urls.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../../src/utils/urls.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE1E;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAStD;AAWD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAW5F;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,gBAAgB,GAAG,MAAM,CAGnE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAG5E"}
|
package/dist/utils/urls.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.chainTypeToId = chainTypeToId;
|
|
4
|
-
exports.getExplorerUrl = getExplorerUrl;
|
|
5
|
-
exports.getTxUrl = getTxUrl;
|
|
6
|
-
exports.getStageTransactionUrl = getStageTransactionUrl;
|
|
7
|
-
exports.getTxExplorerUrl = getTxExplorerUrl;
|
|
8
|
-
const constants_1 = require("../constants");
|
|
9
|
-
/**
|
|
10
|
-
* Map ChainType to numeric chain ID
|
|
11
|
-
*/
|
|
12
|
-
function chainTypeToId(chain) {
|
|
13
|
-
switch (chain) {
|
|
14
|
-
case "L1":
|
|
15
|
-
return constants_1.CHAIN_IDS.ETHEREUM;
|
|
16
|
-
case "L2":
|
|
17
|
-
return constants_1.CHAIN_IDS.ARB_ONE;
|
|
18
|
-
case "NOVA":
|
|
19
|
-
return constants_1.CHAIN_IDS.NOVA;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Explorer base URLs by chain
|
|
24
|
-
*/
|
|
25
|
-
const EXPLORER_URLS = {
|
|
26
|
-
arb1: "https://arbiscan.io",
|
|
27
|
-
nova: "https://nova.arbiscan.io",
|
|
28
|
-
ethereum: "https://etherscan.io",
|
|
29
|
-
};
|
|
30
|
-
function getExplorerUrl(chainId, type, hash) {
|
|
31
|
-
switch (chainId) {
|
|
32
|
-
case 1: // Ethereum
|
|
33
|
-
return `https://etherscan.io/${type}/${hash}`;
|
|
34
|
-
case constants_1.CHAIN_IDS.ARB_ONE:
|
|
35
|
-
return `https://arbiscan.io/${type}/${hash}`;
|
|
36
|
-
case constants_1.CHAIN_IDS.NOVA:
|
|
37
|
-
return `https://nova.arbiscan.io/${type}/${hash}`;
|
|
38
|
-
default:
|
|
39
|
-
return `https://etherscan.io/${type}/${hash}`;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
function getTxUrl(chainId, txHash) {
|
|
43
|
-
return getExplorerUrl(chainId, "tx", txHash);
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Get block explorer URL for a stage transaction
|
|
47
|
-
*
|
|
48
|
-
* @example
|
|
49
|
-
* ```typescript
|
|
50
|
-
* const stage = result.stages[0];
|
|
51
|
-
* for (const tx of stage.transactions) {
|
|
52
|
-
* console.log(`${tx.hash}: ${getStageTransactionUrl(tx)}`);
|
|
53
|
-
* }
|
|
54
|
-
* ```
|
|
55
|
-
*/
|
|
56
|
-
function getStageTransactionUrl(tx) {
|
|
57
|
-
const chainId = chainTypeToId(tx.chain);
|
|
58
|
-
return getTxUrl(chainId, tx.hash);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Get block explorer URL for a transaction
|
|
62
|
-
*
|
|
63
|
-
* @param txHash - Transaction hash
|
|
64
|
-
* @param chain - Chain context
|
|
65
|
-
* @returns Full explorer URL
|
|
66
|
-
*/
|
|
67
|
-
function getTxExplorerUrl(txHash, chain) {
|
|
68
|
-
const baseUrl = EXPLORER_URLS[chain] ?? EXPLORER_URLS.ethereum;
|
|
69
|
-
return `${baseUrl}/tx/${txHash}`;
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=urls.js.map
|
package/dist/utils/urls.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/utils/urls.ts"],"names":[],"mappings":";;AAMA,sCASC;AAWD,wCAWC;AAED,4BAEC;AAaD,wDAGC;AASD,4CAGC;AArED,4CAAyC;AAGzC;;GAEG;AACH,SAAgB,aAAa,CAAC,KAAgB;IAC5C,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,IAAI;YACP,OAAO,qBAAS,CAAC,QAAQ,CAAC;QAC5B,KAAK,IAAI;YACP,OAAO,qBAAS,CAAC,OAAO,CAAC;QAC3B,KAAK,MAAM;YACT,OAAO,qBAAS,CAAC,IAAI,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,aAAa,GAAiC;IAClD,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE,0BAA0B;IAChC,QAAQ,EAAE,sBAAsB;CACjC,CAAC;AAEF,SAAgB,cAAc,CAAC,OAAe,EAAE,IAAsB,EAAE,IAAY;IAClF,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,WAAW;YACjB,OAAO,wBAAwB,IAAI,IAAI,IAAI,EAAE,CAAC;QAChD,KAAK,qBAAS,CAAC,OAAO;YACpB,OAAO,uBAAuB,IAAI,IAAI,IAAI,EAAE,CAAC;QAC/C,KAAK,qBAAS,CAAC,IAAI;YACjB,OAAO,4BAA4B,IAAI,IAAI,IAAI,EAAE,CAAC;QACpD;YACE,OAAO,wBAAwB,IAAI,IAAI,IAAI,EAAE,CAAC;IAClD,CAAC;AACH,CAAC;AAED,SAAgB,QAAQ,CAAC,OAAe,EAAE,MAAc;IACtD,OAAO,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,sBAAsB,CAAC,EAAoB;IACzD,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,MAAc,EAAE,KAAmB;IAClE,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC;IAC/D,OAAO,GAAG,OAAO,OAAO,MAAM,EAAE,CAAC;AACnC,CAAC"}
|