import type { ModelAdapterRuntimeCaller, ModelAdapterRuntimeGate } from "./modelAdapterRuntime.js";
export type ActualInvocationLayerProvider = "openai" | "anthropic" | "deepmind" | "customFormat" | (string & {});
export type ActualInvocationLayerBindingBoundary = "input" | "contract" | "governance" | "runtime-state" | "binding";
export type ActualInvocationLayerBindingErrorCode = "MISSING_RUNTIME_ID" | "MISSING_CALLER" | "MISSING_INVOCATION_LAYER" | "MISSING_INVOCATION_LAYER_ID" | "EMPTY_PROVIDER_CARRIERS" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED";
export type ActualInvocationLayerBindingError = {
    code: ActualInvocationLayerBindingErrorCode;
    message: string;
    boundary: ActualInvocationLayerBindingBoundary;
    publicSafe: true;
};
export type ActualInvocationProviderCarrierRef = {
    provider: ActualInvocationLayerProvider;
    carrierId: string;
    endpointShape?: "responses" | "messages" | "completion" | "embedding" | "custom" | (string & {});
};
export type ActualInvocationLayerBindingInput = {
    id?: string;
    carriers?: readonly ActualInvocationProviderCarrierRef[];
    metadata?: Readonly<Record<string, unknown>>;
};
export type ActualInvocationLayerBindingRequest = {
    runtimeId?: string;
    caller?: ModelAdapterRuntimeCaller;
    actualInvocationLayer?: ActualInvocationLayerBindingInput;
    runtimeReady?: boolean;
    contract?: ModelAdapterRuntimeGate;
    governance?: ModelAdapterRuntimeGate;
};
export type ActualInvocationLayerBinding = {
    bindingId: string;
    runtimeId: string;
    layerId: string;
    caller: ModelAdapterRuntimeCaller;
    surface: "actualInvocationLayer";
    route: "runtime.modelAdapter.actualInvocationLayer";
    carriers: readonly ActualInvocationProviderCarrierRef[];
    providers: readonly ActualInvocationLayerProvider[];
    metadata: Readonly<Record<string, unknown>>;
    contractChecked: true;
    governanceChecked: true;
    dryRun: true;
    unsafeSideEffects: false;
};
export type ActualInvocationLayerBindingResult = {
    ok: true;
    binding: ActualInvocationLayerBinding;
    events: readonly string[];
} | {
    ok: false;
    error: ActualInvocationLayerBindingError;
    events: readonly string[];
};
export declare function bindActualInvocationLayer(request?: ActualInvocationLayerBindingRequest): ActualInvocationLayerBindingResult;
