/** Shape every matcher/stamper here operates on — the identity-relevant subset of VideoTeaser. */ export interface BiteIdentity { id?: string; url: string; source_url?: string; } /** 8 lowercase hex chars. Collision-safe within one array (n≤~100 → p≈1e-6); identity is always scoped to (table, row, column). */ export declare const BITE_ID_RE: RegExp; /** Generate a new 8-hex bite element id. */ export declare function generateBiteId(): string; /** * Stamp missing ids and re-stamp in-array duplicates (copy/pasted bites). * Returns the SAME array reference when nothing changed so callers can cheaply * skip persistence (`changed === false` ⇒ no write needed). */ export declare function ensureBiteIds(bites: readonly T[]): { bites: T[]; changed: boolean; }; /** * The ONE element-identity predicate. Matching legs (any-of, NOT * short-circuit-on-id-inequality — two sides can carry DIFFERENT ids for * the same clip, e.g. a redelivered Vizard ingest regenerates ids): * 1. `id` equality — when both sides carry one and they match. * 2. `incoming.url === existing.url` — plain url (pre-flip stale sessions, * plain re-saves). * 3. `incoming.url === existing.source_url` — the incoming side still holds * the original storage URL of an element the Mux pipeline already flipped * to HLS (redelivered ingests, stale editor arrays). * * Callers that match a whole incoming array against an existing array MUST * consume each existing element at most once (multiset matching) — duplicate * incoming urls must not all bind to one element and clone its id. */ export declare function matchBiteElement(existing: BiteIdentity, incoming: BiteIdentity): boolean; //# sourceMappingURL=video-bite-id.d.ts.map