/** * Power-saver notifier — ADR-314 §A out-of-band signal path. * * Structural mirror of rate-limit-notifier.ts, same self-reported/manual * constraint (ADR-312's detection gap applies unchanged — ruflo cannot read * "your account is at 20%" any more than it can read "you are rate * limited"). Deliberately a SEPARATE flag from rate-limited: "running low, * want to proactively conserve" (still have capacity) and "blocked" (zero * capacity left) are different urgencies — conflating them would mean * power-saver mode never fires until you're already blocked (too late to * have conserved anything). * * State is cheap and durable: * ~/.ruflo/quota-status.json = { low: bool, since: ISO, cleared: ISO|null, lastToggleAt: ISO|null } * * Same 6h TTL rationale as rate-limit-notifier.ts, and the same ADR-314 §D1 * toggle cooldown (10 min) — a self-reported flag with zero server-side * verification needs at least this much client-side friction against * casual always-on gaming. */ export declare const QUOTA_STATUS_FILE = "quota-status.json"; /** Auto-expire a forgotten manual flag after 6h (see module doc). */ export declare const QUOTA_LOW_TTL_MS: number; export interface QuotaLowStatus { low: boolean; since: string | null; cleared: string | null; lastToggleAt: string | null; } /** Read the current power-saver status. Never throws. Applies the TTL. */ export declare function readQuotaLowStatus(now?: Date): QuotaLowStatus; /** * Mark quota as running low — idempotent, cooldown-gated (ADR-314 §D1). * Returns false when the cooldown blocks the flip (not yet applied). */ export declare function markQuotaLow(now?: Date): boolean; /** Clear power-saver status. Cooldown-gated the same way as the mark direction. */ export declare function clearQuotaLowStatus(now?: Date): boolean; /** * User-facing single-line summary — plain text, no ANSI. Returns null when * not flagged low (no surface). */ export declare function quotaLowNotice(now?: Date): string | null; //# sourceMappingURL=power-saver-notifier.d.ts.map