import Registry from '../registry';
import Star from '../../../lib/star';
import { GenericObject } from '../../../typings';
import { LoggerInstance } from '../../../typings/logger';
import Endpoint from './item';
import BaseStrategy from '../../../lib/strategies/base';
import Node from '../node';
import EventEndpoint from './event';
import ActionEndpoint from './action';
import Context from '../../../lib/context';
import ServiceItem from '../service-item';
export default class EndpointList {
    registry: Registry;
    star: Star;
    logger: LoggerInstance | null;
    name: string;
    group: string | null;
    internal: boolean;
    EndPointFactory: typeof Endpoint | typeof EventEndpoint | typeof ActionEndpoint;
    endpoints: Endpoint[];
    localEndpoints: Endpoint[];
    strategy: any;
    constructor(registry: Registry, star: Star, name: string, group: string | null, EndPointFactory: typeof Endpoint | typeof EventEndpoint | typeof ActionEndpoint, StrategyFactory: typeof BaseStrategy, strategyOptions?: GenericObject);
    add(node: Node, service: ServiceItem, data: any): Endpoint;
    setLocalEndpoints(): void;
    getFirst(): Endpoint | null;
    select(list: Endpoint[], ctx?: Context): Endpoint;
    next(ctx: Context): Endpoint | null;
    hasLocal(): boolean;
    nextLocal(ctx?: Context): Endpoint | null;
    hasAvailable(): boolean;
    count(): number;
    getEndpointByNodeID(nodeID: string): Endpoint | null;
    hasNodeID(nodeID: string): boolean;
    removeByService(service: ServiceItem): void;
    removeByNodeID(nodeID: string): void;
}
