@lodestar/beacon-node
Version:
A Typescript implementation of the beacon chain
99 lines • 4.98 kB
TypeScript
import { Type } from "@chainsafe/ssz";
import { BeaconConfig } from "@lodestar/config";
import { ForkName } from "@lodestar/params";
import { Protocol, ProtocolHandler, ReqRespRequest } from "@lodestar/reqresp";
import { DataColumnSidecar, LightClientBootstrap, LightClientFinalityUpdate, LightClientOptimisticUpdate, LightClientUpdate, Metadata, Root, SignedBeaconBlock, Status, altair, deneb, fulu, gloas, phase0 } from "@lodestar/types";
import { BeaconBlocksByRootRequest, BlobSidecarsByRootRequest, DataColumnSidecarsByRootRequest, ExecutionPayloadEnvelopesByRootRequest } from "../../util/types.js";
export type ProtocolNoHandler = Omit<Protocol, "handler">;
/** ReqResp protocol names or methods. Each ReqRespMethod can have multiple versions and encodings */
export declare enum ReqRespMethod {
Status = "status",
Goodbye = "goodbye",
Ping = "ping",
Metadata = "metadata",
BeaconBlocksByRange = "beacon_blocks_by_range",
BeaconBlocksByRoot = "beacon_blocks_by_root",
BeaconBlocksByHead = "beacon_blocks_by_head",
BlobSidecarsByRange = "blob_sidecars_by_range",
BlobSidecarsByRoot = "blob_sidecars_by_root",
DataColumnSidecarsByRange = "data_column_sidecars_by_range",
DataColumnSidecarsByRoot = "data_column_sidecars_by_root",
ExecutionPayloadEnvelopesByRoot = "execution_payload_envelopes_by_root",
ExecutionPayloadEnvelopesByRange = "execution_payload_envelopes_by_range",
LightClientBootstrap = "light_client_bootstrap",
LightClientUpdatesByRange = "light_client_updates_by_range",
LightClientFinalityUpdate = "light_client_finality_update",
LightClientOptimisticUpdate = "light_client_optimistic_update"
}
export type RequestBodyByMethod = {
[]: Status;
[]: phase0.Goodbye;
[]: phase0.Ping;
[]: null;
[]: phase0.BeaconBlocksByRangeRequest;
[]: BeaconBlocksByRootRequest;
[]: fulu.BeaconBlocksByHeadRequest;
[]: deneb.BlobSidecarsByRangeRequest;
[]: BlobSidecarsByRootRequest;
[]: fulu.DataColumnSidecarsByRangeRequest;
[]: DataColumnSidecarsByRootRequest;
[]: ExecutionPayloadEnvelopesByRootRequest;
[]: gloas.ExecutionPayloadEnvelopesByRangeRequest;
[]: Root;
[]: altair.LightClientUpdatesByRange;
[]: null;
[]: null;
};
type ResponseBodyByMethod = {
[]: Status;
[]: phase0.Goodbye;
[]: phase0.Ping;
[]: Metadata;
[]: SignedBeaconBlock;
[]: SignedBeaconBlock;
[]: SignedBeaconBlock;
[]: deneb.BlobSidecar;
[]: deneb.BlobSidecar;
[]: DataColumnSidecar;
[]: DataColumnSidecar;
[]: gloas.SignedExecutionPayloadEnvelope;
[]: gloas.SignedExecutionPayloadEnvelope;
[]: LightClientBootstrap;
[]: LightClientUpdate;
[]: LightClientFinalityUpdate;
[]: LightClientOptimisticUpdate;
};
/** Request SSZ type for each method and ForkName */
export declare const requestSszTypeByMethod: (fork: ForkName, config: BeaconConfig) => {
[]: RequestBodyByMethod[K] extends null ? null : Type<RequestBodyByMethod[K]>;
};
export type ResponseTypeGetter<T> = (fork: ForkName, version: number) => Type<T>;
export declare const responseSszTypeByMethod: {
[]: ResponseTypeGetter<ResponseBodyByMethod[K]>;
};
export type RequestTypedContainer = {
[]: {
method: K;
body: RequestBodyByMethod[K];
};
}[ReqRespMethod];
export declare enum Version {
V1 = 1,
V2 = 2,
V3 = 3
}
export type OutgoingRequestArgs = {
peerId: string;
method: ReqRespMethod;
versions: number[];
requestData: Uint8Array;
};
export type IncomingRequestArgs = {
method: ReqRespMethod;
req: ReqRespRequest;
peerId: string;
peerClient: string;
};
export type GetReqRespHandlerFn = (method: ReqRespMethod) => ProtocolHandler;
export {};
//# sourceMappingURL=types.d.ts.map