import { DeformFn } from './renderer/core'; import { OutlineBuf } from './renderer/outline'; export interface RimOptions { /** Shadow offset, CSS px (positive = light from above). */ offsetY: number; /** Blur, CSS px. */ blur: number; /** Peak opacity of the rim (0..1). */ alpha: number; /** Rim colour, `#rrggbb`. */ color: string; } export declare const RIM_DEFAULTS: Readonly; export interface RimHandles { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D; scratch: HTMLCanvasElement; sctx: CanvasRenderingContext2D; width: number; height: number; cornerRadius: number; kind: 'pill' | 'circle'; ring: number; margin: number; dpr: number; opts: RimOptions; mO: OutlineBuf; mI: OutlineBuf; /** Checksum of the outline last drawn; unchanged composites are skipped. */ sum: number; } export declare function injectRim(container: HTMLElement, dims: { width: number; height: number; cornerRadius: number; kind: 'pill' | 'circle'; ring: number; }, opts: RimOptions): RimHandles | null; /** Redraw if the (deformed) outline changed. Cheap when it hasn't. */ export declare function updateRim(h: RimHandles, deform: DeformFn | null, force?: boolean): void; export declare function removeRim(h: RimHandles | null): void;