import { type HasConstraint, type HasData, internalConstraint, internalData } from './Internal.js'; import { type Sql } from './Sql.js'; import type { Field, FieldData } from './expr/Field.js'; export interface ConstraintData { name?: string; } export interface UniqueConstraintData extends ConstraintData { fields: Array; nullsNotDistinct?: boolean; } export declare class UniqueConstraint implements HasData, HasConstraint { private brand; [internalData]: UniqueConstraintData; constructor(data: UniqueConstraintData); on(...columns: Array>): UniqueConstraint; nullsNotDistinct(): UniqueConstraint; get [internalConstraint](): Sql; } export declare function unique(name?: string): UniqueConstraint; export interface PrimaryKeyConstraintData extends ConstraintData { fields: Array; } export declare class PrimaryKeyConstraint implements HasData, HasConstraint { data: PrimaryKeyConstraintData; private brand; [internalData]: PrimaryKeyConstraintData; constructor(data: PrimaryKeyConstraintData); get [internalConstraint](): Sql; } export declare function primaryKey(options: { name?: string; columns: Array>; }): PrimaryKeyConstraint; export declare function primaryKey(...fields: Array>): PrimaryKeyConstraint; export interface ForeignKeyConstraintData extends ConstraintData { fields: Array; references: Array; } export declare class ForeignKeyConstraint implements HasData, HasConstraint { private brand; [internalData]: ForeignKeyConstraintData; constructor(data: ForeignKeyConstraintData); references(...fields: Array>): ForeignKeyConstraint; get [internalConstraint](): Sql; } export declare function foreignKey(options: { name?: string; columns: Array>; }): ForeignKeyConstraint; export declare function foreignKey(...fields: Array>): ForeignKeyConstraint; export type Constraint = UniqueConstraint | PrimaryKeyConstraint | ForeignKeyConstraint;