/// <reference types="node" />
import { Knex } from 'knex';
import { EventEmitter } from 'stream';
import { LogProvider } from '../logger';
import { ITag } from '../types/model';
import { IFeatureAndTag, IFeatureTag, IFeatureTagStore } from '../types/stores/feature-tag-store';
interface FeatureTagTable {
    feature_name: string;
    tag_type: string;
    tag_value: string;
}
declare class FeatureTagStore implements IFeatureTagStore {
    private db;
    private logger;
    private readonly timer;
    constructor(db: Knex, eventBus: EventEmitter, getLogger: LogProvider);
    delete({ featureName, tagType, tagValue, }: IFeatureTag): Promise<void>;
    destroy(): void;
    exists({ featureName, tagType, tagValue, }: IFeatureTag): Promise<boolean>;
    get({ featureName, tagType, tagValue, }: IFeatureTag): Promise<IFeatureTag>;
    getAll(): Promise<IFeatureTag[]>;
    getAllTagsForFeature(featureName: string): Promise<ITag[]>;
    tagFeature(featureName: string, tag: ITag): Promise<ITag>;
    /**
     * Only gets tags for active feature toggles.
     */
    getAllFeatureTags(): Promise<IFeatureTag[]>;
    deleteAll(): Promise<void>;
    importFeatureTags(featureTags: IFeatureTag[]): Promise<IFeatureAndTag[]>;
    untagFeature(featureName: string, tag: ITag): Promise<void>;
    featureTagRowToTag(row: FeatureTagTable): ITag;
    rowToFeatureAndTag(row: FeatureTagTable): IFeatureAndTag;
    importToRow({ featureName, tagType, tagValue, }: IFeatureTag): FeatureTagTable;
    featureAndTagToRow(featureName: string, { type, value }: ITag): FeatureTagTable;
}
export default FeatureTagStore;
