import { ChainForkConfig } from "@lodestar/config";
import { BeaconStateAllForks, CachedBeaconStateAllForks } from "@lodestar/state-transition";
import { Logger } from "@lodestar/utils";
import { DepositTree } from "../../db/repositories/depositDataRoot.js";
import { IEth1Provider } from "../../eth1/index.js";
import { GenesisResult, IGenesisBuilder } from "./interface.js";
export type GenesisBuilderKwargs = {
    config: ChainForkConfig;
    eth1Provider: IEth1Provider;
    logger: Logger;
    /** Use to restore pending progress */
    pendingStatus?: {
        state: BeaconStateAllForks;
        depositTree: DepositTree;
        lastProcessedBlockNumber: number;
    };
    signal?: AbortSignal;
    maxBlocksPerPoll?: number;
};
export declare class GenesisBuilder implements IGenesisBuilder {
    readonly state: CachedBeaconStateAllForks;
    readonly depositTree: DepositTree;
    /** Is null if no block has been processed yet */
    lastProcessedBlockNumber: number | null;
    private readonly config;
    private readonly eth1Provider;
    private readonly logger;
    private readonly signal?;
    private readonly eth1Params;
    private readonly depositCache;
    private readonly fromBlock;
    private readonly logEvery;
    private lastLog;
    /** Current count of active validators in the state */
    private activatedValidatorCount;
    constructor({ config, eth1Provider, logger, signal, pendingStatus, maxBlocksPerPoll }: GenesisBuilderKwargs);
    /**
     * Get eth1 deposit events and blocks and apply to this.state until we found genesis.
     */
    waitForGenesis(): Promise<GenesisResult>;
    /**
     * First phase of waiting for genesis.
     * Stream deposits events in batches as big as possible without querying block data
     * @returns Block number at which there are enough active validators is state for genesis
     */
    private waitForGenesisValidators;
    private applyDeposits;
    /** Throttle genesis generation status log to prevent spamming */
    private throttledLog;
}
//# sourceMappingURL=genesis.d.ts.map