import { Readable } from 'stream';
import { IQueryable } from './IQueryable';
import { IsolationLevel } from './IsolationLevel';
import { IDatabasePosition } from './IDatabasePosition';
import { TransactionAccessLevel } from './TransactionAccessLevel';
export interface IDatabaseConnection {
    setInstantiationStack(stack: string): void;
    getInstantiationStack(): string;
    getAPI(): any;
    isReadOnly(): boolean;
    isMaster(): boolean;
    isReplication(): boolean;
    hasReplicationEnabled(): boolean;
    setTimeout(timeout: number): void;
    getTimeout(): number;
    query(query: IQueryable<any>, params?: any): Promise<any>;
    /**
     * @deprecated - Streaming queries does not support post processing, creating a confusing API
     */
    stream(query: IQueryable<any>, params?: any, streamOptions?: any): Readable;
    close(forceClose?: boolean): Promise<void>;
    isClosed(): boolean;
    startTransaction(level?: IsolationLevel, accessLevel?: TransactionAccessLevel): Promise<void>;
    isTransaction(): boolean;
    commit(): Promise<void>;
    rollback(): Promise<void>;
    /**
     * @since 8.4.0
     * @param query
     * @param params
     */
    formatQuery(query: IQueryable<any>): string;
    /**
     * @since 8.1.0
     */
    getCurrentDatabasePosition(): Promise<IDatabasePosition>;
}
