import type { IEventStore, IFeatureToggleDeltaQuery, IFeatureToggleQuery, IFlagResolver, ISegmentReadModel, IUnleashConfig } from '../../../types/index.js';
import type ConfigurationRevisionService from '../../feature-toggle/configuration-revision-service.js';
import { DeltaCache } from './delta-cache.js';
import type { FeatureConfigurationDeltaClient, IClientFeatureToggleDeltaReadModel } from './client-feature-toggle-delta-read-model-type.js';
import EventEmitter from 'events';
import type { ClientFeaturesDeltaSchema } from '../../../openapi/index.js';
import { type DeltaEvent, type DeltaHydrationEvent } from './client-feature-toggle-delta-types.js';
export type EnvironmentRevisions = Record<string, DeltaCache>;
export type EnvironmentVisibleRevisionState = {
    projectRevisions: Map<string, number>;
    segmentRevisions: Map<number, number>;
    maxReferencedSegmentRevision: number;
};
export declare const UPDATE_DELTA = "UPDATE_DELTA";
export declare const filterEventsByQuery: (events: DeltaEvent[], requestedRevisionId: number, projects: string[], namePrefix: string, referencedSegmentIds: Set<number>) => DeltaEvent[];
export declare const filterHydrationEventByQuery: (event: DeltaHydrationEvent, projects: string[], namePrefix: string) => DeltaHydrationEvent;
export declare class ClientFeatureToggleDelta extends EventEmitter {
    private static instance;
    private clientFeatureToggleDeltaReadModel;
    private delta;
    private visibleRevisions;
    private eventStore;
    private lastDeltaProcessedRevisionId;
    private flagResolver;
    private readonly segmentReadModel;
    private eventBus;
    private readonly logger;
    constructor(clientFeatureToggleDeltaReadModel: IClientFeatureToggleDeltaReadModel, segmentReadModel: ISegmentReadModel, eventStore: IEventStore, configurationRevisionService: ConfigurationRevisionService, flagResolver: IFlagResolver, config: IUnleashConfig);
    static getInstance(clientFeatureToggleDeltaReadModel: IClientFeatureToggleDeltaReadModel, segmentReadModel: ISegmentReadModel, eventStore: IEventStore, configurationRevisionService: ConfigurationRevisionService, flagResolver: IFlagResolver, config: IUnleashConfig): ClientFeatureToggleDelta;
    getDelta(sdkRevisionId: number | undefined, query: IFeatureToggleQuery): Promise<ClientFeaturesDeltaSchema | undefined>;
    onUpdateRevisionEvent(): Promise<void>;
    /**
     * This is used in client-feature-delta-api.e2e.test.ts, do not remove
     */
    resetDelta(): void;
    private processChangeEvents;
    private updateFeaturesDelta;
    getChangedToggles(environment: string, toggles: string[]): Promise<FeatureConfigurationDeltaClient[]>;
    private initEnvironmentDelta;
    private updateVisibleRevisions;
    getClientFeatures(query: IFeatureToggleDeltaQuery): Promise<FeatureConfigurationDeltaClient[]>;
    storeFootprint(): void;
    getCacheSizeInBytes(value: any): number;
}
export type { DeltaEvent };
//# sourceMappingURL=client-feature-toggle-delta.d.ts.map