import { Adapter } from '../Adapter';
import { Select, Insert, Update } from '@fewer/sq';
export interface DatabaseConfig<DBAdapter extends Adapter = Adapter> {
    adapter: DBAdapter;
}
export declare class Database<DBAdapter extends Adapter = Adapter> {
    /**
     * The registered underlying adapter.
     */
    readonly adapter: DBAdapter;
    constructor({ adapter }: DatabaseConfig<DBAdapter>);
    /**
     * Connects to the database.
     */
    connect(): Promise<void>;
    disconnect(): Promise<void>;
    select(query: Select): Promise<any[]>;
    insert(query: Insert): Promise<any>;
    update(query: Update): Promise<any>;
}
/**
 * TODO: Documentation.
 */
export declare function createDatabase<DBAdapter extends Adapter>(options: DatabaseConfig<DBAdapter>): Database<DBAdapter>;
