import type { ExecEngineRuntimeCaller, ExecEngineRuntimeGate } from "./execEngineRuntime.js";
export type ExecEngineInvocationBridgeBoundary = "input" | "contract" | "governance" | "runtime-state" | "bridge";
export type ExecEngineInvocationKind = "agent-step" | "tool" | "event" | "prompt-pack" | (string & {});
export type ExecEngineInvocationBridgeErrorCode = "MISSING_RUNTIME_ID" | "MISSING_CALLER" | "MISSING_INVOCATION" | "MISSING_INVOCATION_ID" | "MISSING_INVOCATION_KIND" | "MISSING_TARGET" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "UNSAFE_SIDE_EFFECT_REQUESTED";
export type ExecEngineInvocationBridgeError = {
    code: ExecEngineInvocationBridgeErrorCode;
    message: string;
    boundary: ExecEngineInvocationBridgeBoundary;
    publicSafe: true;
};
export type ExecEngineInvocationEnvelope = {
    invocationId?: string;
    kind?: ExecEngineInvocationKind;
    target?: string;
    payload?: unknown;
    dryRun?: boolean;
    auditRef?: string;
};
export type ExecEngineInvocationBridgeRequest = {
    runtimeId?: string;
    caller?: ExecEngineRuntimeCaller;
    invocation?: ExecEngineInvocationEnvelope;
    runtimeReady?: boolean;
    contract?: ExecEngineRuntimeGate;
    governance?: ExecEngineRuntimeGate;
};
export type ExecEngineInvocationPlan = {
    bridgeId: string;
    runtimeId: string;
    invocationId: string;
    caller: ExecEngineRuntimeCaller;
    kind: ExecEngineInvocationKind;
    target: string;
    payload?: unknown;
    route: "runtime.execEngine.invocationBridge";
    auditRef?: string;
    guard: "dry-run-envelope";
    contractChecked: true;
    governanceChecked: true;
    dryRun: true;
    unsafeSideEffects: false;
};
export type ExecEngineInvocationBridgeResult = {
    ok: true;
    plan: ExecEngineInvocationPlan;
    events: readonly string[];
} | {
    ok: false;
    error: ExecEngineInvocationBridgeError;
    events: readonly string[];
};
export declare function bridgeExecEngineInvocation(request?: ExecEngineInvocationBridgeRequest): ExecEngineInvocationBridgeResult;
