import * as grpc from 'grpc'; import { Interceptor } from "./interceptors/chain"; import { GrpcMonitor } from "./monitor"; import { Sentinel } from "@nimbus/operational"; export interface PoolOptions { address: string; credentials: grpc.ChannelCredentials; size?: number; options?: { [x: string]: any; interceptors?: Interceptor[]; }; } export declare enum PoolStatus { AllDisconnected = 0, AllConnected = 1, SomeConnected = 2 } export declare type ClientConstructor = new (address: string, credentials: grpc.ChannelCredentials, options?: object) => Client; export declare class Pool { clients: Client[]; provider: IterableIterator; status: PoolStatus; _monitor?: GrpcMonitor; constructor(clientProto: ClientConstructor, options: PoolOptions); private watchConnections; protected make(index: number, clientProto: ClientConstructor, options: PoolOptions): Client; private startProvider; get(): Client; monitor(sentinel: Sentinel): this; }