export type DeveloperContractCallerKind = "application" | "official-module" | "runtime-surface";
export type DeveloperContractInvocationMode = "agent" | "tool" | "model" | "interface" | "stream" | "batch";
export type DeveloperContractExposure = "public" | "application" | "official-module";
export type DeveloperContractGateDecision = "allow" | "deny" | "approval-required" | "degrade";
export type DeveloperContractGateBoundary = "input" | "runtime-state" | "contract" | "governance" | "scope";
export type DeveloperContractGateErrorCode = "MISSING_RUNTIME_ID" | "MISSING_CALLER" | "MISSING_INVOCATION_MODE" | "MISSING_CAPABILITY_ID" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "INVOCATION_MODE_DENIED" | "CAPABILITY_DENIED" | "EXPOSURE_DENIED";
export type DeveloperContractCaller = {
    kind: DeveloperContractCallerKind;
    id: string;
};
export type DeveloperContractGateCheck = {
    accepted: boolean;
    reason?: string;
};
export type DeveloperContractGateRequest = {
    runtimeId?: string;
    caller?: DeveloperContractCaller;
    invocationMode?: DeveloperContractInvocationMode;
    targetCapabilityId?: string;
    requestedExposure?: DeveloperContractExposure;
    allowedInvocationModes?: readonly DeveloperContractInvocationMode[];
    allowedCapabilityIds?: readonly string[];
    allowedExposures?: readonly DeveloperContractExposure[];
    runtimeReady?: boolean;
    contract?: DeveloperContractGateCheck;
    governance?: DeveloperContractGateCheck;
    approvalRequired?: boolean;
    approvalReason?: string;
    degradeToCapabilityId?: string;
    trace?: {
        correlationId?: string;
        sessionId?: string;
    };
};
export type DeveloperContractGateError = {
    code: DeveloperContractGateErrorCode;
    message: string;
    boundary: DeveloperContractGateBoundary;
    safeForDeveloper: true;
    internalDetailExposed: false;
};
export type DeveloperContractGateSnapshot = {
    runtimeId: string;
    caller: DeveloperContractCaller;
    invocationMode: DeveloperContractInvocationMode;
    capabilityId: string;
    requestedExposure: DeveloperContractExposure;
    decision: Exclude<DeveloperContractGateDecision, "deny">;
    degradedFromCapabilityId?: string;
    approvalReason?: string;
    visibleInternalDetails: false;
    dryRun: true;
    unsafeSideEffects: false;
    trace: {
        correlationId?: string;
        sessionId?: string;
    };
};
export type DeveloperContractGateResult = {
    ok: true;
    decision: Exclude<DeveloperContractGateDecision, "deny">;
    gate: DeveloperContractGateSnapshot;
    events: readonly string[];
} | {
    ok: false;
    decision: "deny";
    error: DeveloperContractGateError;
    events: readonly string[];
};
export declare function evaluateDeveloperContractGate(request?: DeveloperContractGateRequest): DeveloperContractGateResult;
