import Database from 'better-sqlite3';
import { BaseEntity } from '../core/BaseEntity';
/**
 * 表结构差异
 */
export interface TableDiff {
    /**
     * 需要添加的列
     */
    addedColumns: string[];
    /**
     * 需要修改的列
     */
    alteredColumns: string[];
    /**
     * 需要删除的列
     */
    removedColumns: string[];
    /**
     * 是否需要重建表
     */
    needsRebuild: boolean;
}
/**
 * 迁移操作接口
 */
export interface MigrationOperation {
    /**
     * 执行迁移操作
     * @param db 数据库实例
     */
    up(db: Database.Database): void;
    /**
     * 回滚迁移操作
     * @param db 数据库实例
     */
    down(db: Database.Database): void;
}
/**
 * 数据库迁移工具
 */
export declare class MigrationUtil {
    /**
     * 检查模型与数据库表的差异
     * @param db 数据库实例
     * @param entityClass 实体类
     * @returns 表结构差异信息
     */
    static checkTableDiff(db: Database.Database, entityClass: typeof BaseEntity): Promise<TableDiff>;
    /**
     * 执行表迁移
     * @param db 数据库实例
     * @param entityClass 实体类
     * @param preserveData 是否保留数据
     * @returns 是否成功迁移
     */
    static migrateTable(db: Database.Database, entityClass: typeof BaseEntity, preserveData?: boolean): boolean;
    /**
     * 重建表（用于结构变更较大时）
     * @param db 数据库实例
     * @param entityClass 实体类
     * @returns 是否重建成功
     */
    static rebuildTable(db: Database.Database, entityClass: typeof BaseEntity): boolean;
}
