/**
 * Antagonist Agent Types
 *
 * The antagonist agent synthesizes findings into attack narratives
 * and challenges assumptions from other agents.
 *
 * @module agents/antagonist/types
 */
import type { AgentType, Severity, Finding } from "../../certification/types.js";
import type { ExploitChain } from "../exploit-chain.js";
import type { ExfilPath } from "../../scanners/agent/types.js";
/**
 * MITRE ATT&CK Kill Chain phases
 */
export type KillChainPhase = "reconnaissance" | "resource-development" | "initial-access" | "execution" | "persistence" | "privilege-escalation" | "defense-evasion" | "credential-access" | "discovery" | "lateral-movement" | "collection" | "command-and-control" | "exfiltration" | "impact";
/**
 * Difficulty rating for attack paths
 */
export type Difficulty = "trivial" | "easy" | "moderate" | "hard" | "expert";
/**
 * Likelihood of attack being attempted
 */
export type Likelihood = "high" | "medium" | "low";
/**
 * Challenge types for the internal critic
 */
export type ChallengeType = "missed_check" | "wrong_assumption" | "false_positive_likely" | "insufficient_evidence" | "wrong_severity" | "missing_context";
/**
 * A step in the attack narrative mapped to kill chain
 */
export interface AttackStep {
    phase: KillChainPhase;
    findingId?: string;
    description: string;
    technique?: string;
    confidence: number;
}
/**
 * Prioritized remediation recommendation
 */
export interface PrioritizedRemediation {
    order: number;
    findingId: string;
    reason: string;
    blocksNarratives: string[];
    effort: "low" | "medium" | "high";
    impact: "low" | "medium" | "high";
}
/**
 * A complete attack narrative synthesized from findings
 */
export interface AttackNarrative {
    id: string;
    name: string;
    phases: AttackStep[];
    entryPoint: string;
    targetAsset: string;
    impact: string;
    difficulty: Difficulty;
    likelihood: Likelihood;
    findingIds: string[];
    mitreTechniques: string[];
    narrative: string;
    recommendations: PrioritizedRemediation[];
    confidence: number;
}
/**
 * A challenge from the internal critic
 */
export interface ChallengerAssessment {
    id: string;
    type: ChallengeType;
    targetAgent: AgentType;
    targetFindingId?: string;
    challenge: string;
    evidence: string;
    suggestedAction: string;
    severity: Severity;
    confidence: number;
}
/**
 * Gap analysis results
 */
export interface GapAnalysis {
    untestedAttackVectors: string[];
    missingControls: string[];
    blindSpots: string[];
    recommendations: string[];
    coverageScore: number;
}
/**
 * Input to the antagonist agent
 */
export interface AntagonistInput {
    projectPath: string;
    certificationId: string;
    findings: Finding[];
    exploitChains: ExploitChain[];
    exfilPaths: ExfilPath[];
    agentSummaries: Record<AgentType, {
        completed: boolean;
        findingCount: number;
    }>;
}
/**
 * Configuration for antagonist analysis
 */
export interface AntagonistConfig {
    mode: "synthesis" | "challenger" | "both";
    includePrioritization: boolean;
    maxNarratives: number;
    minConfidence: number;
    challengeThreshold: number;
    useLlm: boolean;
    llmModel?: string;
}
/**
 * Default antagonist configuration
 */
export declare const DEFAULT_ANTAGONIST_CONFIG: AntagonistConfig;
/**
 * Result from antagonist analysis
 */
export interface AntagonistResult {
    success: boolean;
    analysisId: string;
    attackNarratives: AttackNarrative[];
    challengerAssessments: ChallengerAssessment[];
    prioritization: PrioritizedRemediation[];
    gapAnalysis: GapAnalysis;
    summary: string;
    duration: number;
    tokensUsed?: number;
    error?: string;
}
/**
 * Attack vector categories for gap analysis
 */
export declare const ATTACK_VECTORS: readonly ["web-application", "api-security", "authentication", "authorization", "injection", "cryptography", "session-management", "input-validation", "output-encoding", "error-handling", "logging-monitoring", "data-protection", "network-security", "supply-chain", "infrastructure", "llm-security", "agent-security"];
export type AttackVector = (typeof ATTACK_VECTORS)[number];
/**
 * Maps finding categories to attack vectors
 */
export declare const CATEGORY_TO_VECTOR: Record<string, AttackVector>;
//# sourceMappingURL=types.d.ts.map