import { PublicKey } from "@chainsafe/blst";
import { ISignatureSet, PubkeyCache } from "@lodestar/state-transition";
import { Metrics } from "../../../metrics/metrics.js";
import { LinkedList } from "../../../util/array.js";
import { VerifySignatureOpts } from "../interface.js";
import { BlsWorkReq } from "./types.js";
export type JobQueueItem = JobQueueItemDefault | JobQueueItemSameMessage;
export type JobQueueItemDefault = {
    type: JobQueueItemType.default;
    resolve: (result: boolean) => void;
    reject: (error?: Error) => void;
    addedTimeMs: number;
    opts: VerifySignatureOpts;
    sets: ISignatureSet[];
};
export type JobQueueItemSameMessage = {
    type: JobQueueItemType.sameMessage;
    resolve: (result: boolean[]) => void;
    reject: (error?: Error) => void;
    addedTimeMs: number;
    opts: VerifySignatureOpts;
    sets: {
        publicKey: PublicKey;
        signature: Uint8Array;
    }[];
    message: Uint8Array;
};
export declare enum JobQueueItemType {
    default = "default",
    sameMessage = "same_message"
}
/**
 * Return count of signature sets from a JobQueueItem
 */
export declare function jobItemSigSets(job: JobQueueItem): number;
/**
 * Prepare BlsWorkReq from JobQueueItem
 * WARNING: May throw with untrusted user input
 */
export declare function jobItemWorkReq(job: JobQueueItem, pubkeyCache: PubkeyCache, metrics: Metrics | null): Promise<BlsWorkReq>;
/**
 * Convert a JobQueueItemSameMessage into multiple JobQueueItemDefault linked to the original promise
 */
export declare function jobItemSameMessageToMultiSet(job: JobQueueItemSameMessage): LinkedList<JobQueueItemDefault>;
//# sourceMappingURL=jobItem.d.ts.map