/**
 * The root `tickets/` directory (#629): a plain repo convention where The Framework
 * keeps its human-facing roadmap files, rather than hiding them in a proprietary
 * `.the-framework/` dir. It sits beside conventions like the `knowledge-base/` docs. Since
 * #682 moved the backlog out to a root `TODO_AGENTS.md`, this directory holds only
 * ticket files (`<DATE>_<SLUG>.md`).
 */
export declare const TICKETS_DIR = "tickets";
/**
 * The flat, durable backlog/roadmap file — the confirmed-task queue (the "AI task queue"
 * the repo-context (#683) fragment names). Lives at the repo root as `TODO_AGENTS.md` (#682):
 * moved out of `tickets/` so that directory holds only tickets. This is the file an agent
 * drains and the dashboard surfaces — the only backlog kind since the session-scoped
 * `TODO_<slug>.agent.md` files were retired (#1369).
 */
export declare const FLAT_TODO_FILE = "TODO_AGENTS.md";
/**
 * Which `## Priority N` section a ticket's own `priority:` key earns it, translating the ticket
 * format's words into the backlog format's numbers (#1164).
 *
 * The two formats were specified separately and never mapped onto each other, so a ticket put on
 * the queue had no ranked place to land. The scale's ends are reserved by `todo_format.md`
 * itself: 10 is "rarely used, critical production bugs", which nothing queued by a click should
 * claim, and 0 is "only if capacity", which is a decision about the ticket rather than a
 * translation of it. An unmarked ticket sits in the middle, which is what the ticket format
 * saying `priority:` is optional has to mean.
 *
 * A number is taken at its word, because that is what the ticket format specifies
 * (`Priority: 10-0`) and what every ticket writes — the word spellings (`urgent`/`high`/`low`)
 * once mapped here were never part of the format and are no longer read. Out-of-range and
 * fractional values are not clamped into something plausible: they are not a priority on this
 * scale, and inventing one hides the typo.
 */
export declare function todoPriorityForTicket(priority?: string): number;
/**
 * The ticket a queue entry came from, or `undefined` for an entry that is just text (#1117).
 *
 * Queueing a ticket writes the entry as a markdown link back to it (#1164), so the identity the
 * queue used to drop is already on the line — this is the read side of that write. Only a link
 * into {@link TICKETS_DIR} counts, and only one whose target stays inside it: the result names a
 * file a reader will go and open, so an entry linking anywhere else is treated as plain text
 * rather than followed. A relative segment, an absolute path, a URL, or a nested directory all
 * fail that test.
 */
export declare function ticketFromQueueEntry(entry: string): string | undefined;
/**
 * Whether a string names a ticket file: `tickets/<name>.md`, and nothing else (#1117).
 *
 * The one gate for both ends of the link — what a queue entry is read as, and what the `--ticket`
 * flag is allowed to record — because the result is a path the dashboard renders and a reader
 * opens. A relative segment, an absolute path, a URL, a dotfile, or anything nested deeper all
 * fail it, so no caller has to think about the difference.
 */
export declare function isTicketPath(path: string): boolean;
/**
 * The GitHub issue a ticket tracks, as a `#42` reference, or `undefined` when it tracks none.
 *
 * Read off the ticket's `GitHub: [#42](…/issues/42)` header line (`prompts/ticketing_format.md`).
 * The number comes from the URL when there is one — the label is display text, the URL is the
 * identity — with the label's own `#42` as the fallback for a hand-written line.
 *
 * This is what lets a merge close the ticket's issue (#1334): the reference rides the PR title
 * as `(fix #42)`, and GitHub's squash subject inherits the title.
 */
export declare function ticketIssueRef(md: string): string | undefined;
//# sourceMappingURL=tickets.d.ts.map