import type { DatabaseType, QueryRunner } from "./QueryRunner";
import type { DataSource, Transaction } from 'loopback-datasource-juggler';
import { PromiseBasedQueryRunner } from "./PromiseBasedQueryRunner";
/**
 * @deprecated
 */
export declare function createLoopBackQueryRunner(datasource: DataSource, transaction?: Transaction): LoopbackQueryRunner;
/**
 * @deprecated
 */
export interface LoopbackQueryRunner extends QueryRunner {
    readonly database: DatabaseType;
    readonly datasource: DataSource;
    readonly connectorName: string;
    transaction?: Transaction;
}
/**
 * @deprecated
 */
export declare abstract class LoopBackAbstractQueryRunner extends PromiseBasedQueryRunner implements LoopbackQueryRunner {
    readonly database: DatabaseType;
    readonly datasource: DataSource;
    readonly connectorName: string;
    transaction?: Transaction;
    constructor(database: DatabaseType, datasource: DataSource, transaction?: Transaction);
    useDatabase(database: DatabaseType): void;
    getNativeRunner(): DataSource;
    getCurrentNativeTransaction(): Transaction | undefined;
    execute<RESULT>(fn: (connection: unknown, transaction?: unknown) => Promise<RESULT>): Promise<RESULT>;
    executeBeginTransaction(): Promise<void>;
    executeCommit(): Promise<void>;
    executeRollback(): Promise<void>;
    isTransactionActive(): boolean;
    protected executeQueryReturning(query: string, params: any[]): Promise<any[]>;
    protected query(query: string, params?: any[]): Promise<any>;
}
/**
 * @deprecated
 */
export declare class LoopBackMySqlQueryRunner extends LoopBackAbstractQueryRunner {
    constructor(datasource: DataSource, transaction?: Transaction);
    useDatabase(database: DatabaseType): void;
    protected executeMutation(query: string, params: any[]): Promise<number>;
    executeInsertReturningLastInsertedId(query: string, params?: any[]): Promise<any>;
    addParam(params: any[], value: any): string;
}
/**
 * @deprecated
 */
export declare class LoopBackOracleQueryRunner extends LoopBackAbstractQueryRunner {
    constructor(datasource: DataSource, transaction?: Transaction);
    protected executeMutation(query: string, params: any[]): Promise<number>;
    protected executeMutationReturning(query: string, params?: any[]): Promise<any[]>;
    addParam(params: any[], value: any): string;
    addOutParam(params: any[], name: string): string;
}
/**
 * @deprecated
 */
export declare class LoopBackPostgreSqlQueryRunner extends LoopBackAbstractQueryRunner {
    constructor(datasource: DataSource, transaction?: Transaction);
    protected executeMutation(query: string, params: any[]): Promise<number>;
    protected executeMutationReturning(query: string, params: any[]): Promise<any[]>;
    executeInsert(query: string, params?: any[]): Promise<number>;
    addParam(params: any[], value: any): string;
    protected guessInsertRowCount(query: string): number;
}
/**
 * @deprecated
 */
export declare class LoopBackSqlServerQueryRunner extends LoopBackAbstractQueryRunner {
    constructor(datasource: DataSource, transaction?: Transaction);
    protected executeMutation(query: string, params: any[]): Promise<number>;
    executeProcedure(query: string, params?: any[]): Promise<void>;
    executeDatabaseSchemaModification(query: string, params?: any[]): Promise<void>;
    addParam(params: any[], value: any): string;
}
