import { ColumnDefinition, ForeignIdColumnDefinition } from "./columnDefinition.ts"; type IndexKind = "index" | "unique" | "partial" | "uniquePartial" | "fullText" | "gin"; interface IndexDefinition { name?: string; columns: string[]; kind: IndexKind; where?: string; order?: "asc" | "desc"; } type BlueprintAction = "create" | "alter" | "drop"; declare class Blueprint { readonly table: string; readonly action: BlueprintAction; readonly columns: ColumnDefinition[]; readonly indexes: IndexDefinition[]; readonly droppedColumns: string[]; readonly droppedIndexes: string[]; constructor(table: string, action: BlueprintAction); id(name?: string): ColumnDefinition; string(name: string, length?: number): ColumnDefinition; text(name: string): ColumnDefinition; boolean(name: string): ColumnDefinition; integer(name: string): ColumnDefinition; bigInteger(name: string): ColumnDefinition; timestamp(name: string): ColumnDefinition; json(name: string): ColumnDefinition; jsonb(name: string): ColumnDefinition; foreignId(name: string): ForeignIdColumnDefinition; timestamps(): void; softDeletes(): void; dropColumn(name: string): void; dropSoftDeletes(): void; dropIndex(name: string): void; unique(columns: string | string[], name?: string): void; index(columns: string | string[], options?: { name?: string; order?: "asc" | "desc"; }): void; partialIndex(columns: string | string[], where: string, nameOrOptions?: string | { name?: string; unique?: boolean; }): void; fullText(columns: string | string[], name?: string): void; ginIndex(column: string, name?: string): void; } export type { BlueprintAction, IndexDefinition, IndexKind }; export { Blueprint };