interface JournalEntry { idx: number; version: string; when: number; tag: string; breakpoints: boolean; } interface Journal { version: string; dialect: string; entries: JournalEntry[]; } type SqliteColumnType = "text" | "integer" | "real" | "blob" | "numeric"; interface ColumnDefinition { name: string; type: SqliteColumnType | string; primaryKey: boolean; notNull: boolean; autoincrement: boolean; default?: string | number | boolean | null; } interface IndexDefinition { name: string; columns: string[]; isUnique: boolean; } interface ForeignKeyDefinition { name: string; tableFrom: string; tableTo: string; columnsFrom: string[]; columnsTo: string[]; onDelete?: "cascade" | "set null" | "set default" | "restrict" | "no action"; onUpdate?: "cascade" | "set null" | "set default" | "restrict" | "no action"; } interface CompositePrimaryKeyDefinition { name: string; columns: string[]; } interface UniqueConstraintDefinition { name: string; columns: string[]; } interface CheckConstraintDefinition { name: string; value: string; } interface TableDefinition { name: string; columns: Record; indexes: Record; foreignKeys: Record; compositePrimaryKeys: Record; uniqueConstraints: Record; checkConstraints: Record; } interface ViewDefinition { name: string; query: string; columns: Record; } interface EnumDefinition { name: string; values: string[]; } interface SnapshotMeta { schemas: Record; tables: Record; columns: Record; } interface SnapshotInternal { indexes: Record; } interface Snapshot { version: string; dialect: string; id: string; prevId: string; tables: Record; views: Record; enums: Record; _meta: SnapshotMeta; internal: SnapshotInternal; } export type { CheckConstraintDefinition, ColumnDefinition, CompositePrimaryKeyDefinition, EnumDefinition, ForeignKeyDefinition, IndexDefinition, Journal, JournalEntry, Snapshot, SnapshotInternal, SnapshotMeta, SqliteColumnType, TableDefinition, UniqueConstraintDefinition, ViewDefinition };