import { ResultSet } from '@libsql/client';
import * as schema from './schema';
import { SQLiteTransaction } from 'drizzle-orm/sqlite-core';
import { ExtractTablesWithRelations } from 'drizzle-orm';
/**
 * Database class that handles initialization and provides access to the database
 */
declare class DatabaseClient {
    private client;
    private _drizzle;
    /**
     * Initialize the database connection
     */
    init(): Promise<void>;
    /**
     * Get the Drizzle ORM instance
     */
    get drizzle(): import("drizzle-orm/libsql").LibSQLDatabase<Record<string, unknown>> & {
        $client: import("@libsql/client/.").Client;
    };
    /**
     * Initialize the database and return the drizzle instance
     * This is useful for ensuring the database is initialized before using it
     */
    getDrizzle(): Promise<import("drizzle-orm/libsql").LibSQLDatabase<Record<string, unknown>> & {
        $client: import("@libsql/client/.").Client;
    }>;
    /**
     * Get the underlying libsql client
     */
    getClient(): import("@libsql/client/.").Client;
    /**
     * Close the database connection
     */
    close(): Promise<void>;
}
export declare const db: DatabaseClient;
export type Drizzle = Awaited<ReturnType<typeof db.getDrizzle>>;
export type Schema = typeof schema;
export type DrizzleTransaction = SQLiteTransaction<'async', ResultSet, Schema, ExtractTablesWithRelations<Schema>>;
export {};
//# sourceMappingURL=db.d.ts.map