import { ChainForkConfig } from "@lodestar/config";
import { CheckpointWithPayloadStatus, IForkChoice } from "@lodestar/fork-choice";
import { Epoch, Slot } from "@lodestar/types";
import { Logger } from "@lodestar/utils";
import { IBeaconDb } from "../../../db/index.js";
import { LightClientServer } from "../../lightClient/index.js";
/**
 * Archives finalized blocks from active bucket to archive bucket.
 *
 * Only archive blocks on the same chain to the finalized checkpoint.
 * Each run should move all finalized blocks to blockArhive db to make it consistent
 * to stateArchive, so that the node always work well when we restart.
 * Note that the finalized block still stay in forkchoice to check finalize checkpoint of next onBlock calls,
 * the next run should not reprocess finalzied block of this run.
 */
export declare function archiveBlocks(config: ChainForkConfig, db: IBeaconDb, forkChoice: IForkChoice, lightclientServer: LightClientServer | undefined, logger: Logger, finalizedCheckpoint: CheckpointWithPayloadStatus, currentEpoch: Epoch, archiveDataEpochs?: number, persistOrphanedBlocks?: boolean, persistOrphanedBlocksDir?: string): Promise<void>;
/**
 * ```
 * class SignedBeaconBlock(Container):
 *   message: BeaconBlock [offset - 4 bytes]
 *   signature: BLSSignature [fixed - 96 bytes]
 *
 * class BeaconBlock(Container):
 *   slot: Slot [fixed - 8 bytes]
 *   proposer_index: ValidatorIndex [fixed - 8 bytes]
 *   parent_root: Root [fixed - 32 bytes]
 *   state_root: Root
 *   body: BeaconBlockBody
 * ```
 * From byte: `4 + 96 + 8 + 8 = 116`
 * To byte: `116 + 32 = 148`
 */
export declare function getParentRootFromSignedBlock(bytes: Uint8Array): Uint8Array;
/**
 *
 * @param blocks sequence of linear blocks, from child to ancestor.
 * In ProtoArray.getAllAncestorNodes child nodes are pushed first to the returned array.
 */
export declare function getNonCheckpointBlocks<T extends {
    slot: Slot;
}>(blocks: T[]): T[];
//# sourceMappingURL=archiveBlocks.d.ts.map