import { DataTableAbstract } from '../datatable_abstract.js';
import { DatabaseQueryBuilderContract, Dictionary } from '@adonisjs/lucid/types/querybuilder';
import { LucidModel, ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';
export default class DatabaseDataTable extends DataTableAbstract {
    protected query: DatabaseQueryBuilderContract<Dictionary<any, string>> | ModelQueryBuilderContract<LucidModel, any>;
    protected nullsLast: boolean;
    protected prepared: boolean;
    protected keepSelectBindings: boolean;
    protected disableUserOrdering: boolean;
    constructor(query: DatabaseQueryBuilderContract<Dictionary<any, string>> | ModelQueryBuilderContract<LucidModel, any>);
    static canCreate(source: any): boolean;
    protected getConnection(): import("knex").Knex.Client;
    protected defaultOrdering(): any;
    protected hasOrderColumn(column: string): boolean;
    protected applyOrderColumn(column: string, orderable: Record<string, any>): void;
    protected getNullsLastSql(column: string, direction: string): string;
    protected attachAppends(data: Record<string, any>): Record<string, any>;
    protected getColumnSearchKeyword(i: number, raw?: boolean): string;
    protected applyFilterColumn(query: DatabaseQueryBuilderContract<Dictionary<any, string>> | ModelQueryBuilderContract<LucidModel, any>, columnName: string, keyword: string): void;
    protected resolveRelationColumn(column: string): string;
    protected compileColumnSearch(i: number, column: string, keyword: string): void;
    protected regexColumnSearch(column: string, keyword: string): void;
    protected compileQuerySearch(query: ModelQueryBuilderContract<LucidModel, any> | DatabaseQueryBuilderContract<Dictionary<any, string>>, columnName: string, keyword: string, boolean?: string): void;
    protected prepareKeyword(keyword: string): string;
    protected prepareQuery(): Promise<this>;
    protected filterRecords(): Promise<void>;
    protected hasFilterColumn(columnName: string): boolean;
    protected wrapColumn(column: string): string;
    protected getBaseQueryBuilder(instance?: DatabaseQueryBuilderContract<Dictionary<any, string>> | ModelQueryBuilderContract<LucidModel, any> | undefined): DatabaseQueryBuilderContract<Dictionary<any, string>> | ModelQueryBuilderContract<LucidModel, any>;
    protected castColumn(column: string): string;
    protected addTablePrefix(query: DatabaseQueryBuilderContract<Dictionary<any, string>> | ModelQueryBuilderContract<LucidModel, any>, column: string): string;
    protected getFilteredQuery(): DatabaseQueryBuilderContract<Dictionary<any, string>> | ModelQueryBuilderContract<LucidModel, any>;
    protected resolveCallback(): any;
    results(): Promise<void | Record<string, any>>;
    dataResults(): Promise<Record<string, any>[]>;
    count(): Promise<number>;
    columnSearch(): void;
    filterColumn(column: string, callback: <T extends abstract new (...args: any) => any>(query: InstanceType<T>, keyword: string) => void): this;
    orderColumns(columns: Record<string, any>, sql: string, bindings?: any[]): this;
    orderColumn(column: string, sql: (<T extends abstract new (...args: any) => any>(query: InstanceType<T>, direction: string) => void) | string | boolean, bindings?: any[]): this;
    orderByNullsLast(): this;
    paging(): void;
    addColumn(name: string, content: (<T extends abstract new (...args: any) => any>(row: InstanceType<T>) => string | number) | string | number, order?: boolean): this;
    globalSearch(keyword: string): void;
    ordering(): void;
}
