import { IUnleashConfig } from '../types/option';
import { IUnleashStores } from '../types';
import { IFeatureStrategy, ISegment } from '../types/model';
import User from '../types/user';
export declare class SegmentService {
    private logger;
    private segmentStore;
    private featureStrategiesStore;
    private eventStore;
    private config;
    constructor({ segmentStore, featureStrategiesStore, eventStore, }: Pick<IUnleashStores, 'segmentStore' | 'featureStrategiesStore' | 'eventStore'>, config: IUnleashConfig);
    get(id: number): Promise<ISegment>;
    getAll(): Promise<ISegment[]>;
    getActive(): Promise<ISegment[]>;
    getByStrategy(strategyId: string): Promise<ISegment[]>;
    getStrategies(id: number): Promise<IFeatureStrategy[]>;
    create(data: unknown, user: Partial<Pick<User, 'username' | 'email'>>): Promise<ISegment>;
    update(id: number, data: unknown, user: Partial<Pick<User, 'username' | 'email'>>): Promise<void>;
    delete(id: number, user: User): 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;
}
