import * as __sql_sql_ts0 from "../sql/sql.cjs";
import { SQLChunk } from "../sql/sql.cjs";
import { PartialWithUndefined } from "../utils.cjs";
import { CastArrayCodec, CastCodec, Codecs, NormalizeArrayCodec, NormalizeCodec } from "../codecs.cjs";

//#region src/pg-core/codecs.d.ts
type PostGISType = 'geometry(point)' | 'geometry(pointz)' | 'geometry(pointm)' | 'geometry(pointzm)' | 'geometry(linestring)' | 'geometry(linestringz)' | 'geometry(linestringm)' | 'geometry(linestringzm)' | 'geometry(polygon)' | 'geometry(polygonz)' | 'geometry(polygonm)' | 'geometry(polygonzm)' | 'geometry(multipoint)' | 'geometry(multipointz)' | 'geometry(multipointm)' | 'geometry(multipointzm)' | 'geometry(multilinestring)' | 'geometry(multilinestringz)' | 'geometry(multilinestringm)' | 'geometry(multilinestringzm)' | 'geometry(multipolygon)' | 'geometry(multipolygonz)' | 'geometry(multipolygonm)' | 'geometry(multipolygonzm)' | 'geometry(geometrycollection)' | 'geometry(geometrycollectionz)' | 'geometry(geometrycollectionm)' | 'geometry(geometrycollectionzm)' | 'geometry(circularstring)' | 'geometry(circularstringz)' | 'geometry(circularstringm)' | 'geometry(circularstringzm)' | 'geometry(compoundcurve)' | 'geometry(compoundcurvez)' | 'geometry(compoundcurvem)' | 'geometry(compoundcurvezm)' | 'geometry(curvepolygon)' | 'geometry(curvepolygonz)' | 'geometry(curvepolygonm)' | 'geometry(curvepolygonzm)' | 'geometry(multicurve)' | 'geometry(multicurvez)' | 'geometry(multicurvem)' | 'geometry(multicurvezm)' | 'geometry(multisurface)' | 'geometry(multisurfacez)' | 'geometry(multisurfacem)' | 'geometry(multisurfacezm)' | 'geometry(polyhedralsurface)' | 'geometry(polyhedralsurfacez)' | 'geometry(polyhedralsurfacem)' | 'geometry(polyhedralsurfacezm)' | 'geometry(tin)' | 'geometry(tinz)' | 'geometry(tinm)' | 'geometry(tinzm)' | 'geometry(triangle)' | 'geometry(trianglez)' | 'geometry(trianglem)' | 'geometry(trianglezm)' | 'geography(point)' | 'geography(linestring)' | 'geography(polygon)' | 'geography(multipoint)' | 'geography(multilinestring)' | 'geography(multipolygon)' | 'geography(geometrycollection)' | 'box2d' | 'box3d' | 'raster';
type PostgresType = 'smallint' | 'int' | 'bigint' | 'bigint:number' | 'bigint:string' | 'numeric' | 'numeric:number' | 'numeric:bigint' | 'float4' | 'float8' | 'money' | 'smallserial' | 'serial' | 'bigserial' | 'bigserial:number' | 'char' | 'varchar' | 'text' | 'bytea' | 'date' | 'date:string' | 'time' | 'timetz' | 'timestamp' | 'timestamptz' | 'timestamp:string' | 'timestamptz:string' | 'interval' | 'interval:tuple' | 'bool' | 'enum' | 'point' | 'point:tuple' | 'line' | 'line:tuple' | 'lseg' | 'box' | 'path' | 'polygon' | 'circle' | 'cidr' | 'inet' | 'macaddr' | 'macaddr8' | 'bit' | 'varbit' | 'tsvector' | 'tsquery' | 'uuid' | 'xml' | 'json' | 'jsonb' | 'int4range' | 'int8range' | 'numrange' | 'tsrange' | 'tstzrange' | 'daterange' | 'int4multirange' | 'int8multirange' | 'nummultirange' | 'tsmultirange' | 'tstzmultirange' | 'datemultirange' | 'oid' | 'regproc' | 'regprocedure' | 'regoper' | 'regoperator' | 'regclass' | 'regtype' | 'regrole' | 'regnamespace' | 'regconfig' | 'regdictionary' | PostGISType | `${PostGISType}:tuple` | 'halfvec' | 'sparsevec' | 'vector';
type PostgresAliasType = 'int2' | 'integer' | 'int4' | 'int8' | 'decimal' | 'real' | 'double' | 'double precision' | 'serial2' | 'serial4' | 'serial8' | 'character' | 'character varying' | 'time with time zone' | 'time without time zone' | 'timestamp with time zone' | 'timestamp without time zone' | 'boolean' | 'bit varying';
type PostgresColumnType = PostgresType | PostgresAliasType;
declare function resolvePgTypeAlias(type: string): string;
declare const unionsTypeTable: {
  readonly smallint: {
    readonly smallint: "smallint";
    readonly int: "int";
    readonly bigint: "bigint:number";
    readonly 'bigint:number': "bigint:number";
    readonly 'bigint:string': "bigint:number";
    readonly numeric: "numeric:number";
    readonly 'numeric:number': "numeric:number";
    readonly 'numeric:bigint': "numeric:number";
    readonly float4: "float4";
    readonly float8: "float8";
    readonly smallserial: "smallint";
    readonly serial: "int";
    readonly bigserial: "bigint:number";
    readonly 'bigserial:number': "bigint:number";
    readonly oid: "oid";
    readonly regproc: "regproc";
    readonly regprocedure: "regprocedure";
    readonly regoper: "regoper";
    readonly regoperator: "regoperator";
    readonly regclass: "regclass";
    readonly regtype: "regtype";
    readonly regrole: "regrole";
    readonly regnamespace: "regnamespace";
    readonly regconfig: "regconfig";
    readonly regdictionary: "regdictionary";
  };
  readonly int: {
    readonly smallint: "int";
    readonly int: "int";
    readonly bigint: "bigint:number";
    readonly 'bigint:number': "bigint:number";
    readonly 'bigint:string': "bigint:number";
    readonly numeric: "numeric:number";
    readonly 'numeric:number': "numeric:number";
    readonly 'numeric:bigint': "numeric:number";
    readonly float4: "float4";
    readonly float8: "float8";
    readonly smallserial: "int";
    readonly serial: "int";
    readonly bigserial: "bigint:number";
    readonly 'bigserial:number': "bigint:number";
    readonly oid: "oid";
    readonly regproc: "regproc";
    readonly regprocedure: "regprocedure";
    readonly regoper: "regoper";
    readonly regoperator: "regoperator";
    readonly regclass: "regclass";
    readonly regtype: "regtype";
    readonly regrole: "regrole";
    readonly regnamespace: "regnamespace";
    readonly regconfig: "regconfig";
    readonly regdictionary: "regdictionary";
  };
  readonly bigint: {
    readonly smallint: "bigint";
    readonly int: "bigint";
    readonly bigint: "bigint";
    readonly 'bigint:number': "bigint";
    readonly 'bigint:string': "bigint";
    readonly numeric: "numeric:bigint";
    readonly 'numeric:number': "numeric:bigint";
    readonly 'numeric:bigint': "numeric:bigint";
    readonly float4: "float4";
    readonly float8: "float8";
    readonly smallserial: "bigint";
    readonly serial: "bigint";
    readonly bigserial: "bigint";
    readonly 'bigserial:number': "bigint";
    readonly oid: "oid";
    readonly regproc: "regproc";
    readonly regprocedure: "regprocedure";
    readonly regoper: "regoper";
    readonly regoperator: "regoperator";
    readonly regclass: "regclass";
    readonly regtype: "regtype";
    readonly regrole: "regrole";
    readonly regnamespace: "regnamespace";
    readonly regconfig: "regconfig";
    readonly regdictionary: "regdictionary";
  };
  readonly 'bigint:number': {
    readonly smallint: "bigint:number";
    readonly int: "bigint:number";
    readonly bigint: "bigint:number";
    readonly 'bigint:number': "bigint:number";
    readonly 'bigint:string': "bigint:number";
    readonly numeric: "numeric:number";
    readonly 'numeric:number': "numeric:number";
    readonly 'numeric:bigint': "numeric:number";
    readonly float4: "float4";
    readonly float8: "float8";
    readonly smallserial: "bigint:number";
    readonly serial: "bigint:number";
    readonly bigserial: "bigint:number";
    readonly 'bigserial:number': "bigint:number";
    readonly oid: "oid";
    readonly regproc: "regproc";
    readonly regprocedure: "regprocedure";
    readonly regoper: "regoper";
    readonly regoperator: "regoperator";
    readonly regclass: "regclass";
    readonly regtype: "regtype";
    readonly regrole: "regrole";
    readonly regnamespace: "regnamespace";
    readonly regconfig: "regconfig";
    readonly regdictionary: "regdictionary";
  };
  readonly 'bigint:string': {
    readonly smallint: "bigint:string";
    readonly int: "bigint:string";
    readonly bigint: "bigint:string";
    readonly 'bigint:number': "bigint:string";
    readonly 'bigint:string': "bigint:string";
    readonly numeric: "numeric";
    readonly 'numeric:number': "numeric";
    readonly 'numeric:bigint': "numeric";
    readonly float4: "float4";
    readonly float8: "float8";
    readonly smallserial: "bigint:string";
    readonly serial: "bigint:string";
    readonly bigserial: "bigint:string";
    readonly 'bigserial:number': "bigint:string";
    readonly oid: "oid";
    readonly regproc: "regproc";
    readonly regprocedure: "regprocedure";
    readonly regoper: "regoper";
    readonly regoperator: "regoperator";
    readonly regclass: "regclass";
    readonly regtype: "regtype";
    readonly regrole: "regrole";
    readonly regnamespace: "regnamespace";
    readonly regconfig: "regconfig";
    readonly regdictionary: "regdictionary";
  };
  readonly numeric: {
    readonly smallint: "numeric";
    readonly int: "numeric";
    readonly bigint: "numeric";
    readonly 'bigint:number': "numeric";
    readonly 'bigint:string': "numeric";
    readonly numeric: "numeric";
    readonly 'numeric:number': "numeric";
    readonly 'numeric:bigint': "numeric";
    readonly float4: "float4";
    readonly float8: "float8";
    readonly smallserial: "numeric";
    readonly serial: "numeric";
    readonly bigserial: "numeric";
    readonly 'bigserial:number': "numeric";
  };
  readonly 'numeric:number': {
    readonly smallint: "numeric:number";
    readonly int: "numeric:number";
    readonly bigint: "numeric:number";
    readonly 'bigint:number': "numeric:number";
    readonly 'bigint:string': "numeric:number";
    readonly numeric: "numeric:number";
    readonly 'numeric:number': "numeric:number";
    readonly 'numeric:bigint': "numeric:number";
    readonly float4: "float4";
    readonly float8: "float8";
    readonly smallserial: "numeric:number";
    readonly serial: "numeric:number";
    readonly bigserial: "numeric:number";
    readonly 'bigserial:number': "numeric:number";
  };
  readonly 'numeric:bigint': {
    readonly smallint: "numeric:bigint";
    readonly int: "numeric:bigint";
    readonly bigint: "numeric:bigint";
    readonly 'bigint:number': "numeric:bigint";
    readonly 'bigint:string': "numeric:bigint";
    readonly numeric: "numeric:bigint";
    readonly 'numeric:number': "numeric:bigint";
    readonly 'numeric:bigint': "numeric:bigint";
    readonly float4: "float4";
    readonly float8: "float8";
    readonly smallserial: "numeric:bigint";
    readonly serial: "numeric:bigint";
    readonly bigserial: "numeric:bigint";
    readonly 'bigserial:number': "numeric:bigint";
  };
  readonly float4: {
    readonly smallint: "float4";
    readonly int: "float4";
    readonly bigint: "float4";
    readonly 'bigint:number': "float4";
    readonly 'bigint:string': "float4";
    readonly numeric: "float4";
    readonly 'numeric:number': "float4";
    readonly 'numeric:bigint': "float4";
    readonly float4: "float4";
    readonly float8: "float8";
    readonly smallserial: "float4";
    readonly serial: "float4";
    readonly bigserial: "float4";
    readonly 'bigserial:number': "float4";
  };
  readonly float8: {
    readonly smallint: "float8";
    readonly int: "float8";
    readonly bigint: "float8";
    readonly 'bigint:number': "float8";
    readonly 'bigint:string': "float8";
    readonly numeric: "float8";
    readonly 'numeric:number': "float8";
    readonly 'numeric:bigint': "float8";
    readonly float4: "float8";
    readonly float8: "float8";
    readonly smallserial: "float8";
    readonly serial: "float8";
    readonly bigserial: "float8";
    readonly 'bigserial:number': "float8";
  };
  readonly money: {
    readonly money: "money";
  };
  readonly smallserial: {
    readonly smallint: "smallint";
    readonly int: "int";
    readonly bigint: "bigint:number";
    readonly 'bigint:number': "bigint:number";
    readonly 'bigint:string': "bigint:number";
    readonly numeric: "numeric:number";
    readonly 'numeric:number': "numeric:number";
    readonly 'numeric:bigint': "numeric:number";
    readonly float4: "float4";
    readonly float8: "float8";
    readonly smallserial: "smallint";
    readonly serial: "int";
    readonly bigserial: "bigint:number";
    readonly 'bigserial:number': "bigint:number";
    readonly oid: "oid";
    readonly regproc: "regproc";
    readonly regprocedure: "regprocedure";
    readonly regoper: "regoper";
    readonly regoperator: "regoperator";
    readonly regclass: "regclass";
    readonly regtype: "regtype";
    readonly regrole: "regrole";
    readonly regnamespace: "regnamespace";
    readonly regconfig: "regconfig";
    readonly regdictionary: "regdictionary";
  };
  readonly serial: {
    readonly smallint: "int";
    readonly int: "int";
    readonly bigint: "bigint:number";
    readonly 'bigint:number': "bigint:number";
    readonly 'bigint:string': "bigint:number";
    readonly numeric: "numeric:number";
    readonly 'numeric:number': "numeric:number";
    readonly 'numeric:bigint': "numeric:number";
    readonly float4: "float4";
    readonly float8: "float8";
    readonly smallserial: "int";
    readonly serial: "int";
    readonly bigserial: "bigint:number";
    readonly 'bigserial:number': "bigint:number";
    readonly oid: "oid";
    readonly regproc: "regproc";
    readonly regprocedure: "regprocedure";
    readonly regoper: "regoper";
    readonly regoperator: "regoperator";
    readonly regclass: "regclass";
    readonly regtype: "regtype";
    readonly regrole: "regrole";
    readonly regnamespace: "regnamespace";
    readonly regconfig: "regconfig";
    readonly regdictionary: "regdictionary";
  };
  readonly bigserial: {
    readonly smallint: "bigint";
    readonly int: "bigint";
    readonly bigint: "bigint";
    readonly 'bigint:number': "bigint";
    readonly 'bigint:string': "bigint";
    readonly numeric: "numeric:bigint";
    readonly 'numeric:number': "numeric:bigint";
    readonly 'numeric:bigint': "numeric:bigint";
    readonly float4: "float4";
    readonly float8: "float8";
    readonly smallserial: "bigint";
    readonly serial: "bigint";
    readonly bigserial: "bigint";
    readonly 'bigserial:number': "bigint";
    readonly oid: "oid";
    readonly regproc: "regproc";
    readonly regprocedure: "regprocedure";
    readonly regoper: "regoper";
    readonly regoperator: "regoperator";
    readonly regclass: "regclass";
    readonly regtype: "regtype";
    readonly regrole: "regrole";
    readonly regnamespace: "regnamespace";
    readonly regconfig: "regconfig";
    readonly regdictionary: "regdictionary";
  };
  readonly 'bigserial:number': {
    readonly smallint: "bigint:number";
    readonly int: "bigint:number";
    readonly bigint: "bigint:number";
    readonly 'bigint:number': "bigint:number";
    readonly 'bigint:string': "bigint:number";
    readonly numeric: "numeric:number";
    readonly 'numeric:number': "numeric:number";
    readonly 'numeric:bigint': "numeric:number";
    readonly float4: "float4";
    readonly float8: "float8";
    readonly smallserial: "bigint:number";
    readonly serial: "bigint:number";
    readonly bigserial: "bigint:number";
    readonly 'bigserial:number': "bigint:number";
    readonly oid: "oid";
    readonly regproc: "regproc";
    readonly regprocedure: "regprocedure";
    readonly regoper: "regoper";
    readonly regoperator: "regoperator";
    readonly regclass: "regclass";
    readonly regtype: "regtype";
    readonly regrole: "regrole";
    readonly regnamespace: "regnamespace";
    readonly regconfig: "regconfig";
    readonly regdictionary: "regdictionary";
  };
  readonly char: {
    readonly char: "char";
    readonly varchar: "char";
    readonly text: "char";
  };
  readonly varchar: {
    readonly char: "varchar";
    readonly varchar: "varchar";
    readonly text: "varchar";
  };
  readonly text: {
    readonly char: "text";
    readonly varchar: "text";
    readonly text: "text";
  };
  readonly bytea: {
    readonly bytea: "bytea";
  };
  readonly date: {
    readonly date: "date";
    readonly 'date:string': "date";
    readonly timestamp: "timestamp";
    readonly 'timestamp:string': "timestamp";
    readonly timestamptz: "timestamptz";
    readonly 'timestamptz:string': "timestamptz";
  };
  readonly 'date:string': {
    readonly date: "date:string";
    readonly 'date:string': "date:string";
    readonly timestamp: "timestamp:string";
    readonly 'timestamp:string': "timestamp:string";
    readonly timestamptz: "timestamptz:string";
    readonly 'timestamptz:string': "timestamptz:string";
  };
  readonly time: {
    readonly time: "time";
    readonly timetz: "timetz";
  };
  readonly timetz: {
    readonly time: "timetz";
    readonly timetz: "timetz";
  };
  readonly timestamp: {
    readonly date: "timestamp";
    readonly 'date:string': "timestamp";
    readonly timestamp: "timestamp";
    readonly 'timestamp:string': "timestamp";
    readonly timestamptz: "timestamptz";
    readonly 'timestamptz:string': "timestamptz";
  };
  readonly 'timestamp:string': {
    readonly date: "timestamp:string";
    readonly 'date:string': "timestamp:string";
    readonly timestamp: "timestamp:string";
    readonly 'timestamp:string': "timestamp:string";
    readonly timestamptz: "timestamptz:string";
    readonly 'timestamptz:string': "timestamptz:string";
  };
  readonly timestamptz: {
    readonly date: "timestamptz";
    readonly 'date:string': "timestamptz";
    readonly timestamp: "timestamptz";
    readonly 'timestamp:string': "timestamptz";
    readonly timestamptz: "timestamptz";
    readonly 'timestamptz:string': "timestamptz";
  };
  readonly 'timestamptz:string': {
    readonly date: "timestamptz:string";
    readonly 'date:string': "timestamptz:string";
    readonly timestamp: "timestamptz:string";
    readonly 'timestamp:string': "timestamptz:string";
    readonly timestamptz: "timestamptz:string";
    readonly 'timestamptz:string': "timestamptz:string";
  };
  readonly interval: {
    readonly interval: "interval";
    readonly 'interval:tuple': "interval";
  };
  readonly 'interval:tuple': {
    readonly interval: "interval:tuple";
    readonly 'interval:tuple': "interval:tuple";
  };
  readonly bool: {
    readonly bool: "bool";
  };
  readonly enum: {
    readonly enum: "enum";
  };
  readonly point: {
    readonly point: "point";
    readonly 'point:tuple': "point";
  };
  readonly 'point:tuple': {
    readonly point: "point:tuple";
    readonly 'point:tuple': "point:tuple";
  };
  readonly line: {
    readonly line: "line";
    readonly 'line:tuple': "line";
  };
  readonly 'line:tuple': {
    readonly line: "line:tuple";
    readonly 'line:tuple': "line:tuple";
  };
  readonly lseg: {
    readonly lseg: "lseg";
  };
  readonly box: {
    readonly box: "box";
  };
  readonly path: {
    readonly path: "path";
  };
  readonly polygon: {
    readonly polygon: "polygon";
  };
  readonly circle: {
    readonly circle: "circle";
  };
  readonly cidr: {
    readonly cidr: "cidr";
    readonly inet: "inet";
  };
  readonly inet: {
    readonly cidr: "inet";
    readonly inet: "inet";
  };
  readonly macaddr: {
    readonly macaddr: "macaddr";
    readonly macaddr8: "macaddr";
  };
  readonly macaddr8: {
    readonly macaddr: "macaddr8";
    readonly macaddr8: "macaddr8";
  };
  readonly bit: {
    readonly bit: "bit";
    readonly varbit: "bit";
  };
  readonly varbit: {
    readonly bit: "varbit";
    readonly varbit: "varbit";
  };
  readonly tsvector: {
    readonly tsvector: "tsvector";
  };
  readonly tsquery: {
    readonly tsquery: "tsquery";
  };
  readonly uuid: {
    readonly uuid: "uuid";
  };
  readonly xml: {
    readonly xml: "xml";
  };
  readonly json: {
    readonly json: "json";
  };
  readonly jsonb: {
    readonly jsonb: "jsonb";
  };
  readonly int4range: {
    readonly int4range: "int4range";
  };
  readonly int8range: {
    readonly int8range: "int8range";
  };
  readonly numrange: {
    readonly numrange: "numrange";
  };
  readonly tsrange: {
    readonly tsrange: "tsrange";
  };
  readonly tstzrange: {
    readonly tstzrange: "tstzrange";
  };
  readonly daterange: {
    readonly daterange: "daterange";
  };
  readonly int4multirange: {
    readonly int4multirange: "int4multirange";
  };
  readonly int8multirange: {
    readonly int8multirange: "int8multirange";
  };
  readonly nummultirange: {
    readonly nummultirange: "nummultirange";
  };
  readonly tsmultirange: {
    readonly tsmultirange: "tsmultirange";
  };
  readonly tstzmultirange: {
    readonly tstzmultirange: "tstzmultirange";
  };
  readonly datemultirange: {
    readonly datemultirange: "datemultirange";
  };
  readonly oid: {
    readonly smallint: "oid";
    readonly int: "oid";
    readonly bigint: "oid";
    readonly 'bigint:number': "oid";
    readonly 'bigint:string': "oid";
    readonly smallserial: "oid";
    readonly serial: "oid";
    readonly bigserial: "oid";
    readonly 'bigserial:number': "oid";
    readonly oid: "oid";
    readonly regproc: "oid";
    readonly regprocedure: "oid";
    readonly regoper: "oid";
    readonly regoperator: "oid";
    readonly regclass: "oid";
    readonly regtype: "oid";
    readonly regrole: "oid";
    readonly regnamespace: "oid";
    readonly regconfig: "oid";
    readonly regdictionary: "oid";
  };
  readonly regproc: {
    readonly smallint: "regproc";
    readonly int: "regproc";
    readonly bigint: "regproc";
    readonly 'bigint:number': "regproc";
    readonly 'bigint:string': "regproc";
    readonly smallserial: "regproc";
    readonly serial: "regproc";
    readonly bigserial: "regproc";
    readonly 'bigserial:number': "regproc";
    readonly oid: "regproc";
    readonly regproc: "regproc";
    readonly regprocedure: "regproc";
  };
  readonly regprocedure: {
    readonly smallint: "regprocedure";
    readonly int: "regprocedure";
    readonly bigint: "regprocedure";
    readonly 'bigint:number': "regprocedure";
    readonly 'bigint:string': "regprocedure";
    readonly smallserial: "regprocedure";
    readonly serial: "regprocedure";
    readonly bigserial: "regprocedure";
    readonly 'bigserial:number': "regprocedure";
    readonly oid: "regprocedure";
    readonly regproc: "regprocedure";
    readonly regprocedure: "regprocedure";
  };
  readonly regoper: {
    readonly smallint: "regoper";
    readonly int: "regoper";
    readonly bigint: "regoper";
    readonly 'bigint:number': "regoper";
    readonly 'bigint:string': "regoper";
    readonly smallserial: "regoper";
    readonly serial: "regoper";
    readonly bigserial: "regoper";
    readonly 'bigserial:number': "regoper";
    readonly oid: "regoper";
    readonly regoper: "regoper";
    readonly regoperator: "regoper";
  };
  readonly regoperator: {
    readonly smallint: "regoperator";
    readonly int: "regoperator";
    readonly bigint: "regoperator";
    readonly 'bigint:number': "regoperator";
    readonly 'bigint:string': "regoperator";
    readonly smallserial: "regoperator";
    readonly serial: "regoperator";
    readonly bigserial: "regoperator";
    readonly 'bigserial:number': "regoperator";
    readonly oid: "regoperator";
    readonly regoper: "regoperator";
    readonly regoperator: "regoperator";
  };
  readonly regclass: {
    readonly smallint: "regclass";
    readonly int: "regclass";
    readonly bigint: "regclass";
    readonly 'bigint:number': "regclass";
    readonly 'bigint:string': "regclass";
    readonly smallserial: "regclass";
    readonly serial: "regclass";
    readonly bigserial: "regclass";
    readonly 'bigserial:number': "regclass";
    readonly oid: "regclass";
    readonly regclass: "regclass";
  };
  readonly regtype: {
    readonly smallint: "regtype";
    readonly int: "regtype";
    readonly bigint: "regtype";
    readonly 'bigint:number': "regtype";
    readonly 'bigint:string': "regtype";
    readonly smallserial: "regtype";
    readonly serial: "regtype";
    readonly bigserial: "regtype";
    readonly 'bigserial:number': "regtype";
    readonly oid: "regtype";
    readonly regtype: "regtype";
  };
  readonly regrole: {
    readonly smallint: "regrole";
    readonly int: "regrole";
    readonly bigint: "regrole";
    readonly 'bigint:number': "regrole";
    readonly 'bigint:string': "regrole";
    readonly smallserial: "regrole";
    readonly serial: "regrole";
    readonly bigserial: "regrole";
    readonly 'bigserial:number': "regrole";
    readonly oid: "regrole";
    readonly regrole: "regrole";
  };
  readonly regnamespace: {
    readonly smallint: "regnamespace";
    readonly int: "regnamespace";
    readonly bigint: "regnamespace";
    readonly 'bigint:number': "regnamespace";
    readonly 'bigint:string': "regnamespace";
    readonly smallserial: "regnamespace";
    readonly serial: "regnamespace";
    readonly bigserial: "regnamespace";
    readonly 'bigserial:number': "regnamespace";
    readonly oid: "regnamespace";
    readonly regnamespace: "regnamespace";
  };
  readonly regconfig: {
    readonly smallint: "regconfig";
    readonly int: "regconfig";
    readonly bigint: "regconfig";
    readonly 'bigint:number': "regconfig";
    readonly 'bigint:string': "regconfig";
    readonly smallserial: "regconfig";
    readonly serial: "regconfig";
    readonly bigserial: "regconfig";
    readonly 'bigserial:number': "regconfig";
    readonly oid: "regconfig";
    readonly regconfig: "regconfig";
  };
  readonly regdictionary: {
    readonly smallint: "regdictionary";
    readonly int: "regdictionary";
    readonly bigint: "regdictionary";
    readonly 'bigint:number': "regdictionary";
    readonly 'bigint:string': "regdictionary";
    readonly smallserial: "regdictionary";
    readonly serial: "regdictionary";
    readonly bigserial: "regdictionary";
    readonly 'bigserial:number': "regdictionary";
    readonly oid: "regdictionary";
    readonly regdictionary: "regdictionary";
  };
};
type PgCodecs = Codecs<PostgresType>;
declare const castToText: CastCodec;
declare const castToTextArr: CastArrayCodec;
/** Used for cases when casting requires to unwrap and rebuild arrays
 *
 * @example
 * string_mtx::text[][] // can be casted to array directly
 *
 * encode(bytea_mtx, 'base64')[][] // invalid syntax, cast requires unwrapping and rebuilding array
 */
declare const arrayCompatCast: (cast: CastCodec) => (name: SQLChunk, arrayDimensions: number | undefined) => SQLChunk;
/** Used to recursively apply value normalizer to array of unknown dimensions */
declare const arrayCompatNormalize: (normalize: NormalizeCodec) => NormalizeArrayCodec;
/** Doesn't mutate original data - used for insertions */
declare const arrayCompatNormalizeInput: (normalize: NormalizeCodec, transformToPgArray?: boolean) => NormalizeArrayCodec;
declare const parsePgArrayAndNormalize: (normalize: NormalizeCodec, delim?: string) => NormalizeArrayCodec;
declare const parseGeometryArrayAndNormalize: (normalize: NormalizeCodec) => NormalizeArrayCodec;
declare const makeGeometryArray: NormalizeArrayCodec;
declare const makeBoxArray: NormalizeArrayCodec;
declare const parseLineTuple: (v: string) => [number, number, number];
declare const parseLineABC: (v: string) => {
  a: number;
  b: number;
  c: number;
};
declare const parsePointTuple: (v: string) => [number, number];
declare const parsePointXY: (v: string) => {
  x: number;
  y: number;
};
declare const parseGeometryTuple: (v: string) => [number, number];
declare const parseGeometryXY: (v: string) => {
  x: number;
  y: number;
};
declare const textToDate: (v: string) => Date;
declare const textToDateWithTz: (v: string) => Date;
declare const parsePgVector: (v: string) => number[];
declare const genericPgCodecs: {
  readonly bytea: {
    readonly castInJson: (name: SQLChunk) => __sql_sql_ts0.SQL<unknown>;
    readonly castArrayInJson: (name: SQLChunk, arrayDimensions: number | undefined) => SQLChunk;
    readonly normalizeInJson: (v: string) => Buffer<ArrayBuffer>;
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly bigint: {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: BigIntConstructor;
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly 'bigint:number': {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: NumberConstructor;
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly 'bigint:string': {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
  };
  readonly bigserial: {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: BigIntConstructor;
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly 'bigserial:number': {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: NumberConstructor;
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly date: {
    readonly normalizeInJson: (v: string) => Date;
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly 'date:string': {};
  readonly 'geometry(point)': {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: (v: string) => {
      x: number;
      y: number;
    };
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly 'geometry(point):tuple': {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: (v: string) => [number, number];
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly interval: {
    readonly castArrayInJson: CastArrayCodec;
  };
  readonly line: {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: (v: string) => {
      a: number;
      b: number;
      c: number;
    };
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly 'line:tuple': {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: (v: string) => [number, number, number];
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly numeric: {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
  };
  readonly 'numeric:number': {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: NumberConstructor;
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly 'numeric:bigint': {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: BigIntConstructor;
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly point: {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: (v: string) => {
      x: number;
      y: number;
    };
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly 'point:tuple': {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: (v: string) => [number, number];
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly timestamp: {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: (v: string) => Date;
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly timestamptz: {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
    readonly normalizeInJson: (v: string) => Date;
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly 'timestamp:string': {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
  };
  readonly 'timestamptz:string': {
    readonly castInJson: CastCodec;
    readonly castArrayInJson: CastArrayCodec;
  };
  readonly halfvec: {
    readonly normalizeInJson: (v: string) => number[];
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
  readonly vector: {
    readonly normalizeInJson: (v: string) => number[];
    readonly normalizeArrayInJson: NormalizeArrayCodec;
  };
};
declare const refineGenericPgCodecs: (extension?: PartialWithUndefined<PgCodecs>) => PgCodecs;
//#endregion
export { PgCodecs, PostGISType, PostgresAliasType, PostgresColumnType, PostgresType, arrayCompatCast, arrayCompatNormalize, arrayCompatNormalizeInput, castToText, castToTextArr, genericPgCodecs, makeBoxArray, makeGeometryArray, parseGeometryArrayAndNormalize, parseGeometryTuple, parseGeometryXY, parseLineABC, parseLineTuple, parsePgArrayAndNormalize, parsePgVector, parsePointTuple, parsePointXY, refineGenericPgCodecs, resolvePgTypeAlias, textToDate, textToDateWithTz, unionsTypeTable };
//# sourceMappingURL=codecs.d.cts.map