/**
 * Observability Classes
 *
 * Per CAR ID spec, the observability of an agent limits its max trust tier.
 * Observability measures how much visibility we have into an agent's
 * internal workings, which directly impacts how much we can trust it.
 *
 * The 5 classes represent increasing levels of transparency:
 * - BLACK_BOX: No visibility (proprietary, closed-source)
 * - GRAY_BOX: Partial visibility (some logs, limited introspection)
 * - WHITE_BOX: Full code visibility (open source, auditable)
 * - ATTESTED_BOX: Hardware attestation (TEE, secure enclaves)
 * - VERIFIED_BOX: Formally verified (mathematical proofs of correctness)
 *
 * @packageDocumentation
 */
import type { TrustScore } from '../common/types.js';
import { z } from 'zod';
/**
 * Runtime tier type (T0-T7)
 * Matches the canonical 8-tier trust model
 */
export type RuntimeTier = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;
/**
 * Observability Class Enum
 *
 * Defines the 5 levels of observability for agents.
 * Higher observability allows higher trust ceilings.
 */
export declare enum ObservabilityClass {
    /**
     * BLACK_BOX: No visibility into agent internals
     * - Proprietary, closed-source agents
     * - Cannot inspect decision-making process
     * - Maximum trust ceiling: T2 (60% = score 600)
     */
    BLACK_BOX = 0,
    /**
     * GRAY_BOX: Partial visibility
     * - Some logging and metrics available
     * - Limited introspection capabilities
     * - Maximum trust ceiling: T3 (75% = score 750)
     */
    GRAY_BOX = 1,
    /**
     * WHITE_BOX: Full code visibility
     * - Open source or source-available
     * - Complete audit trail possible
     * - Maximum trust ceiling: T4 (90% = score 900)
     */
    WHITE_BOX = 2,
    /**
     * ATTESTED_BOX: Hardware-attested execution
     * - Runs in Trusted Execution Environment (TEE)
     * - Hardware-backed integrity guarantees
     * - Maximum trust ceiling: T4 (95% = score 950)
     */
    ATTESTED_BOX = 3,
    /**
     * VERIFIED_BOX: Formally verified
     * - Mathematical proofs of correctness
     * - Highest assurance level
     * - Maximum trust ceiling: T5 (100% = score 1000)
     */
    VERIFIED_BOX = 4
}
/**
 * Observability ceiling configuration
 */
export interface ObservabilityCeiling {
    /** Percentage of maximum trust allowed (0-100) */
    percentage: number;
    /** Maximum tier allowed */
    maxTier: RuntimeTier;
    /** Maximum score allowed */
    maxScore: number;
    /** Human-readable description */
    description: string;
}
/**
 * Observability ceiling definitions
 *
 * Maps each observability class to its trust ceiling.
 * These ceilings are hard limits - no amount of positive behavioral
 * signals can push an agent above their observability ceiling.
 */
export declare const OBSERVABILITY_CEILINGS: Record<ObservabilityClass, ObservabilityCeiling>;
/**
 * Observability class names for display
 */
export declare const OBSERVABILITY_CLASS_NAMES: Record<ObservabilityClass, string>;
/**
 * Schema for ObservabilityClass validation
 */
export declare const ObservabilityClassSchema: z.ZodNativeEnum<typeof ObservabilityClass>;
/**
 * Schema for observability metadata
 */
export declare const ObservabilityMetadataSchema: z.ZodObject<{
    class: z.ZodNativeEnum<typeof ObservabilityClass>;
    attestationProvider: z.ZodOptional<z.ZodString>;
    verificationProof: z.ZodOptional<z.ZodString>;
    sourceCodeUrl: z.ZodOptional<z.ZodString>;
    lastAuditDate: z.ZodOptional<z.ZodDate>;
}, "strip", z.ZodTypeAny, {
    class?: ObservabilityClass;
    attestationProvider?: string;
    verificationProof?: string;
    sourceCodeUrl?: string;
    lastAuditDate?: Date;
}, {
    class?: ObservabilityClass;
    attestationProvider?: string;
    verificationProof?: string;
    sourceCodeUrl?: string;
    lastAuditDate?: Date;
}>;
export type ObservabilityMetadata = z.infer<typeof ObservabilityMetadataSchema>;
/**
 * Get the trust ceiling for an observability class
 *
 * @param observability - The observability class
 * @returns The maximum runtime tier allowed
 */
export declare function getObservabilityCeiling(observability: ObservabilityClass): RuntimeTier;
/**
 * Get the maximum score for an observability class
 *
 * @param observability - The observability class
 * @returns The maximum trust score allowed
 */
export declare function getObservabilityMaxScore(observability: ObservabilityClass): number;
/**
 * Apply observability ceiling to a trust score
 *
 * Ensures the score does not exceed the maximum allowed
 * for the given observability class.
 *
 * @param score - The trust score to check
 * @param observability - The observability class of the agent
 * @returns The score, capped at the observability ceiling
 */
export declare function applyObservabilityCeiling(score: TrustScore, observability: ObservabilityClass): TrustScore;
/**
 * Check if a trust tier is allowed for an observability class
 *
 * @param tier - The trust tier to check
 * @param observability - The observability class
 * @returns True if the tier is within the allowed ceiling
 */
export declare function isTierAllowedForObservability(tier: RuntimeTier, observability: ObservabilityClass): boolean;
/**
 * Get the minimum observability class required for a trust tier
 *
 * @param tier - The desired trust tier
 * @returns The minimum observability class needed
 */
export declare function getRequiredObservabilityForTier(tier: RuntimeTier): ObservabilityClass;
/**
 * Determine observability class from agent metadata
 *
 * Analyzes agent properties to determine its observability class.
 *
 * @param metadata - Agent metadata with observability indicators
 * @returns The determined observability class
 */
export declare function determineObservabilityClass(metadata: Partial<ObservabilityMetadata>): ObservabilityClass;
/**
 * Get human-readable description of observability constraints
 *
 * @param observability - The observability class
 * @returns Description of the trust implications
 */
export declare function describeObservabilityConstraints(observability: ObservabilityClass): string;
//# sourceMappingURL=observability.d.ts.map