/**
 * upgradeAnnouncement — pure parsing + maturity-framing for the user-facing
 * announcement block of a release upgrade guide
 * (MATURE-UPDATE-ANNOUNCEMENTS spec). No I/O, no spawn, no config — just the
 * deterministic mapping from a guide's `user_announcement` front-matter to the
 * announcement decision, so every rule is unit-testable in isolation.
 *
 * THE polarity invariant: a guide with no parseable `audience: user` entry
 * yields NO user message. Silence is the fail-safe — a parse error, a missing
 * block, or an entry with an unknown audience/maturity all collapse to "do not
 * announce" rather than to a malformed or misleading message. The detailed prose
 * BELOW the front-matter is the agent-facing guide and is never touched here.
 */
export type AnnouncementAudience = 'user' | 'agent-only';
export type AnnouncementMaturity = 'experimental' | 'preview' | 'stable';
/** One authored announcement decision for a notable change in a release. */
export interface AnnouncementEntry {
    /** `user` ⇒ eligible to compose into a user message; `agent-only` ⇒ never. */
    audience: AnnouncementAudience;
    /** Drives the framing + badge applied when composing the user message. */
    maturity: AnnouncementMaturity;
    /** Short user-facing title for the change. */
    headline: string;
    /** User-facing body sentence(s) for the change. */
    body: string;
}
/** Prompt-injection guidance derived from an entry's maturity. */
export interface MaturityFraming {
    /** Badge prefix for the headline (empty for `stable`). */
    badge: string;
    /** One-line instruction to the composer about tone + required caveat. */
    framing: string;
}
/**
 * Parse the `user_announcement` block from an upgrade guide. Returns the valid
 * entries (any shape may be present; invalid entries are dropped). Returns `[]`
 * for: no front-matter, a YAML error, a missing/`non-array` `user_announcement`,
 * or entries failing schema. Never throws.
 */
export declare function parseUserAnnouncement(guide: string): AnnouncementEntry[];
/** The subset of entries that are eligible to reach the user. */
export declare function userFacingEntries(entries: AnnouncementEntry[]): AnnouncementEntry[];
/**
 * Return the guide body with its leading `user_announcement` front-matter
 * removed. If there is no front-matter, the guide is returned unchanged. Used by
 * UpgradeGuideProcessor to keep the agent-facing prose while it hoists the
 * announcement block to the top of the concatenated pending guide.
 */
export declare function stripAnnouncementFrontmatter(guide: string): string;
/**
 * Serialize entries into a `---`-delimited `user_announcement` front-matter
 * block (ending in a trailing newline). Returns the empty string for an empty
 * list — so a guide-set with NO announcements produces NO front-matter, leaving
 * the assembled guide byte-identical to the pre-feature behavior.
 */
export declare function serializeUserAnnouncement(entries: AnnouncementEntry[]): string;
/** Badge + framing instruction for a maturity rung. */
export declare function frameByMaturity(maturity: AnnouncementMaturity): MaturityFraming;
/**
 * Render the announcement brief injected into the compose prompt. Returns the
 * empty string when there is nothing user-facing — the caller treats `''` as
 * "skip the user message entirely". Each entry becomes a labeled block carrying
 * its badge + maturity framing so the composer cannot overstate readiness.
 */
export declare function renderAnnouncementBrief(entries: AnnouncementEntry[]): string;
//# sourceMappingURL=upgradeAnnouncement.d.ts.map