import type { Locale } from './i18n/types.js'; import type { PricingCatalogue } from './pricing.js'; import type { Advisory, ModelPricing, TokenCounter, UsageProfile } from './types.js'; /** What `recommendTierDetailed` saw, not only what it concluded. */ export interface TierRecommendation { tier: ModelPricing['tier']; complexSignals: number; simpleSignals: number; /** * True when the prompt asks for depth and for brevity at once, and the * heuristic has no business preferring either. * * The score subtracts one side from the other, so three complex signals * against three simple ones cancels to zero and returns `sonnet` — the same * answer as a prompt with **no signals at all**. Those are opposite * situations reported identically: one is "nothing here suggests a tier", the * other is "this prompt contradicts itself about which tier it needs", and * only the second is worth telling somebody about. * * The threshold is a lead of one signal or fewer, and it comes from the * weights above rather than from taste: each signal moves the score by 2, * prompt size moves it by up to 2, so a one-signal lead is inside what * length alone contributes. A lead of two or more is a majority the size * term cannot manufacture. */ conflicted: boolean; } /** * Estimates the capability tier the prompt needs, and says what it saw. * * This is a keyword-and-size heuristic, not a judgement about answer quality. * Treat it as a hypothesis to validate with your own evaluations before * moving down a tier in production. */ export declare function recommendTierDetailed(prompt: string, tokens: number): TierRecommendation; /** * The tier alone, unchanged. * * Kept because it is public API and the 1.x line does not change shapes. * Callers that need to know whether the answer is trustworthy reach for * `recommendTierDetailed`. */ export declare function recommendTier(prompt: string, tokens: number): ModelPricing['tier']; export interface AdvisoryOptions { /** Reference date, used to decide whether a promotional price is live. */ on?: Date; /** Token counter, so the cache-prefix analysis matches the caller's. */ count?: TokenCounter; locale?: Locale; /** Prices to work from. Defaults to the catalogue bundled with this release. */ pricing?: PricingCatalogue; } /** Builds the advisories that do not modify the prompt but do move the bill. */ export declare function buildAdvisories(optimizedPrompt: string, tokensAfter: number, usage: UsageProfile, options?: AdvisoryOptions): Advisory[]; //# sourceMappingURL=advisories.d.ts.map