import type { IEventTarget } from '../dom'; import type { IFilter } from '../i-filter'; import type { IMountable } from '../i-mountable'; import type { IRenderable } from '../i-renderable'; import { IInteraction } from '../interaction'; import type { IRenderer, IShape, IViewport, ShapeType, TransformMatrix } from '../renderer'; import type { AnnotatorMode } from './annotator-mode'; import type { IAnnotatorEventMap } from './event'; export interface IAnnotator extends IMountable, IRenderable, IEventTarget { readonly renderer: IRenderer; readonly interaction: IInteraction; readonly shapes: Array; readonly selectedShapes: Array; readonly viewport: IViewport; readonly viewportTransform: TransformMatrix; readonly transformedViewport: IViewport; changeMode(mode: AnnotatorMode): void; findShapes(filter?: IFilter): Array; removeShape(filter?: IFilter): void; showShapeLabel(show?: boolean, sources?: Array): void; changeShapeAlpha(alpha?: number, sources?: Array): void; changeShapeVisible(visible: boolean, filter?: IFilter): void; showSmallShape(show: boolean): void; enableSmallShape(enable: boolean): void; selectShape(shape: IShape): void; cancelSelectShape(filter?: IFilter): void; annotate(image: string): Promise; annotateSync(image: HTMLImageElement): void; getModel(): Array; getShapeModel(shape: IShape): T; drawModel(data: Array): void; getAnnotateImage(): HTMLImageElement | undefined; zoomIn(zoom: number): void; zoomOut(zoom: number): void; refresh(): void; clear(): void; }