import type { InvocationMethodKind } from "./invocationMethodRegistry.js";
export type InvocationResultSurfaceStatus = "accepted" | "completed" | "failed";
export type InvocationResultSurfaceBoundary = "input" | "contract" | "governance" | "runtime" | "downstream";
export type InvocationResultSurfaceErrorCode = "MISSING_INVOCATION_ID" | "MISSING_METHOD" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "DOWNSTREAM_FAILED";
export type InvocationResultSurfaceError = {
    code: InvocationResultSurfaceErrorCode | string;
    message: string;
    boundary: InvocationResultSurfaceBoundary;
};
export type InvocationResultSurfaceGate = {
    accepted: boolean;
    reason?: string;
};
export type InvocationResultSurfaceRequest = {
    invocationId?: string;
    method?: InvocationMethodKind | string;
    routeId?: string;
    status?: InvocationResultSurfaceStatus;
    output?: unknown;
    error?: {
        code: string;
        message: string;
        boundary?: InvocationResultSurfaceBoundary;
    };
    events?: readonly string[];
    contract?: InvocationResultSurfaceGate;
    governance?: InvocationResultSurfaceGate;
};
export type InvocationResultSurfaceView = {
    invocationId: string;
    method: InvocationMethodKind | string;
    routeId?: string;
    status: InvocationResultSurfaceStatus;
    output?: unknown;
    error?: InvocationResultSurfaceError;
    events: readonly string[];
    providerRawShapeExposed: false;
};
export type InvocationResultSurfaceResult = {
    ok: true;
    surface: InvocationResultSurfaceView;
    events: readonly string[];
} | {
    ok: false;
    error: InvocationResultSurfaceError;
    events: readonly string[];
};
export declare function createInvocationResultSurface(request: InvocationResultSurfaceRequest): InvocationResultSurfaceResult;
