import type { Hint, HintContext } from "./types.js";
export interface MaybeShowHintOptions {
    /** Override the registry — used by tests. */
    hints?: Hint[];
    /** Override Math.random — used by tests. Returns a number in [0, 1). */
    random?: () => number;
    /** Override the context builder — used by tests. */
    contextOverride?: HintContext;
    /** Override console.log — used by tests. */
    print?: (line: string) => void;
}
/**
 * Optionally print one applicable hint to stdout. Never throws.
 *
 * Silent-skip rules (must mirror `./AGENTS.md` "Behavior rules"):
 *   1. `config.hints?.enabled === false`
 *   2. `ctx.isTTY === false`
 *   3. `config.logLevel` is anything other than `info` (undefined counts
 *      as `info` because that is the runtime default in `log()`)
 *   4. no hint's `when()` returned true
 *   5. any predicate or render call threw — caught here, logged at debug
 */
export declare function maybeShowHint(config: any, results: any, options?: MaybeShowHintOptions): Promise<void>;
/**
 * Compute the selection weight for a hint's priority. Lower priority
 * means higher weight, with a gentle ramp:
 *
 *   priority 10 → weight 5  (onboarding)
 *   priority 20 → weight 4  (current-run problems)
 *   priority 30 → weight 3  (output / reporting)
 *   priority 40 → weight 2  (feature discovery)
 *   priority 50 → weight 1  (advanced / optimization)
 *
 * Anything below 10 still maps to 5; anything above 50 clamps to 1.
 * Missing priority defaults to weight 1.
 */
export declare function priorityWeight(priority: number | undefined): number;
/**
 * Pick one applicable hint with a weighted random draw biased toward
 * higher-priority (lower-numbered) tiers. Earlier versions filtered
 * hard to the single lowest-priority tier, which meant users almost
 * always saw the same onboarding hint and rarely discovered
 * lower-tier ones. The new scheme keeps all eligible hints in the
 * draw and uses `priorityWeight` to bias the outcome.
 *
 * Exported so tests can drive the algorithm directly without the
 * surrounding I/O.
 */
export declare function pickByPriority(eligible: Hint[], rand: () => number): Hint;
//# sourceMappingURL=index.d.ts.map