@bigmi/core
Version:
TypeScript library for Bitcoin apps.
57 lines (56 loc) • 2.27 kB
TypeScript
import type { ErrorType } from '../errors/utils.js';
import type { Chain } from '../types/chain.js';
import type { CreateTransportErrorType, Transport, TransportConfig } from '../types/transport.js';
export type OnResponseFn = (args: {
method: string;
params: unknown[];
transport: ReturnType<Transport>;
} & ({
error?: undefined;
response: unknown;
status: 'success';
} | {
error: Error;
response?: undefined;
status: 'error';
})) => void;
type RankOptions = {
interval?: number | undefined;
ping?: (parameters: {
transport: ReturnType<Transport>;
}) => Promise<unknown> | undefined;
sampleCount?: number | undefined;
timeout?: number | undefined;
weights?: {
latency?: number | undefined;
stability?: number | undefined;
} | undefined;
};
export type FallbackTransportConfig = {
key?: TransportConfig['key'] | undefined;
name?: TransportConfig['name'] | undefined;
rank?: boolean | RankOptions | undefined;
retryCount?: TransportConfig['retryCount'] | undefined;
retryDelay?: TransportConfig['retryDelay'] | undefined;
shouldThrow?: (error: Error) => boolean | undefined;
};
export type FallbackTransport<transports extends readonly Transport[] = readonly Transport[]> = Transport<'fallback', {
onResponse: (fn: OnResponseFn) => void;
transports: {
[key in keyof transports]: ReturnType<transports[key]>;
};
}>;
export type FallbackTransportErrorType = CreateTransportErrorType | ErrorType;
export declare function fallback<const transports extends readonly Transport[]>(transports_: transports, config?: FallbackTransportConfig): FallbackTransport<transports>;
export declare function shouldThrow(error: Error): boolean;
export declare function rankTransports({ chain, interval, onTransports, ping, sampleCount, timeout, transports, weights, }: {
chain?: Chain | undefined;
interval: RankOptions['interval'];
onTransports: (transports: readonly Transport[]) => void;
ping?: RankOptions['ping'] | undefined;
sampleCount?: RankOptions['sampleCount'] | undefined;
timeout?: RankOptions['timeout'] | undefined;
transports: readonly Transport[];
weights?: RankOptions['weights'] | undefined;
}): void;
export {};