import { type SQL } from 'drizzle-orm'; import { type SQLWrapper } from 'drizzle-orm/sql/sql'; import { type ListValueWrapper, type ArrayValueWrapper, type MapValueWrapper, type BlobValueWrapper, type JsonValueWrapper, type TimestampValueWrapper } from './value-wrappers-core.ts'; export { coerceArrayString } from './array-literals.ts'; type IntColType = 'SMALLINT' | 'INTEGER' | 'BIGINT' | 'HUGEINT' | 'USMALLINT' | 'UINTEGER' | 'UBIGINT' | 'UHUGEINT' | 'INT' | 'INT16' | 'INT32' | 'INT64' | 'INT128' | 'LONG' | 'VARINT'; type FloatColType = 'FLOAT' | 'DOUBLE'; type StringColType = 'STRING' | 'VARCHAR' | 'TEXT'; type BoolColType = 'BOOLEAN' | 'BOOL'; type BlobColType = 'BLOB' | 'BYTEA' | 'VARBINARY'; type DateColType = 'DATE' | 'TIME' | 'TIME_NS' | 'TIMETZ' | 'TIMESTAMP' | 'DATETIME' | 'TIMESTAMPTZ' | 'TIMESTAMP_MS' | 'TIMESTAMP_NS' | 'TIMESTAMP_S'; type AnyColType = IntColType | FloatColType | StringColType | BoolColType | DateColType | BlobColType; type ListColType = `${AnyColType}[]`; type ArrayColType = `${AnyColType}[${number}]`; type StructColType = `STRUCT (${string})`; type Primitive = AnyColType | ListColType | ArrayColType | StructColType; /** * A DuckDB type name. Known names autocomplete, and any other DuckDB type * string (UUID, DECIMAL(10, 2), MAP(VARCHAR, INTEGER), ...) is accepted too. */ type DuckDbTypeName = TKnown | (string & {}); interface MapOptions { /** Object decoding is opt-in. Default output retains native entry arrays. */ mode?: 'entries' | 'object'; /** DuckDB key type for the MAP column. Defaults to STRING. */ keyType?: DuckDbTypeName; } export type ArrayPredicateValue = T[] | SQLWrapper; export declare function formatLiteral(value: unknown, typeHint?: string): string; export declare function buildListLiteral(values: unknown[], elementType?: string): SQL; export declare function normalizeArrayPredicateValue(values: ArrayPredicateValue, elementType?: string): SQL | SQLWrapper; export declare function buildStructLiteral(value: Record, schema?: Record>): SQL; export declare function buildMapLiteral(value: Record, valueType?: string): SQL; export declare const duckDbList: (name: string, elementType: DuckDbTypeName) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{ name: string; dataType: "custom"; columnType: "PgCustomColumn"; data: TData[]; driverParam: string | unknown[] | ListValueWrapper; enumValues: undefined; }>; export declare const duckDbArray: (name: string, elementType: DuckDbTypeName, fixedLength?: number) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{ name: string; dataType: "custom"; columnType: "PgCustomColumn"; data: TData[]; driverParam: string | unknown[] | ArrayValueWrapper; enumValues: undefined; }>; export declare const duckDbMap: >(name: string, valueType: DuckDbTypeName, options?: MapOptions) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{ name: string; dataType: "custom"; columnType: "PgCustomColumn"; data: TData; driverParam: MapValueWrapper | TData; enumValues: undefined; }>; export declare const duckDbStruct: >(name: string, schema: Record>) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{ name: string; dataType: "custom"; columnType: "PgCustomColumn"; data: TData; driverParam: TData; enumValues: undefined; }>; /** * JSON column type that wraps values and delays JSON.stringify() to binding time. * This ensures consistent handling with other wrapped types. * * Note: DuckDB stores JSON as VARCHAR internally, so the final binding * is always a stringified JSON value. */ export declare const duckDbJson: (name: string) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{ name: string; dataType: "custom"; columnType: "PgCustomColumn"; data: TData; driverParam: string | JsonValueWrapper | SQL; enumValues: undefined; }>; export declare const duckDbBlob: { (): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{ name: ""; dataType: "custom"; columnType: "PgCustomColumn"; data: Buffer; driverParam: string | BlobValueWrapper | Uint8Array; enumValues: undefined; }>; >(fieldConfig?: TConfig | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{ name: ""; dataType: "custom"; columnType: "PgCustomColumn"; data: Buffer; driverParam: string | BlobValueWrapper | Uint8Array; enumValues: undefined; }>; (dbName: TName, fieldConfig?: unknown): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{ name: TName; dataType: "custom"; columnType: "PgCustomColumn"; data: Buffer; driverParam: string | BlobValueWrapper | Uint8Array; enumValues: undefined; }>; }; export declare const duckDbInet: (name: string) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{ name: string; dataType: "custom"; columnType: "PgCustomColumn"; data: string; driverParam: string; enumValues: undefined; }>; interface IntervalParts { months: number | string; days: number | string; micros: bigint | number | string; } export declare const duckDbInterval: (name: string) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{ name: string; dataType: "custom"; columnType: "PgCustomColumn"; data: string; driverParam: string | IntervalParts; enumValues: undefined; }>; type TimestampMode = 'date' | 'string'; type DuckDbTimestampType = 'TIMESTAMP' | 'TIMESTAMPTZ' | 'TIMESTAMP_S' | 'TIMESTAMP_MS' | 'TIMESTAMP_NS'; type DuckDbTimeType = 'TIME' | 'TIMETZ' | 'TIME_NS'; interface TimestampOptions { withTimezone?: boolean; mode?: TimestampMode; precision?: number; bindMode?: 'auto' | 'bind' | 'literal'; duckDbType?: DuckDbTimestampType; } interface TimeOptions { withTimezone?: boolean; duckDbType?: DuckDbTimeType; } export declare const duckDbTimestamp: (name: string, options?: TimestampOptions & { mode?: TMode; }) => import("drizzle-orm").$Type; enumValues: undefined; }>, TMode extends "string" ? string : string | Date>; export declare const duckDbDate: (name: string) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{ name: string; dataType: "custom"; columnType: "PgCustomColumn"; data: string | Date; driverParam: string | Date; enumValues: undefined; }>; export declare const duckDbTime: (name: string, options?: TimeOptions) => import("drizzle-orm/pg-core").PgCustomColumnBuilder<{ name: string; dataType: "custom"; columnType: "PgCustomColumn"; data: string; driverParam: string | bigint; enumValues: undefined; }>; export declare function duckDbArrayContains(column: SQLWrapper, values: ArrayPredicateValue): SQL; export declare function duckDbArrayContained(column: SQLWrapper, values: ArrayPredicateValue): SQL; export declare function duckDbArrayOverlaps(column: SQLWrapper, values: ArrayPredicateValue): SQL;