import { type CustomInterfaceDefinition, type CustomInterfaceError, type CustomInterfaceGate } from "./customInterfaceDefiner.js";
export type CustomInterfaceReuseErrorCode = CustomInterfaceError["code"] | "INTERFACE_NOT_AVAILABLE" | "OPERATION_NOT_AVAILABLE";
export type CustomInterfaceReuseError = Omit<CustomInterfaceError, "code"> & {
    code: CustomInterfaceReuseErrorCode;
};
export type CustomInterfaceReuseRequest = {
    interfaceId?: string;
    operation?: string;
    availableInterfaces?: readonly CustomInterfaceDefinition[];
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    contract?: CustomInterfaceGate;
    governance?: CustomInterfaceGate;
    metadata?: Readonly<Record<string, unknown>>;
};
export type CustomInterfaceReusePlan = {
    interfaceId: string;
    operation?: string;
    entrypoint: string;
    capabilityNames: readonly string[];
    dispatch: "dry-run";
    runtimeGoverned: true;
    touchesInterfaceImplementation: false;
    metadata: Readonly<Record<string, unknown>>;
};
export type CustomInterfaceReuseResult = {
    ok: true;
    plan: CustomInterfaceReusePlan;
    events: readonly string[];
} | {
    ok: false;
    error: CustomInterfaceReuseError;
    events: readonly string[];
};
export declare function planCustomInterfaceReuse(request?: CustomInterfaceReuseRequest): CustomInterfaceReuseResult;
