import { K as KyselyReplicationDialectConfig, R as ReplicaStrategy } from './config-5S6ngVvi.cjs';
import { Dialect, DialectAdapter, Driver, Kysely, DatabaseIntrospector, QueryCompiler, DatabaseConnection, CompiledQuery, QueryResult, TransactionSettings } from 'kysely';

declare class KyselyReplicationDialect implements Dialect {
    #private;
    constructor(config: KyselyReplicationDialectConfig);
    createAdapter(): DialectAdapter;
    createDriver(): Driver;
    createIntrospector(db: Kysely<unknown>): DatabaseIntrospector;
    createQueryCompiler(): QueryCompiler;
}

declare class KyselyReplicationConnection implements DatabaseConnection {
    #private;
    constructor(primary: Driver, getReplica: (compiledQuery: CompiledQuery) => Promise<Driver>, onReplicaTransaction: 'error' | 'warn' | 'allow');
    executeQuery<R>(compiledQuery: CompiledQuery): Promise<QueryResult<R>>;
    streamQuery<R>(compiledQuery: CompiledQuery, chunkSize: number): AsyncIterableIterator<QueryResult<R>>;
    beginTransaction(settings: TransactionSettings): Promise<void>;
    commitTransaction(): Promise<void>;
    rollbackTransaction(): Promise<void>;
    release(): Promise<void>;
}

declare class KyselyReplicationDriver implements Driver {
    #private;
    constructor(primaryDriver: Driver, replicaDrivers: readonly Driver[], replicaStrategy: ReplicaStrategy);
    acquireConnection(): Promise<DatabaseConnection>;
    beginTransaction(connection: KyselyReplicationConnection, settings: TransactionSettings): Promise<void>;
    commitTransaction(connection: KyselyReplicationConnection): Promise<void>;
    destroy(): Promise<void>;
    init(): Promise<void>;
    releaseConnection(connection: KyselyReplicationConnection): Promise<void>;
    rollbackTransaction(connection: KyselyReplicationConnection): Promise<void>;
}

export { KyselyReplicationDialect, KyselyReplicationDialectConfig, KyselyReplicationDriver, ReplicaStrategy };
