import { MathsKitElement, MathsKitState, MathsKitType } from './types'; import { Matrix2D, Point2d } from './utils'; import { MathsKitManager } from './manager'; import { LineSegmentLike } from './utils/LineSegment'; import { CircleSegmentLike } from './utils/CircleSegment'; export interface MathsKitOptions { id: string; type: MathsKitType; state: MathsKitState; } export type MarkLineType = 'x' | 'y' | 'circle'; export type MarkDirection = 'left' | 'right' | 'top' | 'bottom' | 'topLeftToBottomRight' | 'topRightToBottomLeft'; export type MarkLine = { axis: MarkLineType; direction: MarkDirection; line: LineSegmentLike; }; export type MarkCircle = { axis: MarkLineType; circle: CircleSegmentLike; }; export type MarkLineLike = MarkLine | MarkCircle; export declare abstract class MathsKit { readonly id: string; private _state; readonly element: MathsKitElement; readonly manager: MathsKitManager; protected _isActive: boolean; constructor(options: MathsKitOptions, manager: MathsKitManager); init(): void; bindElement(element: MathsKitElement, type: MathsKitType): void; getStretchDirection(): 'x' | 'y'; setActive(isActive: boolean): void; setTheme(theme: 'light' | 'dark'): void; private setThemeVariables; private getLightThemeVariables; private getDarkThemeVariables; get state(): MathsKitState; getDomMatrix: () => Matrix2D; update(state: MathsKitState): void; destroy(): void; toTop(): void; updateStateMatrix(currentMatrix: Matrix2D): void; abstract getMarkLines(): MarkLineLike[]; abstract createElement(): MathsKitElement; abstract render(): void; abstract showLineLength(number: number): void; abstract hideLineLength(): void; abstract onDragStart(): void; abstract onDragDoing(): void; abstract onDragEnd(matrix: Matrix2D): void; abstract onRotateStart(originAngle: number): void; abstract onRotateDoing(angle: number): void; abstract onRotateEnd(matrix: Matrix2D): void; abstract onStretchStart(): void; abstract onStretchDoing(width: number): void; abstract onStretchEnd(width: number): void; abstract getRotateCenterPoint(): Point2d; }