import { ChainForkConfig } from "@lodestar/config";
import { CachedBeaconStateAllForks } from "@lodestar/state-transition";
import { Slot } from "@lodestar/types";
import { Logger } from "@lodestar/utils";
import { Metrics } from "../metrics/index.js";
import { IBeaconChain } from "./interface.js";
export declare const SCHEDULER_LOOKAHEAD_FACTOR = 3;
/**
 * At Bellatrix, if we are responsible for proposing in next slot, we want to prepare payload
 * 4s (1/3 slot) before the start of next slot
 *
 * For all forks, when clock is 1/3 slot before an epoch, we want to prepare for the next epoch
 * transition from our head so that:
 * + validators vote for block head on time through attestation
 * + validators propose blocks on time
 * + For Bellatrix, to compute proposers of next epoch so that we can prepare new payloads
 *
 */
export declare class PrepareNextSlotScheduler {
    private readonly chain;
    private readonly config;
    private readonly metrics;
    private readonly logger;
    private readonly signal;
    constructor(chain: IBeaconChain, config: ChainForkConfig, metrics: Metrics | null, logger: Logger, signal: AbortSignal);
    /**
     * Use clockSlot instead of clockEpoch to schedule the task at more exact time.
     */
    prepareForNextSlot: (clockSlot: Slot) => Promise<void>;
    computeStateHashTreeRoot(state: CachedBeaconStateAllForks, isEpochTransition: boolean): void;
    /**
     * Stop eth1 data polling after eth1_deposit_index has reached deposit_requests_start_index in Electra as described in EIP-6110
     */
    stopEth1Polling(): void;
}
//# sourceMappingURL=prepareNextSlot.d.ts.map