export type CmpInterfaceBoundary = "input" | "contract" | "governance" | "scope" | "runtime-state";
export type CmpInterfaceGate = {
    accepted: boolean;
    reason?: string;
};
export type CmpInterfaceCapabilityDeclaration = {
    capabilityId?: string;
    inputBoundary?: readonly string[];
    outputBoundary?: readonly string[];
    rules?: readonly string[];
};
export type CmpInterfaceRequest = {
    runtimeId?: string;
    interfaceId?: string;
    moduleId?: string;
    capabilities?: readonly CmpInterfaceCapabilityDeclaration[];
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    runtimeReady?: boolean;
    contract?: CmpInterfaceGate;
    governance?: CmpInterfaceGate;
};
export type CmpInterfaceErrorCode = "MISSING_RUNTIME_ID" | "MISSING_INTERFACE_ID" | "MISSING_MODULE_ID" | "MISSING_CAPABILITY" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "SCOPE_DENIED";
export type CmpInterfaceError = {
    code: CmpInterfaceErrorCode;
    message: string;
    boundary: CmpInterfaceBoundary;
    safeForRuntimeInspection: true;
};
export type CmpInterfaceCapability = {
    capabilityId: string;
    inputBoundary: readonly string[];
    outputBoundary: readonly string[];
    rules: readonly string[];
};
export type CmpInterfaceContract = {
    module: "cmp";
    runtimeId: string;
    interfaceId: string;
    moduleId: string;
    route: "runtime.interfaceAdapter";
    capabilities: readonly CmpInterfaceCapability[];
    acceptedScopes: readonly string[];
    contractSurface: "runtime.contractSurface";
    governanceRequired: true;
    dispatch: "dry-run";
    unsafeSideEffects: false;
    internalStrategyIncluded: false;
};
export type CmpInterfaceResult = {
    ok: true;
    contract: CmpInterfaceContract;
    events: readonly string[];
} | {
    ok: false;
    error: CmpInterfaceError;
    events: readonly string[];
};
export declare const cmpInterfaceDescriptor: {
    readonly module: "cmp";
    readonly route: "runtime.interfaceAdapter";
    readonly purpose: "define the CMP official-module interface boundary without implementing CMP strategy";
    readonly unsafeSideEffects: false;
};
export declare function defineCmpInterfaceBoundary(request?: CmpInterfaceRequest): CmpInterfaceResult;
