import { z } from 'zod';
/**
 * Assessment types
 */
export declare const ASSESSMENT_TYPES: readonly ["initial", "annual", "significant-change", "periodic"];
export type AssessmentType = (typeof ASSESSMENT_TYPES)[number];
/**
 * Assessment status
 */
export declare const ASSESSMENT_STATUSES: readonly ["planning", "document-review", "testing", "reporting", "remediation", "complete"];
export type AssessmentStatus = (typeof ASSESSMENT_STATUSES)[number];
/**
 * Finding status
 */
export declare const FINDING_STATUSES: readonly ["open", "in-remediation", "remediated", "verified-closed", "risk-accepted", "false-positive"];
export type FindingStatus = (typeof FINDING_STATUSES)[number];
/**
 * Finding risk level
 */
export declare const FINDING_RISK_LEVELS: readonly ["high", "moderate", "low"];
export type FindingRiskLevel = (typeof FINDING_RISK_LEVELS)[number];
/**
 * Authorization package document types
 */
export declare const PACKAGE_DOCUMENT_TYPES: readonly ["ssp", "sap", "sar", "poam", "ato-letter", "boundary-diagram", "data-flow-diagram", "network-diagram", "incident-response-plan", "contingency-plan", "configuration-management-plan", "continuous-monitoring-plan", "privacy-impact-assessment", "rules-of-behavior", "user-guide", "policy", "procedure", "interconnection-agreement", "penetration-test-report", "scan-report", "other"];
export type PackageDocumentType = (typeof PACKAGE_DOCUMENT_TYPES)[number];
/**
 * 3PAO organization information
 */
export interface ThirdPartyAssessor {
    /** Organization name */
    name: string;
    /** A2LA accreditation number */
    a2laNumber: string;
    /** Accreditation expiration date */
    accreditationExpiration: Date;
    /** Lead assessor name */
    leadAssessor: string;
    /** Lead assessor email */
    leadAssessorEmail: string;
    /** Lead assessor phone */
    leadAssessorPhone: string;
    /** Assessment team members */
    teamMembers: Array<{
        name: string;
        role: string;
        certifications: string[];
    }>;
    /** Contract number */
    contractNumber?: string;
    /** Contract expiration */
    contractExpiration?: Date;
}
/**
 * Assessment finding
 */
export interface AssessmentFinding {
    /** Unique identifier */
    id: string;
    /** Finding number (e.g., F-001) */
    findingNumber: string;
    /** Title */
    title: string;
    /** Description */
    description: string;
    /** Affected control(s) */
    controlIds: string[];
    /** Risk level */
    riskLevel: FindingRiskLevel;
    /** Original risk rating (before remediation consideration) */
    originalRiskRating?: string;
    /** Adjusted risk rating (after remediation consideration) */
    adjustedRiskRating?: string;
    /** Status */
    status: FindingStatus;
    /** Finding type */
    findingType: 'control-gap' | 'documentation' | 'technical' | 'operational' | 'policy';
    /** Identified date */
    identifiedDate: Date;
    /** Identified by */
    identifiedBy: string;
    /** Test method used */
    testMethod: 'interview' | 'examine' | 'test' | 'combination';
    /** Evidence references */
    evidenceReferences: string[];
    /** Recommendation from assessor */
    assessorRecommendation: string;
    /** CSP response */
    cspResponse?: string;
    /** Remediation plan */
    remediationPlan?: string;
    /** Planned remediation date */
    plannedRemediationDate?: Date;
    /** Actual remediation date */
    actualRemediationDate?: Date;
    /** Verification date */
    verificationDate?: Date;
    /** Verified by */
    verifiedBy?: string;
    /** Verification evidence */
    verificationEvidence?: string[];
    /** Associated POA&M ID */
    poamId?: string;
    /** Deviation request ID (if applicable) */
    deviationRequestId?: string;
}
export declare const assessmentFindingSchema: z.ZodObject<{
    id: z.ZodString;
    findingNumber: z.ZodString;
    title: z.ZodString;
    description: z.ZodString;
    controlIds: z.ZodArray<z.ZodString, "many">;
    riskLevel: z.ZodEnum<["high", "moderate", "low"]>;
    originalRiskRating: z.ZodOptional<z.ZodString>;
    adjustedRiskRating: z.ZodOptional<z.ZodString>;
    status: z.ZodEnum<["open", "in-remediation", "remediated", "verified-closed", "risk-accepted", "false-positive"]>;
    findingType: z.ZodEnum<["control-gap", "documentation", "technical", "operational", "policy"]>;
    identifiedDate: z.ZodDate;
    identifiedBy: z.ZodString;
    testMethod: z.ZodEnum<["interview", "examine", "test", "combination"]>;
    evidenceReferences: z.ZodArray<z.ZodString, "many">;
    assessorRecommendation: z.ZodString;
    cspResponse: z.ZodOptional<z.ZodString>;
    remediationPlan: z.ZodOptional<z.ZodString>;
    plannedRemediationDate: z.ZodOptional<z.ZodDate>;
    actualRemediationDate: z.ZodOptional<z.ZodDate>;
    verificationDate: z.ZodOptional<z.ZodDate>;
    verifiedBy: z.ZodOptional<z.ZodString>;
    verificationEvidence: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    poamId: z.ZodOptional<z.ZodString>;
    deviationRequestId: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    id?: string;
    status?: "open" | "remediated" | "in-remediation" | "verified-closed" | "risk-accepted" | "false-positive";
    title?: string;
    description?: string;
    riskLevel?: "low" | "high" | "moderate";
    remediationPlan?: string;
    controlIds?: string[];
    findingNumber?: string;
    originalRiskRating?: string;
    adjustedRiskRating?: string;
    findingType?: "policy" | "operational" | "documentation" | "control-gap" | "technical";
    identifiedDate?: Date;
    identifiedBy?: string;
    testMethod?: "test" | "interview" | "examine" | "combination";
    evidenceReferences?: string[];
    assessorRecommendation?: string;
    cspResponse?: string;
    plannedRemediationDate?: Date;
    actualRemediationDate?: Date;
    verificationDate?: Date;
    verifiedBy?: string;
    verificationEvidence?: string[];
    poamId?: string;
    deviationRequestId?: string;
}, {
    id?: string;
    status?: "open" | "remediated" | "in-remediation" | "verified-closed" | "risk-accepted" | "false-positive";
    title?: string;
    description?: string;
    riskLevel?: "low" | "high" | "moderate";
    remediationPlan?: string;
    controlIds?: string[];
    findingNumber?: string;
    originalRiskRating?: string;
    adjustedRiskRating?: string;
    findingType?: "policy" | "operational" | "documentation" | "control-gap" | "technical";
    identifiedDate?: Date;
    identifiedBy?: string;
    testMethod?: "test" | "interview" | "examine" | "combination";
    evidenceReferences?: string[];
    assessorRecommendation?: string;
    cspResponse?: string;
    plannedRemediationDate?: Date;
    actualRemediationDate?: Date;
    verificationDate?: Date;
    verifiedBy?: string;
    verificationEvidence?: string[];
    poamId?: string;
    deviationRequestId?: string;
}>;
/**
 * Control test result
 */
export interface ControlTestResult {
    /** Control ID */
    controlId: string;
    /** Control name */
    controlName: string;
    /** Test status */
    status: 'pass' | 'fail' | 'partial' | 'not-tested' | 'not-applicable';
    /** Test method */
    testMethod: 'interview' | 'examine' | 'test' | 'combination';
    /** Tester name */
    testerName: string;
    /** Test date */
    testDate: Date;
    /** Evidence collected */
    evidenceCollected: string[];
    /** Notes */
    notes?: string;
    /** Findings (if any) */
    findingIds: string[];
    /** Interview participants (if applicable) */
    interviewParticipants?: string[];
    /** Documents examined (if applicable) */
    documentsExamined?: string[];
    /** Systems tested (if applicable) */
    systemsTested?: string[];
}
export declare const controlTestResultSchema: z.ZodObject<{
    controlId: z.ZodString;
    controlName: z.ZodString;
    status: z.ZodEnum<["pass", "fail", "partial", "not-tested", "not-applicable"]>;
    testMethod: z.ZodEnum<["interview", "examine", "test", "combination"]>;
    testerName: z.ZodString;
    testDate: z.ZodDate;
    evidenceCollected: z.ZodArray<z.ZodString, "many">;
    notes: z.ZodOptional<z.ZodString>;
    findingIds: z.ZodArray<z.ZodString, "many">;
    interviewParticipants: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    documentsExamined: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    systemsTested: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
    status?: "partial" | "pass" | "fail" | "not-applicable" | "not-tested";
    notes?: string;
    controlId?: string;
    controlName?: string;
    testMethod?: "test" | "interview" | "examine" | "combination";
    testerName?: string;
    testDate?: Date;
    evidenceCollected?: string[];
    findingIds?: string[];
    interviewParticipants?: string[];
    documentsExamined?: string[];
    systemsTested?: string[];
}, {
    status?: "partial" | "pass" | "fail" | "not-applicable" | "not-tested";
    notes?: string;
    controlId?: string;
    controlName?: string;
    testMethod?: "test" | "interview" | "examine" | "combination";
    testerName?: string;
    testDate?: Date;
    evidenceCollected?: string[];
    findingIds?: string[];
    interviewParticipants?: string[];
    documentsExamined?: string[];
    systemsTested?: string[];
}>;
/**
 * Security Assessment Report (SAR)
 */
export interface SecurityAssessmentReport {
    /** Unique identifier */
    id: string;
    /** SAR version */
    version: string;
    /** System name */
    systemName: string;
    /** Assessment type */
    assessmentType: AssessmentType;
    /** Assessment status */
    status: AssessmentStatus;
    /** 3PAO information */
    assessor: ThirdPartyAssessor;
    /** Assessment period */
    assessmentPeriod: {
        start: Date;
        end: Date;
    };
    /** SAP (Security Assessment Plan) reference */
    sapReference: string;
    /** Scope description */
    scopeDescription: string;
    /** Controls in scope */
    controlsInScope: string[];
    /** Controls tested */
    controlsTested: number;
    /** Control test results */
    testResults: ControlTestResult[];
    /** Findings */
    findings: AssessmentFinding[];
    /** Finding summary */
    findingSummary: {
        total: number;
        high: number;
        moderate: number;
        low: number;
        remediated: number;
        open: number;
    };
    /** Risk assessment summary */
    riskAssessmentSummary: string;
    /** Security recommendation */
    securityRecommendation: 'authorize' | 'authorize-with-conditions' | 'deny';
    /** Conditions (if authorize-with-conditions) */
    authorizationConditions?: string[];
    /** Created date */
    createdDate: Date;
    /** Last updated */
    lastUpdated: Date;
    /** Approved date */
    approvedDate?: Date;
    /** Approved by */
    approvedBy?: string;
}
/**
 * Authorization package document
 */
export interface PackageDocument {
    /** Unique identifier */
    id: string;
    /** Document type */
    type: PackageDocumentType;
    /** Document name */
    name: string;
    /** Version */
    version: string;
    /** Description */
    description: string;
    /** File reference */
    fileReference: string;
    /** File hash (for integrity) */
    fileHash: string;
    /** Hash algorithm */
    hashAlgorithm: 'sha256' | 'sha384' | 'sha512';
    /** Status */
    status: 'draft' | 'review' | 'approved' | 'superseded';
    /** Owner */
    owner: string;
    /** Created date */
    createdDate: Date;
    /** Last updated */
    lastUpdated: Date;
    /** Reviewed by */
    reviewedBy?: string;
    /** Review date */
    reviewDate?: Date;
    /** Approved by */
    approvedBy?: string;
    /** Approval date */
    approvalDate?: Date;
    /** Expiration date (if applicable) */
    expirationDate?: Date;
    /** Related control IDs */
    relatedControls?: string[];
    /** Change history */
    changeHistory: Array<{
        version: string;
        date: Date;
        author: string;
        description: string;
    }>;
}
export declare const packageDocumentSchema: z.ZodObject<{
    id: z.ZodString;
    type: z.ZodEnum<["ssp", "sap", "sar", "poam", "ato-letter", "boundary-diagram", "data-flow-diagram", "network-diagram", "incident-response-plan", "contingency-plan", "configuration-management-plan", "continuous-monitoring-plan", "privacy-impact-assessment", "rules-of-behavior", "user-guide", "policy", "procedure", "interconnection-agreement", "penetration-test-report", "scan-report", "other"]>;
    name: z.ZodString;
    version: z.ZodString;
    description: z.ZodString;
    fileReference: z.ZodString;
    fileHash: z.ZodString;
    hashAlgorithm: z.ZodEnum<["sha256", "sha384", "sha512"]>;
    status: z.ZodEnum<["draft", "review", "approved", "superseded"]>;
    owner: z.ZodString;
    createdDate: z.ZodDate;
    lastUpdated: z.ZodDate;
    reviewedBy: z.ZodOptional<z.ZodString>;
    reviewDate: z.ZodOptional<z.ZodDate>;
    approvedBy: z.ZodOptional<z.ZodString>;
    approvalDate: z.ZodOptional<z.ZodDate>;
    expirationDate: z.ZodOptional<z.ZodDate>;
    relatedControls: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    changeHistory: z.ZodArray<z.ZodObject<{
        version: z.ZodString;
        date: z.ZodDate;
        author: z.ZodString;
        description: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        date?: Date;
        version?: string;
        description?: string;
        author?: string;
    }, {
        date?: Date;
        version?: string;
        description?: string;
        author?: string;
    }>, "many">;
}, "strip", z.ZodTypeAny, {
    id?: string;
    type?: "other" | "policy" | "ssp" | "sap" | "sar" | "poam" | "ato-letter" | "boundary-diagram" | "data-flow-diagram" | "network-diagram" | "incident-response-plan" | "contingency-plan" | "configuration-management-plan" | "continuous-monitoring-plan" | "privacy-impact-assessment" | "rules-of-behavior" | "user-guide" | "procedure" | "interconnection-agreement" | "penetration-test-report" | "scan-report";
    status?: "approved" | "draft" | "review" | "superseded";
    name?: string;
    version?: string;
    description?: string;
    owner?: string;
    reviewedBy?: string;
    approvedBy?: string;
    fileHash?: string;
    lastUpdated?: Date;
    approvalDate?: Date;
    expirationDate?: Date;
    hashAlgorithm?: "sha256" | "sha384" | "sha512";
    relatedControls?: string[];
    fileReference?: string;
    createdDate?: Date;
    reviewDate?: Date;
    changeHistory?: {
        date?: Date;
        version?: string;
        description?: string;
        author?: string;
    }[];
}, {
    id?: string;
    type?: "other" | "policy" | "ssp" | "sap" | "sar" | "poam" | "ato-letter" | "boundary-diagram" | "data-flow-diagram" | "network-diagram" | "incident-response-plan" | "contingency-plan" | "configuration-management-plan" | "continuous-monitoring-plan" | "privacy-impact-assessment" | "rules-of-behavior" | "user-guide" | "procedure" | "interconnection-agreement" | "penetration-test-report" | "scan-report";
    status?: "approved" | "draft" | "review" | "superseded";
    name?: string;
    version?: string;
    description?: string;
    owner?: string;
    reviewedBy?: string;
    approvedBy?: string;
    fileHash?: string;
    lastUpdated?: Date;
    approvalDate?: Date;
    expirationDate?: Date;
    hashAlgorithm?: "sha256" | "sha384" | "sha512";
    relatedControls?: string[];
    fileReference?: string;
    createdDate?: Date;
    reviewDate?: Date;
    changeHistory?: {
        date?: Date;
        version?: string;
        description?: string;
        author?: string;
    }[];
}>;
/**
 * Assessment preparation checklist item
 */
export interface PreparationChecklistItem {
    /** Unique identifier */
    id: string;
    /** Category */
    category: string;
    /** Item description */
    description: string;
    /** Is required */
    required: boolean;
    /** Status */
    status: 'not-started' | 'in-progress' | 'complete' | 'not-applicable';
    /** Assigned to */
    assignedTo?: string;
    /** Due date */
    dueDate?: Date;
    /** Completion date */
    completedDate?: Date;
    /** Notes */
    notes?: string;
    /** Evidence/artifacts */
    artifacts?: string[];
}
/**
 * Assessment configuration
 */
export interface AssessmentConfig {
    /** System name */
    systemName: string;
    /** Organization name */
    organizationName: string;
    /** FedRAMP package ID */
    fedrampPackageId?: string;
    /** Authorization level */
    authorizationLevel: 'low' | 'moderate' | 'high';
    /** ISSO contact */
    isso: {
        name: string;
        email: string;
    };
    /** System owner */
    systemOwner: {
        name: string;
        email: string;
    };
}
/**
 * FedRAMP Assessment Support Service
 */
export declare class AssessmentService {
    private config;
    private sars;
    private findings;
    private documents;
    private checklists;
    private findingCounter;
    constructor(config: AssessmentConfig);
    /**
     * Create a new SAR
     */
    createSAR(sar: Omit<SecurityAssessmentReport, 'id' | 'findings' | 'testResults' | 'findingSummary' | 'createdDate' | 'lastUpdated'>): SecurityAssessmentReport;
    /**
     * Update SAR status
     */
    updateSARStatus(sarId: string, status: AssessmentStatus): SecurityAssessmentReport;
    /**
     * Add control test result
     */
    addTestResult(sarId: string, result: ControlTestResult): void;
    /**
     * Get SAR by ID
     */
    getSAR(id: string): SecurityAssessmentReport | undefined;
    /**
     * Get all SARs
     */
    getAllSARs(filter?: {
        status?: AssessmentStatus;
        assessmentType?: AssessmentType;
    }): SecurityAssessmentReport[];
    /**
     * Add a finding
     */
    addFinding(sarId: string, finding: Omit<AssessmentFinding, 'id' | 'findingNumber'>): AssessmentFinding;
    /**
     * Update finding status
     */
    updateFindingStatus(findingId: string, status: FindingStatus, details?: {
        remediationPlan?: string;
        plannedRemediationDate?: Date;
        actualRemediationDate?: Date;
        cspResponse?: string;
    }): AssessmentFinding;
    /**
     * Verify finding remediation
     */
    verifyRemediation(findingId: string, verifiedBy: string, verificationEvidence: string[]): AssessmentFinding;
    /**
     * Update finding summary for SAR
     */
    private updateFindingSummary;
    /**
     * Get all findings
     */
    getAllFindings(filter?: {
        status?: FindingStatus;
        riskLevel?: FindingRiskLevel;
        controlId?: string;
    }): AssessmentFinding[];
    /**
     * Get open findings
     */
    getOpenFindings(): AssessmentFinding[];
    /**
     * Add package document
     */
    addDocument(document: Omit<PackageDocument, 'id' | 'changeHistory'>): PackageDocument;
    /**
     * Update document
     */
    updateDocument(documentId: string, updates: Partial<PackageDocument>, changeDescription: string, updatedBy: string): PackageDocument;
    /**
     * Get document by ID
     */
    getDocument(id: string): PackageDocument | undefined;
    /**
     * Get all documents
     */
    getAllDocuments(filter?: {
        type?: PackageDocumentType;
        status?: PackageDocument['status'];
    }): PackageDocument[];
    /**
     * Get required documents for authorization package
     */
    getRequiredDocuments(): Array<{
        type: PackageDocumentType;
        status: 'present' | 'missing' | 'expired';
    }>;
    /**
     * Create preparation checklist for assessment
     */
    createPreparationChecklist(sarId: string): PreparationChecklistItem[];
    /**
     * Update checklist item
     */
    updateChecklistItem(sarId: string, itemId: string, updates: Partial<PreparationChecklistItem>): PreparationChecklistItem;
    /**
     * Get checklist
     */
    getChecklist(sarId: string): PreparationChecklistItem[];
    /**
     * Get checklist progress
     */
    getChecklistProgress(sarId: string): {
        total: number;
        complete: number;
        inProgress: number;
        notStarted: number;
        percentage: number;
    };
    /**
     * Generate authorization package status
     */
    generatePackageStatus(): AuthorizationPackageStatus;
    /**
     * Identify blockers for authorization
     */
    private identifyBlockers;
}
export interface AuthorizationPackageStatus {
    generatedDate: Date;
    systemName: string;
    authorizationLevel: 'low' | 'moderate' | 'high';
    packageReadiness: {
        documentsComplete: number;
        documentsRequired: number;
        documentsMissing: PackageDocumentType[];
        documentsExpired: PackageDocumentType[];
    };
    assessmentStatus?: {
        sarId: string;
        status: AssessmentStatus;
        recommendation: 'authorize' | 'authorize-with-conditions' | 'deny';
        totalFindings: number;
        openFindings: number;
        highFindings: number;
    };
    findingSummary: {
        totalOpen: number;
        high: number;
        moderate: number;
        low: number;
    };
    readyForAuthorization: boolean;
    blockers: string[];
}
export default AssessmentService;
//# sourceMappingURL=assessment.d.ts.map