import * as grpc from "grpc"; import { CallOptions, Metadata } from "grpc"; import { ClientConstructor, Pool, PoolOptions } from "./pool"; import { GrpcRequest } from "./request"; declare type CallClientOption = CallOptions & { metadata?: Metadata; }; export interface ClientDefaults { callOptions: CallClientOption; clientOptions: PoolOptions; } export declare class Client { private readonly _client; private readonly options?; protected static defaults: ClientDefaults; pool: Pool; constructor(_client: Pool | ClientConstructor, options?: PoolOptions | undefined); static create(_client: Pool | ClientConstructor, options?: PoolOptions): Client; static getClientDefaults(): PoolOptions; static getCallDefaults(): CallClientOption; static setClientDefaults(defaults: Partial): void; static setCallDefaults(defaults: Partial): void; newClient(): Client; get client(): GrpcClient; clientOptions(): PoolOptions; callOptions(): CallClientOption; protected initPool(client: Pool | ClientConstructor): Pool; request(): GrpcRequest & { [P in keyof GrpcClient]: import("./request").ObservableGrpcCall any) & GrpcClient[P]>, ReturnType<((...args: any) => any) & GrpcClient[P]>, ReturnType<((...args: any) => any) & GrpcClient[P]>, ReturnType<((...args: any) => any) & GrpcClient[P]>>; }; } export {};