import { InternalFeatureRepository } from './internal_feature_repository';
import { AnalyticsCollector } from './analytics';
import { FeatureStateValueInterceptor } from './interceptors';
import { ClientContext } from './client_context';
import { EdgeServiceProvider, FeatureHubConfig } from './feature_hub_config';
import { Readyness, ReadynessListener } from './featurehub_repository';
import { FeatureStateHolder } from './feature_state';
export declare class EdgeFeatureHubConfig implements FeatureHubConfig {
    private _host;
    private _apiKey;
    private _apiKeys;
    private _clientEval;
    private _originalUrl;
    private _url;
    private _repository;
    private _edgeService;
    private _edgeServices;
    private _clientContext;
    private _initialized;
    static defaultEdgeServiceSupplier: EdgeServiceProvider;
    private static _singleton;
    static config(url: string, apiKey: string): EdgeFeatureHubConfig;
    constructor(host: string, apiKey: string);
    addReadynessListener(listener: ReadynessListener): number;
    addAnalyticCollector(collector: AnalyticsCollector): void;
    addValueInterceptor(interceptor: FeatureStateValueInterceptor): void;
    get readyness(): Readyness;
    get readiness(): Readyness;
    feature<T = any>(name: string): FeatureStateHolder<T>;
    apiKey(apiKey: string): FeatureHubConfig;
    clientEvaluated(): boolean;
    getApiKeys(): string[];
    getHost(): string;
    newContext(repository?: InternalFeatureRepository, edgeService?: EdgeServiceProvider): ClientContext;
    private getOrCreateEdgeService;
    private createEdgeService;
    close(): void;
    forceClose(): void;
    get closed(): boolean;
    get initialized(): boolean;
    init(): FeatureHubConfig;
    edgeServiceProvider(edgeServ?: EdgeServiceProvider): EdgeServiceProvider;
    repository(repository?: InternalFeatureRepository): InternalFeatureRepository;
    url(): string;
    addReadinessListener(listener: ReadynessListener, ignoreNotReadyOnRegister?: boolean): number;
    removeReadinessListener(listener: ReadynessListener | number): void;
}
