import type { IUnleashConfig } from '../../types/option';
import { type IAuditUser, type IUnleashStores } from '../../types';
import type { ISegment } from '../../types/model';
import type User from '../../types/user';
import type { ISegmentService, StrategiesUsingSegment } from './segment-service-interface';
import type { IChangeRequestAccessReadModel } from '../change-request-access-service/change-request-access-read-model';
import type { IPrivateProjectChecker } from '../private-project/privateProjectCheckerType';
import type EventService from '../events/event-service';
import type { IChangeRequestSegmentUsageReadModel } from '../change-request-segment-usage-service/change-request-segment-usage-read-model';
export declare class SegmentService implements ISegmentService {
    private logger;
    private segmentStore;
    private featureStrategiesStore;
    private changeRequestAccessReadModel;
    private changeRequestSegmentUsageReadModel;
    private config;
    private flagResolver;
    private eventService;
    private privateProjectChecker;
    constructor({ segmentStore, featureStrategiesStore, }: Pick<IUnleashStores, 'segmentStore' | 'featureStrategiesStore'>, changeRequestAccessReadModel: IChangeRequestAccessReadModel, changeRequestSegmentUsageReadModel: IChangeRequestSegmentUsageReadModel, config: IUnleashConfig, eventService: EventService, privateProjectChecker: IPrivateProjectChecker);
    get(id: number): Promise<ISegment>;
    getAll(): Promise<ISegment[]>;
    getByStrategy(strategyId: string): Promise<ISegment[]>;
    getVisibleStrategies(id: number, userId: number): Promise<StrategiesUsingSegment>;
    getAllStrategies(id: number): Promise<StrategiesUsingSegment>;
    isInUse(id: number): Promise<boolean>;
    create(data: unknown, auditUser: IAuditUser): Promise<ISegment>;
    update(id: number, data: unknown, user: User, auditUser: IAuditUser): Promise<void>;
    unprotectedUpdate(id: number, data: unknown, auditUser: IAuditUser): Promise<void>;
    delete(id: number, user: User, auditUser: IAuditUser): Promise<void>;
    unprotectedDelete(id: number, auditUser: IAuditUser): Promise<void>;
    cloneStrategySegments(sourceStrategyId: string, targetStrategyId: string): Promise<void>;
    addToStrategy(id: number, strategyId: string): Promise<void>;
    updateStrategySegments(strategyId: string, segmentIds: number[]): Promise<void>;
    removeFromStrategy(id: number, strategyId: string): Promise<void>;
    validateName(name: string): Promise<void>;
    private validateStrategySegmentLimit;
    private validateSegmentValuesLimit;
    private validateSegmentProject;
    private stopWhenChangeRequestsEnabled;
}
//# sourceMappingURL=segment-service.d.ts.map