import type { ControlPlaneStore, JsonValue } from '../control-plane';
import type { EvaluateSecurityGateInput, RecordSecurityScanInput, ReleaseSecurityArtifact, SecurityDeployDecision, SecurityFindingComment, SecurityPolicy, SecurityPolicyRule, SecurityPostureFinding, SecurityPostureSummary, SecurityScanRun, SecuritySeverity, SecurityWaiver } from './types';
export declare class SecurityPostureStore {
    private readonly controlPlane;
    private readonly nowFn;
    private readonly idFn;
    constructor(controlPlane: ControlPlaneStore, options?: {
        now?: () => Date;
        id?: () => string;
    });
    private now;
    private run;
    recordScan(input: RecordSecurityScanInput): {
        run: SecurityScanRun;
        findings: SecurityPostureFinding[];
    };
    getScanRun(id: string): SecurityScanRun | undefined;
    listScanRuns(scope: {
        organizationId: string;
        projectId?: string;
        environmentId?: string;
        limit?: number;
    }): SecurityScanRun[];
    getFinding(id: string): SecurityPostureFinding | undefined;
    listFindings(options: {
        organizationId: string;
        projectId?: string;
        environmentId?: string;
        status?: SecurityPostureFinding['status'];
        severity?: SecuritySeverity;
        limit?: number;
    }): SecurityPostureFinding[];
    assignFinding(findingId: string, ownerActorId: string | undefined, actorId?: string): SecurityPostureFinding;
    acknowledgeFinding(findingId: string, actorId?: string): SecurityPostureFinding;
    addComment(input: {
        findingId: string;
        actorId: string;
        body: string;
        referenceUrl?: string;
    }): SecurityFindingComment;
    listComments(findingId: string): SecurityFindingComment[];
    createWaiver(input: {
        findingId: string;
        policyId?: string;
        reason: string;
        referenceUrl?: string;
        expiresAt: string;
        actorId: string;
    }): SecurityWaiver;
    revokeWaiver(id: string, actorId: string): SecurityWaiver;
    getWaiver(id: string): SecurityWaiver | undefined;
    listWaivers(findingId?: string): SecurityWaiver[];
    expireWaivers(): number;
    createPolicy(input: {
        organizationId: string;
        environmentId?: string;
        name: string;
        rules: SecurityPolicyRule[];
        requiredScanners?: string[];
        scannerFailMode: 'open' | 'closed';
        actorId?: string;
    }): SecurityPolicy;
    updatePolicy(id: string, expectedVersion: number, input: {
        name?: string;
        rules?: SecurityPolicyRule[];
        requiredScanners?: string[];
        scannerFailMode?: 'open' | 'closed';
        enabled?: boolean;
        actorId?: string;
    }): SecurityPolicy;
    getPolicy(id: string): SecurityPolicy | undefined;
    listPolicies(organizationId: string): SecurityPolicy[];
    evaluateGate(input: EvaluateSecurityGateInput): SecurityDeployDecision;
    getDecision(id: string): SecurityDeployDecision | undefined;
    listDecisions(environmentId: string, limit?: number): SecurityDeployDecision[];
    addReleaseArtifact(input: Omit<ReleaseSecurityArtifact, 'id' | 'createdAt'>): ReleaseSecurityArtifact;
    listReleaseArtifacts(releaseId: string, includeSensitiveContent?: boolean): ReleaseSecurityArtifact[];
    summary(organizationId: string, projectId?: string, environmentId?: string): SecurityPostureSummary;
    exportPosture(organizationId: string): JsonValue;
}
