import type { GatewayDeployment } from '../auth/InvocationTokenCodec'; import type { AuthContext } from '../../auth/AuthContext'; import { EmbeddingModelPolicy } from '../../../ai/service/EmbeddingModelPolicy'; import { type CustomProviderModel, type PodCredentialRepository } from '../connect'; import { type ProviderRegistry } from '../providers/ProviderRegistry'; export interface ProviderCustomModelsServiceOptions { credentialRepository: PodCredentialRepository; /** Provider catalog; decides which providers this deployment offers at all. */ registry?: ProviderRegistry; /** * Deployment policy for embedding declarations. A cloud deployment only * provides embedding models from the ai-gateway catalog, so a custom model may * not claim embedding capability for a model the catalog does not provide. */ embeddingModelPolicy?: EmbeddingModelPolicy; } export declare class ProviderCustomModelsService { private readonly credentialRepository; private readonly embeddingModelPolicy; private readonly registry; constructor(options: ProviderCustomModelsServiceOptions); upsert(input: { webId: string; deployment: GatewayDeployment; provider: string; model: CustomProviderModel; auth?: AuthContext; }): Promise; remove(input: { webId: string; deployment: GatewayDeployment; provider: string; modelId: string; auth?: AuthContext; }): Promise; /** * A custom model may only declare embedding capability when the deployment * provides that exact provider/model as an embedding model. Local deployments * allow any declaration; cloud deployments do not. */ private assertEmbeddingDeclarationAllowed; private requireCredential; private persistMetadata; }