UNPKG

@lodestar/api

Version:

A Typescript REST client for the Ethereum Consensus API

229 lines • 8.98 kB
import { ContainerType } from "@chainsafe/ssz"; import { ArrayOf, ssz } from "@lodestar/types"; import { EmptyRequestCodec, EmptyResponseCodec, JsonOnlyResponseCodec, WithVersion, } from "../../utils/codecs.js"; import { Schema } from "../../utils/index.js"; import { ExecutionOptimisticFinalizedAndVersionCodec, VersionCodec, } from "../../utils/metadata.js"; const HistoricalSummariesResponseType = new ContainerType({ slot: ssz.Slot, historicalSummaries: ssz.capella.HistoricalSummaries, proof: ArrayOf(ssz.Bytes8), }, { jsonCase: "eth2" }); export function getDefinitions(_config) { return { writeHeapdump: { url: "/eth/v1/lodestar/write_heapdump", method: "POST", req: { writeReq: ({ thread, dirpath }) => ({ query: { thread, dirpath } }), parseReq: ({ query }) => ({ thread: query.thread, dirpath: query.dirpath }), schema: { query: { thread: Schema.String, dirpath: Schema.String } }, }, resp: JsonOnlyResponseCodec, }, writeProfile: { url: "/eth/v1/lodestar/write_profile", method: "POST", req: { writeReq: ({ thread, duration, dirpath }) => ({ query: { thread, duration, dirpath } }), parseReq: ({ query }) => ({ thread: query.thread, duration: query.duration, dirpath: query.dirpath }), schema: { query: { thread: Schema.String, duration: Schema.Uint, dirpath: Schema.String } }, }, resp: JsonOnlyResponseCodec, }, getLatestWeakSubjectivityCheckpointEpoch: { url: "/eth/v1/lodestar/ws_epoch", method: "GET", req: EmptyRequestCodec, resp: JsonOnlyResponseCodec, }, getSyncChainsDebugState: { url: "/eth/v1/lodestar/sync_chains_debug_state", method: "GET", req: EmptyRequestCodec, resp: JsonOnlyResponseCodec, }, getGossipQueueItems: { url: "/eth/v1/lodestar/gossip_queue_items/:gossipType", method: "GET", req: { writeReq: ({ gossipType }) => ({ params: { gossipType } }), parseReq: ({ params }) => ({ gossipType: params.gossipType }), schema: { params: { gossipType: Schema.StringRequired } }, }, resp: JsonOnlyResponseCodec, }, getRegenQueueItems: { url: "/eth/v1/lodestar/regen_queue_items", method: "GET", req: EmptyRequestCodec, resp: JsonOnlyResponseCodec, }, getBlockProcessorQueueItems: { url: "/eth/v1/lodestar/block_processor_queue_items", method: "GET", req: EmptyRequestCodec, resp: JsonOnlyResponseCodec, }, getStateCacheItems: { url: "/eth/v1/lodestar/state_cache_items", method: "GET", req: EmptyRequestCodec, resp: JsonOnlyResponseCodec, }, getGossipPeerScoreStats: { url: "/eth/v1/lodestar/gossip_peer_score_stats", method: "GET", req: EmptyRequestCodec, resp: JsonOnlyResponseCodec, }, getLodestarPeerScoreStats: { url: "/eth/v1/lodestar/lodestar_peer_score_stats", method: "GET", req: EmptyRequestCodec, resp: JsonOnlyResponseCodec, }, runGC: { url: "/eth/v1/lodestar/gc", method: "POST", req: EmptyRequestCodec, resp: EmptyResponseCodec, }, dropStateCache: { url: "/eth/v1/lodestar/drop_state_cache", method: "POST", req: EmptyRequestCodec, resp: EmptyResponseCodec, }, connectPeer: { url: "/eth/v1/lodestar/connect_peer", method: "POST", req: { writeReq: ({ peerId, multiaddrs }) => ({ query: { peerId, multiaddr: multiaddrs } }), parseReq: ({ query }) => ({ peerId: query.peerId, multiaddrs: query.multiaddr }), schema: { query: { peerId: Schema.StringRequired, multiaddr: Schema.StringArray } }, }, resp: EmptyResponseCodec, }, disconnectPeer: { url: "/eth/v1/lodestar/disconnect_peer", method: "POST", req: { writeReq: ({ peerId }) => ({ query: { peerId } }), parseReq: ({ query }) => ({ peerId: query.peerId }), schema: { query: { peerId: Schema.StringRequired } }, }, resp: EmptyResponseCodec, }, addDirectPeer: { url: "/eth/v1/lodestar/direct_peers", method: "POST", req: { writeReq: ({ peer }) => ({ query: { peer } }), parseReq: ({ query }) => ({ peer: query.peer }), schema: { query: { peer: Schema.StringRequired } }, }, resp: JsonOnlyResponseCodec, }, removeDirectPeer: { url: "/eth/v1/lodestar/direct_peers", method: "DELETE", req: { writeReq: ({ peerId }) => ({ query: { peerId } }), parseReq: ({ query }) => ({ peerId: query.peerId }), schema: { query: { peerId: Schema.StringRequired } }, }, resp: JsonOnlyResponseCodec, }, getDirectPeers: { url: "/eth/v1/lodestar/direct_peers", method: "GET", req: EmptyRequestCodec, resp: JsonOnlyResponseCodec, }, getPeers: { url: "/eth/v1/lodestar/peers", method: "GET", req: { writeReq: ({ state, direction }) => ({ query: { state, direction } }), parseReq: ({ query }) => ({ state: query.state, direction: query.direction }), schema: { query: { state: Schema.StringArray, direction: Schema.StringArray } }, }, resp: JsonOnlyResponseCodec, }, getBlacklistedBlocks: { url: "/eth/v1/lodestar/blacklisted_blocks", method: "GET", req: EmptyRequestCodec, resp: JsonOnlyResponseCodec, }, getHistoricalSummaries: { url: "/eth/v1/lodestar/states/{state_id}/historical_summaries", method: "GET", req: { writeReq: ({ stateId }) => ({ params: { state_id: stateId.toString() } }), parseReq: ({ params }) => ({ stateId: params.state_id }), schema: { params: { state_id: Schema.StringRequired }, }, }, resp: { data: HistoricalSummariesResponseType, meta: ExecutionOptimisticFinalizedAndVersionCodec, }, }, getPersistedCheckpointState: { url: "/eth/v1/lodestar/persisted_checkpoint_state", method: "GET", req: { writeReq: ({ checkpointId }) => ({ query: { checkpoint_id: checkpointId } }), parseReq: ({ query }) => ({ checkpointId: query.checkpoint_id }), schema: { query: { checkpoint_id: Schema.String }, }, }, resp: { data: WithVersion((fork) => ssz[fork].BeaconState), meta: VersionCodec, }, init: { // Default timeout is not sufficient to download state timeoutMs: 5 * 60 * 1000, }, }, getMonitoredValidatorIndices: { url: "/eth/v1/lodestar/monitored_validators", method: "GET", req: EmptyRequestCodec, resp: JsonOnlyResponseCodec, }, discv5GetKadValues: { url: "/eth/v1/debug/discv5_kad_values", method: "GET", req: EmptyRequestCodec, resp: JsonOnlyResponseCodec, }, dumpDbBucketKeys: { url: "/eth/v1/debug/dump_db_bucket_keys/:bucket", method: "GET", req: { writeReq: ({ bucket }) => ({ params: { bucket } }), parseReq: ({ params }) => ({ bucket: params.bucket }), schema: { params: { bucket: Schema.String } }, }, resp: JsonOnlyResponseCodec, }, dumpDbStateIndex: { url: "/eth/v1/debug/dump_db_state_index", method: "GET", req: EmptyRequestCodec, resp: JsonOnlyResponseCodec, }, getCustodyInfo: { url: "/eth/v1/lodestar/custody_info", method: "GET", req: EmptyRequestCodec, resp: JsonOnlyResponseCodec, }, }; } //# sourceMappingURL=lodestar.js.map