import { type IAuditUser, type IEnvironmentStore, type IEventStore, type IFeatureEnvironmentStore, type IUnleashConfig } from '../../types/index.js';
import type { FeatureLifecycleView, IFeatureLifecycleStore } from './feature-lifecycle-store-type.js';
import type EventService from '../events/event-service.js';
import type { FeatureLifecycleCompletedSchema } from '../../openapi/index.js';
export declare class FeatureLifecycleService {
    private eventStore;
    private featureLifecycleStore;
    private environmentStore;
    private featureEnvironmentStore;
    private flagResolver;
    private eventBus;
    private eventService;
    private logger;
    constructor({ eventStore, featureLifecycleStore, environmentStore, featureEnvironmentStore, }: {
        eventStore: IEventStore;
        environmentStore: IEnvironmentStore;
        featureLifecycleStore: IFeatureLifecycleStore;
        featureEnvironmentStore: IFeatureEnvironmentStore;
    }, { eventService, }: {
        eventService: EventService;
    }, { flagResolver, eventBus, getLogger, }: Pick<IUnleashConfig, 'flagResolver' | 'eventBus' | 'getLogger'>);
    listen(): void;
    getFeatureLifecycle(feature: string): Promise<FeatureLifecycleView>;
    private featureInitialized;
    private stageReceivedMetrics;
    private recordStagesEntered;
    private featuresReceivedMetrics;
    /**
     * Optimized bulk processing: reduces DB calls from O(4 * environments) to O(3) by batching all data fetches and processing in-memory
     */
    private handleBulkMetrics;
    private extractUniqueEnvironmentsAndFeatures;
    private buildEnvironmentMap;
    private buildFeatureEnvironmentMap;
    private determineLifecycleStages;
    private getFeaturesForEnvironment;
    private createPreLiveStages;
    private createLiveStages;
    private getEnabledFeaturesForEnvironment;
    featureCompleted(feature: string, projectId: string, status: FeatureLifecycleCompletedSchema, auditUser: IAuditUser): Promise<void>;
    featureUncompleted(feature: string, projectId: string, auditUser: IAuditUser): Promise<void>;
    private featureArchived;
    private featureRevived;
}
//# sourceMappingURL=feature-lifecycle-service.d.ts.map