import type { LanguageModel, ProviderOptions } from "./schema/index.js" import type { CompactionOperations } from "./route/client.js" /** * Flat, serializable settings for `model(modelID, settings)`. Each entrypoint declares the connection keys it * reads; every other key is a request option for the route's protocol. */ export interface Settings extends Readonly> { readonly baseURL?: string readonly headers?: Readonly> readonly body?: Readonly> } export interface Definition< ProviderSettings extends Settings = Settings, Options extends ProviderOptions = ProviderOptions, Compact extends CompactionOperations | undefined = CompactionOperations | undefined, > { readonly model: (modelID: string, settings: ProviderSettings) => LanguageModel } /** A provider's `model` export. Settings are optional when every key is optional. */ export type Model< ProviderSettings extends Settings = Settings, Options extends ProviderOptions = ProviderOptions, Compact extends CompactionOperations | undefined = CompactionOperations | undefined, > = ( modelID: string, ...settings: {} extends ProviderSettings ? [settings?: ProviderSettings] : [settings: ProviderSettings] ) => LanguageModel export * as ProviderPackage from "./provider-package.js"