import { ChainForkConfig } from "@lodestar/config";
import { Logger } from "@lodestar/utils";
import { Metrics } from "../metrics/metrics.js";
import { BlockInputColumns } from "./blocks/blockInput/index.js";
import { PayloadEnvelopeInput } from "./blocks/payloadEnvelopeInput/index.js";
import { ChainEventEmitter } from "./emitter.js";
export type ColumnReconstructionTrackerInit = {
    logger: Logger;
    emitter: ChainEventEmitter;
    metrics: Metrics | null;
    config: ChainForkConfig;
};
/**
 * Tracks column reconstruction attempts to avoid duplicate and multiple in-flight calls
 */
export declare class ColumnReconstructionTracker {
    logger: Logger;
    emitter: ChainEventEmitter;
    metrics: Metrics | null;
    config: ChainForkConfig;
    /**
     * Track last attempted block root
     *
     * This is sufficient to avoid duplicate calls since we only call this
     * function when we see a new data column sidecar from gossip.
     */
    lastBlockRootHex: string | null;
    /** Track if a reconstruction attempt is in-flight */
    running: boolean;
    private readonly minDelayMs;
    private readonly maxDelayMs;
    constructor(init: ColumnReconstructionTrackerInit);
    triggerColumnReconstruction(input: BlockInputColumns | PayloadEnvelopeInput): void;
}
//# sourceMappingURL=ColumnReconstructionTracker.d.ts.map