import { AnyPgColumn } from './columns'; import { AnyPgTable } from './table'; export declare type UpdateDeleteAction = 'cascade' | 'restrict' | 'no action' | 'set null' | 'set default'; export declare type Reference = () => { readonly columns: AnyPgColumn[]; readonly foreignTable: AnyPgTable; readonly foreignColumns: AnyPgColumn[]; }; export declare class ForeignKeyBuilder { protected $brand: 'PgForeignKeyBuilder'; constructor(config: () => { columns: AnyPgColumn[]; foreignColumns: AnyPgColumn[]; }, actions?: { onUpdate?: UpdateDeleteAction; onDelete?: UpdateDeleteAction; } | undefined); onUpdate(action: UpdateDeleteAction): this; onDelete(action: UpdateDeleteAction): this; } export declare type AnyForeignKeyBuilder = ForeignKeyBuilder; export declare class ForeignKey { readonly table: AnyPgTable; readonly reference: Reference; readonly onUpdate: UpdateDeleteAction | undefined; readonly onDelete: UpdateDeleteAction | undefined; constructor(table: AnyPgTable, builder: ForeignKeyBuilder); getName(): string; } declare type ColumnsWithTable = { [Key in keyof TColumns]: AnyPgColumn<{ tableName: TTableName; }>; }; export declare type GetColumnsTable = (TColumns extends AnyPgColumn ? TColumns : TColumns extends AnyPgColumn[] ? TColumns[number] : never) extends AnyPgColumn<{ tableName: infer TTableName extends string; }> ? TTableName : never; export declare function foreignKey, ...AnyPgColumn<{ tableName: TTableName; }>[]]>(config: { columns: TColumns; foreignColumns: ColumnsWithTable; }): ForeignKeyBuilder; export {}; //# sourceMappingURL=foreign-keys.d.ts.map