import { Builder } from './Builder.js'; import type { Dialect } from './Dialect.js'; import type { Diff } from './Diff.js'; import type { Driver } from './Driver.js'; import { type HasQuery, type HasResolver, type HasSql, type HasTable, internalResolver } from './Internal.js'; import type { Async, Deliver, Either, QueryDialect, QueryMeta, Sync } from './MetaData.js'; import { BatchQuery } from './Queries.js'; import { Resolver } from './Resolver.js'; import { type Sql } from './Sql.js'; import type { Table } from './Table.js'; import type { SelectFirst } from './query/Select.js'; export declare class Database extends Builder implements HasResolver { driver: Driver; dialect: Dialect; diff: Diff; readonly [internalResolver]: Resolver; constructor(driver: Driver, dialect: Dialect, diff: Diff); close(this: Database): Promise; close(this: Database): void; [Symbol.dispose](this: Database): void; [Symbol.asyncDispose](this: Database): Promise; create(...tables: Array): BatchQuery; drop(...tables: Array): BatchQuery; run(input: HasSql): Deliver; get>(input: HasQuery): Deliver; get(input: HasSql): Deliver; all(input: HasSql): Deliver>; migrate(...tables: Array): Deliver; batch>(queries: Queries): BatchQuery; execute(input: HasSql): Deliver; transaction(this: Database, run: (tx: Transaction) => T, options?: TransactionOptions[Meta['dialect']]): T; transaction(this: Database, run: (tx: Transaction) => Promise, options?: TransactionOptions[Meta['dialect']]): Promise; transaction(run: (tx: Transaction) => T | Promise, options?: TransactionOptions[Meta['dialect']]): Deliver; $count(source: Table | HasSql, condition?: HasSql): SelectFirst, Meta>; } export interface TransactionUniversalOptions { async?: boolean; } export interface TransactionOptions { universal: TransactionUniversalOptions; sqlite: TransactionUniversalOptions & { behavior?: 'deferred' | 'immediate' | 'exclusive'; }; postgres: TransactionUniversalOptions & { isolationLevel?: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable'; accessMode?: 'read only' | 'read write'; deferrable?: boolean; }; mysql: TransactionUniversalOptions & { isolationLevel?: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable'; accessMode?: 'read only' | 'read write'; withConsistentSnapshot?: boolean; }; } export declare class Rollback extends Error { data: Data; constructor(data: Data); } export declare class Transaction extends Database { rollback(data?: Data): never; } export declare class SyncDatabase extends Database> { } export declare class AsyncDatabase extends Database> { }