import { ApiClient } from "@lodestar/api"; import { ChainForkConfig } from "@lodestar/config"; import { IClock } from "@lodestar/state-transition"; import { Metrics } from "../metrics.js"; import { PubkeyHex } from "../types.js"; import { LoggerVc } from "../util/index.js"; import { ChainHeaderTracker } from "./chainHeaderTracker.js"; import { ValidatorEventEmitter } from "./emitter.js"; import { SyncingStatusTracker } from "./syncingStatusTracker.js"; import { ValidatorStore } from "./validatorStore.js"; export type AttestationServiceOpts = { afterBlockDelaySlotFraction?: number; distributedAggregationSelection?: boolean; }; /** * Service that sets up and handles validator attester duties. */ export declare class AttestationService { private readonly logger; private readonly api; private readonly clock; private readonly validatorStore; private readonly emitter; private readonly metrics; private readonly config; private readonly opts?; private readonly dutiesService; constructor(logger: LoggerVc, api: ApiClient, clock: IClock, validatorStore: ValidatorStore, emitter: ValidatorEventEmitter, chainHeadTracker: ChainHeaderTracker, syncingStatusTracker: SyncingStatusTracker, metrics: Metrics | null, config: ChainForkConfig, opts?: AttestationServiceOpts | undefined); removeDutiesForKey(pubkey: PubkeyHex): void; private runAttestationTasks; /** * Performs the first step of the attesting process: downloading one `Attestation` object. * Beacon node's endpoint produceAttestationData return data is not dependent on committeeIndex. * For a validator client with many validators this allows to do a single call for all committees * in a slot, saving resources in both the vc and beacon node */ private produceAttestation; /** * Only one `Attestation` is downloaded from the BN. It is then signed by each * validator and the list of individually-signed `Attestation` objects is returned to the BN. */ private signAndPublishAttestations; /** * Performs the second step of the attesting process: downloading an aggregated `Attestation`, * converting it into a `SignedAggregateAndProof` and returning it to the BN. * * https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/specs/phase0/validator.md#broadcast-aggregate * * Only one aggregated `Attestation` is downloaded from the BN. It is then signed * by each validator and the list of individually-signed `SignedAggregateAndProof` objects is * returned to the BN. */ private produceAndPublishAggregates; } //# sourceMappingURL=attestation.d.ts.map