export type MpInterfaceBoundary = "input" | "contract" | "governance" | "scope" | "runtime-state";
export type MpInterfaceGate = {
    accepted: boolean;
    reason?: string;
};
export type MpInterfaceCapabilityDeclaration = {
    capabilityId?: string;
    inputBoundary?: readonly string[];
    outputBoundary?: readonly string[];
    rules?: readonly string[];
};
export type MpInterfaceRequest = {
    runtimeId?: string;
    interfaceId?: string;
    moduleId?: string;
    capabilities?: readonly MpInterfaceCapabilityDeclaration[];
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    runtimeReady?: boolean;
    contract?: MpInterfaceGate;
    governance?: MpInterfaceGate;
};
export type MpInterfaceErrorCode = "MISSING_RUNTIME_ID" | "MISSING_INTERFACE_ID" | "MISSING_MODULE_ID" | "MISSING_CAPABILITY" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "SCOPE_DENIED";
export type MpInterfaceError = {
    code: MpInterfaceErrorCode;
    message: string;
    boundary: MpInterfaceBoundary;
    safeForRuntimeInspection: true;
};
export type MpInterfaceCapability = {
    capabilityId: string;
    inputBoundary: readonly string[];
    outputBoundary: readonly string[];
    rules: readonly string[];
};
export type MpInterfaceContract = {
    module: "mp";
    runtimeId: string;
    interfaceId: string;
    moduleId: string;
    route: "runtime.interfaceAdapter";
    capabilities: readonly MpInterfaceCapability[];
    acceptedScopes: readonly string[];
    contractSurface: "runtime.contractSurface";
    governanceRequired: true;
    dispatch: "dry-run";
    unsafeSideEffects: false;
    internalStrategyIncluded: false;
};
export type MpInterfaceResult = {
    ok: true;
    contract: MpInterfaceContract;
    events: readonly string[];
} | {
    ok: false;
    error: MpInterfaceError;
    events: readonly string[];
};
export declare const mpInterfaceDescriptor: {
    readonly module: "mp";
    readonly route: "runtime.interfaceAdapter";
    readonly purpose: "define the MP official-module interface boundary without implementing MP strategy";
    readonly unsafeSideEffects: false;
};
export declare function defineMpInterfaceBoundary(request?: MpInterfaceRequest): MpInterfaceResult;
