import { type InvocationEnvelope, type InvocationEnvelopeError, type InvocationEnvelopeGate, type InvocationEnvelopeKind, type InvocationEnvelopeSource, type InvocationEnvelopeTrace } from "./invocationEnvelope.js";
export type BatchInvocationItemKind = Extract<InvocationEnvelopeKind, "agent" | "interface" | "tool" | "model">;
export type BatchInvocationItem = {
    itemId: string;
    targetId: string;
    invocationKind: BatchInvocationItemKind;
    payload?: unknown;
    requestedScopes?: readonly string[];
};
export type BatchInvocationSurfaceRequest = {
    runtimeId: string;
    batchId: string;
    source: InvocationEnvelopeSource;
    items: readonly BatchInvocationItem[];
    runtimeReady?: boolean;
    allowedScopes?: readonly string[];
    contract?: InvocationEnvelopeGate;
    governance?: InvocationEnvelopeGate;
    trace?: InvocationEnvelopeTrace;
};
export type BatchInvocationSurfaceErrorCode = InvocationEnvelopeError["code"] | "MISSING_BATCH_ID" | "EMPTY_BATCH";
export type BatchInvocationSurfaceError = {
    code: BatchInvocationSurfaceErrorCode;
    message: string;
    boundary: InvocationEnvelopeError["boundary"] | "batch";
    itemId?: string;
};
export type BatchInvocationPlanItem = {
    itemId: string;
    envelope: InvocationEnvelope;
};
export type BatchInvocationPlan = {
    invocationType: "batch";
    runtimeId: string;
    batchId: string;
    items: readonly BatchInvocationPlanItem[];
    dispatch: "dry-run";
    unsafeSideEffects: false;
};
export type BatchInvocationSurfaceResult = {
    ok: true;
    plan: BatchInvocationPlan;
    events: readonly string[];
} | {
    ok: false;
    error: BatchInvocationSurfaceError;
    events: readonly string[];
};
export declare function createBatchInvocationSurface(request: BatchInvocationSurfaceRequest): BatchInvocationSurfaceResult;
