import { SketchpadPlugin } from '.'; export interface IPlugin { readonly name: string; load: () => void; unload: () => void; } declare type Color = { r: number; g: number; b: number; a: number; }; export declare type ColorFull = { red: number; green: number; blue: number; alpha: number; }; export declare type ToolId = 'pen' | 'highlighter' | 'eraser' | 'line' | 'move-viewport'; interface ITool { sketchpad: Sketchpad; toolId: ToolId; lineWidth: number; color: Color; getColor(): Color; getColorStr(): string; setColor(r: number, g: number, b: number, a: number): ITool; getSize(): number; setSize(lineWidth: number): ITool; } declare type Frame = { uid: string; bid: number; evs: { cid: number; cnf: Object; hgt: number; pts: Object; rot: number; scl: number; tol: ToolId; vpx: number; vpy: number; wdth: number; }[]; cmd: string; sid: string; ts: number; }; interface ISketch { getFrames(): Frame[]; grindBulkFrame(sketchpad: Sketchpad, bulkFrame: any, receivingHistory?: boolean): void; } interface IRoom { sketch: ISketch | undefined; sketchpad: Sketchpad; addSketch(sketchpad: Sketchpad, config: {}): ISketch; setActiveSketch(sketchpad: Sketchpad, sketch: ISketch): void; } export declare type WindowSketchpadPlugin = { sketchpad?: Sketchpad; colorpalette?: Colorpalette; plugin?: SketchpadPlugin; }; declare global { class Sketchpad { constructor(config: { containerEl: HTMLElement | null; token: string; ws: WebSocket; backgroundImage?: string; backgroundPdf?: string; foregroundImage?: string; readOnly?: boolean; syncNetworkDataFrequency?: number; syncPointerDataFrequency?: number; centerViewport?: boolean; createPageConfig?: { sid: string; }; }); toolId: ToolId; room: IRoom; backgroundColor: string; scale: number; on(event: string, callback: Function): any; getCurrentTool(): ITool; setTool(toolId: ToolId): Sketchpad; setScale(scale: number): Sketchpad; undo(): void; redo(): void; clearPage(): void; } class Colorpalette { constructor(config: { containerEl: HTMLElement | null; }); on(event: string, callback: (...args: any) => any): Colorpalette; getColor(): ColorFull; setColor(color: Color): void; } interface Window { sketchpadPlugin?: WindowSketchpadPlugin; } } export declare type ElementStructure = { tag: string; dataset: string; props?: { [_: string]: any; }; children?: ElementStructure[]; }; export {};