import { BlockNumber } from '@aztec/foundation/branded-types'; import type { PromiseWithResolvers } from '@aztec/foundation/promise'; import { z } from 'zod'; import type { BlockHash } from '../block/block_hash.js'; import type { SnapshotDataKeys } from '../snapshots/types.js'; import type { MerkleTreeReadOperations, MerkleTreeWriteOperations } from './merkle_tree_operations.js'; export type { SnapshotDataKeys }; /** * Defines the possible states of the world state synchronizer. */ export declare enum WorldStateRunningState { IDLE = 0, SYNCHING = 1, RUNNING = 2, STOPPED = 3 } export interface WorldStateSyncStatus { latestBlockNumber: BlockNumber; latestBlockHash: string; finalizedBlockNumber: BlockNumber; oldestHistoricBlockNumber: BlockNumber; treesAreSynched: boolean; } /** * Defines the status of the world state synchronizer. */ export interface WorldStateSynchronizerStatus { /** * The current state of the world state synchronizer. */ state: WorldStateRunningState; /** * The block numbers that the world state synchronizer is synced to. */ syncSummary: WorldStateSyncStatus; } /** Provides writeable forks of the world state at a given block number. */ export interface ForkMerkleTreeOperations { /** * Forks the world state at the given block number, defaulting to the latest one. * @param block - The block number to fork at. * @param opts - Optional parameters: * - closeDelayMs: number of milliseconds to wait before closing the fork on dispose. */ fork(block?: BlockNumber, opts?: { closeDelayMs?: number; }): Promise; /** Backups the db to the target path. */ backupTo(dstPath: string, compact?: boolean): Promise, string>>; } export interface ReadonlyWorldStateAccess { /** Returns an instance of MerkleTreeAdminOperations that will not include uncommitted data. */ getCommitted(): MerkleTreeReadOperations; /** Gets a handle that allows reading the state as it was at the given block number. */ getSnapshot(blockNumber: number): MerkleTreeReadOperations; } /** Defines the interface for a world state synchronizer. */ export interface WorldStateSynchronizer extends ReadonlyWorldStateAccess, ForkMerkleTreeOperations { /** Starts the synchronizer. */ start(): Promise>; /** Returns the current status of the synchronizer. */ status(): Promise; /** Stops the synchronizer and its database. */ stop(): Promise; /** Stops the synchronizer from syncing, but keeps the database online. */ stopSync(): Promise; /** Resumes synching after a stopSync call. */ resumeSync(): void; /** * Forces an immediate sync to an optionally provided minimum block number. * @param targetBlockNumber - The target block number that we must sync to. Will download unproven blocks if needed to reach it. * @param blockHash - If provided, verifies the block at targetBlockNumber matches this hash. On mismatch, triggers a resync (reorg detection). * @returns A promise that resolves with the block number the world state was synced to */ syncImmediate(minBlockNumber?: BlockNumber, blockHash?: BlockHash): Promise; /** Deletes the db */ clear(): Promise; } export declare const WorldStateSyncStatusSchema: z.ZodType; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGRfc3RhdGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL3dvcmxkX3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQXFCLE1BQU0saUNBQWlDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV2RyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztBQUVqQzs7R0FFRztBQUNILG9CQUFZLHNCQUFzQjtJQUNoQyxJQUFJLElBQUE7SUFDSixRQUFRLElBQUE7SUFDUixPQUFPLElBQUE7SUFDUCxPQUFPLElBQUE7Q0FDUjtBQUVELE1BQU0sV0FBVyxvQkFBb0I7SUFDbkMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDO0lBQy9CLGVBQWUsRUFBRSxNQUFNLENBQUM7SUFDeEIsb0JBQW9CLEVBQUUsV0FBVyxDQUFDO0lBQ2xDLHlCQUF5QixFQUFFLFdBQVcsQ0FBQztJQUN2QyxlQUFlLEVBQUUsT0FBTyxDQUFDO0NBQzFCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcsNEJBQTRCO0lBQzNDOztPQUVHO0lBQ0gsS0FBSyxFQUFFLHNCQUFzQixDQUFDO0lBQzlCOztPQUVHO0lBQ0gsV0FBVyxFQUFFLG9CQUFvQixDQUFDO0NBQ25DO0FBRUQsMkVBQTJFO0FBQzNFLE1BQU0sV0FBVyx3QkFBd0I7SUFDdkM7Ozs7O09BS0c7SUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFO1FBQUUsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUVoRyx5Q0FBeUM7SUFDekMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7Q0FDOUc7QUFFRCxNQUFNLFdBQVcsd0JBQXdCO0lBQ3ZDLCtGQUErRjtJQUMvRixZQUFZLElBQUksd0JBQXdCLENBQUM7SUFFekMsdUZBQXVGO0lBQ3ZGLFdBQVcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxHQUFHLHdCQUF3QixDQUFDO0NBQzVEO0FBRUQsNERBQTREO0FBQzVELE1BQU0sV0FBVyxzQkFBdUIsU0FBUSx3QkFBd0IsRUFBRSx3QkFBd0I7SUFDaEcsK0JBQStCO0lBQy9CLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFcEQsc0RBQXNEO0lBQ3RELE1BQU0sSUFBSSxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUVoRCwrQ0FBK0M7SUFDL0MsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV0QiwwRUFBMEU7SUFDMUUsUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUxQiw4Q0FBOEM7SUFDOUMsVUFBVSxJQUFJLElBQUksQ0FBQztJQUVuQjs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV6RixxQkFBcUI7SUFDckIsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUN4QjtBQUVELGVBQU8sTUFBTSwwQkFBMEIsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQU14RixDQUFDIn0=