import type { RuntimeContractBoundary, RuntimeContractCaller, RuntimeContractGate } from "./runtimePublicContract.js";
export type RuntimeInvocationTarget = "agent" | "tool" | "model" | "interface" | "stream" | "batch";
export type RuntimeInvocationContractErrorCode = "MISSING_RUNTIME_ID" | "MISSING_CALLER" | "MISSING_TARGET" | "UNSUPPORTED_TARGET" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED";
export type RuntimeInvocationContractError = {
    code: RuntimeInvocationContractErrorCode;
    message: string;
    boundary: RuntimeContractBoundary;
    invocationSafe: true;
};
export type RuntimeInvocationContractRequest = {
    runtimeId?: string;
    caller?: RuntimeContractCaller;
    target?: RuntimeInvocationTarget | string;
    invocationId?: string;
    runtimeReady?: boolean;
    requestedCapabilities?: readonly string[];
    payload?: unknown;
    contract?: RuntimeContractGate;
    governance?: RuntimeContractGate;
};
export type RuntimeInvocationEnvelope = {
    runtimeId: string;
    invocationId: string;
    caller: RuntimeContractCaller;
    target: RuntimeInvocationTarget;
    route: "runtime.invocationMethod";
    requestedCapabilities: readonly string[];
    dryRun: true;
    unsafeSideEffects: false;
};
export type RuntimeInvocationContractResult = {
    ok: true;
    invocation: RuntimeInvocationEnvelope;
    events: readonly string[];
} | {
    ok: false;
    error: RuntimeInvocationContractError;
    events: readonly string[];
};
export declare function defineRuntimeInvocationContract(request?: RuntimeInvocationContractRequest): RuntimeInvocationContractResult;
