// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

/**
 * One row of a user-added provider's `/v1/models` catalog.
 *
 * Minimum required: `id`. Everything else is best-effort and
 * server-dependent — the OpenAI-compat spec only promises `id`
 * and `owned_by`. Servers that emit a richer shape (OpenRouter
 * publishes `name` / `context_length` / per-token `pricing` /
 * `description` at the top level; LiteLLM does similar for routes
 * it knows about) get the picker to render the extra chips
 * without our needing a server-specific catalog endpoint.
 *
 * Pricing is normalised to **US dollars per million tokens** at
 * the parse boundary. The wire shape varies — OpenRouter emits
 * strings of dollars-per-token (`"0.000003"`) which we multiply
 * by `1_000_000`; LiteLLM emits per-million floats directly.
 * `None` means the server didn't advertise pricing, not "free".
 */
export type ProviderModelSummary = { 
/**
 * Canonical model slug — what the picker writes into
 * `standard_model` / `cheap_model` on click and what the
 * runner feeds to `chat/completions` verbatim.
 */
id: string, 
/**
 * Owner/org slug when the server exposes one (OpenRouter,
 * LiteLLM). `None` for minimal servers that don't bother.
 */
owned_by?: string | null, 
/**
 * Long human-readable name when the server provides one
 * (OpenRouter: `"Anthropic: Claude 3.5 Sonnet"`). Picker
 * shows it under the slug; `None` falls back to the slug
 * alone.
 */
name?: string | null, 
/**
 * Max prompt context window for this model on this server,
 * in tokens. Picker renders as a `200k ctx` chip.
 */
context_length?: number | null, 
/**
 * Input price, normalised to $/M tokens. See struct-level
 * docs for the wire-shape normalisation.
 */
pricing_in_per_million?: number | null, 
/**
 * Output price, normalised to $/M tokens. Same caveat as
 * [`pricing_in_per_million`](Self::pricing_in_per_million).
 */
pricing_out_per_million?: number | null, 
/**
 * Whether the model accepts image input. `Some` when the
 * server advertises modalities (OpenRouter's
 * `architecture.input_modalities`; hardcoded `true` for
 * Anthropic, where every current Claude is vision-capable);
 * `None` for servers that don't say (vLLM, Ollama, LiteLLM),
 * which consumers treat as "assume yes".
 */
supports_image_input?: boolean | null, 
/**
 * Short description when the server provides one. Capped to
 * the first ~200 chars at the parse boundary so a server
 * that ships a multi-paragraph README per model doesn't blow
 * the picker UI. `None` when absent.
 */
description?: string | null, };
