/**
 * CLEO-native task-anchored changeset entry contract.
 *
 * CLEO-native task-anchored changesets DSL that pins every change to one or
 * more CLEO task IDs (`T####` or `E-####`). The
 * resulting `.md` files in `.changeset/` form a write-only audit trail of
 * shipped work that the future `cleo release plan` aggregator can roll up
 * into release manifests.
 *
 * File format: YAML frontmatter between `---` fences carries the structured
 * fields below; the markdown body (everything after the closing fence) becomes
 * the optional `notes` field — longer-form explanation, migration steps,
 * developer commentary.
 *
 * @example minimal entry
 * ```md
 * ---
 * id: t9686-a-dispatch-envelope
 * tasks: [T9686-A]
 * kind: fix
 * summary: Stop worktree parent appending help text after subcommand.
 * ---
 * ```
 *
 * @example breaking entry
 * ```md
 * ---
 * id: t9686-b2-unification
 * tasks: [T9686-B2]
 * kind: breaking
 * prs: [328]
 * summary: Unify releases tables.
 * breaking: release_manifests dropped; readers must switch to releases.
 * ---
 *
 * Hard-rename `releases_view` to canonical `releases` table. All consumers
 * that read the legacy table must migrate before upgrade.
 * ```
 *
 * @epic T9738
 * @task T9738
 */
import { z } from 'zod';
/**
 * Discriminator for the type of change recorded by a changeset entry.
 *
 * Mirrors the conventional-commit semantic prefix set used elsewhere in the
 * CLEO repo (`feat`, `fix`, `refactor`, `docs`, `test`, `chore`) plus
 * `perf` for performance work and `breaking` for entries that introduce a
 * breaking change requiring migration notes.
 */
export declare const CHANGESET_KINDS: readonly ["feat", "fix", "perf", "refactor", "docs", "test", "chore", "breaking"];
/** Allowed values of {@link ChangesetEntry.kind}. */
export type ChangesetKind = (typeof CHANGESET_KINDS)[number];
/**
 * Deterministic release-note section override used by zero-token renderers.
 *
 * These values intentionally mirror Keep-a-Changelog style headings so release
 * tooling can render higher-quality notes without an LLM/API/token dependency.
 */
export declare const CHANGESET_RELEASE_NOTE_SECTIONS: readonly ["added", "changed", "fixed", "deprecated", "removed", "security", "breaking"];
/** Allowed values of {@link ChangesetReleaseNotesMetadata.section}. */
export type ChangesetReleaseNoteSection = (typeof CHANGESET_RELEASE_NOTE_SECTIONS)[number];
/** Audience labels for deterministic release-note routing. */
export declare const CHANGESET_RELEASE_NOTE_AUDIENCES: readonly ["users", "operators", "developers", "maintainers"];
/** Allowed values of {@link ChangesetReleaseNotesMetadata.audience}. */
export type ChangesetReleaseNoteAudience = (typeof CHANGESET_RELEASE_NOTE_AUDIENCES)[number];
/** Scope labels for deterministic release-note routing. */
export declare const CHANGESET_RELEASE_NOTE_SCOPES: readonly ["project", "package", "component", "docs", "ops", "security"];
/** Allowed values of {@link ChangesetReleaseNotesMetadata.scope}. */
export type ChangesetReleaseNoteScope = (typeof CHANGESET_RELEASE_NOTE_SCOPES)[number];
/**
 * Optional deterministic metadata for release-note rendering.
 *
 * This is deliberately small, explicit, and strict: it gives release tooling
 * structured author-provided facts (section, audience, target, impact, etc.)
 * while preserving zero-token defaults and failing loudly on misspelled fields.
 */
export declare const ChangesetReleaseNotesMetadataSchema: z.ZodObject<{
    section: z.ZodOptional<z.ZodEnum<{
        removed: "removed";
        deprecated: "deprecated";
        security: "security";
        fixed: "fixed";
        breaking: "breaking";
        added: "added";
        changed: "changed";
    }>>;
    audience: z.ZodOptional<z.ZodArray<z.ZodEnum<{
        users: "users";
        operators: "operators";
        developers: "developers";
        maintainers: "maintainers";
    }>>>;
    scope: z.ZodOptional<z.ZodEnum<{
        project: "project";
        security: "security";
        docs: "docs";
        package: "package";
        component: "component";
        ops: "ops";
    }>>;
    targets: z.ZodOptional<z.ZodArray<z.ZodString>>;
    impact: z.ZodOptional<z.ZodString>;
    migration: z.ZodOptional<z.ZodString>;
    deprecation: z.ZodOptional<z.ZodString>;
    security: z.ZodOptional<z.ZodString>;
    operatorNotes: z.ZodOptional<z.ZodString>;
    includeInChangelog: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strict>;
/** Inferred TypeScript type for deterministic release-note metadata. */
export type ChangesetReleaseNotesMetadata = z.infer<typeof ChangesetReleaseNotesMetadataSchema>;
/**
 * Zod schema for a single changeset entry. Validates frontmatter fields
 * + markdown body of a file under `.changeset/*.md`.
 *
 * Required fields:
 * - `id`     — slug matching the filename (without extension)
 * - `tasks`  — non-empty array of CLEO task IDs
 * - `kind`   — one of {@link CHANGESET_KINDS}
 * - `summary` — one-line user-facing description
 *
 * Optional fields:
 * - `prs`      — linked PR numbers
 * - `notes`    — longer-form markdown body
 * - `breaking` — required migration note when `kind === 'breaking'`
 * - `releaseNotes` — deterministic zero-token release-note metadata
 */
export declare const ChangesetEntrySchema: z.ZodObject<{
    id: z.ZodString;
    tasks: z.ZodArray<z.ZodString>;
    kind: z.ZodEnum<{
        test: "test";
        docs: "docs";
        feat: "feat";
        fix: "fix";
        perf: "perf";
        refactor: "refactor";
        chore: "chore";
        breaking: "breaking";
    }>;
    summary: z.ZodString;
    prs: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
    notes: z.ZodOptional<z.ZodString>;
    breaking: z.ZodOptional<z.ZodString>;
    releaseNotes: z.ZodOptional<z.ZodObject<{
        section: z.ZodOptional<z.ZodEnum<{
            removed: "removed";
            deprecated: "deprecated";
            security: "security";
            fixed: "fixed";
            breaking: "breaking";
            added: "added";
            changed: "changed";
        }>>;
        audience: z.ZodOptional<z.ZodArray<z.ZodEnum<{
            users: "users";
            operators: "operators";
            developers: "developers";
            maintainers: "maintainers";
        }>>>;
        scope: z.ZodOptional<z.ZodEnum<{
            project: "project";
            security: "security";
            docs: "docs";
            package: "package";
            component: "component";
            ops: "ops";
        }>>;
        targets: z.ZodOptional<z.ZodArray<z.ZodString>>;
        impact: z.ZodOptional<z.ZodString>;
        migration: z.ZodOptional<z.ZodString>;
        deprecation: z.ZodOptional<z.ZodString>;
        security: z.ZodOptional<z.ZodString>;
        operatorNotes: z.ZodOptional<z.ZodString>;
        includeInChangelog: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strict>>;
}, z.core.$strip>;
/**
 * Inferred TypeScript type for a parsed changeset entry.
 *
 * The shape is identical to the schema input — there are no transforms that
 * coerce between input and output types.
 */
export type ChangesetEntry = z.infer<typeof ChangesetEntrySchema>;
//# sourceMappingURL=changesets.d.ts.map