import type { CreateDependentFeatureSchema } from '../../openapi/index.js';
import type { IDependentFeaturesStore } from './dependent-features-store-type.js';
import type { FeatureDependencyId } from './dependent-features.js';
import type { IDependentFeaturesReadModel } from './dependent-features-read-model-type.js';
import type { EventService } from '../../services/index.js';
import type { IAuditUser, IUser } from '../../types/index.js';
import type { IChangeRequestAccessReadModel } from '../change-request-access-service/change-request-access-read-model.js';
import type { IFeaturesReadModel } from '../feature-toggle/types/features-read-model-type.js';
interface IDependentFeaturesServiceDeps {
    dependentFeaturesStore: IDependentFeaturesStore;
    dependentFeaturesReadModel: IDependentFeaturesReadModel;
    changeRequestAccessReadModel: IChangeRequestAccessReadModel;
    featuresReadModel: IFeaturesReadModel;
    eventService: EventService;
}
export declare class DependentFeaturesService {
    private dependentFeaturesStore;
    private dependentFeaturesReadModel;
    private changeRequestAccessReadModel;
    private featuresReadModel;
    private eventService;
    constructor({ featuresReadModel, dependentFeaturesReadModel, dependentFeaturesStore, eventService, changeRequestAccessReadModel, }: IDependentFeaturesServiceDeps);
    cloneDependencies({ featureName, newFeatureName, projectId, }: {
        featureName: string;
        newFeatureName: string;
        projectId: string;
    }, auditUser: IAuditUser): Promise<void>;
    upsertFeatureDependency({ child, projectId }: {
        child: string;
        projectId: string;
    }, dependentFeature: CreateDependentFeatureSchema, user: IUser, auditUser: IAuditUser): Promise<void>;
    unprotectedUpsertFeatureDependency({ child, projectId }: {
        child: string;
        projectId: string;
    }, dependentFeature: CreateDependentFeatureSchema, auditUser: IAuditUser): Promise<void>;
    deleteFeatureDependency(dependency: FeatureDependencyId, projectId: string, user: IUser, auditUser: IAuditUser): Promise<void>;
    unprotectedDeleteFeatureDependency(dependency: FeatureDependencyId, projectId: string, auditUser: IAuditUser): Promise<void>;
    deleteFeaturesDependencies(features: string[], projectId: string, user: IUser, auditUser: IAuditUser): Promise<void>;
    unprotectedDeleteFeaturesDependencies(features: string[], projectId: string, auditUser: IAuditUser): Promise<void>;
    getPossibleParentFeatures(feature: string): Promise<string[]>;
    getPossibleParentVariants(parentFeature: string): Promise<string[]>;
    checkDependenciesExist(): Promise<boolean>;
    private stopWhenChangeRequestsEnabled;
}
export {};
//# sourceMappingURL=dependent-features-service.d.ts.map