import type { CloudFormationResource, CloudFormationStack, Severity } from '../types/analysis.types'; export type StackCollection = Record; export interface ArchitectureNode { id: string; stackName: string; logicalId: string; type: string; displayName: string; resource: CloudFormationResource; publicEntry: boolean; sensitiveTarget: boolean; } export interface ArchitectureEdge { from: string; to: string; kind: 'explicit' | 'reference'; } export interface AttackPath { nodes: string[]; severity: Severity; explanation: string; } export interface ArchitectureGraph { nodes: ArchitectureNode[]; edges: ArchitectureEdge[]; attackPaths: AttackPath[]; } export type DeploymentChangeKind = 'added' | 'removed' | 'modified'; export interface DeploymentChange { id: string; stackName: string; logicalId: string; resourceType: string; kind: DeploymentChangeKind; severity: Severity; score: number; reasons: string[]; dependents: number; } export interface DeploymentPreview { generatedAt: string; beforeResourceCount: number; afterResourceCount: number; changes: DeploymentChange[]; riskScore: number; releaseRecommendation: 'GO' | 'REVIEW' | 'BLOCK'; summary: { added: number; removed: number; modified: number; critical: number; high: number; }; } export interface PlanAdvisorInput { resourceCount: number; stackCount: number; monthlyInfrastructureChanges: number; averageChangedResourceRatio: number; historyDays: number; modelAlias: string; creditMultiplier: number; } export interface PlanAdvisorResult { estimatedScansPerMonth: number; estimatedFreshResourceAnalyses: number; estimatedCreditsPerMonth: number; cacheReusePercent: number; recommendedPlan: 'free' | 'pro' | 'team' | 'custom'; includedCredits: number; headroomCredits: number; confidence: 'low' | 'medium' | 'high'; assumptions: string[]; } export type ReliabilitySimulationMode = 'az' | 'dependency' | 'quota' | 'region'; export interface ReliabilityFinding { mode: ReliabilitySimulationMode; resourceId: string; severity: Severity; title: string; impact: string; recommendation: string; } export interface ReliabilitySimulation { generatedAt: string; modes: ReliabilitySimulationMode[]; findings: ReliabilityFinding[]; readinessScore: number; summary: Record; } export interface LiveResourceDrift { stackName: string; logicalId: string; physicalId?: string; resourceType: string; status: string; propertyDifferences: Array<{ path?: string; expected?: string; actual?: string; differenceType?: string; }>; } export interface LiveStackAssessment { stackName: string; stackStatus?: string; lastUpdatedAt?: string; templatePreview: DeploymentPreview; resourceDrifts: LiveResourceDrift[]; } export interface LiveEstateAssessment { generatedAt: string; region?: string; accountId?: string; stacks: LiveStackAssessment[]; attackPaths: AttackPath[]; summary: { stackCount: number; driftedResources: number; templateChanges: number; highRiskChanges: number; attackPaths: number; }; }