import type { SiteCommandBatch, SiteCommandType } from './commands';
import type { AllowedRuntime, CommandRisk, IntendedExposure, SiteCommandCapabilityGap, SiteCommandMetadata } from './domain';
import type { SiteCommandRef } from './refs';
export type SiteCommandExposureTarget = Readonly<{
    type: SiteCommandType;
    ref?: SiteCommandRef;
}>;
export type SiteCommandExposurePolicy = Readonly<{
    exposure: IntendedExposure;
    runtime: AllowedRuntime;
    allowedRisks: readonly CommandRisk[];
    capabilityGaps?: readonly SiteCommandCapabilityGap[];
}>;
export type SiteCommandExposureAllowed = Readonly<{
    kind: 'allowed';
    commandType: SiteCommandType;
    commandRef: SiteCommandRef | null;
    metadata: SiteCommandMetadata;
}>;
export type SiteCommandExposureRejection = Readonly<{
    kind: 'rejected';
    code: 'unsupported_command' | 'exposure_not_allowed' | 'runtime_not_allowed' | 'risk_not_allowed' | 'capability_gap';
    commandType: SiteCommandType;
    commandRef: SiteCommandRef | null;
    message: string;
}>;
export type SiteCommandExposureDecision = SiteCommandExposureAllowed | SiteCommandExposureRejection;
export type SiteCommandBatchExposureAllowed = Readonly<{
    kind: 'allowed';
    commands: readonly SiteCommandExposureAllowed[];
}>;
export type SiteCommandBatchExposureRejection = Readonly<{
    kind: 'rejected_batch';
    code: 'empty_batch';
    commandType: null;
    commandRef: null;
    message: string;
}>;
export type SiteCommandBatchExposureDecision = SiteCommandBatchExposureAllowed | SiteCommandExposureRejection | SiteCommandBatchExposureRejection;
export declare function evaluateSiteCommandExposure(command: SiteCommandExposureTarget, policy: SiteCommandExposurePolicy): SiteCommandExposureDecision;
export declare function evaluateSiteCommandBatchExposure(batch: SiteCommandBatch, policy: SiteCommandExposurePolicy): SiteCommandBatchExposureDecision;
