export interface Migration {
    id: string;
    version: string;
    name: string;
    description?: string;
    type: MigrationType;
    status: MigrationStatus;
    createdAt: string;
    executedAt?: string;
    duration?: number;
    checksum: string;
    up: MigrationScript;
    down?: MigrationScript;
    dependencies?: string[];
    tags?: string[];
    author?: string;
}
export type MigrationType = 'schema' | 'data' | 'seed' | 'index' | 'procedure' | 'config';
export type MigrationStatus = 'pending' | 'running' | 'completed' | 'failed' | 'rolled_back' | 'skipped';
export interface MigrationScript {
    type: 'sql' | 'javascript' | 'typescript' | 'shell';
    content: string;
    transaction?: boolean;
    timeout?: number;
}
export interface MigrationPlan {
    migrations: Migration[];
    estimatedDuration: number;
    risks: MigrationRisk[];
    rollbackable: boolean;
    dependencies: DependencyGraph;
}
export interface MigrationRisk {
    migration: string;
    description: string;
    severity: 'low' | 'medium' | 'high';
    mitigation?: string;
}
export interface DependencyGraph {
    nodes: string[];
    edges: Array<[string, string]>;
}
export interface MigrationHistory {
    projectId: string;
    migrations: MigrationRecord[];
    currentVersion: string;
    lastMigration?: MigrationRecord;
}
export interface MigrationRecord {
    migrationId: string;
    version: string;
    name: string;
    status: MigrationStatus;
    executedAt: string;
    duration: number;
    error?: string;
    logs?: MigrationLog[];
}
export interface MigrationLog {
    timestamp: string;
    level: 'info' | 'warning' | 'error' | 'debug';
    message: string;
    details?: any;
}
export interface MigrationConfig {
    migrationsPath: string;
    database?: DatabaseConfig;
    apiEndpoint?: string;
    fileSystem?: FileSystemConfig;
    validation?: ValidationConfig;
    hooks?: MigrationHooks;
}
export interface DatabaseConfig {
    type: 'postgres' | 'mysql' | 'mongodb' | 'sqlite';
    connectionString?: string;
    host?: string;
    port?: number;
    database?: string;
    username?: string;
    password?: string;
    ssl?: boolean;
}
export interface FileSystemConfig {
    basePath: string;
    backupPath?: string;
    encoding?: string;
}
export interface ValidationConfig {
    checksumValidation: boolean;
    syntaxCheck: boolean;
    dryRun: boolean;
    requireRollback: boolean;
}
export interface MigrationHooks {
    beforeAll?: string;
    beforeEach?: string;
    afterEach?: string;
    afterAll?: string;
    onError?: string;
}
export interface MigrationTemplate {
    name: string;
    type: MigrationType;
    description: string;
    template: string;
    variables?: Record<string, string>;
}
export interface DataTransformation {
    source: string;
    target: string;
    transform: (data: any) => any;
    validation?: (data: any) => boolean;
    batchSize?: number;
}
export interface MigrationValidation {
    isValid: boolean;
    errors: string[];
    warnings: string[];
    suggestions: string[];
}
//# sourceMappingURL=types.d.ts.map