import { Metrics } from "../../metrics/metrics.js";
import { JobItemQueue } from "../../util/queue/index.js";
import type { BeaconChain } from "../chain.js";
import { PayloadEnvelopeInput } from "../seenCache/seenPayloadEnvelopeInput.js";
import { ImportPayloadOpts } from "./types.js";
/**
 * PayloadEnvelopeProcessor processes payload envelope jobs in a queued fashion, one after the other.
 *
 * Jobs are enqueued only on envelope arrival (gossip or API). The envelope may reach us before
 * the sampled data columns; importExecutionPayload awaits `verifyPayloadsDataAvailability`
 * internally, so a queued job can pend for up to `PAYLOAD_DATA_AVAILABILITY_TIMEOUT` while
 * waiting for columns. Duplicate triggers for the same payloadInput are deduped via `importStatus`.
 */
export declare class PayloadEnvelopeProcessor {
    readonly jobQueue: JobItemQueue<[PayloadEnvelopeInput, ImportPayloadOpts], void>;
    private readonly importStatus;
    constructor(chain: BeaconChain, metrics: Metrics | null, signal: AbortSignal);
    processPayloadEnvelopeJob(payloadInput: PayloadEnvelopeInput, opts?: ImportPayloadOpts): Promise<void>;
}
//# sourceMappingURL=payloadEnvelopeProcessor.d.ts.map