import { type CustomFormatEndpointMapping, type CustomFormatMappingBoundary, type CustomFormatMappingGate, type CustomFormatMappingTrace } from "./customMapper.js";
export type CustomFormatProtocol = "http" | "websocket" | "sdk" | "custom";
export type CustomFormatMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "CUSTOM";
export type CustomFormatAuthEnvelope = {
    required: boolean;
    present: boolean;
    scheme?: string;
};
export type CustomFormatCustomizerRequest = {
    providerId?: string;
    endpointId?: string;
    endpoint?: string;
    protocol?: CustomFormatProtocol;
    method?: CustomFormatMethod;
    headers?: Readonly<Record<string, string>>;
    body?: Readonly<Record<string, unknown>>;
    auth?: CustomFormatAuthEnvelope;
    handlerId?: string;
    officialProviderFamily?: "openai" | "anthropic" | "deepmind" | "custom";
    timeoutMs?: number;
    retryLimit?: number;
    contract?: CustomFormatMappingGate;
    governance?: CustomFormatMappingGate;
    trace?: CustomFormatMappingTrace;
    metadata?: Readonly<Record<string, unknown>>;
};
export type CustomFormatInvocationPlan = {
    providerId: string;
    endpointId: string;
    endpoint: string;
    protocol: CustomFormatProtocol;
    method: CustomFormatMethod;
    headerHints: readonly string[];
    mappedRequest?: CustomFormatEndpointMapping["requestEnvelope"];
    auth: CustomFormatAuthEnvelope;
    timeoutMs: number;
    retryLimit: number;
    handlerId?: string;
    metadata: Readonly<Record<string, unknown>>;
    trace: CustomFormatMappingTrace;
    providerCarrierHandoff: {
        target: "providerCarrierRegistry";
        mockable: true;
        networkCallStarted: false;
    };
    abstractionHandoff: {
        target: "agent_modelAdapter.abstractionLayer";
        rawProviderFieldsExposed: false;
        customFormatPromotedToPraxisStandard: false;
    };
    audit: {
        customizedBy: "customFormat.customizer";
        dryRun: true;
        unsafeSideEffects: false;
    };
};
export type CustomFormatCustomizerErrorCode = "MISSING_PROVIDER_ID" | "MISSING_ENDPOINT_ID" | "MISSING_ENDPOINT" | "OFFICIAL_PROVIDER_NOT_CUSTOM" | "CUSTOM_PROTOCOL_REQUIRES_HANDLER" | "INVALID_TIMEOUT" | "INVALID_RETRY_LIMIT" | "MAPPING_REJECTED" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED";
export type CustomFormatCustomizerError = {
    code: CustomFormatCustomizerErrorCode;
    message: string;
    boundary: CustomFormatMappingBoundary | "provider-config";
    safeForRuntimeInspection: true;
    rawProviderFieldsExposed: false;
};
export type CustomFormatCustomizerResult = {
    ok: true;
    plan: CustomFormatInvocationPlan;
    events: readonly string[];
} | {
    ok: false;
    error: CustomFormatCustomizerError;
    events: readonly string[];
};
export declare const customFormatCustomizerDescriptor: {
    readonly layer: "agent_modelAdapter.actualInvocationLayer.customFormat";
    readonly capability: "customFormat.customizer";
    readonly purpose: "prepare a dry-run invocation plan for non-official custom provider endpoints";
    readonly dryRun: true;
    readonly unsafeSideEffects: false;
    readonly mockable: true;
};
export declare function prepareCustomFormatInvocation(request?: CustomFormatCustomizerRequest): CustomFormatCustomizerResult;
