export declare const invocationMethodKinds: readonly ["agent", "tool", "model", "interface", "stream", "batch"];
export type InvocationMethodKind = (typeof invocationMethodKinds)[number];
export type InvocationMethodRegistryBoundary = "input" | "contract" | "governance" | "registry";
export type InvocationMethodRegistryErrorCode = "MISSING_METHOD" | "UNKNOWN_METHOD" | "MISSING_SURFACE_ID" | "DUPLICATE_METHOD" | "METHOD_NOT_REGISTERED" | "METHOD_DISABLED" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED";
export type InvocationMethodRegistryError = {
    code: InvocationMethodRegistryErrorCode;
    message: string;
    boundary: InvocationMethodRegistryBoundary;
};
export type InvocationMethodGate = {
    accepted: boolean;
    reason?: string;
};
export type InvocationMethodDescriptor = {
    method?: InvocationMethodKind | string;
    surfaceId?: string;
    capability?: string;
    enabled?: boolean;
    contract?: InvocationMethodGate;
    governance?: InvocationMethodGate;
    metadata?: Readonly<Record<string, unknown>>;
};
export type RegisteredInvocationMethod = {
    method: InvocationMethodKind;
    surfaceId: string;
    capability?: string;
    enabled: boolean;
    metadata: Readonly<Record<string, unknown>>;
};
export type InvocationMethodResolveResult = {
    ok: true;
    method: RegisteredInvocationMethod;
    events: readonly string[];
} | {
    ok: false;
    error: InvocationMethodRegistryError;
    events: readonly string[];
};
export type InvocationMethodRegistry = {
    methods: readonly RegisteredInvocationMethod[];
    has: (method: InvocationMethodKind | string) => boolean;
    resolve: (method: InvocationMethodKind | string) => InvocationMethodResolveResult;
};
export type InvocationMethodRegistryRequest = {
    methods?: readonly InvocationMethodDescriptor[];
};
export type InvocationMethodRegistryResult = {
    ok: true;
    registry: InvocationMethodRegistry;
    events: readonly string[];
} | {
    ok: false;
    error: InvocationMethodRegistryError;
    events: readonly string[];
};
export declare function createInvocationMethodRegistry(request: InvocationMethodRegistryRequest): InvocationMethodRegistryResult;
