/// <reference types="node" />
import { Knex } from 'knex';
import { LogProvider } from '../logger';
import { IFeatureToggleClient, IFeatureToggleQuery } from '../types/model';
import { IFeatureToggleClientStore } from '../types/stores/feature-toggle-client-store';
import EventEmitter from 'events';
import { IFlagResolver } from '../types/experimental';
export interface FeaturesTable {
    name: string;
    description: string;
    type: string;
    stale: boolean;
    variants: string;
    project: string;
    last_seen_at?: Date;
    created_at?: Date;
}
export interface IGetAllFeatures {
    featureQuery?: IFeatureToggleQuery;
    archived: boolean;
    isAdmin: boolean;
    includeStrategyIds?: boolean;
    userId?: number;
}
export interface IGetAdminFeatures {
    featureQuery?: IFeatureToggleQuery;
    archived?: boolean;
    userId?: number;
}
export default class FeatureToggleClientStore implements IFeatureToggleClientStore {
    private db;
    private logger;
    private inlineSegmentConstraints;
    private timer;
    private flagResolver;
    constructor(db: Knex, eventBus: EventEmitter, getLogger: LogProvider, inlineSegmentConstraints: boolean, flagResolver: IFlagResolver);
    private getAll;
    private static rowToStrategy;
    private static rowToTag;
    private static removeIdsFromStrategies;
    private isUnseenStrategyRow;
    private addTag;
    private isNewTag;
    private addSegmentToStrategy;
    private addSegmentIdsToStrategy;
    getClient(featureQuery?: IFeatureToggleQuery, includeStrategyIds?: boolean): Promise<IFeatureToggleClient[]>;
    getAdmin({ featureQuery, userId, archived, }: IGetAdminFeatures): Promise<IFeatureToggleClient[]>;
}
