import type { SanityReleaseLocator } from "./source-locator.js";
/**
 * A reference to a Sanity content release (D0063), symmetric to
 * {@link DocumentRef}.
 *
 * A `DocumentRef` records what a document is; a `ReleaseRef` records what a
 * release is and — via its `locator` — where it lives. The holder stays thin
 * and purpose-named: the sharing with the document machinery is at the locator /
 * logic / schema / projection layer, NOT the holder layer. The `locator` is
 * pinned to the release arm ({@link SanityReleaseLocator}), so a `ReleaseRef`
 * can never carry a document locator.
 *
 * Use {@link resolveReleaseLocator} to obtain a locator for any ref, legacy or
 * new — a legacy ref (only `releaseName`, no locator) resolves to a release
 * locator built from the default docs source, mirroring `DocumentRef`.
 */
export interface ReleaseRef {
    /**
     * Canonical release locator. Optional: absent on a legacy ref carrying only a
     * `releaseName`; present and authoritative when set. Resolve via
     * {@link resolveReleaseLocator}.
     */
    locator?: SanityReleaseLocator;
    /**
     * Release id == `system.release` `name` == the perspective string. Frozen
     * identity, always present — drives legacy resolution and display.
     */
    releaseName: string;
    /**
     * Denormalized display title. Re-resolve via the `locator` for live release
     * metadata; this is a convenience snapshot, not the source of truth.
     */
    title?: string;
}
