import { ClientGrpc } from '@nestjs/microservices';
import { NacosConfigClient } from 'nacos';
import { WhaleNacosClient } from '../baseNacos/WhaleNacosClient';
import { NacosInstance, LoadBalanceServiceOptions, AllowUndefined, Connection, NacosGrpcOptions } from '../interface';
export default class LoadBalanceService {
    nacosNamingClient: any;
    nacosConfigClient: AllowUndefined<NacosConfigClient>;
    serviceClusterName: AllowUndefined<string>;
    group: string;
    serviceName: string;
    packageName: NacosGrpcOptions['packageName'];
    protoPath: NacosGrpcOptions['protoPath'];
    loadBalance: (arg0: Connection[]) => ClientGrpc;
    connectionPool: Connection[];
    instancePool: NacosInstance[];
    singleClientGrpc: AllowUndefined<ClientGrpc>;
    proxyClientGrpc: AllowUndefined<ClientGrpc>;
    hasInstance: AllowUndefined<boolean>;
    grpcOptions: Partial<NacosGrpcOptions>;
    nacosClientInstance: WhaleNacosClient;
    constructor({ group, serviceName, packageName, protoPath, loadBalance, ...grpcOptions }: LoadBalanceServiceOptions);
    ready(): Promise<void>;
    buildConnectioPool(serviceName: string, packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath']): Promise<void>;
    selectHealthyInstances(serviceName: string, group: AllowUndefined<string>): Promise<NacosInstance[]>;
    createClientGrpc(ip: string, packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath']): import("@nestjs/microservices").ClientGrpcProxy;
    batchCreateClientGrpc(instanceList: NacosInstance[], packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath']): Connection[];
    selectOneConnectionByLoadbalance(): ClientGrpc;
    subscribe(serviceName: string, packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath']): void;
    getGrpcProxyConfig(packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath']): Promise<void>;
    subscribeProxyConfig(): void;
    getConfig(service: string, packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath']): Promise<void>;
    subscribeConfig(serviceName: string, packageName: NacosGrpcOptions['packageName'], protoPath: NacosGrpcOptions['protoPath'], group?: string): void;
    setServiceClusterName(instanceList: NacosInstance[]): void;
    formatInstanceList(instanceList: NacosInstance[]): NacosInstance[];
}
