import { FeatureStateValueInterceptor, InterceptorValueMatch } from './interceptors';
import { FeatureStateHolder } from './feature_state';
import { AnalyticsCollector } from './analytics';
import { FeatureRolloutStrategy, SSEResultState } from './models';
import { ClientContext } from './client_context';
import { Applied, ApplyFeature } from './strategy_matcher';
import { InternalFeatureRepository } from './internal_feature_repository';
import { CatchReleaseListenerHandler, ReadinessListenerHandle } from './feature_hub_config';
import { PostLoadNewFeatureStateAvailableListener, Readyness, ReadynessListener } from './featurehub_repository';
export declare class ClientFeatureRepository implements InternalFeatureRepository {
    private hasReceivedInitialState;
    private features;
    private analyticsCollectors;
    private readynessState;
    private _readinessListeners;
    private _catchAndReleaseMode;
    private _catchReleaseStates;
    private _newFeatureStateAvailableListeners;
    private _matchers;
    private readonly _applyFeature;
    private _catchReleaseCheckForDeletesOnRelease?;
    constructor(applyFeature?: ApplyFeature);
    apply(strategies: Array<FeatureRolloutStrategy>, key: string, featureValueId: string, context: ClientContext): Applied;
    get readyness(): Readyness;
    notify(state: SSEResultState, data: any): void;
    private _checkForDeletedFeatures;
    addValueInterceptor(matcher: FeatureStateValueInterceptor): void;
    valueInterceptorMatched(key: string): InterceptorValueMatch | undefined;
    addPostLoadNewFeatureStateAvailableListener(listener: PostLoadNewFeatureStateAvailableListener): CatchReleaseListenerHandler;
    removePostLoadNewFeatureStateAvailableListener(listener: PostLoadNewFeatureStateAvailableListener | CatchReleaseListenerHandler): void;
    addReadynessListener(listener: ReadynessListener): ReadinessListenerHandle;
    addReadinessListener(listener: ReadynessListener, ignoreNotReadyOnRegister?: boolean): ReadinessListenerHandle;
    removeReadinessListener(listener: ReadynessListener | ReadinessListenerHandle): void;
    notReady(): void;
    broadcastReadynessState(firstState: boolean): void;
    addAnalyticCollector(collector: AnalyticsCollector): void;
    simpleFeatures(): Map<string, string | undefined>;
    logAnalyticsEvent(action: string, other?: Map<string, string>, ctx?: ClientContext): void;
    hasFeature(key: string): undefined | FeatureStateHolder;
    feature<T = any>(key: string): FeatureStateHolder<T>;
    getFeatureState<T = any>(key: string): FeatureStateHolder<T>;
    get catchAndReleaseMode(): boolean;
    set catchAndReleaseMode(value: boolean);
    release(disableCatchAndRelease?: boolean): Promise<void>;
    getFlag(key: string): boolean | undefined;
    getString(key: string): string | undefined;
    getJson(key: string): string | undefined;
    getNumber(key: string): number | undefined;
    isSet(key: string): boolean;
    private _catchUpdatedFeatures;
    private triggerNewStateAvailable;
    private featureUpdate;
    private deleteFeature;
}
