import type { IUnleashConfig } from '../../types/option.js';
import { type IAuditUser, type IUnleashStores } from '../../types/index.js';
import type { ISegment } from '../../types/model.js';
import type User from '../../types/user.js';
import type { ISegmentService, StrategiesUsingSegment } from './segment-service-interface.js';
import type { IChangeRequestAccessReadModel } from '../change-request-access-service/change-request-access-read-model.js';
import type { IPrivateProjectChecker } from '../private-project/privateProjectCheckerType.js';
import type EventService from '../events/event-service.js';
import type { IChangeRequestSegmentUsageReadModel } from '../change-request-segment-usage-service/change-request-segment-usage-read-model.js';
import type { UpsertSegmentSchema } from '../../openapi/index.js';
import type { ResourceLimitsService } from '../resource-limits/resource-limits-service.js';
import type { IConstraintsReadModel } from '../constraints/constraints-read-model-type.js';
export declare class SegmentService implements ISegmentService {
    private segmentStore;
    private featureStrategiesStore;
    private changeRequestAccessReadModel;
    private changeRequestSegmentUsageReadModel;
    private config;
    private flagResolver;
    private eventService;
    private privateProjectChecker;
    private resourceLimitsService;
    private constraintsReadModel;
    constructor({ segmentStore, featureStrategiesStore, }: Pick<IUnleashStores, 'segmentStore' | 'featureStrategiesStore'>, changeRequestAccessReadModel: IChangeRequestAccessReadModel, changeRequestSegmentUsageReadModel: IChangeRequestSegmentUsageReadModel, config: IUnleashConfig, eventService: EventService, privateProjectChecker: IPrivateProjectChecker, resourceLimitsService: ResourceLimitsService, constraintsReadModel: IConstraintsReadModel);
    get(id: number, userId?: number): Promise<ISegment>;
    getAll(userId?: number): Promise<ISegment[]>;
    getByStrategy(strategyId: string): Promise<ISegment[]>;
    getVisibleStrategies(id: number, userId: number): Promise<StrategiesUsingSegment>;
    private verifySegmentAccess;
    getAllStrategies(id: number): Promise<StrategiesUsingSegment>;
    isInUse(id: number): Promise<boolean>;
    validateSegmentLimit(): Promise<void>;
    create(data: unknown, auditUser: IAuditUser): Promise<ISegment>;
    update(id: number, data: UpsertSegmentSchema, user: User, auditUser: IAuditUser): Promise<void>;
    unprotectedUpdate(id: number, data: UpsertSegmentSchema, 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