import type { IListenerMetaData } from '../../../interface/discovery.js'; import type { Discovery } from '../../discovery/Discovery.js'; import { Codec } from '../Codec.js'; import type { Connector } from '../Connector.js'; import type { Response } from '../packet/Response.js'; import type { Route } from '../Route.js'; import type { Provider } from './Provider.js'; export type SenderBuilder = () => Connector; export interface IRequestOptions { headers?: { [k: string]: any; }; timeout?: number; } export type UndefinedToVoid = T extends undefined ? void : T; export type ThenArg = T extends PromiseLike ? U : T; export type TypeOfClassMethod = T[M] extends (...args: any) => any ? T[M] : never; export type RawRouteRPCMethod = (body: UndefinedToVoid>[0]>, options?: IRequestOptions, raw?: true) => Promise>>>>; export type RouteRPCMethod = (body: UndefinedToVoid>[0]>, options?: IRequestOptions, raw?: false) => ReturnType>; export type ConvertRPCRouteMethod = { [K in keyof T]: RouteRPCMethod & RawRouteRPCMethod; }; export type RouteMethod = (body: UndefinedToVoid>[0]>, options?: IRequestOptions) => Promise; export type ConvertRouteMethod = { [K in keyof T]: RouteMethod; }; export type PacketCodecBuilder = () => Codec; declare class ProviderManager { constructor(discovery: Discovery); registerSender(protocol: string, builder: SenderBuilder): void; connectorFactory(target: IListenerMetaData): Connector | null; findAvailableCodec(codes: string[]): Codec | null; addProvider(provider: Provider): void; removeProvider(provider: Provider): void; getAllProviders(): Provider[]; get discovery(): Discovery; private discovery_; private senderBuilder_; private providerMap_; } export { ProviderManager }; //# sourceMappingURL=ProviderManager.d.ts.map