/// <reference types="node" />
import { ISegmentStore } from '../types/stores/segment-store';
import { IConstraint, IFeatureStrategySegment, ISegment } from '../types/model';
import { LogProvider } from '../logger';
import { Knex } from 'knex';
import EventEmitter from 'events';
import { PartialSome } from '../types/partial';
import User from '../types/user';
interface ISegmentRow {
    id: number;
    name: string;
    description?: string;
    created_by?: string;
    created_at?: Date;
    constraints: IConstraint[];
}
export default class SegmentStore implements ISegmentStore {
    private logger;
    private eventBus;
    private db;
    constructor(db: Knex, eventBus: EventEmitter, getLogger: LogProvider);
    count(): Promise<number>;
    create(segment: PartialSome<ISegment, 'id'>, user: Partial<Pick<User, 'username' | 'email'>>): Promise<ISegment>;
    update(id: number, segment: Omit<ISegment, 'id'>): Promise<ISegment>;
    delete(id: number): Promise<void>;
    getAll(): Promise<ISegment[]>;
    getActive(): Promise<ISegment[]>;
    getByStrategy(strategyId: string): Promise<ISegment[]>;
    deleteAll(): Promise<void>;
    exists(id: number): Promise<boolean>;
    get(id: number): Promise<ISegment>;
    addToStrategy(id: number, strategyId: string): Promise<void>;
    removeFromStrategy(id: number, strategyId: string): Promise<void>;
    getAllFeatureStrategySegments(): Promise<IFeatureStrategySegment[]>;
    existsByName(name: string): Promise<boolean>;
    prefixColumns(): string[];
    mapRow(row?: ISegmentRow): ISegment;
    destroy(): void;
}
export {};
