/**
 * economy/tier-policy — Model tier catalog and routing policy.
 *
 * Substrate-pure: no consumer-specific names anywhere.
 * Consumers inject a custom TierPolicy implementation to override defaults.
 */
export interface ModelTier {
    /** Provider identifier: "litellm" | "groq" | "anthropic" | etc. */
    provider: string;
    /** Model alias as configured in the provider. e.g. "default-fast", "deepseek-v4-flash". */
    model: string;
    /** USD per 1M input tokens. 0 when unknown or local (free). */
    costPerMTokenIn: number;
    /** USD per 1M output tokens. */
    costPerMTokenOut: number;
    label: "free" | "cheap" | "mid" | "premium";
}
export interface TierPolicy {
    /**
     * Return an ordered list of tiers to try for a given task category.
     * First element = preferred tier.
     *
     * @param category - Task category: "simple" | "standard" | "complex" | "reasoning" | string
     * @param mode     - "degraded" uses cost-minimising static routing;
     *                   "full" allows observed cost-per-outcome to influence order.
     */
    tiersFor(category: string, mode: "degraded" | "full"): ModelTier[];
}
/**
 * DefaultTierPolicy — static cost-minimising routing.
 *
 * "degraded" mode: purely static, category → ordered tier list.
 * "full" mode: same tiers returned in same order; the *caller* (economy router)
 *   is responsible for re-ordering by observed cost-per-outcome from OutcomeTracker.
 *   This class only supplies the candidate set.
 */
export declare class DefaultTierPolicy implements TierPolicy {
    tiersFor(category: string, _mode: "degraded" | "full"): ModelTier[];
}
/**
 * Look up a ModelTier by provider+model from the built-in catalog.
 * Returns undefined if the model is not in the default catalog
 * (consumers may use custom tiers not registered here).
 */
export declare function lookupTier(provider: string, model: string): ModelTier | undefined;
//# sourceMappingURL=tier-policy.d.ts.map