import { BeaconConfig } from "@lodestar/config";
import { CachedBeaconStateAllForks } from "@lodestar/state-transition";
import { IndexedAttestation, SignedBeaconBlock } from "@lodestar/types";
import { Logger } from "@lodestar/utils";
import { Metrics } from "../../metrics/metrics.js";
import { IBlsVerifier } from "../bls/index.js";
import { ImportBlockOpts } from "./types.js";
/**
 * Verifies 1 or more block's signatures from a group of blocks in the same epoch.
 * getBlockSignatureSets() guarantees to return the correct signingRoots as long as all blocks belong in the same
 * epoch as `preState0`. Otherwise the shufflings won't be correct.
 *
 * Since all data is known in advance all signatures are verified at once in parallel.
 */
export declare function verifyBlocksSignatures(config: BeaconConfig, bls: IBlsVerifier, logger: Logger, metrics: Metrics | null, preState0: CachedBeaconStateAllForks, blocks: SignedBeaconBlock[], indexedAttestationsByBlock: IndexedAttestation[][], opts: ImportBlockOpts): Promise<{
    verifySignaturesTime: number;
}>;
type AllValidRes = {
    allValid: true;
} | {
    allValid: false;
    index: number;
};
/**
 * From an array of promises that resolve a boolean isValid
 * - if all valid, await all and return
 * - if one invalid, abort immediately and return index of invalid
 */
export declare function rejectFirstInvalidResolveAllValid(isValidPromises: Promise<boolean>[]): Promise<AllValidRes>;
export {};
//# sourceMappingURL=verifyBlocksSignatures.d.ts.map