/**
 * artifacts/naming — the ONE owner of the ref grammar.
 *
 * `art_` + 22 crypto-random base62 chars = 26 chars the model can speak
 * cheaply and copy reliably. The grammar lives in exactly one module (the
 * `branchSegment.ts` precedent upstream): mint here, recognize here, and
 * nowhere else — an adapter that parses refs with its own regex is a design
 * smell this header exists to refuse.
 *
 * NEVER content-addressed. The digest is metadata on {@link ArtifactMeta};
 * making content the key would collide two tenants' identical bytes into one
 * object (an isolation bug wearing a dedup win) and could never name two
 * generations of "the current dataset". Randomness comes from
 * `globalThis.crypto` — present in every supported Node and every browser —
 * so minting works wherever the in-memory adapter does.
 */
import type { ArtifactRef } from './types.js';
/** The prefix every minted ref carries. */
export declare const ARTIFACT_REF_PREFIX = "art_";
/**
 * Mint a fresh, opaque, never-content-derived ref.
 *
 * Rejection sampling keeps the distribution uniform (256 % 62 ≠ 0, so a bare
 * modulo would bias the low end of the alphabet — cosmetically fine,
 * cryptographically sloppy, and cheap to do right).
 */
export declare function mintArtifactRef(): ArtifactRef;
/**
 * Is this string a well-formed artifact ref?
 *
 * Structural, total, and the ONLY recognizer. Adapters call it before any
 * ref touches a filesystem path or a SQL parameter: refs are minted so a
 * traversal payload cannot arrive by construction — and this asserts it
 * anyway, because "cannot happen" is a claim, not a defence.
 */
export declare function isArtifactRef(candidate: unknown): candidate is ArtifactRef;
//# sourceMappingURL=naming.d.ts.map