///
import PgDataTypeID from '@databases/pg-data-type-id';
import PgClient from './types/PgClient';
export type ParseFnText = (value: string) => any;
export type ParseFnBinary = (value: Buffer) => any;
export type TypeOverridesFunction = (ctx: {
getTypeParser(oid: number, format?: 'text'): ParseFnText;
getTypeParser(type: string, format?: 'text'): Promise;
getTypeParser(oid: number, format: 'binary'): ParseFnBinary;
getTypeParser(type: string, format: 'binary'): Promise;
setTypeParser(oid: number, parseFn: ParseFnText): void;
setTypeParser(oid: string, parseFn: ParseFnText): Promise;
setTypeParser(oid: number, format: 'text', parseFn: ParseFnText): void;
setTypeParser(oid: string, format: 'text', parseFn: ParseFnText): Promise;
setTypeParser(oid: number, format: 'binary', parseFn: ParseFnBinary): void;
setTypeParser(oid: string, format: 'binary', parseFn: ParseFnBinary): Promise;
parseComposite: typeof parseComposite;
parseArray: typeof parseArray;
}) => undefined | TypeOverridesMap | TypeOverridesObject | Promise;
export type TypeOverridesMap = {
forEach(callbackfn: (value: ParseFnText | [number | PgDataTypeID, ParseFnText], key: number | PgDataTypeID) => void): void;
};
export type TypeOverridesObject = {
[key in number | PgDataTypeID]?: ParseFnText;
};
export interface TypeOverridesConfig {
bigIntMode: 'string' | 'number' | 'bigint';
overrides?: TypeOverridesFunction | TypeOverridesMap | TypeOverridesObject;
}
export default class TypeOverrides {
private readonly _overrides;
private readonly _complexOverrides;
constructor(config: TypeOverridesConfig);
prepareOverrides(resolveTypeID: (typeName: string) => Promise): Promise;
setTypeParser(oid: number, parseFn: ParseFnText): void;
setTypeParser(oid: number, format: 'text', parseFn: ParseFnText): void;
setTypeParser(oid: number, format: 'binary', parseFn: ParseFnBinary): void;
getTypeParser(oid: number, format?: 'text'): ParseFnText;
getTypeParser(oid: number, format: 'binary'): ParseFnBinary;
getTypeParser(oid: number, format: 'text' | 'binary' | undefined): ParseFnText | ParseFnBinary;
}
/**
* Parse a composite value and get a tuple of strings where
* each string represents one attribute.
*
* @param value The raw string.
*/
export declare function parseComposite(value: string): string[];
export declare function parseArray(value: string, entryParser: (entry: string | null) => T): T[];
export declare function parseArray(value: string): (string | null)[];
export declare function getTypeResolver(client: PgClient): (typeName: string) => Promise;