UNPKG

@bigmi/core

Version:

TypeScript library for Bitcoin apps.

54 lines (53 loc) 2.95 kB
import { type UrlRequiredErrorType } from '../errors/transport.js'; import type { ErrorType } from '../errors/utils.js'; import type { BtcRpcRequestFn, RpcSchema } from '../types/request.js'; import type { CreateTransportErrorType, Transport, TransportConfig } from '../types/transport.js'; import { type HttpRpcClientOptions } from './getHttpRpcClient.js'; export type HttpTransportConfig<rpcSchema extends RpcSchema | undefined = undefined, raw extends boolean = false> = { /** * Whether to enable Batch JSON-RPC. * @link https://www.jsonrpc.org/specification#batch */ batch?: boolean | { /** The maximum number of JSON-RPC requests to send in a batch. @default 1_000 */ batchSize?: number | undefined; /** The maximum number of milliseconds to wait before sending a batch. @default 0 */ wait?: number | undefined; } | undefined; /** * Request configuration to pass to `fetch`. * @link https://developer.mozilla.org/en-US/docs/Web/API/fetch */ fetchOptions?: HttpRpcClientOptions['fetchOptions'] | undefined; /** A callback to handle the response from `fetch`. */ onFetchRequest?: HttpRpcClientOptions['onRequest'] | undefined; /** A callback to handle the response from `fetch`. */ onFetchResponse?: HttpRpcClientOptions['onResponse'] | undefined; /** The key of the HTTP transport. */ key?: TransportConfig['key'] | undefined; /** Methods to include or exclude from executing RPC requests. */ methods?: TransportConfig['methods'] | undefined; /** The name of the HTTP transport. */ name?: TransportConfig['name'] | undefined; /** Whether to return JSON RPC errors as responses instead of throwing. */ raw?: raw | boolean | undefined; /** The max number of times to retry. */ retryCount?: TransportConfig['retryCount'] | undefined; /** The base delay (in ms) between retries. */ retryDelay?: TransportConfig['retryDelay'] | undefined; /** Typed JSON-RPC schema for the transport. */ rpcSchema?: rpcSchema | RpcSchema | undefined; /** The timeout (in ms) for the HTTP request. Default: 10_000 */ timeout?: TransportConfig['timeout'] | undefined; }; export type HttpTransport<rpcSchema extends RpcSchema | undefined = undefined, raw extends boolean = false> = Transport<'http', { fetchOptions?: HttpTransportConfig['fetchOptions'] | undefined; url?: string | undefined; }, BtcRpcRequestFn<rpcSchema, raw>>; export type HttpTransportErrorType = CreateTransportErrorType | UrlRequiredErrorType | ErrorType; /** * @description Creates a HTTP transport that connects to a JSON-RPC API. */ export declare function http<rpcSchema extends RpcSchema | undefined = undefined, raw extends boolean = false>( /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */ url?: string | undefined, config?: HttpTransportConfig<rpcSchema, raw>): HttpTransport<rpcSchema, raw>;