UNPKG

@lodestar/api

Version:

A Typescript REST client for the Ethereum Consensus API

52 lines 2.65 kB
import { ProofType } from "@chainsafe/persistent-merkle-tree"; import { ByteListType, ContainerType } from "@chainsafe/ssz"; import { ssz } from "@lodestar/types"; import { fromHex, toHex } from "@lodestar/utils"; import { ArrayOf } from "../../utils/codecs.js"; import { Schema } from "../../utils/index.js"; import { VersionCodec } from "../../utils/metadata.js"; export const CompactMultiProofType = new ContainerType({ leaves: ArrayOf(ssz.Root, 10000), descriptor: new ByteListType(2048), }); export function getDefinitions(_config) { return { getStateProof: { url: "/eth/v0/beacon/proof/state/{state_id}", method: "GET", req: { writeReq: ({ stateId, descriptor }) => ({ params: { state_id: stateId }, query: { format: toHex(descriptor) } }), parseReq: ({ params, query }) => ({ stateId: params.state_id, descriptor: fromHex(query.format) }), schema: { params: { state_id: Schema.StringRequired }, query: { format: Schema.StringRequired } }, }, resp: { data: { toJson: (data) => CompactMultiProofType.toJson(data), fromJson: (data) => ({ ...CompactMultiProofType.fromJson(data), type: ProofType.compactMulti }), serialize: (data) => CompactMultiProofType.serialize(data), deserialize: (data) => ({ ...CompactMultiProofType.deserialize(data), type: ProofType.compactMulti }), }, meta: VersionCodec, }, }, getBlockProof: { url: "/eth/v0/beacon/proof/block/{block_id}", method: "GET", req: { writeReq: ({ blockId, descriptor }) => ({ params: { block_id: blockId }, query: { format: toHex(descriptor) } }), parseReq: ({ params, query }) => ({ blockId: params.block_id, descriptor: fromHex(query.format) }), schema: { params: { block_id: Schema.StringRequired }, query: { format: Schema.StringRequired } }, }, resp: { data: { toJson: (data) => CompactMultiProofType.toJson(data), fromJson: (data) => ({ ...CompactMultiProofType.fromJson(data), type: ProofType.compactMulti }), serialize: (data) => CompactMultiProofType.serialize(data), deserialize: (data) => ({ ...CompactMultiProofType.deserialize(data), type: ProofType.compactMulti }), }, meta: VersionCodec, }, }, }; } //# sourceMappingURL=proof.js.map