import type { ProductMedia } from "../Commerce/commerceTypes"; export type FrameKind = "image" | "video" | "embed"; export type Embed = { provider: "youtube" | "vimeo"; id: string; src: string; poster?: string; }; /** Only whitelisted ids reach an iframe `src`, so a product feed can never inject an arbitrary frame URL. */ export declare const parseEmbed: (url: string) => Embed | undefined; export declare const frameKind: (media: ProductMedia) => FrameKind; /** Still image to show for a frame before it plays, if the data offers one. */ export declare const framePoster: (media: ProductMedia) => string | undefined; export declare const frameThumb: (media: ProductMedia) => string | undefined; /** `activeMediaIds` order wins; unknown ids are dropped; an empty result falls back to every frame. */ export declare const resolveFrames: (media: ProductMedia[], activeMediaIds?: string[]) => ProductMedia[]; export declare const clampIndex: (index: number, count: number) => number; /** Where a navigation key lands, or undefined when the key is not navigation. */ export declare const indexForKey: (key: string, index: number, count: number) => number | undefined; /** Arrow keys belong to a focused video, iframe or field, never to the carousel. */ export declare const keyBelongsToTarget: (target: EventTarget | null) => boolean; export declare const frameSignature: (frames: ProductMedia[]) => string;