import { Anchor, type AnchorModel } from "./anchor.js"; import type { Worksheet } from "./worksheet.js"; interface ImageHyperlinks { hyperlink?: string; tooltip?: string; } interface ImageExt { width?: number; height?: number; } /** Absolute position in pixels (for absoluteAnchor). */ interface ImagePos { x: number; y: number; } interface ImageRange { tl: Anchor; br?: Anchor; ext?: ImageExt; editAs?: string; hyperlinks?: ImageHyperlinks; /** Absolute position — mutually exclusive with tl/br cell anchors. */ pos?: ImagePos; } interface BackgroundModel { type: "background"; imageId: string; } interface WatermarkModel { type: "watermark"; imageId: string; /** Opacity 0-1 for overlay mode */ opacity?: number; } interface HeaderImageModel { type: "headerImage"; imageId: string; headerWidth?: number; headerHeight?: number; applyTo?: "all" | "odd" | "even" | "first"; } interface ImageRangeModel { tl: AnchorModel; br?: AnchorModel; ext?: ImageExt; editAs?: string; /** Absolute position — when present, tl/br are ignored. */ pos?: ImagePos; } interface ImageModel { type: "image"; imageId: string; hyperlinks?: ImageHyperlinks; range: ImageRangeModel; } type Model = BackgroundModel | ImageModel | WatermarkModel | HeaderImageModel; type ImageModelInput = ModelInput; interface RangeInput { tl?: AnchorModel | { col: number; row: number; } | string; br?: AnchorModel | { col: number; row: number; } | string; ext?: ImageExt; editAs?: string; hyperlinks?: ImageHyperlinks; /** Absolute position — when present, tl/br are ignored. */ pos?: ImagePos; } interface ModelInput { type: string; imageId: string; range?: string | RangeInput | ImageRangeModel; hyperlinks?: ImageHyperlinks; opacity?: number; headerWidth?: number; headerHeight?: number; applyTo?: "all" | "odd" | "even" | "first"; } declare class Image { readonly worksheet: Worksheet; type?: string; imageId?: string; range?: ImageRange; /** Opacity for watermark overlay mode (0-1). */ opacity?: number; /** Header image width in points. */ headerWidth?: number; /** Header image height in points. */ headerHeight?: number; /** Header watermark applyTo setting. */ applyTo?: "all" | "odd" | "even" | "first"; constructor(worksheet: Worksheet, model?: ModelInput); get model(): Model; set model({ type, imageId, range, hyperlinks, opacity, headerWidth, headerHeight, applyTo }: ModelInput); clone(worksheet?: Worksheet): Image; } export { Image, type Model as ImageModel, type ImageModelInput };