/**
 * Typed icon enums for the human-render contract (ADR-077).
 *
 * Single source of truth for the visual language used across all renderers
 * (tree, table, list, badge). Each enum is emoji-first; `ascii()` returns the
 * NO_COLOR-safe fallback for non-UTF-8 terminals or `NO_COLOR=1` environments.
 *
 * @packageDocumentation
 */
/**
 * Status icons — agent-task lifecycle states.
 *
 * Emoji-first; `ascii()` returns a NO_COLOR-safe fallback.
 */
export declare enum StatusIcon {
    /** Task is queued and has not started. */
    PENDING = "\u23F3",
    /** Task is in progress. */
    ACTIVE = "\uD83D\uDEA7",
    /** Task completed successfully. */
    DONE = "\u2705",
    /** Task is blocked on a dependency or gate. */
    BLOCKED = "\uD83D\uDEAA",
    /** Task is archived and no longer actively tracked. */
    ARCHIVED = "\uD83D\uDDC4",
    /** Task was cancelled before completion. */
    CANCELLED = "\u2717"
}
/**
 * Task-kind icons — Saga / Epic / Task / Subtask plus ancillary kinds.
 */
export declare enum KindIcon {
    /** Saga — multi-release theme grouping ≥ 2 Epics. */
    SAGA = "\uD83C\uDF32",
    /** Epic — one releasable slice. */
    EPIC = "\uD83D\uDCCB",
    /** Task — one atomic PR-sized change. */
    TASK = "\u2022",
    /** Subtask — one commit contributing to a Task's PR. */
    SUBTASK = "\u25E6",
    /** Research task — investigation or audit. */
    RESEARCH = "\uD83D\uDCD6",
    /** Bug task — defect tracking. */
    BUG = "\uD83D\uDC1B",
    /** Release task — shipping work. */
    RELEASE = "\uD83D\uDE80"
}
/**
 * Badge icons — flags attached to tasks (empty, orphan, nested, etc).
 */
export declare enum BadgeIcon {
    /** Container has no children. */
    EMPTY = "\uD83E\uDEA6",
    /**
     * Task has no parent and is unreachable from a Saga or Epic.
     *
     * NOTE: ADR-077 §2 originally specified `'🚪'`, identical to `StatusIcon.BLOCKED`.
     * TypeScript string enums share a single runtime string so `ascii()` cannot
     * disambiguate. Resolved by switching to `'👻'` (abandoned/lonely semantics).
     * A follow-up ADR amendment lands in T10137 (B12).
     */
    ORPHAN = "\uD83D\uDC7B",
    /** Task is nested deeper than the depth budget allows. */
    NESTED = "\uD83D\uDD01",
    /** Caution — something needs human attention. */
    CAUTION = "\u26A0",
    /** Recently added — surfaced for visibility. */
    NEW = "\u2605"
}
/**
 * Relation icons — edge semantics in tree views.
 */
export declare enum RelationIcon {
    /** Saga groups Epic via `task_relations.relation_type='groups'`. */
    GROUPS = "\u2282",
    /** Parent edge — direct hierarchical parent. */
    PARENT = "\u2934",
    /** Depends-on edge — A cannot start until B is done. */
    DEPENDS = "\u21E8",
    /** Blocks edge — A actively blocks B from progressing. */
    BLOCKS = "\u2298"
}
/**
 * Union of every icon enum — useful as the parameter type for helpers that
 * accept any icon without caring which category it came from.
 */
export type AnyIcon = StatusIcon | KindIcon | BadgeIcon | RelationIcon;
/**
 * Maps an emoji icon to its NO_COLOR-safe ASCII equivalent.
 *
 * Used when stdout is not a UTF-8 TTY or `NO_COLOR=1` is set. Every enum
 * member has an explicit ASCII fallback — the exhaustive switch ensures the
 * TypeScript compiler flags any future icon added without an ASCII mapping.
 *
 * @param icon - Any icon from `StatusIcon`, `KindIcon`, `BadgeIcon`, or `RelationIcon`.
 * @returns The ASCII-only string to render in NO_COLOR contexts.
 */
export declare function ascii(icon: AnyIcon): string;
/**
 * Options for {@link pickIcon}.
 */
export interface PickIconOptions {
    /**
     * Force ASCII fallback. When omitted, falls back to `NO_COLOR=1` or
     * `TERM=dumb` in `process.env`.
     */
    noColor?: boolean;
}
/**
 * Returns the icon to render given the current environment.
 *
 * Honors `NO_COLOR=1` and `TERM=dumb` for ASCII fallback when `opts.noColor`
 * is not provided explicitly.
 *
 * @param icon - The icon to render.
 * @param opts - Optional override for NO_COLOR detection.
 * @returns The emoji icon, or its ASCII equivalent if NO_COLOR mode is active.
 */
export declare function pickIcon<I extends AnyIcon>(icon: I, opts?: PickIconOptions): string;
//# sourceMappingURL=icon.d.ts.map