import type { AnyColumn } from "./column.js"; import type { Logger } from "./logger.js"; import { Param, SQL, View } from "./sql/sql.js"; import { Table } from "./table.js"; export declare function haveSameKeys(left: Record, right: Record): boolean; export type UpdateSet = Record; export type OneOrMany = T | T[]; export type Update = { [K in Exclude]: T[K]; } & TUpdate; export type Simplify = { [K in keyof T]: T[K]; } & {}; export type SimplifyMappedType = [T] extends [unknown] ? T : never; export type ShallowRecord = SimplifyMappedType<{ [P in K]: T; }>; export type Assume = T extends U ? T : U; export type Equal = (() => T extends X ? 1 : 2) extends (() => T extends Y ? 1 : 2) ? true : false; export interface DrizzleTypeError { $drizzleTypeError: T; } export type ValueOrArray = T | T[]; export type Or = T1 extends true ? true : T2 extends true ? true : false; export type IfThenElse = If extends true ? Then : Else; export type PromiseOf = T extends Promise ? U : T; export type Writable = { -readonly [P in keyof T]: T[P]; }; export declare function getTableColumns(table: T): T['_']['columns']; export declare function getViewSelectedFields(view: T): T['_']['selectedFields']; export type ColumnsWithTable[]> = { [Key in keyof TColumns]: AnyColumn<{ tableName: TForeignTableName; }>; }; export type Casing = 'snake_case' | 'camelCase'; export interface DrizzleConfig = Record> { logger?: boolean | Logger; schema?: TSchema; casing?: Casing; } export type ValidateShape = T extends ValidShape ? Exclude extends never ? TResult : DrizzleTypeError<`Invalid key(s): ${Exclude<(keyof T) & (string | number | bigint | boolean | null | undefined), keyof ValidShape>}`> : never; export type KnownKeysOnly = { [K in keyof T]: K extends keyof U ? T[K] : never; }; export type IsAny = 0 extends (1 & T) ? true : false; export type IfNotImported = unknown extends T ? Y : N; export type ImportTypeError = `Please install \`${TPackageName}\` to allow Drizzle ORM to connect to the database`; export type RequireAtLeastOne = Keys extends any ? Required> & Partial> : never; export declare function isConfig(data: any): boolean; export type NeonAuthToken = string | (() => string | Promise);