import type { IUnleashConfig } from '../types/option';
import type { FeatureToggle, IEnvironment, IFeatureEnvironment, IFeatureStrategy, IImportData, IImportFile, IProject, ISegment, ITag } from '../types/model';
import type { IFeatureTag } from '../types/stores/feature-tag-store';
import type { ITagType } from '../features/tag-type/tag-type-store-type';
import type { IStrategy } from '../types/stores/strategy-store';
import type { IUnleashStores } from '../types/stores';
import type { PartialSome } from '../types/partial';
import type EventService from '../features/events/event-service';
export interface IBackupOption {
    includeFeatureToggles: boolean;
    includeStrategies: boolean;
    includeProjects: boolean;
    includeTags: boolean;
}
interface IExportIncludeOptions {
    includeFeatureToggles?: boolean;
    includeStrategies?: boolean;
    includeProjects?: boolean;
    includeTags?: boolean;
    includeEnvironments?: boolean;
    includeSegments?: boolean;
}
export default class StateService {
    private logger;
    private toggleStore;
    private featureStrategiesStore;
    private strategyStore;
    private eventService;
    private tagStore;
    private tagTypeStore;
    private projectStore;
    private featureEnvironmentStore;
    private featureTagStore;
    private environmentStore;
    private segmentStore;
    constructor(stores: IUnleashStores, { getLogger }: Pick<IUnleashConfig, 'getLogger'>, eventService: EventService);
    importFile({ file, dropBeforeImport, userName, userId, keepExisting, }: IImportFile): Promise<void>;
    replaceGlobalEnvWithDefaultEnv(data: any): void;
    moveVariantsToFeatureEnvironments(data: any): void;
    import({ data, userName, userId, dropBeforeImport, keepExisting, }: IImportData): Promise<void>;
    enabledIn(feature: string, env: any): {};
    importFeatureEnvironments({ featureEnvironments }: {
        featureEnvironments: any;
    }): Promise<void>;
    importFeatureStrategies({ featureStrategies, dropBeforeImport, keepExisting, }: {
        featureStrategies: any;
        dropBeforeImport: any;
        keepExisting: any;
    }): Promise<void>;
    convertLegacyFeatures({ features, }: {
        features: any;
    }): Promise<{
        features: any;
        featureStrategies: any;
        featureEnvironments: any;
    }>;
    importFeatures({ features, userName, userId, dropBeforeImport, keepExisting, featureEnvironments, }: {
        features: any;
        userName: any;
        userId: any;
        dropBeforeImport: any;
        keepExisting: any;
        featureEnvironments: any;
    }): Promise<void>;
    importStrategies({ strategies, userName, userId, dropBeforeImport, keepExisting, }: {
        strategies: any;
        userName: any;
        userId: any;
        dropBeforeImport: any;
        keepExisting: any;
    }): Promise<void>;
    importEnvironments({ environments, userName, userId, dropBeforeImport, keepExisting, }: {
        environments: any;
        userName: any;
        userId: any;
        dropBeforeImport: any;
        keepExisting: any;
    }): Promise<IEnvironment[]>;
    importProjects({ projects, importedEnvironments, userName, userId, dropBeforeImport, keepExisting, }: {
        projects: any;
        importedEnvironments: any;
        userName: any;
        userId: any;
        dropBeforeImport: any;
        keepExisting: any;
    }): Promise<void>;
    importTagData({ tagTypes, tags, featureTags, userName, userId, dropBeforeImport, keepExisting, }: {
        tagTypes: any;
        tags: any;
        featureTags: any;
        userName: any;
        userId: any;
        dropBeforeImport: any;
        keepExisting: any;
    }): Promise<void>;
    compareFeatureTags: (old: IFeatureTag, tag: IFeatureTag) => boolean;
    importFeatureTags(featureTags: IFeatureTag[], keepExisting: boolean, oldFeatureTags: IFeatureTag[], userName: string, userId: number): Promise<void>;
    compareTags: (old: ITag, tag: ITag) => boolean;
    importTags(tags: ITag[], keepExisting: boolean, oldTags: ITag[], userName: string, userId: number): Promise<void>;
    importTagTypes(tagTypes: ITagType[], keepExisting: boolean, oldTagTypes: ITagType[], userName: string, userId: number): Promise<void>;
    importSegments(segments: PartialSome<ISegment, 'id'>[], userName: string, userId: number, dropBeforeImport: boolean): Promise<void>;
    importFeatureStrategySegments(featureStrategySegments: {
        featureStrategyId: string;
        segmentId: number;
    }[]): Promise<void>;
    export(opts: IExportIncludeOptions): Promise<{
        features: FeatureToggle[];
        strategies: IStrategy[];
        version: number;
        projects: IProject[];
        tagTypes: ITagType[];
        tags: ITag[];
        featureTags: IFeatureTag[];
        featureStrategies: IFeatureStrategy[];
        environments: IEnvironment[];
        featureEnvironments: IFeatureEnvironment[];
    }>;
    exportV4({ includeFeatureToggles, includeStrategies, includeProjects, includeTags, includeEnvironments, includeSegments, }: IExportIncludeOptions): Promise<{
        features: FeatureToggle[];
        strategies: IStrategy[];
        version: number;
        projects: IProject[];
        tagTypes: ITagType[];
        tags: ITag[];
        featureTags: IFeatureTag[];
        featureStrategies: IFeatureStrategy[];
        environments: IEnvironment[];
        featureEnvironments: IFeatureEnvironment[];
    }>;
}
export {};
//# sourceMappingURL=state-service.d.ts.map