import Database from 'better-sqlite3';
import { BaseService } from '../core/BaseService';
/**
 * 数据传输格式
 */
export interface DataTransferFormat {
    /**
     * 表名
     */
    tableName: string;
    /**
     * 数据条目
     */
    records: Record<string, any>[];
    /**
     * 元数据
     */
    metadata?: {
        /**
         * 导出时间
         */
        exportTime: number;
        /**
         * 导出版本
         */
        version?: string;
        /**
         * 表结构
         */
        schema?: any;
        /**
         * 其他自定义元数据
         */
        [key: string]: any;
    };
}
/**
 * 数据传输工具
 */
export declare class DataTransferUtil {
    /**
     * 导出表数据到JSON文件
     * @param service 数据服务
     * @param filePath 导出文件路径
     * @param options 导出选项
     * @returns 导出的数据条数
     */
    static exportToJson<T extends object>(service: BaseService<T>, filePath: string, options?: {
        where?: {
            [key: string]: any;
        };
        orderBy?: string;
        metadata?: Record<string, any>;
    }): number;
    /**
     * 从JSON文件导入数据到表
     * @param service 数据服务
     * @param filePath 导入文件路径
     * @param options 导入选项
     * @returns 导入的数据条数
     */
    static importFromJson<T extends object>(service: BaseService<T>, filePath: string, options?: {
        /**
         * 导入前清空表
         */
        clearTable?: boolean;
        /**
         * 检查表名是否匹配
         */
        checkTableName?: boolean;
        /**
         * 数据转换函数
         */
        transform?: (record: Record<string, any>) => Partial<T>;
    }): number;
    /**
     * 导出查询结果到CSV文件
     * @param db 数据库实例
     * @param query SQL查询语句
     * @param filePath 导出文件路径
     * @param params 查询参数
     * @returns 导出的数据条数
     */
    static exportQueryToCsv(db: Database.Database, query: string, filePath: string, params?: any[]): number;
    /**
     * 从一个数据库复制表数据到另一个数据库
     * @param sourceDb 源数据库实例
     * @param targetDb 目标数据库实例
     * @param tableName 表名
     * @param options 复制选项
     * @returns 复制的数据条数
     */
    static copyTableData(sourceDb: Database.Database, targetDb: Database.Database, tableName: string, options?: {
        where?: string;
        params?: any[];
        batchSize?: number;
    }): number;
}
