/** Proceso agil detectado o configurado en el proyecto */
export type AgileProcess = 'scrum' | 'kanban' | 'shape-up' | 'safe' | 'xp' | 'dual-track' | 'unknown';
/** Clase de servicio Kanban — determina el nivel de urgencia y el DoR requerido */
export type ServiceClass = 'expedite' | 'fixed-date' | 'standard' | 'intangible';
/** Nivel de performance segun los benchmarks del State of DevOps report */
export type DoraPerformanceTier = 'elite' | 'high' | 'medium' | 'low';
/** Tipo de relacion entre bounded contexts en un Context Map de DDD */
export type BoundedContextRelationType = 'upstream-downstream' | 'acl' | 'published-language' | 'shared-kernel' | 'conformist' | 'partnership';
/** Appetite de Shape Up — restriccion de tiempo, no estimacion */
export type ShapeUpAppetite = 'small-batch' | 'big-batch';
/** Configuracion de la metodologia agil detectada o configurada en el proyecto */
export interface AgileConfig {
    /** Proceso agil detectado */
    process: AgileProcess;
    /** Duracion del sprint en dias — solo para Scrum (tipicamente 7, 10 o 14) */
    sprintDuration?: number;
    /** WIP limit del equipo — solo para Kanban */
    wipLimit?: number;
    /** Duracion del ciclo en semanas — solo para Shape Up (tipicamente 6) */
    cycleDuration?: number;
    /** Tamano del equipo en personas (excluyendo stakeholders) */
    teamSize?: number;
    /** Velocidad promedio en story points por sprint — solo Scrum, calculada desde historial */
    velocityAverage?: number;
    /** Throughput promedio en specs completadas por semana — solo Kanban */
    throughputAverage?: number;
    /** Lead time promedio en dias desde creacion hasta completado — solo Kanban */
    leadTimeAverage?: number;
    /** Numero del sprint actual inferido desde el nombre de la rama activa — solo Scrum */
    currentSprint?: number;
    /** Numero del ciclo actual inferido desde el historial de releases — solo Shape Up */
    currentCycle?: number;
    /** Fecha estimada de fin del ciclo/sprint actual */
    cycleEndDate?: string;
}
/** Metadata de un patron arquitectural detectado con informacion de confianza */
export interface ArchitecturePatternInfo {
    /** Nombre del patron segun el union type ArchitecturePattern */
    name: string;
    /** Nivel de confianza de la deteccion */
    confidence: 'detected' | 'inferred' | 'manual';
    /** Lista de los indicadores concretos que activaron la deteccion */
    indicators: string[];
    /** Bounded contexts identificados — solo para DDD */
    boundedContexts?: string[];
    /** Cells identificadas — solo para cell-based */
    cells?: string[];
    /** Componentes MACH identificados — solo para composable/MACH */
    machComponents?: string[];
    /** Tipo de framework de actor model — solo para actor-model */
    actorFramework?: 'otp' | 'akka' | 'orleans' | 'proto-actor';
    /** Proveedor de durable execution — solo para temporal */
    durableExecutionProvider?: 'temporal' | 'inngest' | 'restate' | 'conductor';
}
/** Metricas DORA calculadas desde el historial de git */
export interface DoraMetrics {
    /** Numero de deploys a main/master/production por semana (promedio 30 dias) */
    deploymentFrequency: number;
    /** Tiempo promedio en horas desde primer commit de feature hasta merge a main */
    leadTimeHours: number;
    /** Porcentaje de commits a main revertidos en menos de 24 horas (0-100) */
    changeFailureRate: number;
    /** Tiempo promedio en horas desde primer commit de revert hasta deploy del fix */
    mttrHours: number;
    /** Clasificacion de performance segun benchmarks del State of DevOps */
    tier: DoraPerformanceTier;
    /** Fecha de inicio del periodo analizado (ISO 8601) */
    periodStart: string;
    /** Fecha de fin del periodo analizado — tipicamente la fecha actual */
    periodEnd: string;
    /** Numero de commits analizados para el calculo */
    commitsAnalyzed: number;
}
/** Relacion entre dos bounded contexts en el context map */
export interface BoundedContextRelation {
    /** Nombre del bounded context upstream (proveedor de datos o modelo) */
    upstream: string;
    /** Nombre del bounded context downstream (consumidor de datos o modelo) */
    downstream: string;
    /** Tipo de relacion segun el vocabulario de DDD context mapping */
    relationType: BoundedContextRelationType;
    /** Descripcion del mecanismo de integracion (ej: "Domain Event: OrderPlaced via Kafka") */
    integrationMechanism?: string;
}
/** Mapa completo de bounded contexts del proyecto */
export interface BoundedContextMap {
    /** Lista de todos los bounded contexts detectados */
    contexts: string[];
    /** Relaciones entre bounded contexts con sus tipos */
    relations: BoundedContextRelation[];
    /** Fecha de ultima actualizacion del mapa (ISO 8601) */
    updatedAt: string;
}
/** Configuracion DDD detectada en el proyecto */
export interface DddConfig {
    /** Si DDD fue detectado con suficiente confianza */
    detected: boolean;
    /** Bounded contexts identificados desde la estructura de directorios */
    boundedContexts: string[];
    /** Si el proyecto tiene un archivo de lenguaje ubicuo */
    hasUbiquitousLanguage: boolean;
    /** Ruta al archivo de lenguaje ubicuo si existe */
    ubiquitousLanguagePath?: string;
    /** Si hay diagramas de EventStorming linkados en el README */
    hasEventStormingDiagrams: boolean;
    /** Mapa de bounded contexts, si se pudo construir */
    contextMap?: BoundedContextMap;
}
/** Especificacion de una Activity dentro de un Temporal workflow */
export interface TemporalActivitySpec {
    name: string;
    description: string;
    scheduleToCloseTimeoutSeconds: number;
    startToCloseTimeoutSeconds: number;
    maxAttempts: number;
    backoffCoefficient: number;
}
/** Especificacion de un Workflow de Temporal/durable execution */
export interface TemporalWorkflowSpec {
    /** Nombre del workflow */
    workflowName: string;
    /** Descripcion de la secuencia de steps del workflow */
    steps: string[];
    /** Activities del workflow — operaciones con side effects */
    activities: TemporalActivitySpec[];
    /** Criterio de idempotencia: ejecutar dos veces con mismo input debe dar mismo resultado */
    idempotencyGuarantee: string;
}
/** Contrato de un actor en un sistema de Actor Model */
export interface ActorContractSpec {
    /** Tipo o nombre del actor */
    actorType: string;
    /** Mensajes que el actor puede recibir y procesar */
    receiveMessages: string[];
    /** Estado interno que el actor mantiene y puede modificar */
    internalState: string;
    /** Mensajes que el actor emite como respuesta o efecto */
    emittedMessages: string[];
    /** Estrategia de supervision ante crash del actor */
    supervisionStrategy: 'one-for-one' | 'all-for-one' | 'rest-for-one' | 'custom';
}
/** Pitch de Shape Up — formato alternativo al spec estandar */
export interface ShapeUpPitch {
    /** Que esta roto o que falta actualmente, con ejemplos concretos */
    problem: string;
    /** Restriccion de tiempo declarada como compromiso, no como estimacion */
    appetite: ShapeUpAppetite;
    /**
     * Descripcion verbal de la UI o logica usando fat marker sketches
     * — sin mockups detallados, lo suficiente para que el equipo entienda la direccion
     */
    solution: string;
    /** Problemas tecnicos o de diseno que el equipo debe evitar activamente */
    rabbitHoles: string[];
    /** Que queda explicitamente fuera del scope en este ciclo */
    noGos: string[];
}
/** Git commit entry used for DORA metrics calculation */
export interface GitCommitEntry {
    hash: string;
    date: string;
    subject: string;
    branch?: string;
}
/** Resultado de deteccion del proceso agil con nivel de confianza */
export interface AgileProcessDetection {
    process: AgileProcess;
    confidence: 'certain' | 'probable' | 'inferred' | 'none';
    indicators: string[];
    agileConfig: AgileConfig;
}
//# sourceMappingURL=architecture.d.ts.map