import { type InvocationMethodRegistry } from "./invocationMethodRegistry.js";
export type ModelInvocationInputKind = "prompt-pack-ref" | "message" | "command" | "tool-summary";
export type ModelInvocationBoundary = "input" | "contract" | "governance" | "runtime" | "registry";
export type ModelInvocationEntrypointErrorCode = "MISSING_RUNTIME_ID" | "MISSING_MODEL_CAPABILITY_ID" | "MISSING_INPUT" | "REGISTRY_UNAVAILABLE" | "ROUTE_REJECTED";
export type ModelInvocationEntrypointError = {
    code: ModelInvocationEntrypointErrorCode;
    message: string;
    boundary: ModelInvocationBoundary;
};
export type ModelInvocationGate = {
    accepted: boolean;
    reason?: string;
};
export type ModelInvocationInput = {
    kind: ModelInvocationInputKind;
    value: unknown;
};
export type ModelInvocationEntrypointRequest = {
    runtimeId?: string;
    invocationId?: string;
    modelCapabilityId?: string;
    input?: ModelInvocationInput;
    registry?: InvocationMethodRegistry;
    runtimeReady?: boolean;
    contract?: ModelInvocationGate;
    governance?: ModelInvocationGate;
};
export type ModelInvocationEnvelope = {
    runtimeId: string;
    invocationId: string;
    modelCapabilityId: string;
    inputKind: ModelInvocationInputKind;
    routeId: string;
    targetSurfaceId: string;
    dryRun: true;
    providerCallPlanned: false;
    governanceChecked: true;
    contractChecked: true;
};
export type ModelInvocationEntrypointResult = {
    ok: true;
    envelope: ModelInvocationEnvelope;
    events: readonly string[];
} | {
    ok: false;
    error: ModelInvocationEntrypointError;
    events: readonly string[];
};
export declare function openModelInvocationEntrypoint(request: ModelInvocationEntrypointRequest): ModelInvocationEntrypointResult;
