declare enum ArrayFilterKey {
    In = "in"
}
declare enum ScalarFilterKey {
    GreaterThan = "gt",
    LesserThan = "lt"
}
declare enum CombinationKey {
    And = "and",
    Or = "or",
    Not = "not"
}
interface Filter {
    op: ArrayFilterKey | ScalarFilterKey;
    content: {
        field: string;
        value: Array<string | number> | number;
    };
}
export interface Combination {
    op: CombinationKey;
    content: Operator[];
}
export declare type Operator = Filter | Combination;
export declare function combine(op: CombinationKey, content: Operator[]): Combination;
export declare function filter(op: ArrayFilterKey | ScalarFilterKey, field: string, value: Array<string | number> | number): Filter;
declare class SQON implements Combination {
    op: CombinationKey;
    content: Operator[];
    constructor(sqon: SQON | Operator | string);
    and(content: SQON | SQON[]): SQON;
    or(content: SQON | SQON[]): SQON;
    not(content: SQON | SQON[]): SQON;
    in(field: string, value: Array<string | number>): SQON;
    gt(field: string, value: number): SQON;
    lt(field: string, value: number): SQON;
    static from(sqon: Operator | string): SQON;
    static and(content: SQON | SQON[]): SQON;
    static or(content: SQON | SQON[]): SQON;
    static not(content: SQON | SQON[]): SQON;
    static in(field: string, value: Array<string | number>): SQON;
    static gt(field: string, value: number): SQON;
    static lt(field: string, value: number): SQON;
    toString(): string;
    private toOperator;
    private addFilter;
}
export default SQON;
