import LucidDataTable from "./engines/lucid_datatable.js";
import DatabaseDataTable from "./engines/database_datatable.js";
import ObjectDataTable from "./engines/object_datatable.js";
import type { DatabaseQueryBuilderContract, Dictionary } from "@adonisjs/lucid/types/querybuilder";
import type { LucidModel, ModelQueryBuilderContract } from "@adonisjs/lucid/types/model";
import type { DataTableAbstract } from "./datatable_abstract.js";
export declare class Datatables {
    protected engines: Record<string, any>;
    constructor(engines: Record<string, any>);
    of<T extends DataTableAbstract>(...source: any): T;
    static lucid(source: ModelQueryBuilderContract<LucidModel, any>): LucidDataTable;
    static database(source: DatabaseQueryBuilderContract<Dictionary<any, string>>): DatabaseDataTable;
    static object(source: Record<string, any>[]): ObjectDataTable;
}
