import { BinderStore } from './binder';
import { Artifacts } from './steps/BaseStep';
import { Column } from './database';
import { Expression, IStatementGiver } from './models';
import { BuilderData } from './builder';
export type OrderByItem = Column | Expression | string;
export type OrderByArgsElement = OrderByItemInfo | OrderByItem | OrderByDirection | OrderByNullsPosition;
export declare class OrderByItemInfo implements IStatementGiver {
    private readonly orderByItem;
    private readonly direction;
    private readonly nullPosition;
    constructor(orderByItem: OrderByItem, direction?: OrderByDirection, nullPosition?: OrderByNullsPosition);
    getStmt(data: BuilderData, artifacts: Artifacts, binderStore: BinderStore): string;
    private getDirectionFromOption;
    private getNullLastFromOption;
}
export declare abstract class OrderByDirection {
}
export declare class DirectionNotExist extends OrderByDirection {
    private static instance;
    private readonly unique;
    private constructor();
    static getInstance(): DirectionNotExist;
    toString(): string;
}
export declare const DIRECTION_NOT_EXIST: DirectionNotExist;
export declare class Asc extends OrderByDirection {
    private static instance;
    private readonly unique;
    private constructor();
    static getInstance(): Asc;
    toString(): string;
}
export declare const ASC: Asc;
export declare class Desc extends OrderByDirection {
    private static instance;
    private readonly unique;
    private constructor();
    static getInstance(): Desc;
    toString(): string;
}
export declare const DESC: Desc;
export declare abstract class OrderByNullsPosition {
}
export declare class NullsPositionNotExist extends OrderByNullsPosition {
    private static instance;
    private readonly unique;
    private constructor();
    static getInstance(): NullsPositionNotExist;
    toString(): string;
}
export declare const NULLS_POSITION_NOT_EXIST: NullsPositionNotExist;
export declare class NullsFirst extends OrderByNullsPosition {
    private static instance;
    private readonly unique;
    private constructor();
    static getInstance(): NullsFirst;
    toString(): string;
}
export declare const NULLS_FIRST: NullsFirst;
export declare class NullsLast extends OrderByNullsPosition {
    private static instance;
    private readonly unique;
    private constructor();
    static getInstance(): NullsLast;
    toString(): string;
}
export declare const NULLS_LAST: NullsLast;
