export type MigrationStrategy = 'big-bang' | 'strangler-fig' | 'parallel-run';
export type MigrationRisk = 'low' | 'medium' | 'high' | 'critical';
export type EquivalenceStatus = 'exact' | 'partial' | 'manual' | 'none';
export type ComponentTemperature = 'hot' | 'warm' | 'cold';
export interface StackComponent {
    id: string;
    name: string;
    type: 'framework' | 'library' | 'database' | 'queue' | 'auth' | 'testing' | 'build' | 'lint' | 'format' | 'external-api';
    version?: string;
    language: string;
    description: string;
}
export interface ArchitecturalPattern {
    name: string;
    confidence: number;
    indicators: string[];
}
export interface EntryPoint {
    type: 'http' | 'cli' | 'worker' | 'cron' | 'event';
    name: string;
    path?: string;
    description: string;
}
export interface ExternalIntegration {
    name: string;
    type: 'database' | 'queue' | 'api' | 'storage' | 'email' | 'auth' | 'other';
    protocol?: string;
    critical: boolean;
}
export interface MigratableComponent {
    id: string;
    name: string;
    path: string;
    type: 'module' | 'service' | 'layer' | 'util' | 'handler';
    temperature: ComponentTemperature;
    cyclomaticComplexity: number;
    couplingScore: number;
    dependsOn: string[];
    dependents: string[];
    linesOfCode: number;
}
export interface ImplicitContract {
    component: string;
    type: 'error-format' | 'side-effect' | 'http-header' | 'behavior' | 'data-format';
    description: string;
    mustPreserve: boolean;
}
export interface StackAnalysisResult {
    language: string;
    framework: string;
    components: StackComponent[];
    architecturalPatterns: ArchitecturalPattern[];
    entryPoints: EntryPoint[];
    externalIntegrations: ExternalIntegration[];
    migratableComponents: MigratableComponent[];
    implicitContracts: ImplicitContract[];
    hasTests: boolean;
    testCoverage?: string;
    riskFlags: string[];
    analyzedAt: string;
}
export interface TechEquivalence {
    originLib: string;
    originStack: string;
    targetLib: string;
    targetStack: string;
    category: StackComponent['type'];
    status: EquivalenceStatus;
    differences: string[];
    notes?: string;
}
export interface EquivalenceMap {
    sourceStack: string;
    targetStack: string;
    equivalences: TechEquivalence[];
    unsupportedPairs: string[];
    generatedAt: string;
}
//# sourceMappingURL=analysis.d.ts.map