import { EdgeService } from './edge_service';
import { FeatureHubConfig } from './feature_hub_config';
import { InternalFeatureRepository } from './internal_feature_repository';
export declare class EventSource {
    static readonly CLOSED: number;
    static readonly CONNECTING: number;
    static readonly OPEN: number;
    readonly CLOSED: number;
    readonly CONNECTING: number;
    readonly OPEN: number;
    readonly url: string;
    readonly readyState: number;
    readonly withCredentials: boolean;
    onopen: (evt: MessageEvent) => any;
    onmessage: (evt: MessageEvent) => any;
    onerror: (evt: MessageEvent) => any;
    constructor(url: string, eventSourceInitDict?: EventSource.EventSourceInitDict);
    addEventListener(type: string, listener: EventListener): void;
    dispatchEvent(evt: Event): boolean;
    removeEventListener(type: string, listener?: EventListener): void;
    close(): void;
}
export declare namespace EventSource {
    enum ReadyState {
        CONNECTING = 0,
        OPEN = 1,
        CLOSED = 2
    }
    interface EventSourceInitDict {
        withCredentials?: boolean;
        headers?: object;
        proxy?: string;
        https?: object;
        rejectUnauthorized?: boolean;
    }
}
export type EventSourceProvider = (url: string, eventSourceInitDict?: EventSource.EventSourceInitDict) => EventSource;
export declare class FeatureHubEventSourceClient implements EdgeService {
    private eventSource;
    private readonly _config;
    private readonly _repository;
    private _header;
    private _staleEnvironmentTimeoutId;
    private _stopped;
    static eventSourceProvider: EventSourceProvider;
    constructor(config: FeatureHubConfig, repository: InternalFeatureRepository);
    get stopped(): boolean;
    init(): void;
    close(): void;
    clientEvaluated(): boolean;
    contextChange(header: string): Promise<void>;
    poll(): Promise<void>;
    requiresReplacementOnHeaderChange(): boolean;
    private processConfig;
}
