import type { DeviceType, Layer, TextLayer, DeviceFrameLayer, ImageLayer, ShapeLayer, BadgeLayer, ArrowLayer, LayerType } from "./types.js"; export declare const CANVAS_WIDTH = 1260; export declare const CANVAS_HEIGHT = 2736; export declare const H_MARGIN = 80; export declare const V_MARGIN = 150; export declare function deviceAspectRatio(type: DeviceType): number; export declare function deviceSize(type: DeviceType, width: number): { width: number; height: number; }; /** Default position for a text layer — centered horizontally near the top. */ export declare function defaultTextPosition(): { x: number; y: number; width: number; height: number; }; /** Default position for a device frame — centered below text, fully visible. */ export declare function defaultDevicePosition(deviceType: DeviceType): { x: number; y: number; width: number; height: number; }; /** Default position for an image layer — centered. */ export declare function defaultImagePosition(): { x: number; y: number; width: number; height: number; }; /** Default position for a shape layer — centered. */ export declare function defaultShapePosition(): { x: number; y: number; width: number; height: number; }; export declare function defaultTextStyle(): Partial; /** * Compute a position for a new layer that avoids overlapping existing layers. * Offsets by 40px diagonally for each potential overlap. */ export declare function autoPosition(existingLayers: Layer[], newLayerType: LayerType): { x: number; y: number; }; /** * Returns white or black text color depending on the perceived brightness * of the given hex background color. */ export declare function contrastColor(backgroundColor: string): string; export declare function generateId(): string; /** * Estimate the rendered height of a text layer from its content and style. * Uses a 0.55 × fontSize average character width for proportional fonts * to estimate line wrapping, then computes total height from line count. */ export declare function estimateTextHeight(text: string, fontSize: number, lineHeight: number, textWidth: number): number; export declare function createTextLayer(overrides?: Partial): TextLayer; export declare function createDeviceLayer(overrides?: Partial): DeviceFrameLayer; export declare function createImageLayer(overrides?: Partial): ImageLayer; export declare function createShapeLayer(overrides?: Partial): ShapeLayer; /** Default position for a badge layer — centered horizontally near the top. */ export declare function defaultBadgePosition(): { x: number; y: number; width: number; height: number; }; /** Default from/to for an arrow layer. */ export declare function defaultArrowEndpoints(): { fromX: number; fromY: number; toX: number; toY: number; }; /** Compute bounding box from arrow endpoints. */ export declare function arrowBoundingBox(fromX: number, fromY: number, toX: number, toY: number, padding?: number): { x: number; y: number; width: number; height: number; }; /** Default position for an arrow layer — derived from default endpoints. */ export declare function defaultArrowPosition(): { x: number; y: number; width: number; height: number; }; export declare function createBadgeLayer(overrides?: Partial): BadgeLayer; export declare function createArrowLayer(overrides?: Partial): ArrowLayer; export type VisualBounds = { top: number; left: number; bottom: number; right: number; }; /** * Compute the axis-aligned bounding box of a rotated rectangle. * Rotation is around the top-left corner (transform-origin: 0 0), matching CSS rendering. */ export declare function computeVisualBounds(x: number, y: number, w: number, h: number, rotationDeg: number): VisualBounds; //# sourceMappingURL=defaults.d.ts.map