import { Model as ModelBase, DynamicRecord as DRBase } from "../DynamicRecord";
import { DynamicCollection } from "./DynamicCollection";
import { DynamicSchema } from "./DynamicSchema";
import { QueryOptions } from "../interfaces/DynamicRecord";
import { DRConnection } from "../interfaces/connection";
export declare class DynamicRecord<DataObject extends {
    _id?: string;
}> extends DRBase<DataObject> {
    schema: Promise<DynamicSchema>;
    private _databaseConnection;
    private _ready;
    private _db;
    private _client;
    private _schemaValidator;
    constructor(options: {
        tableSlug: string;
        connection: DRConnection;
    });
    closeConnection(): Promise<void>;
    findBy(query: object): Promise<ModelBase<DataObject>>;
    where(query: object, options?: QueryOptions): Promise<DynamicCollection<DataObject>>;
    all(): Promise<DynamicCollection<DataObject>>;
    first(options?: QueryOptions): Promise<ModelBase<DataObject> | DynamicCollection<DataObject>>;
    last(options?: QueryOptions): Promise<ModelBase<DataObject> | DynamicCollection<DataObject>>;
}
