import WebSocket from 'isomorphic-ws'; import { type HttpRequestErrorType, type TimeoutErrorType, WebSocketRequestError } from '../errors/request.js'; import type { ErrorType } from '../errors/utils.js'; import { type CreateBatchSchedulerErrorType } from './promise/createBatchScheduler.js'; import { type WithTimeoutErrorType } from './promise/withTimeout.js'; type SuccessResult = { method?: never; result: T; error?: never; }; type ErrorResult = { method?: never; result?: never; error: T; }; type Subscription = { method: 'eth_subscription'; error?: never; result?: never; params: { subscription: string; } & ({ result: TResult; error?: never; } | { result?: never; error: TError; }); }; export type RpcRequest = { method: string; params?: any; id?: number; }; export type RpcResponse = { jsonrpc: `${number}`; id: number; } & (SuccessResult | ErrorResult | Subscription); export type HttpOptions = { body: TBody; fetchOptions?: Omit; timeout?: number; }; export type HttpReturnType = TBody extends RpcRequest[] ? RpcResponse[] : RpcResponse; export type HttpErrorType = HttpRequestErrorType | TimeoutErrorType | WithTimeoutErrorType | ErrorType; declare function http(url: string, { body, fetchOptions, timeout }: HttpOptions): Promise>; type Id = string | number; type CallbackFn = (message: any) => void; type CallbackMap = Map; export type Socket = WebSocket & { requests: CallbackMap; subscriptions: CallbackMap; }; export type GetSocketErrorType = CreateBatchSchedulerErrorType | ErrorType; export declare const socketsCache: Map; export declare function getSocket(url: string): Promise; export type WebSocketOptions = { /** The RPC request body. */ body: RpcRequest; /** The callback to invoke on response. */ onResponse?: (message: RpcResponse) => void; }; export type WebSocketReturnType = Socket; export type WebSocketErrorType = WebSocketRequestError | ErrorType; declare function webSocket(socket: Socket, { body, onResponse }: WebSocketOptions): WebSocketReturnType; export type WebSocketAsyncOptions = { /** The RPC request body. */ body: RpcRequest; /** The timeout (in ms) for the request. */ timeout?: number; }; export type WebSocketAsyncReturnType = RpcResponse; export type WebSocketAsyncErrorType = WebSocketErrorType | TimeoutErrorType | WithTimeoutErrorType | ErrorType; declare function webSocketAsync(socket: Socket, { body, timeout }: WebSocketAsyncOptions): Promise; export declare const rpc: { http: typeof http; webSocket: typeof webSocket; webSocketAsync: typeof webSocketAsync; }; export {}; //# sourceMappingURL=rpc.d.ts.map