import type { Pencere } from "../core.mjs"; import type { Translator } from "../i18n.mjs"; import type { Item } from "../types.mjs"; import type { ImageLoader, ImageLoaderOptions } from "./image-loader.mjs"; import type { LiveRegion } from "./live-region.mjs"; import type { Renderer } from "./renderers.mjs"; export interface ActiveRendererSlot { renderer: Renderer; el: HTMLElement; item: Item; } /** Safely call renderer.unmount, swallowing errors. */ export declare function safeUnmount(slot: ActiveRendererSlot): void; export interface RenderSlideContext { core: Pencere; slot: HTMLElement; caption: HTMLElement; longDescription: HTMLElement; counter: HTMLElement; prevButton: HTMLButtonElement; nextButton: HTMLButtonElement; liveRegion: LiveRegion; t: Translator; renderers?: Renderer[]; image?: ImageLoaderOptions; /** Injectable loader. Defaults to `defaultImageLoader`. */ imageLoader?: ImageLoader; loop?: boolean; viewTransition: boolean; /** Current renderer mount (video/iframe/html) to tear down before re-render. */ activeRenderer: ActiveRendererSlot | null; /** Called when a non-image slide mounts. Host stores for teardown. */ setActiveRenderer: (slot: ActiveRendererSlot | null) => void; /** Called when an image mounts — host updates transform/will-change target. */ setCurrentImg: (img: HTMLImageElement | null) => void; /** Abort signal for the current load (aborts on slide change / close). */ signal: AbortSignal; /** Reset gesture transform — called at the start of every render. */ resetTransform: () => void; /** Write the current gesture transform onto the freshly-mounted image. */ applyCurrentTransform: (img: HTMLImageElement) => void; } /** * Render pipeline (#ref: AGENTS.md Phase 1). Orchestrates slide * rendering in four stages: prepare → load → compose → display. * * - prepare: tear down previous renderer, reset transform, update * counter / live region / caption / long description / nav buttons * - load: either invoke the renderer registry (non-image) or the * image loader (image) * - compose: attach the loaded element into the slot * - display: commit post-mount state (placeholder fade, transform, * slideLoad event) * * The four stages are internal; consumers call `renderSlide(ctx)`. */ export declare function renderSlide(ctx: RenderSlideContext): Promise;