export type TapInterfaceBoundary = "input" | "contract" | "governance" | "scope" | "runtime-state";
export type TapInterfaceGate = {
    accepted: boolean;
    reason?: string;
};
export type TapInterfaceCapabilityDeclaration = {
    capabilityId?: string;
    inputBoundary?: readonly string[];
    outputBoundary?: readonly string[];
    rules?: readonly string[];
};
export type TapInterfaceRequest = {
    runtimeId?: string;
    interfaceId?: string;
    moduleId?: string;
    capabilities?: readonly TapInterfaceCapabilityDeclaration[];
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    runtimeReady?: boolean;
    contract?: TapInterfaceGate;
    governance?: TapInterfaceGate;
};
export type TapInterfaceErrorCode = "MISSING_RUNTIME_ID" | "MISSING_INTERFACE_ID" | "MISSING_MODULE_ID" | "MISSING_CAPABILITY" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "SCOPE_DENIED";
export type TapInterfaceError = {
    code: TapInterfaceErrorCode;
    message: string;
    boundary: TapInterfaceBoundary;
    safeForRuntimeInspection: true;
};
export type TapInterfaceCapability = {
    capabilityId: string;
    inputBoundary: readonly string[];
    outputBoundary: readonly string[];
    rules: readonly string[];
};
export type TapInterfaceContract = {
    module: "tap";
    runtimeId: string;
    interfaceId: string;
    moduleId: string;
    route: "runtime.interfaceAdapter";
    capabilities: readonly TapInterfaceCapability[];
    acceptedScopes: readonly string[];
    contractSurface: "runtime.contractSurface";
    governanceRequired: true;
    dispatch: "dry-run";
    unsafeSideEffects: false;
    internalStrategyIncluded: false;
};
export type TapInterfaceResult = {
    ok: true;
    contract: TapInterfaceContract;
    events: readonly string[];
} | {
    ok: false;
    error: TapInterfaceError;
    events: readonly string[];
};
export declare const tapInterfaceDescriptor: {
    readonly module: "tap";
    readonly route: "runtime.interfaceAdapter";
    readonly purpose: "define the TAP official-module interface boundary without implementing TAP strategy";
    readonly unsafeSideEffects: false;
};
export declare function defineTapInterfaceBoundary(request?: TapInterfaceRequest): TapInterfaceResult;
