import { IComparisonOpts, IEvaluatable, IJson, IJsonDump, ILikeOptions, IReport, Primitive, PrimitiveThing } from './contracts';
import { Reporter } from './util';
export declare abstract class KeyValue {
    protected _key: string;
    protected _value: Primitive;
    get key(): string;
    get value(): Primitive;
    constructor(key: string, value: PrimitiveThing);
}
export declare abstract class Comparison extends KeyValue implements IEvaluatable, IJson {
    static alias: string;
    protected _opts?: IComparisonOpts;
    protected _reporter: Reporter;
    constructor(key: string, value: PrimitiveThing, opts?: IComparisonOpts);
    get opts(): IComparisonOpts;
    getAlias(): string;
    getReport(): IReport;
    resetReport(): void;
    asJson(): IJsonDump;
    evaluate<PrimitiveThing>(obj: PrimitiveThing): boolean;
}
export interface IComparison<T> {
    equals(key: string, value: PrimitiveThing): T;
    isNull(key: string): T;
    eq(key: string, value: PrimitiveThing): T;
    greaterThan(key: string, value: PrimitiveThing): T;
    gt(key: string, value: PrimitiveThing): T;
    greaterThanEquals(key: string, value: PrimitiveThing): T;
    gte(key: string, value: PrimitiveThing): T;
    lessThan(key: string, value: PrimitiveThing): T;
    lt(key: string, value: PrimitiveThing): T;
    lessThanEquals(key: string, value: PrimitiveThing): T;
    lte(key: string, value: PrimitiveThing): T;
    like(key: string, value: PrimitiveThing, options?: IComparisonOpts): T;
    ilike(key: string, value: PrimitiveThing, options?: IComparisonOpts): T;
    any(key: string, values: Primitive[]): T;
}
export declare class ComparisonEquals extends Comparison {
    static alias: string;
}
export declare class ComparisonIsNull extends Comparison {
    static alias: string;
}
export declare class ComparisonGreaterThan extends Comparison {
    static alias: string;
}
export declare class ComparisonGreaterThanEquals extends Comparison {
    static alias: string;
}
export declare class ComparisonLessThan extends Comparison {
    static alias: string;
}
export declare class ComparisonLessThanEquals extends Comparison {
    static alias: string;
}
export declare class ComparisonLike extends Comparison {
    static alias: string;
    _valueRe: RegExp;
    constructor(key: string, value: PrimitiveThing, opts?: ILikeOptions);
    get opts(): ILikeOptions;
}
export declare class ComparisonILike extends ComparisonLike {
    static alias: string;
    constructor(key: string, value: PrimitiveThing, opts?: ILikeOptions);
}
