import { getInformationSchema } from './information_schema'; import { Document, Value } from '../types'; export type Dialect = 'mysql' | 'postgres' | 'mssql' | 'oracle' | 'sqlite3' | 'generic'; export type ConnectionSettings = string | { [key: string]: any; }; export interface ConnectionInfo { dialect?: Dialect; connection: ConnectionSettings; driver?: string; } export interface ResolvedConnectionInfo { dialect: Dialect; connection: { [key: string]: any; }; } export type Row = { [key: string]: Value; }; export declare class QueryCounter { total: number; } export type TransactionCallback = (connection: Connection) => Promise | void; export interface DialectEncoder { dialect: Dialect; escape: (unsafe: any) => string; escapeId: (unsafe: string) => string; escapeDate: (date: Date) => string; } export declare abstract class Connection implements DialectEncoder { dialect: Dialect; connection: any; database: string; queryCounter: QueryCounter; abstract _query(sql: string, pk?: string): Promise; query(fmt: string, ...args: unknown[]): Promise; beginTransaction(): Promise; commit(): Promise; rollback(): Promise; abstract end(): Promise; abstract release(): void | Promise; abstract escape(s: string): string; abstract escapeId(name: string): string; abstract escapeDate(date: Date): string; transaction(callback: TransactionCallback): Promise; } export declare abstract class ConnectionPool implements DialectEncoder { dialect: Dialect; database: string; abstract getConnection(): Promise; abstract end(): Promise; abstract escape(s: string): string; abstract escapeId(name: string): string; abstract escapeDate(date: Date): string; } export declare function resolveConnectionInfo(info: ConnectionInfo): ResolvedConnectionInfo; export declare function createConnectionPool(dialect: Dialect | undefined, connection: ConnectionSettings): ConnectionPool; export declare function createConnection(dialect: Dialect | undefined, connection: ConnectionSettings): Connection; export { getInformationSchema };