import { ParseDirective, ApiCollection, Api, Header, CollectionData } from "../grpc_web_services/lavanet/lava/spec/api_collection_pb"; import { Metadata } from "../grpc_web_services/lavanet/lava/pairing/relay_pb"; import { Spec } from "../grpc_web_services/lavanet/lava/spec/spec_pb"; import Long from "long"; import { BaseChainMessageContainer } from "./chain_message"; export declare const APIInterfaceJsonRPC = "jsonrpc"; export declare const APIInterfaceTendermintRPC = "tendermintrpc"; export declare const APIInterfaceRest = "rest"; export declare const APIInterfaceGrpc = "grpc"; export declare const AllApiInterfaces: string[]; export declare const HeadersPassSend: 0; /** * Options for sending RPC relay. */ export interface SendRelayOptions { method: string; params: Array | Record; id?: number | string; chainId?: string; metadata?: Metadata[]; apiInterface?: string; } export interface SingleRelayOptions { method: string; params: Array | Record; id?: number | string; metadata?: Metadata[]; } export interface SendRelaysBatchOptions { relays: Array; chainId?: string; apiInterface?: string; } /** * Options for sending Rest relay. */ export interface SendRestRelayOptions { connectionType: string; url: string; data?: Record; chainId?: string; metadata?: Metadata[]; } export interface ApiKey { name: string; connectionType: string; } export declare type ApiKeyString = string; export declare function ApiKeyToString(key: ApiKey): ApiKeyString; interface TaggedContainer { parsing: ParseDirective; apiCollection: ApiCollection; } export interface CollectionKey { connectionType: string; internalPath: string; addon: string; } export declare type CollectionKeyString = string; export declare function CollectionKeyToString(key: CollectionKey): CollectionKeyString; export interface ApiContainer { api: Api; collectionKey: CollectionKey; apiKey: ApiKey; } interface HeaderContainer { header: Header; apiKey: ApiKey; } interface VerificationKey { extension: string; addon: string; } interface VerificationContainer { connectionType: string; name: string; parseDirective: ParseDirective; value: string; latestDistance: Long; verificationKey: VerificationKey; } declare type VerificationKeyString = string; interface HeadersHandler { filteredHeaders: Metadata[]; overwriteRequestedBlock: string; ignoredMetadata: Metadata[]; } export interface ChainBlockStats { allowedBlockLagForQosSync: number; averageBlockTime: number; blockDistanceForFinalizedData: number; blocksInFinalizationProof: number; } interface DataReliabilityParams { enabled: boolean; dataReliabilityThreshold: number; } export declare abstract class BaseChainParser { protected taggedApis: Map; protected spec: Spec | undefined; protected serverApis: Map; protected headers: Map; protected apiCollections: Map; protected allowedAddons: Set; apiInterface: string; protected verifications: Map; constructor(); protected getSupportedApi(name: string, connectionType: string): ApiContainer; protected getApiCollection(collectionKey: CollectionKey): ApiCollection; dataReliabilityParams(): DataReliabilityParams; init(spec: Spec): void; protected isRest(options: SendRelayOptions | SendRelaysBatchOptions | SendRestRelayOptions): options is SendRestRelayOptions; handleHeaders(metadata: Metadata[] | undefined, apiCollection: ApiCollection, headersDirection: number): HeadersHandler; protected isAddon(addon: string): boolean; protected matchSpecApiByName(name: string, connectionType: string): [ApiContainer | undefined, boolean]; abstract parseMsg(options: SendRelayOptions | SendRelaysBatchOptions | SendRestRelayOptions): BaseChainMessageContainer; chainBlockStats(): ChainBlockStats; getParsingByTag(tag: number): [ParseDirective | undefined, CollectionData | undefined, boolean]; } export {};