import type { ContentState, Entry, SchemaManifest } from "@aotter/mantle-spec"; import type { EntryReader } from "../../port/EntryReader.js"; /** * `joinParentIfTranslation` — when `entry.collection` declares * `translates.parent`, fetch the parent and merge its data into the * child's data (translation wins on key conflict). Implements * ADR-0010's promise that public render paths join translations to * their parent on the declared field, so parent-only fields like * `posts.coverUrl` reach templates that read `data.coverUrl`. * * Status filter: parent must be in the same lifecycle bucket as the * child (typically "published"). `RequestPublishUseCase` already * blocks publishing a translation whose parent isn't published, so at * render time `parentStatus: "published"` always finds the parent. * Preview omits the filter — a draft translation can preview against * its already-published parent. */ export declare function joinParentIfTranslation(reader: EntryReader, schemas: ReadonlyMap, entry: Entry, options?: { readonly parentStatus?: ContentState; }): Promise; /** * Batch sibling for list paths. Issues one `IN (...)` query for all * parent lookups across the list, deduplicating join values — so a * 20-locale list keyed off the same parent slug costs 1 D1 read, not * 20. Assumes all entries share a single collection (the contract of * `RenderListLiveUseCase`); if mixed collections ever land here, fall * back path-per-entry would be needed. */ export declare function joinParentForList(reader: EntryReader, schemas: ReadonlyMap, entries: readonly Entry[], options?: { readonly parentStatus?: ContentState; }): Promise; //# sourceMappingURL=JoinedEntryReader.d.ts.map