export type RuntimeModeExposureAudience = "application" | "official-module" | "management" | "inspection" | "debug" | "external-control";
export type RuntimeModeExposureBoundary = "input" | "contract" | "governance" | "runtime-state" | "registry" | "scope" | "visibility";
export type RuntimeModeExposureErrorCode = "MISSING_RUNTIME_ID" | "MISSING_MODE_ID" | "MISSING_MODE_REGISTRY" | "MISSING_TARGET_MODE" | "DUPLICATE_MODE_ID" | "DEFAULT_MODE_NOT_REGISTERED" | "ACTIVE_MODE_NOT_REGISTERED" | "MODE_NOT_REGISTERED" | "MODE_NOT_AVAILABLE" | "MODE_NOT_SWITCHABLE" | "REGISTRY_RUNTIME_MISMATCH" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "MODE_SCOPE_DENIED" | "MODE_NOT_VISIBLE";
export type RuntimeModeExposureGate = {
    accepted: boolean;
    reason?: string;
};
export type RuntimeModeContractSummary = {
    contractId: string;
    version?: string;
    inputBoundary?: readonly string[];
    outputBoundary?: readonly string[];
    errorCodes?: readonly string[];
};
export type RuntimeModeDescriptorInput = {
    modeId?: string;
    label?: string;
    summary?: string;
    audiences?: readonly RuntimeModeExposureAudience[];
    scopes?: readonly string[];
    default?: boolean;
    available?: boolean;
    switchable?: boolean;
    contract?: RuntimeModeContractSummary;
    metadata?: Readonly<Record<string, unknown>>;
};
export type RuntimeModeDescriptor = {
    modeId: string;
    label?: string;
    summary?: string;
    audiences: readonly RuntimeModeExposureAudience[];
    scopes: readonly string[];
    default: boolean;
    available: boolean;
    switchable: boolean;
    contract?: RuntimeModeContractSummary;
    metadata?: Readonly<Record<string, unknown>>;
    descriptorSurface: "runtime.modeExposure.modeDescriptor";
    governanceChecked: true;
    contractChecked: true;
    unsafeSideEffects: false;
};
export type RuntimeModeDescriptorRequest = {
    runtimeId?: string;
    mode?: RuntimeModeDescriptorInput;
    runtimeReady?: boolean;
    contract?: RuntimeModeExposureGate;
    governance?: RuntimeModeExposureGate;
};
export type RuntimeModeExposureError = {
    code: RuntimeModeExposureErrorCode;
    message: string;
    boundary: RuntimeModeExposureBoundary;
    safeForApplication: true;
    internalDetailExposed: false;
};
export type RuntimeModeExposureFailure = {
    ok: false;
    error: RuntimeModeExposureError;
    events: readonly string[];
};
export type RuntimeModeDescriptorResult = {
    ok: true;
    runtimeId: string;
    descriptor: RuntimeModeDescriptor;
    events: readonly string[];
} | RuntimeModeExposureFailure;
export declare const runtimeModeDescriptorCapability: {
    readonly surface: "runtime.modeExposure";
    readonly capability: "modeDescriptor";
    readonly purpose: "normalize one readonly runtime execution mode descriptor for upper runtime surfaces";
    readonly unsafeSideEffects: false;
};
export declare function isRuntimeModeBlank(value: string | undefined): boolean;
export declare function cleanRuntimeModeList(values: readonly string[] | undefined): readonly string[];
export declare function createRuntimeModeExposureError(code: RuntimeModeExposureErrorCode, message: string, boundary: RuntimeModeExposureBoundary): RuntimeModeExposureError;
export declare function rejectRuntimeModeExposure(code: RuntimeModeExposureErrorCode, message: string, boundary: RuntimeModeExposureBoundary, event?: string): RuntimeModeExposureFailure;
export declare function normalizeRuntimeModeDescriptor(mode: RuntimeModeDescriptorInput | undefined): RuntimeModeDescriptor | RuntimeModeExposureError;
export declare function describeRuntimeMode(request?: RuntimeModeDescriptorRequest): RuntimeModeDescriptorResult;
