import { ChainForkConfig } from "@lodestar/config";
import { ForkChoice, JustifiedBalancesGetter, ForkChoiceOpts as RawForkChoiceOpts } from "@lodestar/fork-choice";
import { IBeaconStateView } from "@lodestar/state-transition";
import { Slot } from "@lodestar/types";
import { Logger } from "@lodestar/utils";
import { Metrics } from "../../metrics/index.js";
import { ChainEventEmitter } from "../emitter.js";
export type ForkChoiceOpts = RawForkChoiceOpts & {
    forkchoiceConstructor?: typeof ForkChoice;
};
export declare enum ForkchoiceCaller {
    prepareNextSlot = "prepare_next_slot",
    importBlock = "import_block"
}
/**
 * Fork Choice extended with a ChainEventEmitter
 */
export declare function initializeForkChoice(config: ChainForkConfig, emitter: ChainEventEmitter, currentSlot: Slot, state: IBeaconStateView, isFinalizedState: boolean, opts: ForkChoiceOpts, justifiedBalancesGetter: JustifiedBalancesGetter, metrics: Metrics | null, logger?: Logger): ForkChoice;
/**
 * Initialize forkchoice from a finalized state.
 */
export declare function initializeForkChoiceFromFinalizedState(config: ChainForkConfig, emitter: ChainEventEmitter, currentSlot: Slot, state: IBeaconStateView, opts: ForkChoiceOpts, justifiedBalancesGetter: JustifiedBalancesGetter, metrics: Metrics | null, logger?: Logger): ForkChoice;
/**
 * Initialize forkchoice from an unfinalized state.
 */
export declare function initializeForkChoiceFromUnfinalizedState(config: ChainForkConfig, emitter: ChainEventEmitter, currentSlot: Slot, unfinalizedState: IBeaconStateView, opts: ForkChoiceOpts, justifiedBalancesGetter: JustifiedBalancesGetter, metrics: Metrics | null, logger?: Logger): ForkChoice;
//# sourceMappingURL=index.d.ts.map