import { UserTier } from "../types/tiers.js";
export interface RateLimitConfig {
    /** Maximum calls allowed in any 60-second rolling window. */
    callsPerMinute: number;
    /** Maximum calls allowed per calendar day (resets midnight UTC). */
    callsPerDay: number;
    /**
     * Burst allowance: how many extra calls are permitted in a 10-second window
     * before throttling kicks in. Helps absorb short spikes without rejecting legit requests.
     */
    burstWindow10s: number;
    /**
     * Retry-After header value (seconds) to return when the per-minute limit is hit.
     * Tells the client how long to wait before retrying.
     */
    retryAfterSeconds: number;
}
export declare const FREE_RATE_LIMIT_CONFIG: RateLimitConfig;
export declare const PAID_RATE_LIMIT_CONFIG: RateLimitConfig;
/** Returns the RateLimitConfig for a given UserTier. */
export declare function getRateLimitConfig(tier: UserTier): RateLimitConfig;
/**
 * Milliseconds until midnight UTC from the given timestamp.
 * Used to schedule the Durable Object alarm that resets daily call counters.
 */
export declare function msUntilMidnightUtc(nowMs?: number): number;
//# sourceMappingURL=rate-limits.d.ts.map