import type { ExecutionModeRegistrySnapshot } from "./executionModeRegistry.js";
import { type RuntimeModeExposureAudience, type RuntimeModeExposureFailure, type RuntimeModeExposureGate } from "./modeDescriptor.js";
export type RuntimeModeVisibilityRequest = {
    runtimeId?: string;
    registry?: ExecutionModeRegistrySnapshot;
    audience?: RuntimeModeExposureAudience;
    callerScopes?: readonly string[];
    includeUnavailable?: boolean;
    runtimeReady?: boolean;
    contract?: RuntimeModeExposureGate;
    governance?: RuntimeModeExposureGate;
};
export type RuntimeModeVisibilityEntry = {
    modeId: string;
    label?: string;
    summary?: string;
    default: boolean;
    active: boolean;
    available: boolean;
    switchable: boolean;
    visibleTo: readonly RuntimeModeExposureAudience[];
    requiredScopes: readonly string[];
    contractId?: string;
};
export type RuntimeModeVisibilitySnapshot = {
    runtimeId: string;
    modes: readonly RuntimeModeVisibilityEntry[];
    defaultModeId: string;
    activeModeId: string;
    requestedAudience?: RuntimeModeExposureAudience;
    callerScopes: readonly string[];
    visibilitySurface: "runtime.modeExposure.modeVisibilitySurface";
    governanceChecked: true;
    contractChecked: true;
    unsafeSideEffects: false;
};
export type RuntimeModeVisibilityResult = {
    ok: true;
    visibility: RuntimeModeVisibilitySnapshot;
    events: readonly string[];
} | RuntimeModeExposureFailure;
export declare const modeVisibilitySurfaceCapability: {
    readonly surface: "runtime.modeExposure";
    readonly capability: "modeVisibilitySurface";
    readonly purpose: "publish a governed readonly view of registered runtime modes";
    readonly unsafeSideEffects: false;
};
export declare function exposeRuntimeModeVisibility(request?: RuntimeModeVisibilityRequest): RuntimeModeVisibilityResult;
