import type { ClaudeProxyModelTier, ClaudeProxyRequestClass, ClaudeProxyRequestProfile, CooldownScope, CooldownSkippedAccount, FallbackEligibilityDecision, FallbackEntry, ParsedClaudeRequest, ProxyTranslationAttempt, ProxyTranslationPlan, RuntimeAccountState } from "../types/index.js";
export type { ClaudeProxyModelTier, ClaudeProxyRequestClass, ClaudeProxyRequestProfile, CooldownScope, CooldownSkippedAccount, FallbackEligibilityDecision, ProxyTranslationAttempt, ProxyTranslationPlan, };
export declare function inferClaudeProxyModelTier(modelName: string): ClaudeProxyModelTier;
export declare function classifyClaudeProxyRequest(requestedModel: string, parsed: ParsedClaudeRequest): ClaudeProxyRequestProfile;
export declare function getRequestClassCooldownKey(profile: ClaudeProxyRequestProfile): string;
export declare function getModelTierCooldownKey(profile: ClaudeProxyRequestProfile): string;
export declare function evaluateFallbackEligibility(profile: ClaudeProxyRequestProfile, candidate: {
    provider?: string;
    model?: string;
}): FallbackEligibilityDecision;
export declare function buildProxyTranslationPlan(primary: {
    provider: string;
    model?: string;
}, fallbackChain: FallbackEntry[], requestedModel: string, parsed: ParsedClaudeRequest): ProxyTranslationPlan;
export declare function summarizeSkippedFallbacks(plan: Pick<ProxyTranslationPlan, "profile" | "skipped">): string | null;
export declare function getActiveCooldownScope(state: RuntimeAccountState, profile: ClaudeProxyRequestProfile, now?: number): CooldownScope | null;
export declare function partitionAccountsByCooldown<T extends {
    key: string;
}>(accounts: T[], getState: (account: T) => RuntimeAccountState, profile: ClaudeProxyRequestProfile, now?: number): {
    eligible: T[];
    skipped: CooldownSkippedAccount<T>[];
};
export declare function applyRateLimitCooldownScope(args: {
    state: RuntimeAccountState;
    profile: ClaudeProxyRequestProfile;
    retryAfterMs?: number;
    now?: number;
    capMs: number;
}): {
    backoffMs: number;
    requestClassKey: string;
    modelTierKey: string;
};
