import {IChainForkConfig} from "@lodestar/config"; import {serializeProof} from "@chainsafe/persistent-merkle-tree"; import {Api, ReqTypes, routesData, getReturnTypes, getReqSerializers} from "../routes/proof.js"; import {ServerRoutes, getGenericJsonServer} from "../../utils/server/index.js"; import {ServerApi} from "../../interfaces.js"; export function getRoutes(config: IChainForkConfig, api: ServerApi): ServerRoutes { const reqSerializers = getReqSerializers(); const serverRoutes = getGenericJsonServer, ReqTypes>( {routesData, getReturnTypes, getReqSerializers}, config, api ); return { // Non-JSON routes. Return binary getStateProof: { ...serverRoutes.getStateProof, handler: async (req) => { const args = reqSerializers.getStateProof.parseReq(req); const {data} = await api.getStateProof(...args); // Fastify 3.x.x will automatically add header `Content-Type: application/octet-stream` if Buffer return Buffer.from(serializeProof(data)); }, }, }; }