import * as common from "@data-heaving/common"; export declare type TSQLRow = ReadonlyArray | undefined; export interface SQLConnectionReaderAbstraction< TIntermediateRequest, TFinalRequest > { createRequest: (sqlCommand: string) => TIntermediateRequest; defaultPrepareRequest: (req: TIntermediateRequest) => TFinalRequest; streamQuery: ( options: QueryExecutionParametersWithRequest, controlFlow: common.ControlFlow | undefined, ) => Promise; } export declare type RowTransformer> = ( row: TRow, controlFlow: common.ControlFlow | undefined, ) => T; export interface QueryExecutionParametersBase< TResult = unknown, TRow = ReadonlyArray > { sqlCommand: string; onRow: RowTransformer; onDone?: (rowsAffected: Array) => unknown; } export declare type QueryExecutionParametersWithRequest< TFinalRequest > = QueryExecutionParametersBase & { request: TFinalRequest; }; export declare type QueryExecutionParameters< TIntermediateRequest, TFinalRequest, TResult = unknown, TRow = ReadonlyArray > = QueryExecutionParametersBase & { connection: SQLConnectionReaderAbstraction< TIntermediateRequest, TFinalRequest >; prepareRequest?: (request: TIntermediateRequest) => TFinalRequest; }; export declare type QueryExecutionParametersSingle< TIntermediateRequest, TFinalRequest, TResult, TRow = ReadonlyArray > = QueryExecutionParameters< TIntermediateRequest, TFinalRequest, TResult, TRow > & { strict?: boolean; }; export declare const executeStatementNoResults: < TIntermediateRequest, TFinalRequest >( opts: Omit< QueryExecutionParameters< TIntermediateRequest, TFinalRequest, unknown, readonly unknown[] >, "onRow" >, ) => Promise; export declare const getQuerySingleValue: < TIntermediateRequest, TFinalRequest, TResult >( opts: QueryExecutionParametersBase & { connection: SQLConnectionReaderAbstraction< TIntermediateRequest, TFinalRequest >; prepareRequest?: | ((request: TIntermediateRequest) => TFinalRequest) | undefined; } & { strict?: boolean | undefined; } & { columnIndex?: number | undefined; }, ) => Promise; export declare const getQuerySingleRow: < TIntermediateRequest, TFinalRequest, TResult >( opts: QueryExecutionParametersSingle< TIntermediateRequest, TFinalRequest, TResult, readonly unknown[] >, ) => Promise; export declare const streamQueryResults: < TIntermediateRequest, TFinalRequest, TResult >( opts: QueryExecutionParameters< TIntermediateRequest, TFinalRequest, TResult, readonly unknown[] >, ) => Promise; export declare const streamQuery: ( opts: QueryExecutionParameters< TIntermediateRequest, TFinalRequest, unknown, readonly unknown[] >, ) => Promise; export declare const streamQueryOnRequest: ( { sqlCommand, onRow, onDone, request, }: QueryExecutionParametersWithRequest, connectionStreamQuery: ( options: QueryExecutionParametersWithRequest, controlFlow: common.ControlFlow | undefined, ) => Promise, ) => Promise; export declare class UnexpectedAmountOfRowsError extends Error { readonly tooMany: boolean; constructor(tooMany: boolean); }