import { D1Database } from '@cloudflare/workers-types';

/**
 * Common interface for database operations across different environments
 */
interface DatabaseAdapter {
    /**
     * Execute a SQL query with parameters and return the results
     *
     * @param query - SQL query to execute
     * @param params - Optional array of parameters to bind to the query
     * @returns Array of query results
     */
    exec(query: string, params?: any[]): Promise<QueryResult[]>;
    /**
     * Close the database connection
     */
    close(): Promise<void>;
}
/**
 * Result from a database query
 */
interface QueryResult {
    /**
     * Array of column names in the result set
     */
    columns: string[];
    /**
     * Two-dimensional array of values:
     * - First dimension: rows
     * - Second dimension: column values for each row
     */
    values: any[][];
}

declare class CloudflareD1Adapter implements DatabaseAdapter {
    private db;
    constructor(db: D1Database);
    exec(query: string, params?: any[]): Promise<QueryResult[]>;
    close(): Promise<void>;
}
declare function createD1Adapter(db: D1Database): DatabaseAdapter;

export { CloudflareD1Adapter, createD1Adapter };
