/**
 * Session-Start Banner Check (increment 0796 / T-004)
 *
 * Decides whether to surface a one-line update banner to the user at the
 * start of a Claude Code session. Wraps the 0794 doctor checkers
 * (PluginCurrencyChecker, SkillCurrencyChecker), throttles to once per
 * the configured window (default 24h), and silently degrades on every
 * imaginable failure mode (network, parse error, missing files, timeout).
 * Hook callers must NEVER block prompt submission on this — see
 * ADR 0796-03 (failure-mode policy).
 */
import { type BannerState } from './banner-state.js';
import type { HookContext } from './types.js';
interface BannerConfig {
    disabled?: boolean;
    throttleHours?: number;
}
/**
 * Returns true when the cached banner state should be discarded and
 * `specweave doctor` re-run. ADR 0796-02 — Decision 2 lists six conditions
 * any of which forces a re-check.
 */
export declare function isThrottleExpired(state: BannerState | null, context: HookContext, config?: BannerConfig): boolean;
/**
 * Format a banner string from the cached doctor result. Returns null when
 * neither plugins nor skills have updates (no banner needed).
 */
export declare function formatBanner(result: BannerState['lastResult']): string | null;
/**
 * Orchestrate the banner check:
 *   1. Read cached state.
 *   2. If throttle not expired → return cached banner immediately (~10ms).
 *   3. Otherwise run `specweave doctor --quick --skip-external --quiet`
 *      under an 800ms timeout, count warn/fail in the two new currency
 *      categories, persist the state, and return the formatted banner.
 *
 * Every error path returns null silently — the user's prompt is never
 * blocked on a failure (ADR 0796-03).
 */
export declare function checkBanner(context: HookContext, config?: BannerConfig): Promise<string | null>;
export {};
//# sourceMappingURL=banner-check.d.ts.map