UNPKG

@lodestar/prover

Version:

A Typescript implementation of the Ethereum Consensus light client

78 lines 3.12 kB
import { ChainConfig } from "@lodestar/config"; import { NetworkName } from "@lodestar/config/networks"; import { LogLevel, Logger } from "@lodestar/utils"; import { ProofProvider } from "./proof_provider/proof_provider.js"; import { JsonRpcRequest, JsonRpcRequestOrBatch, JsonRpcResponse, JsonRpcResponseOrBatch } from "./types.js"; import { ELRpcProvider } from "./utils/rpc_provider.js"; export type { NetworkName } from "@lodestar/config/networks"; export declare enum LCTransport { Rest = "Rest", P2P = "P2P" } export type NetworkOrConfig = { network: NetworkName; config?: never; } | { network?: never; config: Partial<ChainConfig>; }; export type RootProviderInitOptions = ConsensusNodeOptions & NetworkOrConfig & { signal: AbortSignal; logger: Logger; wsCheckpoint?: string; unverifiedWhitelist?: string[]; }; export type ELRequestHandler<Params = unknown[], Response = unknown> = (payload: JsonRpcRequestOrBatch<Params>) => Promise<JsonRpcResponseOrBatch<Response> | undefined>; export type ELRequestHandlerAny = ELRequestHandler<any, any>; /** * @deprecated Kept for backward compatibility. Use `AnyWeb3Provider` type instead. */ export type Web3Provider = object; export type ELVerifiedRequestHandlerOpts<Params = unknown[]> = { payload: JsonRpcRequest<Params>; rpc: ELRpcProvider; proofProvider: ProofProvider; logger: Logger; }; export type ELVerifiedRequestHandler<Params = unknown[], Response = unknown> = (opts: ELVerifiedRequestHandlerOpts<Params>) => Promise<JsonRpcResponse<Response>>; export type LogOptions = { logger?: Logger; logLevel?: never; } | { logLevel?: LogLevel; logger?: never; }; export type ConsensusNodeOptions = { transport: LCTransport.Rest; urls: string[]; } | { transport: LCTransport.P2P; bootnodes: string[]; }; export type RootProviderOptions = { signal?: AbortSignal; wsCheckpoint?: string; unverifiedWhitelist?: string[]; }; export type ProviderTypeOptions<T extends boolean | undefined> = { /** * If user specify custom provider types we will register those at the start in given order. * So if you provider [custom1, custom2] and we already have [web3js, ethers] then final order * of providers will be [custom1, custom2, web3js, ethers] */ providerTypes?: Web3ProviderType<AnyWeb3Provider>[]; /** * To keep the backward compatible behavior if this option is not set we consider `true` as default. * In coming breaking release we may set this option default to `false`. */ mutateProvider?: T; }; export type VerifiedExecutionInitOptions<T extends boolean | undefined> = LogOptions & ConsensusNodeOptions & NetworkOrConfig & RootProviderOptions & ProviderTypeOptions<T>; export type AnyWeb3Provider = object; export interface Web3ProviderType<T extends AnyWeb3Provider> { name: string; matched: (provider: AnyWeb3Provider) => provider is T; handler(provider: T): ELRpcProvider["handler"]; mutateProvider(provider: T, newHandler: ELRpcProvider["handler"]): void; } //# sourceMappingURL=interfaces.d.ts.map