import type { EmbeddingModelIdentity, EmbeddingVectorMetric } from "@oscharko-dev/keiko-contracts";
import type { OpenAIEmbeddingRequest, OpenAIEmbeddingOutcome } from "./openai-embedding-adapter.js";
import type { OutboundHttpEgressConfig } from "./types.js";
export type EmbeddingFailureReason = "missing-credentials" | "unavailable" | "wrong-header" | "rate-limited" | "dimension-mismatch" | "timeout" | "cancelled" | "unsupported-model" | "invalid-response" | "incompatible-with-stored-identity";
export interface EmbeddingIdentityWarning {
    readonly code: "model-revision-changed";
    readonly safeMessage: string;
    readonly previousRevision?: string;
    readonly currentRevision?: string;
}
export type EmbeddingCapabilityCheck = {
    readonly ok: true;
    readonly identity: EmbeddingModelIdentity;
    readonly warning?: EmbeddingIdentityWarning;
} | {
    readonly ok: false;
    readonly reason: EmbeddingFailureReason;
    readonly safeMessage: string;
};
export interface EmbeddingProbeOptions {
    readonly modelId: string;
    readonly provider: string;
    readonly vectorMetric: EmbeddingVectorMetric;
    readonly expectedDimensions?: number;
    readonly signal?: AbortSignal;
    readonly timeoutMs?: number;
}
export interface OpenAIEmbeddingAdapter {
    readonly endpoint: string;
    readonly apiKey: string;
    readonly apiKeyHeaderName?: string;
    readonly egress?: OutboundHttpEgressConfig | undefined;
    readonly request: (input: OpenAIEmbeddingRequest) => Promise<OpenAIEmbeddingOutcome>;
}
export declare function verifyEmbeddingCapability(adapter: OpenAIEmbeddingAdapter, options: EmbeddingProbeOptions): Promise<EmbeddingCapabilityCheck>;
export declare function assertCompatibleEmbeddingIdentity(stored: EmbeddingModelIdentity, current: EmbeddingModelIdentity): EmbeddingCapabilityCheck;
//# sourceMappingURL=embedding.d.ts.map