type Sign = "=" | "<" | ">" | "<=" | ">=" | "!=" | "is not" | "is" | "~" | "in" | "not in" | "!~" | "was" | "was in" | "was not in" | "was not" | "changed";
type JqlStatement = {
    left: string;
    sign: Sign;
    right: string | number | string[] | number[];
};
type OrderByOperator = {
    field: string;
    type: "asc" | "desc";
};
type Operator = {
    type: "and" | "or";
    jql: JqlGen;
};
declare class JqlGen {
    private statement?;
    private externalStatement?;
    private operators;
    private orderByOperators;
    constructor(statement?: JqlStatement);
    and(statement: JqlGen | JqlStatement): JqlGen;
    or(statement: JqlGen | JqlStatement): JqlGen;
    orderBy(orderByItem: OrderByOperator): JqlGen;
    injectExternal(str: string): JqlGen;
    toString(): string;
    private escapeStatement;
    private forwardOrderBy;
    private toStringStatement;
    private toStringOperators;
    private toStringOrderBy;
}
/** if you're lazy, hey I don't blame you, tiny wrapper to not spam new new new */
declare function jql(statement?: JqlStatement): JqlGen;

export { JqlGen, JqlStatement, Operator, OrderByOperator, Sign, jql };
