import * as stream from "stream"; import * as fs from "fs"; export declare type SqlComplexType = { readonly _typeId: number; }; export declare type SqlStream = SqlComplexType & { stream: stream.Readable | stream.Writable; length: number; }; export declare type SqlNumeric = SqlComplexType & { precision: number; scale: number; sign: boolean; value: Uint8Array; }; export declare type SqlTimestamp = SqlComplexType & { date: Date; }; export declare type SqlError = { readonly message: string; readonly sqlState: string; readonly code: number; }; export declare type SqlColumnMetaData = { readonly name: string; readonly size: number; readonly dataType: string; readonly digits: number; readonly nullable: boolean; }; export declare type SqlResultExtension = { readonly $sqlReturnValue?: number; readonly $sqlMetaData?: Array; }; export declare type SqlResult = SqlResultExtension & Partial; export declare type SqlPartialResult = SqlResultExtension & Partial; export declare type SqlResultArray = SqlResultExtension & Array; export declare type SqlPartialResultArray = SqlResultExtension & Array; export declare type SqlResultTypes = SqlResult | SqlResultArray; export declare type SqlPartialResultTypes = SqlPartialResult & SqlPartialResultArray; export declare type SqlTypes = null | string | boolean | number | Date | Buffer | SqlStream | SqlNumeric | SqlTimestamp; export declare function makeInputStream(stream: fs.ReadStream | stream.Readable, length: number): SqlStream; export declare function makeNumericValue(precision: number, scale: number, sign: boolean, value: Uint8Array): SqlNumeric; export declare function makeDateValue(date: Date): SqlTimestamp; export interface IResilienceStrategy { retries: number; errorCodes: Array; } export declare type ConnectionInfo = { driverName: string; driverVersion: string; databaseName: string; odbcVersion: string; dbmsName: string; internalServerType: number; odbcConnectionString: string; resilienceStrategy: IResilienceStrategy; }; export declare type ConnectionProps = { enableMssqlMars?: boolean; poolSize?: number; }; export declare const enum eFetchMode { eSingle = 0, eArray = 1, } export declare class Connection { constructor(advancedProps?: ConnectionProps); connect(connectionString: string, connectionTimeout?: number): Connection; disconnect(cb: () => void): void; prepareQuery(query: string, ...args: (SqlTypes)[]): ISqlQuery; executeQuery(cb: (result: SqlResult, error: SqlError) => void, query: string, ...args: (SqlTypes)[]): void; executeQuery(eFetchMode: eFetchMode, cb: (result: SqlResultTypes, error: SqlError) => void, query: string, ...args: (SqlTypes)[]): void; executeQuery(cb: (result: SqlPartialResult, error: SqlError) => void, query: string, ...args: (SqlTypes)[]): void; executeQuery(eFetchMode: eFetchMode, cb: (result: SqlPartialResultTypes, error: SqlError) => void, query: string, ...args: (SqlTypes)[]): void; getInfo(): ConnectionInfo; } export interface ISqlQuery { enableReturnValue(): ISqlQuery; enableMetaData(): ISqlQuery; setQueryTimeout(timeout: number): ISqlQuery; toSingle(cb: (result: SqlResult, error: SqlError) => void): void; toSingle(cb: (result: SqlPartialResult, error: SqlError) => void): void; toSingle(): Promise; toSingle(): Promise>; toArray(cb: (result: SqlResultArray, error: SqlError) => void): void; toArray(cb: (result: SqlPartialResultArray, error: SqlError) => void): void; toArray(): Promise; toArray(): Promise>; } export interface ISqlQueryEx extends ISqlQuery { setPromiseInfo(resolve: any, reject: any): void; } export declare function setWriteStreamInitializer(cb: (targetStream: stream.Readable, query: ISqlQueryEx) => void): void; export declare function setPromiseInitializer(cb: (query: ISqlQueryEx) => T): void; export declare function setReadStreamInitializer(cb: (query: ISqlQueryEx, column: number) => stream.Readable): void; export declare function processNextChunk(query: ISqlQueryEx, chunk: Int8Array, cb: (error) => void): void; export declare function requestNextChunk(query: ISqlQueryEx, column: number, cb: (chunk: Int8Array) => void): Int8Array;