import type { IStrategy } from '../../types/stores/strategy-store.js';
import { type IAuditUser, type IFeatureStrategy, type IFeatureStrategySegment, type IUnleashConfig, type IUnleashStores, type IFeatureLinksReadModel } from '../../types/index.js';
import type { ExportQuerySchema, ExportResultSchema, ImportTogglesSchema, ImportTogglesValidateSchema } from '../../openapi/index.js';
import type { IUser } from '../../types/user.js';
import type { IUnleashServices } from '../../services/index.js';
import { type Mode } from './import-permissions-service.js';
import type { IDependentFeaturesReadModel } from '../dependent-features/dependent-features-read-model-type.js';
import type { ISegmentReadModel } from '../segment/segment-read-model-type.js';
export type IImportService = {
    validate(dto: ImportTogglesSchema, user: IUser): Promise<ImportTogglesValidateSchema>;
    import(dto: ImportTogglesSchema, user: IUser, auditUser: IAuditUser): Promise<void>;
    importFromFile(file: string, project: string, environment: string): Promise<void>;
};
export type IExportService = {
    export(query: ExportQuerySchema, auditUser: IAuditUser): Promise<ExportResultSchema>;
};
export default class ExportImportService implements IExportService, IImportService {
    private logger;
    private toggleStore;
    private featureStrategiesStore;
    private importTogglesStore;
    private tagTypeStore;
    private featureEnvironmentStore;
    private featureTagStore;
    private flagResolver;
    private featureToggleService;
    private contextFieldStore;
    private strategyService;
    private contextService;
    private accessService;
    private eventService;
    private tagTypeService;
    private segmentReadModel;
    private featureTagService;
    private importPermissionsService;
    private dependentFeaturesReadModel;
    private dependentFeaturesService;
    private featureLinksReadModel;
    private featureLinkService;
    constructor(stores: Pick<IUnleashStores, 'importTogglesStore' | 'featureStrategiesStore' | 'featureToggleStore' | 'featureEnvironmentStore' | 'tagTypeStore' | 'featureTagStore' | 'contextFieldStore'>, { getLogger, flagResolver, }: Pick<IUnleashConfig, 'getLogger' | 'flagResolver'>, { featureToggleService, strategyService, contextService, accessService, eventService, tagTypeService, featureTagService, dependentFeaturesService, featureLinkService, }: Pick<IUnleashServices, 'featureToggleService' | 'strategyService' | 'contextService' | 'accessService' | 'eventService' | 'tagTypeService' | 'featureTagService' | 'dependentFeaturesService' | 'featureLinkService'>, dependentFeaturesReadModel: IDependentFeaturesReadModel, segmentReadModel: ISegmentReadModel, featureLinksReadModel: IFeatureLinksReadModel);
    validate(dto: ImportTogglesSchema, user: IUser, mode?: Mode): Promise<ImportTogglesValidateSchema>;
    importVerify(dto: ImportTogglesSchema, user: IUser, mode?: Mode): Promise<void>;
    fileImportVerify(dto: ImportTogglesSchema): Promise<void>;
    importFeatureData(dto: ImportTogglesSchema, auditUser: IAuditUser): Promise<void>;
    import(dto: ImportTogglesSchema, user: IUser, auditUser: IAuditUser): Promise<void>;
    importFromFile(file: string, project: string, environment: string): Promise<void>;
    private processImport;
    importEnvironmentData(dto: ImportTogglesSchema, user: IUser, auditUser: IAuditUser): Promise<void>;
    private importLinks;
    private importDependencies;
    private importToggleStatuses;
    private importStrategies;
    private deleteStrategies;
    private importTags;
    private importContextFields;
    private importTagTypes;
    private importToggleVariants;
    private createOrUpdateToggles;
    private getUnsupportedSegments;
    private getMissingDependencies;
    private verifySegments;
    private verifyDependencies;
    private verifyContextFields;
    private verifyFeatures;
    private cleanData;
    private remapSegments;
    removeArchivedFeatures(dto: ImportTogglesSchema): Promise<ImportTogglesSchema>;
    private verifyStrategies;
    private getInvalidFeatureNames;
    private getFeatureLimit;
    private getUnsupportedStrategies;
    private getUsedCustomStrategies;
    isCustomStrategy: (supportedStrategies: IStrategy[]) => ((x: string) => boolean);
    private getUnsupportedContextFields;
    private getArchivedFeatures;
    private getOtherProjectFeatures;
    private getExistingProjectFeatures;
    private getDuplicateFeatures;
    private getNewTagTypes;
    private getNewContextFields;
    export(query: ExportQuerySchema, auditUser: IAuditUser): Promise<ExportResultSchema>;
    addSegmentsToStrategies(featureStrategies: IFeatureStrategy[], strategySegments: IFeatureStrategySegment[]): void;
}
//# sourceMappingURL=export-import-service.d.ts.map