import { type InvocationEnvelope, type InvocationEnvelopeError, type InvocationEnvelopeGate, type InvocationEnvelopeSource, type InvocationEnvelopeTrace } from "./invocationEnvelope.js";
export type ToolInvocationEntrypointRequest = {
    runtimeId: string;
    toolId: string;
    source: InvocationEnvelopeSource;
    operation?: string;
    input?: unknown;
    runtimeReady?: boolean;
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    contract?: InvocationEnvelopeGate;
    governance?: InvocationEnvelopeGate;
    trace?: InvocationEnvelopeTrace;
};
export type ToolInvocationPlan = {
    invocationType: "tool";
    runtimeId: string;
    toolId: string;
    operation?: string;
    envelope: InvocationEnvelope;
    dispatch: "dry-run";
    touchesToolLayer: false;
    toolExecutionPlanned: false;
    unsafeSideEffects: false;
};
export type ToolInvocationEntrypointResult = {
    ok: true;
    plan: ToolInvocationPlan;
    events: readonly string[];
} | {
    ok: false;
    error: InvocationEnvelopeError;
    events: readonly string[];
};
export declare function createToolInvocationEntrypoint(request: ToolInvocationEntrypointRequest): ToolInvocationEntrypointResult;
