// Generated by dts-bundle v0.7.3
// Dependencies for this module:
//   ../../../sdk/canvas2svg
//   ../../../sdk/@polyv/elog-sdk
//   ../../../sdk/tinycolor2

declare module '@polyv/white-board-sdk' {
  /**
    * @file 白板总入口
    */
  export * from '@polyv/white-board-sdk/utils/dom';
  export * from '@polyv/white-board-sdk/export/appliance';
  export * from '@polyv/white-board-sdk/export/behavior';
  export * from '@polyv/white-board-sdk/export/bridge';
  export * from '@polyv/white-board-sdk/export/console';
  export * from '@polyv/white-board-sdk/export/core';
  export * from '@polyv/white-board-sdk/export/cursor';
  export * from '@polyv/white-board-sdk/export/plugin';
  export * from '@polyv/white-board-sdk/export/service';
  export * from '@polyv/white-board-sdk/export/shape-utils';
  export * from '@polyv/white-board-sdk/export/shape';
  export * from '@polyv/white-board-sdk/registers';
  export * from '@polyv/white-board-sdk/ispring';
}

declare module '@polyv/white-board-sdk/utils/dom' {
  export * from '@polyv/white-board-sdk/utils/dom/dom-query';
  export * from '@polyv/white-board-sdk/utils/dom/types';
  export * from '@polyv/white-board-sdk/utils/dom/utils';
}

declare module '@polyv/white-board-sdk/export/appliance' {
  /**
    * @file 教具模块导出
    */
  export * from '@polyv/white-board-sdk/appliances/index';
  export * from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  export * from '@polyv/white-board-sdk/appliances/arrow';
  export { install as ArrowApplianceInstall } from '@polyv/white-board-sdk/appliances/arrow/install';
  export * from '@polyv/white-board-sdk/appliances/choice';
  export { install as ChoiceApplianceInstall } from '@polyv/white-board-sdk/appliances/choice/install';
  export * from '@polyv/white-board-sdk/appliances/ellipse';
  export { install as EllipseApplianceInstall } from '@polyv/white-board-sdk/appliances/ellipse/install';
  export * from '@polyv/white-board-sdk/appliances/eraser';
  export { install as EraserApplianceInstall } from '@polyv/white-board-sdk/appliances/eraser/install';
  export * from '@polyv/white-board-sdk/appliances/free-line';
  export { install as FreeLineApplianceInstall } from '@polyv/white-board-sdk/appliances/free-line/install';
  export * from '@polyv/white-board-sdk/appliances/laser-pen';
  export { install as LaserPenApplianceInstall } from '@polyv/white-board-sdk/appliances/laser-pen/install';
  export * from '@polyv/white-board-sdk/appliances/move';
  export { install as MoveApplianceInstall } from '@polyv/white-board-sdk/appliances/move/install';
  export * from '@polyv/white-board-sdk/appliances/polygon';
  export { install as PolygonApplianceInstall } from '@polyv/white-board-sdk/appliances/polygon/install';
  export * from '@polyv/white-board-sdk/appliances/rect';
  export { install as RectApplianceInstall } from '@polyv/white-board-sdk/appliances/rect/install';
  export * from '@polyv/white-board-sdk/appliances/star';
  export { install as StarApplianceInstall } from '@polyv/white-board-sdk/appliances/star/install';
  export * from '@polyv/white-board-sdk/appliances/straight-line';
  export { install as StraightLineApplianceInstall } from '@polyv/white-board-sdk/appliances/straight-line/install';
  export * from '@polyv/white-board-sdk/appliances/text';
  export { install as TextApplianceInstall } from '@polyv/white-board-sdk/appliances/text/install';
  export * from '@polyv/white-board-sdk/appliances/triangle';
  export { install as TriangleApplianceInstall } from '@polyv/white-board-sdk/appliances/triangle/install';
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  /**
    * 全局教具安装器
    */
  export function GlobalApplianceInstall(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/export/behavior' {
  /**
    * @file 行为模块导出
    */
  export * from '@polyv/white-board-sdk/behaviors/index';
  export * from '@polyv/white-board-sdk/behaviors/clear';
  export { install as ClearBehaviorInstall } from '@polyv/white-board-sdk/behaviors/clear/install';
  export * from '@polyv/white-board-sdk/behaviors/editor';
  export { install as EditorBehaviorInstall } from '@polyv/white-board-sdk/behaviors/editor/install';
  export * from '@polyv/white-board-sdk/behaviors/eraser';
  export { install as EraserBehaviorInstall } from '@polyv/white-board-sdk/behaviors/eraser/install';
  export * from '@polyv/white-board-sdk/behaviors/laser-pen';
  export { install as LaserPenBehaviorInstall } from '@polyv/white-board-sdk/behaviors/laser-pen/install';
  export * from '@polyv/white-board-sdk/behaviors/redo';
  export { install as RedoBehaviorInstall } from '@polyv/white-board-sdk/behaviors/redo/install';
  export * from '@polyv/white-board-sdk/behaviors/undo';
  export { install as UndoBehaviorInstall } from '@polyv/white-board-sdk/behaviors/undo/install';
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  /**
    * 全局行为安装器
    */
  export function GlobalBehaviorInstall(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/export/bridge' {
  export * from '@polyv/white-board-sdk/bridge/white-bridge';
  export { IframeMessage } from '@polyv/white-board-sdk/core/enums/ppt-enum';
  export { IframeMessageData, IframeMessageParam } from '@polyv/white-board-sdk/core/interfaces/ppt';
}

declare module '@polyv/white-board-sdk/export/console' {
  export * from '@polyv/white-board-sdk/console/fn';
  export * from '@polyv/white-board-sdk/console/enum';
  export * from '@polyv/white-board-sdk/console/elog';
}

declare module '@polyv/white-board-sdk/export/core' {
  export * from '@polyv/white-board-sdk/core/WhiteBoard';
  export * from '@polyv/white-board-sdk/core/basic';
  export * from '@polyv/white-board-sdk/core/board';
  export * from '@polyv/white-board-sdk/core/canvas';
  export * from '@polyv/white-board-sdk/core/config';
  export * from '@polyv/white-board-sdk/core/consts';
  export * from '@polyv/white-board-sdk/core/controller';
  export * from '@polyv/white-board-sdk/core/enums';
  export * from '@polyv/white-board-sdk/core/event';
  export * from '@polyv/white-board-sdk/core/interfaces';
  export * from '@polyv/white-board-sdk/core/tools';
  export * from '@polyv/white-board-sdk/core/utils/color';
  export * from '@polyv/white-board-sdk/core/utils/hight-throttle';
  export * from '@polyv/white-board-sdk/core/utils/image-loader';
  export { default as C2S } from 'canvas2svg';
}

declare module '@polyv/white-board-sdk/export/cursor' {
  /**
    * @file 光标模块导出
    */
  export * from '@polyv/white-board-sdk/cursors/index';
  export * from '@polyv/white-board-sdk/cursors/arrow';
  export { install as ArrowCursorAdapterInstall } from '@polyv/white-board-sdk/cursors/arrow/install';
  export * from '@polyv/white-board-sdk/cursors/crosshair';
  export { install as CrosshairCursorAdapterInstall } from '@polyv/white-board-sdk/cursors/crosshair/install';
  export * from '@polyv/white-board-sdk/cursors/eraser';
  export { install as EraserCursorAdapterInstall } from '@polyv/white-board-sdk/cursors/eraser/install';
  export * from '@polyv/white-board-sdk/cursors/laser-pen';
  export { install as LaserPenCursorAdapterInstall } from '@polyv/white-board-sdk/cursors/laser-pen/install';
  export * from '@polyv/white-board-sdk/cursors/pencil';
  export { install as PencilCursorAdapterInstall } from '@polyv/white-board-sdk/cursors/pencil/install';
  export * from '@polyv/white-board-sdk/cursors/text';
  export { install as TextCursorAdapterInstall } from '@polyv/white-board-sdk/cursors/text/install';
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  /**
    * 全局光标适配器安装器
    */
  export function GlobalCursorAdapterInstall(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/export/plugin' {
  /**
    * @file 插件模块导出
    */
  export * from '@polyv/white-board-sdk/plugins/doc-record-plugin';
  export * from '@polyv/white-board-sdk/plugins/navigation-plugin';
  export * from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  export * from '@polyv/white-board-sdk/plugins/thumbnail-plugin';
  export * from '@polyv/white-board-sdk/plugins/tool-plugin';
}

declare module '@polyv/white-board-sdk/export/service' {
  /**
    * @file 服务模块导出
    */
  export * from '@polyv/white-board-sdk/service/_controls';
  export * from '@polyv/white-board-sdk/service/assets';
  export * from '@polyv/white-board-sdk/service/service-core';
  export * from '@polyv/white-board-sdk/service/live-start-service';
  export * from '@polyv/white-board-sdk/service/live-watch-service';
}

declare module '@polyv/white-board-sdk/export/shape-utils' {
  export * from '@polyv/white-board-sdk/core/utils/shape-utils';
}

declare module '@polyv/white-board-sdk/export/shape' {
  /**
    * @file 图形模块导出
    */
  export * from '@polyv/white-board-sdk/shapes/index';
  export * from '@polyv/white-board-sdk/shapes/arrow';
  export { install as ArrowShapeInstall } from '@polyv/white-board-sdk/shapes/arrow/install';
  export * from '@polyv/white-board-sdk/shapes/ellipse';
  export { install as EllipseShapeInstall } from '@polyv/white-board-sdk/shapes/ellipse/install';
  export * from '@polyv/white-board-sdk/shapes/free-line';
  export { install as FreeLineShapeInstall } from '@polyv/white-board-sdk/shapes/free-line/install';
  export * from '@polyv/white-board-sdk/shapes/image';
  export { install as ImageShapeInstall } from '@polyv/white-board-sdk/shapes/image/install';
  export * from '@polyv/white-board-sdk/shapes/laser-pen';
  export { install as LaserPenShapeInstall } from '@polyv/white-board-sdk/shapes/laser-pen/install';
  export * from '@polyv/white-board-sdk/shapes/polygon';
  export { install as PolygonShapeInstall } from '@polyv/white-board-sdk/shapes/polygon/install';
  export * from '@polyv/white-board-sdk/shapes/rect';
  export { install as RectShapeInstall } from '@polyv/white-board-sdk/shapes/rect/install';
  export * from '@polyv/white-board-sdk/shapes/star';
  export { install as StarShapeInstall } from '@polyv/white-board-sdk/shapes/star/install';
  export * from '@polyv/white-board-sdk/shapes/straight-line';
  export { install as StraightLineShapeInstall } from '@polyv/white-board-sdk/shapes/straight-line/install';
  export * from '@polyv/white-board-sdk/shapes/text';
  export { install as TextShapeInstall } from '@polyv/white-board-sdk/shapes/text/install';
  export * from '@polyv/white-board-sdk/shapes/triangle';
  export { install as TriangleShapeInstall } from '@polyv/white-board-sdk/shapes/triangle/install';
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  /**
    * 全局图形安装器
    */
  export function GlobalShapeInstall(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/registers' {
  import { registerAppliance } from '@polyv/white-board-sdk/appliances/index';
  import { registerBehavior } from '@polyv/white-board-sdk/behaviors/index';
  import { registerCursorAdapter } from '@polyv/white-board-sdk/cursors/index';
  import { registerShape } from '@polyv/white-board-sdk/shapes/index';
  /**
    * 白板注册器类型
    */
  export interface WhiteBoardRegisters {
      use: typeof use;
      /** 注册全局教具 */
      registerAppliance: typeof registerAppliance;
      /** 注册全局行为 */
      registerBehavior: typeof registerBehavior;
      /** 注册全局光标适配器 */
      registerCursorAdapter: typeof registerCursorAdapter;
      /** 注册全局图形 */
      registerShape: typeof registerShape;
  }
  /**
    * 白板注册器
    */
  export const globalRegisters: WhiteBoardRegisters;
  /**
    * 安装方法类型
    */
  export type WhiteBoardInstaller = (registers: WhiteBoardRegisters) => unknown;
  /**
    * 安装
    * @param installs 安装方法数组
    */
  export function use(installs?: WhiteBoardInstaller[]): WhiteBoardRegisters;
}

declare module '@polyv/white-board-sdk/ispring' {
  export * from '@polyv/white-board-sdk/ispring/types';
  export * from '@polyv/white-board-sdk/ispring/bridge-ispring';
}

declare module '@polyv/white-board-sdk/utils/dom/dom-query' {
  import { ClientSize, DomQuerySelector, EventCallback } from '@polyv/white-board-sdk/utils/dom/types';
  import { AnyFunc } from '@polyv/white-board-sdk/core';
  /**
    * dom 的查询器
    * @class
    */
  export class DomQuery<T extends DomQuerySelector = DomQuerySelector> {
      /** 选择器 */
      selector: T;
      /** 节点列表 */
      elems: HTMLElement[];
      constructor(selector: T);
      /**
        * 遍历选择器中的元素，回调函数返回 false 时终止遍历
        * @param callback 回调函数
        */
      forEach(callback: (elem: HTMLElement, index?: number) => boolean | unknown): DomQuery<T>;
      /**
        * 在开头插入子元素
        * @param children 子节点
        */
      prepend(children: DomQuerySelector): DomQuery<T>;
      /**
        * 在末端插入子节点
        * @param children 子节点
        */
      append(children: DomQuerySelector): DomQuery<T>;
      /**
        * 设置 / 获取 属性
        * @param key key
        * @param val 属性值
        */
      attr(key: string): string | null;
      attr(key: string, val: string): DomQuery<T>;
      attr(key: Record<string, string>): DomQuery<T>;
      /**
        * 删除属性
        * @param key key
        */
      removeAttr(key: string): DomQuery<T>;
      /**
        * 是否有传入的 css class
        * @param className 样式类名
        */
      hasClass(className?: string): boolean;
      /**
        * 添加 css 的 className
        * @param className 样式类名或列表
        */
      addClass(className?: string | string[]): DomQuery<T>;
      /**
        * 移除 css 的 className
        * @param className 样式类名或列表
        */
      removeClass(className?: string | string[]): DomQuery<T>;
      /**
        * 设置 / 获取元素的 html
        * @param val html
        */
      html(): string;
      html(val: string | number): DomQuery<T>;
      /**
        * 修改 css
        * @param key css key
        * @param val css value
        */
      css(key: string, val: string | number): DomQuery<T>;
      css(key: Record<string, string | number>): DomQuery<T>;
      /**
        * 监听事件
        * @param event 事件名称
        * @param callback 回调事件
        * @param context this 指向
        */
      on<K extends keyof HTMLElementEventMap>(event: K, callback: EventCallback<K>, context?: unknown, options?: boolean | AddEventListenerOptions): DomQuery<T>;
      /**
        * 移除监听事件
        * @param event 事件名称
        * @param callback 回调事件，不传则为移除所有事件
        */
      off(event: string, callback?: any): DomQuery<T>;
      /**
        * 绑定外部点击事件
        * @param fn 回调函数
        * @param context this 上下文
        */
      bindClickOutSide(fn: () => unknown, context?: unknown): this;
      /**
        * 取消所有外部点击事件
        */
      clearClickOutSide(): this;
      /**
        * 根据选择器查询节点
        * @param selector 选择器
        */
      find(selector: string): DomQuery;
      value(): string;
      /**
        * 获取父元素
        */
      parent(): DomQuery | undefined;
      /**
        * 移除当前节点
        */
      remove(): DomQuery<T>;
      /**
        * 获取节点的 scrollTop
        */
      scrollTop(): number;
      /**
        * 获取节点的 scrollLeft
        */
      scrollLeft(): number;
      /**
        * 获取节点的 DOMRect
        */
      getBoundingClientRect(): DOMRect;
      /**
        * 获取节点的 clientWidth 和 clientHeight
        */
      getClientSize(): ClientSize;
      /**
        * 记录节点的 clientWidth 和 clientHeight
        */
      recordClientSize(): void;
      /**
        * 触发聚焦
        */
      triggerFocus(): this;
      /**
        * 触发失焦
        */
      triggerBlur(): this;
      /**
        * 触发点击
        */
      triggerClick(): this;
      /**
        * 显示节点
        * @param style 显示的样式
        */
      show(style?: string): this;
      /**
        * 隐藏节点
        */
      hide(): this;
      /**
        * 禁用节点的拖拽
        */
      disableDrag(): this;
      /**
        * 禁用节点的选择
        */
      disableSelect(): this;
      /**
        * 禁用节点的右键菜单栏
        */
      disableContextMenu(): this;
      /**
        * 绑定尺寸变化事件
        * @param fn 回调方法
        */
      bindSizeSensor(fn: AnyFunc): this;
      /**
        * 清除尺寸变化事件
        */
      clearSizeSensor(): this;
      /**
        * 当前元素，是否包含某个子元素
        * @param $child 子元素
        */
      contains($child: DomQuerySelector): boolean;
      /**
        * 如果节点是 HTMLInputElem，则返回 files
        */
      files(): FileList | null;
      get length(): number;
  }
  /**
    * 创建 dom 的查询器
    * @param arg 选择器
    * @returns 查询器
    */
  export function $<T extends DomQuerySelector>(selector: DomQuerySelector): DomQuery<T>;
  export namespace $ {
      var b: (className: string) => string;
  }
  export default $;
}

declare module '@polyv/white-board-sdk/utils/dom/types' {
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom/dom-query';
  /**
    * Dom 选择器
    */
  export type DomQuerySelector = string | DomQuery | Document | Element | Element[] | HTMLElement | HTMLElement[] | Node | NodeList | HTMLCollection | typeof window;
  /**
    * 回调事件类型
    */
  export type EventCallback<K extends keyof HTMLElementEventMap> = (event: HTMLElementEventMap[K]) => unknown;
  /**
    * 代理对象
    */
  export interface AgentCallbackItem<K extends keyof HTMLElementEventMap = any> {
      event: string;
      callback: EventCallback<K>;
      agentCallback: EventCallback<K>;
  }
  /**
    * dom 节点 client 尺寸信息
    */
  export type ClientSize = {
      width: number;
      height: number;
  };
  global {
      interface HTMLElement {
          /** 编辑器代理对象存储列表 */
          $$DomQueryAgentCallbackStore?: AgentCallbackItem[];
      }
  }
}

declare module '@polyv/white-board-sdk/utils/dom/utils' {
  /**
    * 判断目标是否为 DOM 列表
    * @param selector 选择器
    */
  export function isDomList<T extends HTMLCollection | NodeList>(selector: unknown): selector is T;
  /**
    * 过滤目标数组中的 HTMLElement 对象
    * @param selector 目标
    */
  export function filterHTMLElementList(selector: unknown): HTMLElement[];
  /**
    * 根据 html 字符串创建 elem
    * @param str html字符串
    */
  export function createElemsByHtmlString(str: string): HTMLElement[];
  /**
    * 封装 querySelectorAll
    * @param selector 选择器
    */
  export function querySelectorAll(selector: string): HTMLElement[];
  /**
    * 将 dom 的 style 拆分成 `['width:100px']` 的数组格式
    * @param styleArr css
    */
  export function styleArrTrim(style: string | string[]): string[];
}

declare module '@polyv/white-board-sdk/appliances/index' {
  import { ApplianceCtor } from '@polyv/white-board-sdk/appliances/types';
  export * from '@polyv/white-board-sdk/appliances/types';
  /**
    * 已注册了的教具
    */
  export const registerApplianceList: Set<ApplianceCtor>;
  /**
    * 注册全局教具
    * @param applianceName 教具名称
    * @param Ctor 教具类
    */
  export function registerAppliance(Ctor: ApplianceCtor | ApplianceCtor[]): void;
}

declare module '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core/event';
  import { Shape } from '@polyv/white-board-sdk/core';
  /**
    * 监听类型
    */
  type ListenType = 'on' | 'off';
  /**
    * 教具类
    * @class
    */
  export class Appliance {
      whiteBoard: WhiteBoard;
      /**
        * 回调事件是否需要过滤网格
        */
      protected filterGrid: boolean;
      /**
        * 绘制持续时间
        */
      protected durationTime: number;
      /**
        * 绘制持续时间定时器
        */
      protected durationTimer?: number;
      constructor(whiteBoard: WhiteBoard);
      /**
        * 启动记录持续时间定时器
        * @param shape 作用的图形
        */
      protected startDurationTimer(shape?: Shape): void;
      /**
        * 关闭记录持续时间定时器
        */
      protected closeDurationTimer(): void;
      /**
        * 持续时间修改钩子函数
        */
      protected durationTimerChange(): void;
      /**
        * 当前教具被激活的 hook
        */
      activated(): void;
      /**
        * 当前教具取消激活的 hook
        */
      cancelActivate(): void;
      /**
        * 设置 / 取消 监听 drawDown 事件
        * @param type 类型
        */
      protected listenDragDownEvent(type?: ListenType): this;
      /**
        * drawDown 中间函数
        */
      protected _triggerDragDown(params: SubParamsType<WhiteEvents.TriggeredDrawDown>): void;
      /**
        * 触发 drawDown 的 hook
        */
      protected triggerDragDown(params: SubParamsType<WhiteEvents.TriggeredDrawDown>): void;
      /**
        * 设置 / 取消 监听 drawMove 事件
        * @param type 类型
        */
      protected listenDragMoveEvent(type?: ListenType): this;
      /**
        * drawMove 中间函数
        */
      protected _triggerDragMove(params: SubParamsType<WhiteEvents.TriggeredDrawMove>): void;
      /**
        * 触发 drawMove 的 hook
        */
      protected triggerDragMove(params: SubParamsType<WhiteEvents.TriggeredDrawMove>): void;
      /**
        * 设置 / 取消 监听 drawUp 事件
        * @param type 类型
        */
      protected listenDragUpEvent(type?: ListenType): this;
      /**
        * drawUp 中间函数
        */
      protected _triggerDragUp(params: SubParamsType<WhiteEvents.TriggeredDrawUp>): void;
      /**
        * 触发 drawUp 的 hook
        */
      protected triggerDragUp(params: SubParamsType<WhiteEvents.TriggeredDrawUp>): void;
      /**
        * 设置 / 取消 监听 canvasClick 事件
        */
      protected listenCanvasClick(type?: ListenType): this;
      /**
        * canvasClick 中间函数
        */
      protected _triggerCanvasClick(params: SubParamsType<WhiteEvents.TriggeredCanvasClick>): void;
      /**
        * 触发 canvasClick 的 hook
        */
      protected triggerCanvasClick(params: SubParamsType<WhiteEvents.TriggeredCanvasClick>): void;
      protected listenCanvasMouseMove(type?: ListenType): this;
      /**
        * canvasMove 中间函数
        */
      protected _triggerCanvasMouseMove(params: SubParamsType<WhiteEvents.TriggeredCanvasMouseMove>): void;
      /**
        * 触发 canvasMove 的 hook
        */
      protected triggerCanvasMouseMove(params: SubParamsType<WhiteEvents.TriggeredCanvasMouseMove>): void;
      protected listenCanvasMouseOut(type?: ListenType): this;
      protected triggerCanvasMouseOut(): void;
      protected listenDBFingerMove(type?: ListenType): this;
      /**
        * 触发 dbFingerMove 的 hook
        */
      protected triggerDBFingerMove(params: SubParamsType<WhiteEvents.TriggeredDBFingerMove>): void;
  }
  export {};
}

declare module '@polyv/white-board-sdk/appliances/arrow' {
  import { Appliance } from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  import { ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  import type { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core';
  /**
    * 箭头教具类
    * @class
    */
  export class ArrowAppliance extends Appliance implements ApplianceTarget {
    static applianceName: string;
    applianceName: string;
    cursorName: string;
    activated(): void;
    cancelActivate(): void;
    protected triggerDragDown(params: SubParamsType<WhiteEvents.TriggeredDrawDown>): void;
    protected triggerDragMove(params: SubParamsType<WhiteEvents.TriggeredDrawMove>): void;
    protected triggerDragUp(): void;
  }
}

declare module '@polyv/white-board-sdk/appliances/arrow/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/appliances/choice' {
  import { ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  import { Appliance } from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core/event';
  /**
    * 选择教具类
    * @class
    */
  export class ChoiceAppliance extends Appliance implements ApplianceTarget {
    static applianceName: string;
    applianceName: string;
    cursorName: string;
    activated(): void;
    cancelActivate(): void;
    protected triggerDragDown(params: SubParamsType<WhiteEvents.TriggeredDrawDown>): void;
    protected triggerDragMove(params: SubParamsType<WhiteEvents.TriggeredDrawMove>): void;
    protected triggerDragUp(): void;
    protected triggerCanvasMouseMove(params: SubParamsType<WhiteEvents.TriggeredCanvasMouseMove>): void;
    protected triggerCanvasClick(): void;
    get nearDistance(): number;
  }
}

declare module '@polyv/white-board-sdk/appliances/choice/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/appliances/ellipse' {
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core/event';
  import { Appliance } from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  import { ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  /**
    * 椭圆教具类
    * @class
    */
  export class EllipseAppliance extends Appliance implements ApplianceTarget {
    static applianceName: string;
    applianceName: string;
    cursorName: string;
    activated(): void;
    cancelActivate(): void;
    protected triggerDragDown(params: SubParamsType<WhiteEvents.TriggeredDrawDown>): void;
    protected triggerDragMove(params: SubParamsType<WhiteEvents.TriggeredDrawMove>): void;
    protected triggerDragUp(): void;
  }
}

declare module '@polyv/white-board-sdk/appliances/ellipse/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/appliances/eraser' {
  import { ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  import { Appliance } from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core/event';
  /**
    * 橡皮擦教具类
    * @class
    */
  export class EraserAppliance extends Appliance implements ApplianceTarget {
      static applianceName: string;
      applianceName: string;
      cursorName: string;
      protected filterGrid: boolean;
      activated(): void;
      cancelActivate(): void;
      protected triggerDragDown(params: SubParamsType<WhiteEvents.TriggeredDrawDown>): void;
      protected triggerDragMove(params: SubParamsType<WhiteEvents.TriggeredDrawMove>): void;
  }
}

declare module '@polyv/white-board-sdk/appliances/eraser/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/appliances/free-line' {
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core';
  import { Appliance } from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  import { ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  /**
    * 自由画笔教具类
    * @class
    */
  export class FreeLineAppliance extends Appliance implements ApplianceTarget {
    static applianceName: string;
    applianceName: string;
    cursorName: string;
    cursorHiddenTime: number;
    protected filterGrid: boolean;
    activated(): void;
    cancelActivate(): void;
    protected triggerDragDown(params: SubParamsType<WhiteEvents.TriggeredDrawDown>): void;
    protected triggerDragMove(params: SubParamsType<WhiteEvents.TriggeredDrawMove>): void;
    protected triggerDragUp(): void;
  }
}

declare module '@polyv/white-board-sdk/appliances/free-line/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/appliances/laser-pen' {
  import { ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  import { Appliance } from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core';
  /**
    * 激光笔教具类
    * @class
    */
  export class LaserPenAppliance extends Appliance implements ApplianceTarget {
      static applianceName: string;
      applianceName: string;
      cursorName: string;
      cursorHiddenTime: number;
      filterGrid: boolean;
      activated(): void;
      cancelActivate(): void;
      protected triggerCanvasMouseMove(params: SubParamsType<WhiteEvents.TriggeredCanvasMouseMove>): void;
      protected triggerCanvasMouseOut(): void;
  }
}

declare module '@polyv/white-board-sdk/appliances/laser-pen/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/appliances/move' {
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core/event';
  import { Appliance } from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  import { ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  /**
    * 移动教具类
    * @class
    */
  export class MoveAppliance extends Appliance implements ApplianceTarget {
    static applianceName: string;
    applianceName: string;
    protected filterGrid: boolean;
    activated(): void;
    cancelActivate(): void;
    protected triggerDragDown(params: SubParamsType<WhiteEvents.TriggeredDrawDown>): void;
    protected triggerDragMove(params: SubParamsType<WhiteEvents.TriggeredDrawMove>): void;
    protected triggerDragUp(): void;
  }
}

declare module '@polyv/white-board-sdk/appliances/move/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/appliances/polygon' {
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core/event';
  import { Appliance } from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  import { ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  /**
    * 多边形教具类
    * @class
    */
  export class PolygonAppliance extends Appliance implements ApplianceTarget {
      static applianceName: string;
      applianceName: string;
      cursorName: string;
      /** 与开始点的临近值 */
      nearDistance: number;
      activated(): void;
      cancelActivate(): void;
      protected triggerCanvasClick(params: SubParamsType<WhiteEvents.TriggeredCanvasClick>): void;
      protected triggerCanvasMouseMove(params: SubParamsType<WhiteEvents.TriggeredCanvasMouseMove>): void;
  }
}

declare module '@polyv/white-board-sdk/appliances/polygon/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/appliances/rect' {
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core/event';
  import { Appliance } from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  import { ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  /**
    * 矩形教具类
    * @class
    */
  export class RectAppliance extends Appliance implements ApplianceTarget {
    static applianceName: string;
    applianceName: string;
    cursorName: string;
    cursorHiddenTime: number;
    activated(): void;
    cancelActivate(): void;
    protected triggerDragDown(params: SubParamsType<WhiteEvents.TriggeredDrawDown>): void;
    protected triggerDragMove(params: SubParamsType<WhiteEvents.TriggeredDrawMove>): void;
    protected triggerDragUp(): void;
  }
}

declare module '@polyv/white-board-sdk/appliances/rect/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/appliances/star' {
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core/event';
  import { Appliance } from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  import { ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  /**
    * 星形教具
    * @class
    */
  export class StarAppliance extends Appliance implements ApplianceTarget {
    static applianceName: string;
    applianceName: string;
    cursorName: string;
    activated(): void;
    cancelActivate(): void;
    protected triggerDragDown(params: SubParamsType<WhiteEvents.TriggeredDrawDown>): void;
    protected triggerDragMove(params: SubParamsType<WhiteEvents.TriggeredDrawMove>): void;
    protected triggerDragUp(): void;
  }
}

declare module '@polyv/white-board-sdk/appliances/star/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/appliances/straight-line' {
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core/event';
  import { Appliance } from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  import { ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  /**
    * 直线教具类
    * @class
    */
  export class StraightLineAppliance extends Appliance implements ApplianceTarget {
    static applianceName: string;
    applianceName: string;
    cursorName: string;
    activated(): void;
    cancelActivate(): void;
    protected triggerDragDown(params: SubParamsType<WhiteEvents.TriggeredDrawDown>): void;
    protected triggerDragMove(params: SubParamsType<WhiteEvents.TriggeredDrawMove>): void;
    protected triggerDragUp(): void;
  }
}

declare module '@polyv/white-board-sdk/appliances/straight-line/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/appliances/text' {
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core/event';
  import { Appliance } from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  import { ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  /**
    * 文本教具类
    * @class
    */
  export class TextAppliance extends Appliance implements ApplianceTarget {
      static applianceName: string;
      applianceName: string;
      cursorName: string;
      activated(): void;
      cancelActivate(): void;
      protected triggerCanvasClick(params: SubParamsType<WhiteEvents.TriggeredCanvasClick>): void;
  }
}

declare module '@polyv/white-board-sdk/appliances/text/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/appliances/triangle' {
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core/event';
  import { Appliance } from '@polyv/white-board-sdk/appliances/appliance-ctor/Appliance';
  import { ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  /**
    * 三角形教具类
    * @class
    */
  export class TriangleAppliance extends Appliance implements ApplianceTarget {
    static applianceName: string;
    applianceName: string;
    cursorName: string;
    activated(): void;
    cancelActivate(): void;
    protected triggerDragDown(params: SubParamsType<WhiteEvents.TriggeredDrawDown>): void;
    protected triggerDragMove(params: SubParamsType<WhiteEvents.TriggeredDrawMove>): void;
    protected triggerDragUp(): void;
  }
}

declare module '@polyv/white-board-sdk/appliances/triangle/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/behaviors/index' {
  import { BehaviorCtor, BehaviorMatchStore } from '@polyv/white-board-sdk/core/interfaces/behavior';
  /**
    * 全局行为匹配器
    */
  export const globalBehaviorMatchs: BehaviorMatchStore;
  /**
    * 注册全局行为类
    * @param Ctor 行为类
    */
  export function registerBehavior(Ctor: BehaviorCtor): void;
}

declare module '@polyv/white-board-sdk/behaviors/clear' {
  import { Behavior } from '@polyv/white-board-sdk/core/tools/behavior';
  import { ClearBehaviorBaseData, ClearBehaviorConfig } from '@polyv/white-board-sdk/behaviors/clear/types';
  export * from '@polyv/white-board-sdk/behaviors/clear/types';
  /**
    * 清空行为类
    * @class
    * @description 该类为核心自动注册的行为类，但可重写该类并进行覆盖
    */
  export class ClearBehavior extends Behavior {
      static behaviorName: string;
      behaviorName: string;
      readonly clearIds: string[];
      constructor(config: ClearBehaviorConfig);
      /**
        * 获取清空行为基础数据
        */
      getBaseData(): ClearBehaviorBaseData;
      implement(): void;
  }
}

declare module '@polyv/white-board-sdk/behaviors/clear/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(registers: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/behaviors/editor' {
  import { EditMoveDataType, EditOperation, ShapeSeatZoomData, TextChangeData, ZIndexChangeData } from '@polyv/white-board-sdk/core';
  import { Behavior } from '@polyv/white-board-sdk/core/tools/behavior';
  import { EditorBehaviorBaseData, EditorBehaviorConfig } from '@polyv/white-board-sdk/behaviors/editor/types';
  export * from '@polyv/white-board-sdk/behaviors/editor/types';
  /**
    * 编辑行为类
    * @class
    * @description 该类为核心自动注册的行为类，但可重写该类并进行覆盖
    */
  export class EditorBehavior extends Behavior {
      static behaviorName: string;
      behaviorName: string;
      isActionStackItem: boolean;
      readonly editIds: string[];
      readonly editOperation: EditOperation;
      readonly moveData?: EditMoveDataType;
      readonly seatZoomData?: ShapeSeatZoomData;
      readonly zIndexChangeData?: ZIndexChangeData;
      readonly textChangeData?: TextChangeData;
      constructor(config: EditorBehaviorConfig);
      /**
        * 获取编辑行为基础数据
        */
      getBaseData(): EditorBehaviorBaseData;
      implement(): void;
      undo(): void;
      redo(): void;
  }
}

declare module '@polyv/white-board-sdk/behaviors/editor/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(registers: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/behaviors/eraser' {
  import { Behavior } from '@polyv/white-board-sdk/core/tools/behavior';
  import { EraserBehaviorBaseData, EraserBehaviorConfig } from '@polyv/white-board-sdk/behaviors/eraser/types';
  export * from '@polyv/white-board-sdk/behaviors/eraser/types';
  /**
    * 橡皮擦行为类
    * @class
    * @description 该类为核心自动注册的行为类，但可重写该类并进行覆盖
    */
  export class EraserBehavior extends Behavior {
      static behaviorName: string;
      behaviorName: string;
      isActionStackItem: boolean;
      readonly delIds: string[];
      constructor(config: EraserBehaviorConfig);
      /**
        * 获取橡皮擦行为基础数据
        */
      getBaseData(): EraserBehaviorBaseData;
      implement(): void;
      undo(): void;
      redo(): void;
  }
}

declare module '@polyv/white-board-sdk/behaviors/eraser/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(registers: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/behaviors/laser-pen' {
  import { Behavior } from '@polyv/white-board-sdk/core/tools/behavior';
  import { LaserPenBehaviorBaseData, LaserPenBehaviorConfig } from '@polyv/white-board-sdk/behaviors/laser-pen/types';
  export * from '@polyv/white-board-sdk/behaviors/laser-pen/types';
  export class LaserPenBehavior extends Behavior {
    static behaviorName: string;
    behaviorName: string;
    constructor(config: LaserPenBehaviorConfig);
    /**
      * 获取激光笔行为基础数据
      */
    getBaseData(): LaserPenBehaviorBaseData;
    implement(): void;
  }
}

declare module '@polyv/white-board-sdk/behaviors/laser-pen/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(registers: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/behaviors/redo' {
  import { Behavior } from '@polyv/white-board-sdk/core/tools/behavior';
  import { RedoBehaviorBaseData, RedoBehaviorConfig } from '@polyv/white-board-sdk/behaviors/redo/types';
  export * from '@polyv/white-board-sdk/behaviors/redo/types';
  /**
    * 重做行为类
    * @class
    * @description 该类为核心自动注册的行为类，但可重写该类并进行覆盖
    */
  export class RedoBehavior extends Behavior {
      static behaviorName: string;
      behaviorName: string;
      readonly redoIds: string[];
      constructor(config: RedoBehaviorConfig);
      /**
        * 获取重做行为基础数据
        */
      getBaseData(): RedoBehaviorBaseData;
      implement(): void;
  }
}

declare module '@polyv/white-board-sdk/behaviors/redo/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(registers: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/behaviors/undo' {
  import { Behavior } from '@polyv/white-board-sdk/core/tools/behavior';
  import { UndoBehaviorBaseData, UndoBehaviorConfig } from '@polyv/white-board-sdk/behaviors/undo/types';
  export * from '@polyv/white-board-sdk/behaviors/undo/types';
  /**
    * 撤回行为类
    * @class
    * @description 该类为核心自动注册的行为类，但可重写该类并进行覆盖
    */
  export class UndoBehavior extends Behavior {
      static behaviorName: string;
      behaviorName: string;
      /**
        * 被撤回的标识 id
        */
      readonly undoIds: string[];
      constructor(config: UndoBehaviorConfig);
      /**
        * 获取撤回行为基础数据
        */
      getBaseData(): UndoBehaviorBaseData;
      implement(): void;
  }
}

declare module '@polyv/white-board-sdk/behaviors/undo/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(registers: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/bridge/white-bridge' {
  import 'url-search-params-polyfill';
  import { IframeMessage, IframeMessageData, IframeMessageParam } from '@polyv/white-board-sdk/bridge';
  /**
    * 动画 PPT 的桥接器
    * @class
    */
  export class WhiteBridge {
      /**
        * 当前页面的链接参数处理器
        */
      protected queryParams: URLSearchParams;
      constructor();
      /**
        * 连接桥接器
        * @api
        */
      connectBridge(): void;
      /**
        * 断开桥接器连接
        * @api
        */
      disconnectBridge(): void;
      /**
        * 发送消息到父窗口中
        * @api
        * @param data 数据
        */
      sendMessageToParent(data: IframeMessageData<IframeMessage>): void;
      /**
        * 调整显示视图显示对象的大小
        * @api
        * @hook
        */
      resize(data?: IframeMessageParam[IframeMessage.resize]): void;
      /**
        * 切换到指定页数钩子函数
        * @api
        * @hook
        */
      goToPage(data: IframeMessageParam[IframeMessage.goToPage]): void;
      /**
        * 切换到指定动画步骤钩子函数
        * @api
        * @hook
        */
      goToStepIndex(data: IframeMessageParam[IframeMessage.goToStepIndex]): void;
      /**
        * 切换到下一个动画步骤钩子函数
        * @api
        * @hook
        */
      goToNextStep(): void;
      /**
        * 切换到上一个动画步骤钩子函数
        * @api
        * @hook
        */
      goToPreviousStep(): void;
      /**
        * 默认的打开页
        * @api
        */
      get defaultCurrentPage(): number;
      /**
        * 默认的动画步骤
        * @api
        */
      get defaultStepIndex(): number;
      /**
        * 当前ppt标识
        * @api
        */
      get pptIdent(): string;
      /**
        * 获取白板版本号
        * @api
        */
      get version(): string;
      static checkNumber(target: unknown): boolean;
  }
}

declare module '@polyv/white-board-sdk/core/enums/ppt-enum' {
  /**
    * PPT类型
    * @categroy Ppt
    */
  export enum PptType {
      /** 图片PPT，文档以 img 标签的形式显示 */
      Picture = "picture",
      /** 动画PPT，文档以 iframe 标签打开 animationUrl 地址的形式显示 */
      Animation = "animation"
  }
  /**
    * 动画 PPT 的 iframe 通信事件枚举
    * @enum
    */
  export enum IframeMessage {
      /**
        * ispring 初始化完毕
        * @direction `ispring` -> `sdk`
        */
      ispringInited = "ispringInited",
      /**
        * 调整视图大小
        * @direction `sdk` -> `ispring`
        */
      resize = "resize",
      /**
        * 切换到下一个动画步骤
        * @direction `sdk` -> `ispring`
        */
      goToNextStep = "goToNextStep",
      /**
        * 切换到上一个动画步骤
        * @direction `sdk` -> `ispring`
        */
      goToPreviousStep = "goToPreviousStep",
      /**
        * 切换到指定页
        */
      goToPage = "goToPage",
      /**
        * 切换到指定步骤
        */
      goToStepIndex = "goToStepIndex"
  }
}

declare module '@polyv/white-board-sdk/core/interfaces/ppt' {
  import { IframeMessage, PptType } from '@polyv/white-board-sdk/core/enums/ppt-enum';
  /**
    * PPT 图片数据
    */
  export interface PptImageData {
      /** 图片地址 */
      url: string;
      /** 图片宽度 */
      width: number;
      /** 图片高度 */
      height: number;
  }
  /**
    * PPT JSON 数据结构
    */
  export interface PptJsonType {
      /** PPT 的唯一标识 */
      autoId: string;
      /** 文件名 */
      fileName?: string;
      /** PPT 类型，默认：{@link PptType.Picture} */
      pptType?: PptType;
      /** 动画 PPT 地址，pptType 为 `PptType.ANIATION` 下生效 */
      animationUrl?: string;
      /** 忽略当前页面协议，默认：false */
      ignoreProtocol?: boolean;
      /** 文档宽度 */
      width: number;
      /** 文档高度 */
      height: number;
      /** PPT 的大图数据列表 */
      pptImages: PptImageData[];
      /** 缩略图地址列表 */
      thumbnails: string[];
  }
  export interface SlideStepItem {
      duration: number;
      startTime: number;
  }
  export interface SlideStepInfo {
      stepCount: number;
      stepDuration: number;
      stepList: SlideStepItem[];
  }
  /**
    * 动画 PPT 的各通信参数类型
    */
  export type IframeMessageParam = {
      [IframeMessage.ispringInited]: {
          stepInfo: SlideStepInfo;
      };
      [IframeMessage.resize]: undefined;
      [IframeMessage.goToPage]: {
          page: number;
          stepInfo?: SlideStepInfo;
      };
      [IframeMessage.goToStepIndex]: {
          stepIndex: number;
      };
      [IframeMessage.goToNextStep]: undefined;
      [IframeMessage.goToPreviousStep]: undefined;
  };
  /**
    * 发送到动画 PPT 的 iframe 消息类型
    */
  export interface IframeMessageData<M extends IframeMessage> {
      /** PPT 身份标识 */
      pptIdent?: string;
      /** 事件 */
      message: M;
      /** 事件的参数 */
      params: IframeMessageParam[M];
  }
  /**
    * openPpt 方法参数类型
    */
  export interface OpenPptParams {
      /** PPT JSON 数据 */
      pptJson: PptJsonType;
      /** 打开后默认的当前页 */
      currentPage: number;
      /** 打开后默认的动画步骤数 */
      stepIndex: number;
  }
  /**
    * closePpt 方法参数类型
    */
  export interface ClosePptParams {
      /** 关闭后默认的当前页，默认：0 */
      currentPage?: number;
      /** 关闭后的总页数，默认：1 */
      totalPage?: number;
      /** 是否需要重置分页，默认：true */
      resetPage?: boolean;
  }
  /**
    * 过滤动画 ppt 地址方法参数
    */
  export interface FilterPptUrlParams {
      /** ppt json 数据 */
      pptJson: PptJsonType;
      /** 即将打开的动画 ppt 地址 */
      url: string;
  }
  /**
    * 过滤动画 ppt 地址方法
    */
  export interface FilterPptUrlType {
      (params: FilterPptUrlParams): string;
  }
}

declare module '@polyv/white-board-sdk/console/fn' {
  export type ConsoleOptions = {
      /** 是否发送 elog，默认：true */
      sendELog?: boolean;
      /** 是否打印到控制台
        * @default
        * consoleLog - false
        * consoleInfo - false
        * consoleWarn - true
        * consoleError - true
        * getRejectError - true
        */
      printConsole?: boolean;
  };
  /** 打印前缀 */
  export const LogPrefix = "[white-board-sdk]";
  /**
    * 打印 log 信息
    * @param title
    * @param content
    */
  export function consoleLog(title: string, content: string, options?: ConsoleOptions): void;
  /**
    * 打印 info 信息
    * @param title
    * @param content
    */
  export function consoleInfo(title: string, content: string, options?: ConsoleOptions): void;
  /**
    * 打印 warn 信息
    * @param title
    * @param content
    */
  export function consoleWarn(title: string, content: string, options?: ConsoleOptions): void;
  /**
    * 打印 error 信息
    * @param title
    * @param content
    */
  export function consoleError(title: string, content: string, options?: ConsoleOptions): void;
  /**
    * 获取 Promise 时 reject 的异常对象
    * @param title
    * @param content
    */
  export function getRejectError(title: string, content: string, options?: ConsoleOptions): Error;
}

declare module '@polyv/white-board-sdk/console/enum' {
  /**
    * 信息类型
    */
  export enum ConsoleType {
    /** 代码流程信息 */
    Log = "log",
    /** 业务信息 */
    Info = "info",
    /** 警告信息 */
    Warn = "warn",
    /** 错误信息 */
    Error = "error"
  }
}

declare module '@polyv/white-board-sdk/console/elog' {
  /**
    * @file elog 封装
    */
  import { ELog, ViewerInfo as ELogViewerInfo } from '@polyv/elog-sdk';
  import { ConsoleType } from '@polyv/white-board-sdk/console/enum';
  export const logger: ELog;
  /**
    * 设置日志的频道号
    * @param channelId 频道号
    */
  export const setLoggerChannelId: (channelId: string) => void;
  /**
    * 设置日志的用户信息
    * @param viewerInfo 用户信息
    */
  export const setLoggerUserInfo: (viewerInfo: ELogViewerInfo) => void;
  export const sendELog: (type: ConsoleType, msg: string, send?: boolean) => void;
  export default logger;
}

declare module '@polyv/white-board-sdk/core/WhiteBoard' {
  import { registerAppliance } from '@polyv/white-board-sdk/appliances';
  import { registerBehavior } from '@polyv/white-board-sdk/behaviors';
  import { registerCursorAdapter } from '@polyv/white-board-sdk/cursors';
  import { use } from '@polyv/white-board-sdk/registers';
  import { registerShape } from '@polyv/white-board-sdk/shapes';
  import { $, DomQuery, DomQuerySelector } from '@polyv/white-board-sdk/utils/dom';
  import { Board, DrawBoardParams } from '@polyv/white-board-sdk/core/board';
  import { Canvas } from '@polyv/white-board-sdk/core/canvas';
  import { ConfigCenter } from '@polyv/white-board-sdk/core/config';
  import { AnimationClockController } from '@polyv/white-board-sdk/core/controller/animation-clock';
  import { AppStateController } from '@polyv/white-board-sdk/core/controller/app-state';
  import { ApplianceController } from '@polyv/white-board-sdk/core/controller/appliance';
  import { AuthController } from '@polyv/white-board-sdk/core/controller/auth';
  import { ComputeController } from '@polyv/white-board-sdk/core/controller/compute';
  import { CursorController } from '@polyv/white-board-sdk/core/controller/cursor';
  import { DrawHookController } from '@polyv/white-board-sdk/core/controller/draw-hook';
  import { EditorController } from '@polyv/white-board-sdk/core/controller/editor';
  import { FactoryController } from '@polyv/white-board-sdk/core/controller/factory';
  import { FocusController } from '@polyv/white-board-sdk/core/controller/focus';
  import { GridController } from '@polyv/white-board-sdk/core/controller/grid';
  import { ImageController } from '@polyv/white-board-sdk/core/controller/image';
  import { InteractController } from '@polyv/white-board-sdk/core/controller/interact';
  import { KeyboardController } from '@polyv/white-board-sdk/core/controller/keyboard';
  import { LangController } from '@polyv/white-board-sdk/core/controller/lang';
  import { LaserPenController } from '@polyv/white-board-sdk/core/controller/laser-pen';
  import { ListenCanvasController } from '@polyv/white-board-sdk/core/controller/listen-canvas';
  import { MouseWheelController } from '@polyv/white-board-sdk/core/controller/mouse-wheel';
  import { PageController } from '@polyv/white-board-sdk/core/controller/page';
  import { PluginController } from '@polyv/white-board-sdk/core/controller/plugin';
  import { PptController } from '@polyv/white-board-sdk/core/controller/ppt';
  import { ResizeController } from '@polyv/white-board-sdk/core/controller/resize';
  import { TextInputController } from '@polyv/white-board-sdk/core/controller/text-input';
  import { TouchController } from '@polyv/white-board-sdk/core/controller/touch';
  import { UserRoleController } from '@polyv/white-board-sdk/core/controller/user-role';
  import { UtilsController } from '@polyv/white-board-sdk/core/controller/utils';
  import { ViewController } from '@polyv/white-board-sdk/core/controller/view';
  import { VisionController } from '@polyv/white-board-sdk/core/controller/vision';
  import { WatermarkController } from '@polyv/white-board-sdk/core/controller/watermark';
  import { Auth, EditOperation, OperationModel, PptType, UserRole, ZoomModel, ZoomType } from '@polyv/white-board-sdk/core/enums';
  import { EventCenter, WhiteEvents } from '@polyv/white-board-sdk/core/event';
  import { ResetWhiteBoardParams, UserInfo, WhiteBoardConfig } from '@polyv/white-board-sdk/core/interfaces';
  import { Behavior, EditorBox, SelectRange, Shape, ShapeHightlight, TextInput } from '@polyv/white-board-sdk/core/tools';
  import { ColorHandle } from '@polyv/white-board-sdk/core/utils/color';
  import { HightThrottle } from '@polyv/white-board-sdk/core/utils/hight-throttle';
  import { ImageLoader } from '@polyv/white-board-sdk/core/utils/image-loader';
  /**
    * 白板核心类
    * @class
    */
  export class WhiteBoard {
      static $: typeof $;
      $: typeof $;
      static DomQuery: typeof DomQuery;
      DomQuery: typeof DomQuery;
      static ColorHandle: typeof ColorHandle;
      ColorHandle: typeof ColorHandle;
      static ImageLoader: typeof ImageLoader;
      ImageLoader: typeof ImageLoader;
      static HightThrottle: typeof HightThrottle;
      HightThrottle: typeof HightThrottle;
      static WhiteEvents: typeof WhiteEvents;
      WhiteEvents: typeof WhiteEvents;
      static ZoomModel: typeof ZoomModel;
      ZoomModel: typeof ZoomModel;
      static ZoomType: typeof ZoomType;
      ZoomType: typeof ZoomType;
      static OperationModel: typeof OperationModel;
      OperationModel: typeof OperationModel;
      static Auth: typeof Auth;
      Auth: typeof Auth;
      static PptType: typeof PptType;
      PptType: typeof PptType;
      static EditOperation: typeof EditOperation;
      EditOperation: typeof EditOperation;
      static UserRole: typeof UserRole;
      UserRole: typeof UserRole;
      static Canvas: typeof Canvas;
      Canvas: typeof Canvas;
      static Board: typeof Board;
      Board: typeof Board;
      static Shape: typeof Shape;
      Shape: typeof Shape;
      static Behavior: typeof Behavior;
      Behavior: typeof Behavior;
      static TextInput: typeof TextInput;
      TextInput: typeof TextInput;
      static SelectRange: typeof SelectRange;
      SelectRange: typeof SelectRange;
      static ShapeHightlight: typeof ShapeHightlight;
      ShapeHightlight: typeof ShapeHightlight;
      static EditorBox: typeof EditorBox;
      EditorBox: typeof EditorBox;
      static use: typeof use;
      static registerAppliance: typeof registerAppliance;
      static registerCursorAdapter: typeof registerCursorAdapter;
      static registerShape: typeof registerShape;
      static registerBehavior: typeof registerBehavior;
      /** 是否为移动端环境 */
      isMobile: boolean;
      static isMobile: boolean;
      /** 是否为 iOS 系统 */
      isIOS: boolean;
      static isIOS: boolean;
      /** 是否为 macOS 系统 */
      isMacOS: boolean;
      static isMacOS: boolean;
      static setCss: (content: string) => void;
      setCss: (content: string) => void;
      /** 实例化配置 */
      readonly config: ConfigCenter;
      /** 白板版本号 */
      readonly version: string;
      /** 白板容器选择器 */
      selector: DomQuerySelector;
      /** 用户信息 */
      userInfo?: UserInfo;
      /** 客户端 id */
      clientId: string;
      /** 渲染白板容器 */
      $wrap: DomQuery;
      /** 外层容器 */
      $outSideDiv: DomQuery<HTMLDivElement>;
      /** 内容层容器 */
      $contentDiv: DomQuery<HTMLDivElement>;
      /** 文档容器 */
      $documentDiv: DomQuery<HTMLDivElement>;
      /** 文档内容层，用于管理 PPT 图片和 Iframe 尺寸和位置 */
      $documentContent: DomQuery<HTMLDivElement>;
      /** 画布容器 */
      $canvasDiv: DomQuery<HTMLDivElement>;
      /** 组件容器 */
      $componentDiv: DomQuery<HTMLDivElement>;
      /** 绘制画布 */
      drawCanvas: Canvas;
      /**
        * 动画时钟控制器
        * @description 用于管理图形的动画绘制
        */
      animationClock: AnimationClockController;
      /**
        * 应用状态获取器
        * @description 用于获取当前白板应用的状态
        */
      appState: AppStateController;
      /**
        * 教具管理器
        * @description 用于管理教具
        */
      appliance: ApplianceController;
      /**
        * 权限控制器
        */
      auth: AuthController;
      /**
        * 计算控制器
        * @description 用于计算各种数值
        */
      compute: ComputeController;
      /**
        * 光标控制器
        * @description 用于控制和管理光标
        */
      cursor: CursorController;
      /**
        * 绘制钩子控制器
        * @description 用于管理绘制钩子
        */
      drawHook: DrawHookController;
      /**
        * 编辑控制器
        * @description 用于控制编辑、选区
        */
      editor: EditorController;
      /**
        * 工厂控制器
        * @description 用于创建各种东西
        */
      factory: FactoryController;
      /**
        * 焦点控制器
        * @description 用于控制是否聚焦在白板
        */
      focus: FocusController;
      /**
        * 网格控制器
        * @description 用于管理网格功能
        */
      grid: GridController;
      /**
        * 图片控制器
        * @description 用于处理图片图形的加载
        */
      image: ImageController;
      /**
        * 交互控制器
        * @description 用于提示等交互
        */
      interact: InteractController;
      /**
        * 键盘控制器
        * @description 用户管理键盘事件
        */
      keyboard: KeyboardController;
      /**
        * 语言控制器
        * @description 用于管理语言
        */
      lang: LangController;
      /**
        * 激光笔控制器
        * @description 用于管理激光笔绘制
        */
      laserPen: LaserPenController;
      /**
        * 画布监听控制器
        * @description 用于监听白板的行为事件
        */
      listenCanvas: ListenCanvasController;
      /**
        * 鼠标滚轮控制器
        * @description 用于管理鼠标滚轮功能
        */
      mouseWheel: MouseWheelController;
      /**
        * 分页控制器
        * @description 用于管理分页
        */
      page: PageController;
      /**
        * 插件控制器
        * @description 用于管理插件
        */
      plugin: PluginController;
      /**
        * PPT控制器
        * @description 用于管理ppt
        */
      ppt: PptController;
      /**
        * 尺寸监听器
        * @description 用于监听外层尺寸改变
        */
      resizeListen: ResizeController;
      /**
        * 文本输入控制器
        * @description 用于管理文本输入框
        */
      textInput: TextInputController;
      /**
        * 触摸控制器
        * @description 用于管理移动端下双指缩放等场景
        */
      touch: TouchController;
      /**
        * 视图控制器
        * @description 用于控制视图
        */
      view: ViewController;
      /**
        * 视角控制器
        * @description 用于控制视角
        */
      vision: VisionController;
      /**
        * 用户角色控制器
        * @description 用于控制用户身份
        */
      userRole: UserRoleController;
      /**
        * 水印控制器
        * @description 用于管理水印
        */
      watermark: WatermarkController;
      /**
        * 工具方法控制器
        * @description 用于白板的部分工具方法
        */
      utils: UtilsController;
      /** 是否已初始化完成 */
      isInited: boolean;
      constructor(selector: DomQuerySelector, config?: WhiteBoardConfig);
      /**
        * 获取外层节点
        * @api
        */
      getOutSideDiv(): HTMLDivElement;
      /**
        * 获取内层节点
        * @api
        */
      getContentDiv(): HTMLDivElement;
      /**
        * 设置用户信息
        * @api
        * @param userInfo 用户信息
        * @param setClientId 是否设置 clientId
        */
      setUserInfo(userInfo: UserInfo, setClientId?: boolean): this;
      /**
        * 销毁白板实例
        * @api
        */
      destroy(): void;
      /**
        * 刷新白板状态
        * @api
        */
      resize(): void;
      /**
        * 处理内容层尺寸改变
        */
      handleContentResize(): void;
      /**
        * 修改当前的画板
        * @param board 画板
        */
      changeBoard(board: Board): void;
      /**
        * 根据画板 id 获取画板
        * @api
        * @param boardId 画板 id
        * @description 该方法会在 {@link PageControllerTarget} 被覆盖
        */
      getBoardById(boardId: string): Board | undefined;
      /**
        * 全局中根据 id 获取图形
        * @param id id 或 id列表
        */
      findGlobalShapeById(id: string): Shape | undefined;
      findGlobalShapeById(id: string[]): Shape[];
      /**
        * 构建画板 id
        * @api
        * @param suffix 画板 id 后缀
        */
      createBoardId(suffix: string | number): string;
      /**
        * 重画当前画板到绘制画布中
        * @api
        */
      redrawCurrentBoard(params?: DrawBoardParams): this;
      /**
        * 重置当前画板实例
        * @api
        */
      resetWhiteBoard(params?: ResetWhiteBoardParams): void;
      /**
        * 设置内容层背景色
        * @api
        * @param color 颜色
        */
      setContentBgColor(color: string): this;
      /**
        * 事件中心
        */
      get event(): EventCenter;
      /**
        * 当前画板
        */
      get board(): Board;
  }
}

declare module '@polyv/white-board-sdk/core/basic' {
  import { Board } from '@polyv/white-board-sdk/core/board';
  import { UserInfo } from '@polyv/white-board-sdk/core/interfaces';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { BasicInfoBaseData, BasicInfoConfig } from '@polyv/white-board-sdk/core/basic/types';
  export * from '@polyv/white-board-sdk/core/basic/types';
  /**
    * 基础信息
    * @class
    */
  export class BasicInfo {
      /**
        * 是否为操作栈的对象，默认为 false，作用在 `joinBaseData` 的 api 中读取该字段来判断是否插入 actionStack 中。
        * 在 `Shape` 类中会覆盖为 true。
        * 在 `Behavior` 中会覆盖为 false。
        */
      isActionStackItem: boolean;
      /** 白板实例 */
      whiteBoard: WhiteBoard;
      constructor(config: BasicInfoConfig);
      /**
        * 获取底层基础数据
        */
      getBaseData(): BasicInfoBaseData;
      /**
        * 当前对象被撤回的 hook
        */
      undo(): void;
      /**
        * 当前对象被重做的 hook
        */
      redo(): void;
      /**
        * 当前对象被清空的 hook
        */
      clear(): void;
      /**
        * 用户信息
        */
      get userInfo(): UserInfo | undefined;
      /**
        * 客户端 id
        */
      get clientId(): string;
      /**
        * 标识 id
        */
      get id(): string;
      /**
        * 所在的画板 id
        */
      get boardId(): string;
      /**
        * 当前图形所在的画板
        */
      get board(): Board | undefined;
      /**
        * 是否为实例化白板的用户对象
        * @description 当前对象和所在的白板实例其中一个的 `userInfo.userId` 为空字符串或 `undefined` 时返回 `false`
        */
      get isSelf(): boolean;
      /**
        * 根据操作模式返回是否为当前用户创建的对象
        * @description `NORMAL` 下，永远返回 `true`
        * @description `SELF` 下，根据 `isSelf` 的条件进行判断
        * @description `NEVER` 下，永远返回 `false`
        * @description 其他情况下返回 `true`
        */
      get isSelfByOperationModel(): boolean;
  }
}

declare module '@polyv/white-board-sdk/core/board' {
  import type { Canvas } from '@polyv/white-board-sdk/core/canvas';
  import { TriggerCustomEventParams } from '@polyv/white-board-sdk/core/event';
  import type { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { Shape, SimpleBBox } from '@polyv/white-board-sdk/core/tools/shape';
  import type { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import type { BoardConfig, DrawBoardParams, StackItem } from '@polyv/white-board-sdk/core/board/types';
  export * from '@polyv/white-board-sdk/core/board/types';
  /**
    * 画板类
    * @class
    */
  export class Board {
      whiteBoard: WhiteBoard;
      /** 画板 id */
      boardId: string;
      constructor(whiteBoard: WhiteBoard, config?: BoardConfig);
      /**
        * 重置画板数据
        * @api
        */
      resetBoardData(): void;
      /**
        * 获取最高层叠数
        * @api
        */
      getMaxZIndex(): number;
      /**
        * 向操作栈插入对象
        * @param stackItem 栈对象
        */
      pushActionStack(...stackItems: StackItem[]): this;
      /**
        * 移除操作栈中的栈对象
        * @param stackItem 栈对象
        */
      removeActionStack(...stackItems: (StackItem | string)[]): this;
      /**
        * 向撤回栈插入对象
        * @param stackItem 栈对象
        */
      pushUndoStack(...stackItems: StackItem[]): this;
      /**
        * 移除撤回栈中的栈对象
        * @param stackItem 栈对象
        */
      removeUndoStack(...stackItems: StackItem[]): this;
      /**
        * 向画板历史插入对象
        * @param stackItem 栈对象
        */
      pushHistory(stackItem: StackItem, triggerCustom?: TriggerCustomEventParams): this;
      /**
        * 插入图形缓冲区
        * @param target 图形对象
        */
      pushBuffers(target: Shape): this;
      /**
        * 删除缓冲区中的图形
        * @param target 图形 / 图形 id
        */
      removeBuffer(target: string | Shape): Shape | undefined;
      /**
        * 将当前画板绘制到画布中
        * @api
        * @param canvas 画布对象
        * @param params 参数
        * @description 图形能否绘制执行顺序：`erased` -> `visible` -> `filterBBox`
        */
      drawBoardToCanvas(canvas: Canvas, params?: DrawBoardParams): this;
      /**
        * 当前画板撤回一步操作。
        * 注意该 api 的使用场景为用户主动进行撤回操作。
        * 如果画板并非在当前白板中正在显示的画板，则调用无效。
        * @api
        */
      undo(): this;
      /**
        * 当前画板重做一步操作。
        * 注意该 api 的使用场景为用户主动进行重做操作。
        * 如果画板并非在当前白板中正在显示的画板，则调用无效。
        * @api
        */
      redo(): this;
      /**
        * 清空前端画板。
        * 注意该 api 的使用场景为用户主动进行清空操作。
        * 如果画板并非在当前白板中正在显示的画板，则调用无效。
        * @api
        */
      clear(): this;
      /**
        * 擦除当前画板上某一个世界坐标点附近的图形
        * 注意该 api 的使用场景为用户主动进行擦除操作。
        * 如果画板并非在当前白板中正在显示的画板，则调用无效。
        * @param pointOrIds 世界坐标点或目标 id，如果传入坐标点，则寻找临近的图形
        */
      eraser(pointOrIds: WorldPoint | string[]): this;
      /**
        * 根据 id，从 history 中搜索图形对象
        * @api
        * @param id id 或 id 列表
        */
      findShapeById(id: string): Shape | undefined;
      findShapeById(id: string[]): Shape[];
      /**
        * 传入世界坐标点，在操作栈中寻找距离该坐标靠近的对象
        * @api
        * @param point 目标点
        * @param distance 临近距离
        */
      findNearShape(point: WorldPoint, distance?: number): Shape | undefined;
      /**
        * 根据包围盒，在操作栈中寻找与其相交的图形，如果没有则返回 undefined
        * @param rangeBBox 范围的包围盒
        */
      findIntersectShapes(rangeBBox: SimpleBBox): Shape[] | undefined;
      /**
        * 根据 id 批量撤回对应的操作，该方法不会创建 Undo 对象
        * @param ids id 或 id 集合，传入数组时根据顺序从开始到结束依次入栈到撤回栈中
        */
      batchUndoByIds(ids?: string | string[]): void;
      /**
        * 根据 id 批量重做对应的操作，该方法不会创建 Redo 对象
        * @param ids id 或 id 集合，传入数组时根据顺序从开始到结束依次入栈到操作栈中
        */
      batchRedoByIds(ids?: string | string[]): void;
      /**
        * 根据 id 批量清空对应的操作，该方法不会创建 Clear 对象
        * @param ids id 或 id集合
        */
      batchClearByIds(ids?: string | string[]): void;
      /**
        * 根据 id 批量擦除图形，该方法不会创建 Eraser 对象
        * @param ids id 或 id集合
        */
      batchEraseByIds(ids?: string | string[], erased?: boolean): void;
      /**
        * 遍历历史队列
        * @param fn 遍历方法
        */
      forEachHistory(fn: (stackItem: StackItem) => unknown): void;
      /**
        * 当前画板是否为白板正在显示的画板
        */
      get isCurrent(): boolean;
      /**
        * 图形缓冲区
        */
      get buffers(): Shape[];
      /**
        * 操作栈
        */
      get actionStack(): StackItem[];
      /**
        * 撤回栈
        */
      get undoStack(): StackItem[];
      /**
        * 历史队列
        */
      get history(): StackItem[];
      /**
        * 操作栈是否为空
        */
      get isEmptyActionStack(): boolean;
      /**
        * 撤回栈是否为空
        */
      get isEmptyUndoStack(): boolean;
  }
}

declare module '@polyv/white-board-sdk/core/canvas' {
  import { ZoomModel } from '@polyv/white-board-sdk/core/enums/zoom-enum';
  import { BrowserPoint, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { BBox } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { CanvasBase } from '@polyv/white-board-sdk/core/canvas/base';
  import { CanvasCtxConfig, CanvasStyle } from '@polyv/white-board-sdk/core/canvas/types';
  export * from '@polyv/white-board-sdk/core/canvas/base';
  export * from '@polyv/white-board-sdk/core/canvas/types';
  /**
    * 封装画布类
    * @class
    */
  export class Canvas extends CanvasBase {
      /** 强制缩放百分比 */
      forceZoomPercen?: number;
      /** 强制视角中心点坐标 */
      forceVisionCenter?: WorldPoint;
      /** 强制缩放模式 */
      forceZoomModel?: ZoomModel;
      constructor(config: CanvasCtxConfig);
      /**
        * 设置画布样式，lineWidth、fontSize 会自动进行一次 computeSize 计算
        * @param style 画布样式
        */
      setCanvasStyle(style?: CanvasStyle): this;
      /**
        * 克隆当前画布
        * @param config 覆盖配置
        */
      cloneCanvas(config?: Partial<CanvasCtxConfig>): Canvas;
      /**
        * 获取画布的尺寸
        * @description 根据缩放模式、缩放百分比进行计算
        */
      getClientSize(): {
          width: number;
          height: number;
      };
      /**
        * 获取画布宽度
        */
      getClientWidth(): number;
      /**
        * 获取画布高度
        */
      getClientHeight(): number;
      /**
        * 获取视角的包围盒
        */
      getVisionBBox(): BBox;
      /**
        * 获取坐标系原点的浏览器坐标点
        */
      getCoordinateOriginBrowserPoint(): BrowserPoint;
  }
}

declare module '@polyv/white-board-sdk/core/config' {
  import { WhiteBoardPlugin } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  import { CustomToastFn, FullScreenPosition, LanguageI18n, ProtocolType, RotateAngle, WatermarkConfig } from '@polyv/white-board-sdk/core/controller';
  import { ImageUploadHandler } from '@polyv/white-board-sdk/core/controller/image/types';
  import { OperationModel } from '@polyv/white-board-sdk/core/enums/other-enum';
  import { ZoomModel } from '@polyv/white-board-sdk/core/enums/zoom-enum';
  import { UserInfo, WhiteBoardConfig, WorldPoint, IgnoreFocusEnabledKeys } from '@polyv/white-board-sdk/core/interfaces';
  import { CursorMatchStore } from '@polyv/white-board-sdk/core/interfaces/cursor';
  import { FilterPptUrlType, PptJsonType } from '@polyv/white-board-sdk/core/interfaces/ppt';
  /** 样式命名空间 */
  export const CLASS_NAMESPACE = "plv-white-board";
  /**
    * 组件层的层叠数
    */
  export const ComponentZIndex: {
      /** 文本框层叠数 */
      textInput: number;
      /** 编辑框层叠数 */
      editorBox: number;
      /** 选区范围层叠数 */
      selectRange: number;
      /** 图形高亮层叠数 */
      shapeHightlight: number;
  };
  /** 默认的静态资源协议头 */
  export const defaultStaticProtocol: ProtocolType;
  export const defaultConfig: Required<Omit<WhiteBoardConfig, 'purpose' | 'auths' | 'userInfo' | 'pptJson' | 'filterPptUrl' | 'imageUploadHandler' | 'customToast'>>;
  /**
    * 配置中心
    * @class
    */
  export class ConfigCenter implements Required<Omit<WhiteBoardConfig, 'pptJson' | 'purpose' | 'filterPptUrl' | 'imageUploadHandler' | 'customToast'>> {
      defaultConfig: Required<Omit<WhiteBoardConfig, "userInfo" | "auths" | "pptJson" | "purpose" | "filterPptUrl" | "imageUploadHandler" | "customToast">>;
      constructor(config?: WhiteBoardConfig);
      /**
        * 完整的白板版本号
        */
      get intactVersion(): string;
      /**
        * 白板版本号
        */
      get version(): string;
      /**
        * 白板构建时间
        */
      get buildTime(): string;
      get userInfo(): UserInfo;
      get clientId(): string;
      get width(): string;
      get height(): string;
      get background(): string;
      get contentBg(): string;
      get operationModel(): OperationModel;
      get userRole(): string;
      get currentAppliance(): string;
      get lineWidth(): number;
      get strokeStyle(): string;
      get markerOpacity(): number;
      get markerEnabled(): boolean;
      get fontSize(): number;
      get cursorMatchs(): CursorMatchStore;
      get zoomModel(): ZoomModel;
      get contentProp(): number;
      get zoomPercen(): number;
      get zoomMinPercen(): number;
      get zoomMaxPercen(): number;
      get zoomSpeed(): number;
      get visionCenter(): WorldPoint;
      get boundWidthScale(): number;
      get boundHeightScale(): number;
      get plugins(): WhiteBoardPlugin[];
      get excludeAuths(): string[];
      get includeAuths(): string[];
      /**
        * 内置的所有权限
        */
      get builtInAuths(): string[];
      /**
        * 根据实例化参数中的 `auths` `excludeAuths` `includeAuths` 格式完后的权限列表
        */
      get auths(): string[];
      get gridEnabled(): boolean;
      get gridSize(): number;
      get gridColor(): string;
      get mouseWheelEnabled(): boolean;
      get keyboardEnabled(): boolean;
      get currentPage(): number;
      get totalPage(): number;
      get watermarkConfig(): WatermarkConfig | boolean;
      get pptJson(): PptJsonType | undefined;
      get filterPptUrl(): FilterPptUrlType | undefined;
      get pptStepIndex(): number;
      get rotateAngle(): RotateAngle;
      get fullScreenZIndex(): number;
      get fullScreenTo(): string | HTMLElement;
      get fullScreenPosition(): FullScreenPosition;
      get language(): string;
      get i18ns(): LanguageI18n;
      get compressImage(): boolean;
      get allowImageAccept(): string[];
      get allowImageExtension(): string[];
      get imageFileSizeLimit(): number;
      get imageUploadHandler(): ImageUploadHandler | undefined;
      get customToast(): CustomToastFn | undefined;
      get staticProtocol(): ProtocolType | false;
      /**
        * 世界坐标系宽度
        */
      get baseWorldWidth(): number;
      /**
        * 标准尺寸参考宽度
        */
      get baseSizeWidth(): number;
      /**
        * 是否支持浏览器的 PointerEvent 事件
        */
      get supportPointerEvent(): boolean;
      /**
        * 是否支持动画 PPT
        */
      get supportAnimationPpt(): boolean;
      /**
        * 默认的光标隐藏时间
        */
      get defaultCurrentHiddenTime(): number;
      get defaultWatermarkConfig(): Required<Omit<WatermarkConfig, 'imageWidth'>>;
      /**
        * 文本输入框内边距
        */
      get textInputPadding(): number;
      /**
        * 文本输入框边框宽度
        */
      get textInputBoarderWidth(): number;
      /**
        * 文本输入框行高
        */
      get textLineHeight(): number;
      /**
        * 动画时钟定时器延迟时间，16 毫秒进行一次动画递增
        */
      get animationTimeWait(): number;
      /**
        * 组件层叠数
        */
      get ComponentZIndex(): typeof ComponentZIndex;
      /**
        * 是否忽略聚焦事件
        */
      get ignoreFocusEnabled(): boolean | Record<IgnoreFocusEnabledKeys, boolean>;
  }
}

declare module '@polyv/white-board-sdk/core/consts' {
  export * from '@polyv/white-board-sdk/core/consts/appliance-const';
  export * from '@polyv/white-board-sdk/core/consts/behavior-consts';
  export * from '@polyv/white-board-sdk/core/consts/shape-consts';
}

declare module '@polyv/white-board-sdk/core/controller' {
  export * from '@polyv/white-board-sdk/core/controller/animation-clock';
  export * from '@polyv/white-board-sdk/core/controller/app-state';
  export * from '@polyv/white-board-sdk/core/controller/appliance';
  export * from '@polyv/white-board-sdk/core/controller/auth';
  export * from '@polyv/white-board-sdk/core/controller/compute';
  export * from '@polyv/white-board-sdk/core/controller/Controller';
  export * from '@polyv/white-board-sdk/core/controller/cursor';
  export * from '@polyv/white-board-sdk/core/controller/draw-hook';
  export * from '@polyv/white-board-sdk/core/controller/editor';
  export * from '@polyv/white-board-sdk/core/controller/factory';
  export * from '@polyv/white-board-sdk/core/controller/focus';
  export * from '@polyv/white-board-sdk/core/controller/grid';
  export * from '@polyv/white-board-sdk/core/controller/image';
  export * from '@polyv/white-board-sdk/core/controller/interact';
  export * from '@polyv/white-board-sdk/core/controller/keyboard';
  export * from '@polyv/white-board-sdk/core/controller/lang';
  export * from '@polyv/white-board-sdk/core/controller/laser-pen';
  export * from '@polyv/white-board-sdk/core/controller/listen-canvas';
  export * from '@polyv/white-board-sdk/core/controller/mouse-wheel';
  export * from '@polyv/white-board-sdk/core/controller/page';
  export * from '@polyv/white-board-sdk/core/controller/plugin';
  export * from '@polyv/white-board-sdk/core/controller/ppt';
  export * from '@polyv/white-board-sdk/core/controller/resize';
  export * from '@polyv/white-board-sdk/core/controller/text-input';
  export * from '@polyv/white-board-sdk/core/controller/touch';
  export * from '@polyv/white-board-sdk/core/controller/user-role';
  export * from '@polyv/white-board-sdk/core/controller/utils';
  export * from '@polyv/white-board-sdk/core/controller/view';
  export * from '@polyv/white-board-sdk/core/controller/vision';
  export * from '@polyv/white-board-sdk/core/controller/watermark';
}

declare module '@polyv/white-board-sdk/core/enums' {
  export * from '@polyv/white-board-sdk/core/enums/auth-enum';
  export * from '@polyv/white-board-sdk/core/enums/editor-enum';
  export * from '@polyv/white-board-sdk/core/enums/other-enum';
  export * from '@polyv/white-board-sdk/core/enums/ppt-enum';
  export * from '@polyv/white-board-sdk/core/enums/user-role-enum';
  export * from '@polyv/white-board-sdk/core/enums/zoom-enum';
}

declare module '@polyv/white-board-sdk/core/event' {
  export * from '@polyv/white-board-sdk/core/event/custom-event';
  export * from '@polyv/white-board-sdk/core/event/event-enum';
  export * from '@polyv/white-board-sdk/core/event/types';
  export * from '@polyv/white-board-sdk/core/event/EventCenter';
}

declare module '@polyv/white-board-sdk/core/interfaces' {
  import type { WhiteBoardPlugin } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  import { CustomToastFn, ProtocolType } from '@polyv/white-board-sdk/core/controller';
  import type { ImageUploadHandler } from '@polyv/white-board-sdk/core/controller/image/types';
  import type { LanguageI18n } from '@polyv/white-board-sdk/core/controller/lang/types';
  import type { FullScreenPosition, RotateAngle } from '@polyv/white-board-sdk/core/controller/view/types';
  import type { WatermarkConfig } from '@polyv/white-board-sdk/core/controller/watermark/types';
  import type { OperationModel } from '@polyv/white-board-sdk/core/enums/other-enum';
  import type { ZoomModel } from '@polyv/white-board-sdk/core/enums/zoom-enum';
  import type { BehaviorBaseData } from '@polyv/white-board-sdk/core/interfaces/behavior';
  import type { CursorMatchStore } from '@polyv/white-board-sdk/core/interfaces/cursor';
  import type { FilterPptUrlType, PptJsonType } from '@polyv/white-board-sdk/core/interfaces/ppt';
  import type { ShapeBaseData } from '@polyv/white-board-sdk/core/interfaces/shape';
  export * from '@polyv/white-board-sdk/core/interfaces/behavior';
  export * from '@polyv/white-board-sdk/core/interfaces/cursor';
  export * from '@polyv/white-board-sdk/core/interfaces/editor';
  export * from '@polyv/white-board-sdk/core/interfaces/ppt';
  export * from '@polyv/white-board-sdk/core/interfaces/shape';
  /**
    * 世界坐标点
    */
  export interface WorldPoint {
      x: number;
      y: number;
  }
  /**
    * 浏览器坐标点
    * @description content 左上角为原点的坐标
    */
  export interface BrowserPoint {
      left: number;
      top: number;
  }
  /**
    * 画布坐标点
    * @description 在 canvas 内部的绘制点
    */
  export interface CanvasPoint {
      cx: number;
      cy: number;
  }
  /**
    * 事件触点信息
    */
  export interface EventClientData {
      clientX: number;
      clientY: number;
  }
  /**
    * 忽略聚焦事件传入类型
    */
  export type IgnoreFocusEnabledKeys = 'zoom' | 'pageStep';
  /**
    * 用户信息
    */
  export interface UserInfo {
      /** 用户标识 */
      userId?: string;
      /** 用户名 */
      userName?: string;
      /** 其他信息 */
      [key: string]: any;
  }
  /** 白板实例配置类型 */
  export interface WhiteBoardConfig {
      /** 用户信息，选传 */
      userInfo?: UserInfo;
      /**
        * 客户端 id，优先级：`clientId` > `userInfo.userId` > 随机数
        */
      clientId?: string;
      /** 用途，用于打印信息 */
      purpose?: string;
      /** 白板宽度，默认：100% */
      width?: string;
      /** 白板高度，默认：100% */
      height?: string;
      /** 白板外层背景，默认：none */
      background?: string;
      /** 白板内层背景，默认：none */
      contentBg?: string;
      /** 操作模式，默认：`OperationModel.NORMAL` */
      operationModel?: OperationModel;
      /**
        * 用户角色，默认：空；
        * 注意！传入角色后部分参数会被覆盖
        */
      userRole?: string;
      /** 教具，默认：空 */
      currentAppliance?: string;
      /** 笔触大小，默认：2 */
      lineWidth?: number;
      /** 笔触颜色，默认：#ff5b5b */
      strokeStyle?: string;
      /** 马克笔透明度，默认：0.5 */
      markerOpacity?: number;
      /** 自由画笔时是否使用马克笔，默认：false */
      markerEnabled?: boolean;
      /** 字体大小，默认：15 */
      fontSize?: number;
      /** 光标适配器匹配对象，key 值为光标名称 `cursorName` */
      cursorMatchs?: CursorMatchStore;
      /** 白板内层比例，不传或传0为铺满外层，默认：0 */
      contentProp?: number | undefined;
      /** 缩放模式，默认：`ZoomModel.ZOOM_INSIDE` */
      zoomModel?: ZoomModel;
      /** 缩放百分比，默认：1 */
      zoomPercen?: number;
      /** 最小缩放百分比，默认：0.2 */
      zoomMinPercen?: number;
      /** 最大缩放百分比，默认：5 */
      zoomMaxPercen?: number;
      /** 移动端双指缩放速度，默认：1，值越大，速度越慢 */
      zoomSpeed?: number;
      /** 视角中心点坐标，默认：{ x: 0, y: 0 } */
      visionCenter?: WorldPoint;
      /** 坐标系宽度边界百分比，默认：Infinity */
      boundWidthScale?: number;
      /** 坐标系高度边界百分比，默认：Infinity */
      boundHeightScale?: number;
      /** 插件列表 */
      plugins?: WhiteBoardPlugin[];
      /** 权限列表，默认具有所有的内置权限 */
      auths?: string[];
      /** 从 `auths` 中导入某些权限 */
      includeAuths?: string[];
      /** 从 `auths` 中剔除某些权限，优先级高于 `includeAuths` */
      excludeAuths?: string[];
      /** 是否开启网格，默认：false */
      gridEnabled?: boolean;
      /** 网格大小，单位：px，默认：16 */
      gridSize?: number;
      /** 网格颜色，默认：#D0D0D0 */
      gridColor?: string;
      /** 鼠标滚轮开关，默认：true */
      mouseWheelEnabled?: boolean;
      /** 键盘控制开关，默认：true */
      keyboardEnabled?: boolean;
      /** 当前页数，默认：0 */
      currentPage?: number;
      /** 总页数，默认：1 */
      totalPage?: number;
      /** 水印配置，默认：false */
      watermarkConfig?: WatermarkConfig | boolean;
      /** 默认打开的 PPT */
      pptJson?: PptJsonType;
      /** 创建后动画PPT的默认当前页的动画步骤索引，从 0 开始，默认：0 */
      pptStepIndex?: number;
      /** 过滤动画 ppt 地址 */
      filterPptUrl?: FilterPptUrlType;
      /** 创建后的旋转角度，默认：0 */
      rotateAngle?: RotateAngle;
      /** 网页全屏下的 z-index 层叠数 */
      fullScreenZIndex?: number;
      /**
        * 网页全屏下插入的节点，默认：无
        * @deprecated
        */
      fullScreenTo?: string | HTMLElement;
      /** 网页全屏下的 position 定位方式，默认：fixed */
      fullScreenPosition?: FullScreenPosition;
      /** 语言 */
      language?: string;
      /** 语言配置 */
      i18ns?: LanguageI18n;
      /** 是否进行图片压缩加载，默认：true */
      compressImage?: boolean;
      /** 允许的图片类型 */
      allowImageAccept?: string[];
      /** 允许的图片文件扩展名 */
      allowImageExtension?: string[];
      /** 图片文件大小限制，传 0 表示不限制，单位：kb，默认：2 * 1024 */
      imageFileSizeLimit?: number;
      /** 图片上传处理 */
      imageUploadHandler?: ImageUploadHandler;
      /** 自定义 toast */
      customToast?: CustomToastFn;
      /** 静态资源的协议头，传入 false 则不设置协议头，默认：https */
      staticProtocol?: ProtocolType | boolean;
      /** 忽略聚焦白板才能响应键盘事件的条件，对象可传属性：zoom、flip，默认：false */
      ignoreFocusEnabled?: boolean | Record<IgnoreFocusEnabledKeys, boolean>;
  }
  /** 代表任意的函数类型 */
  export type AnyFunc = (...arg: any[]) => unknown;
  /** 事件回调类型 */
  export type TriggeredEvent = TouchEvent | PointerEvent | MouseEvent;
  /** 图形或行为的基础数据类型 */
  export type BaseDataType = ShapeBaseData | BehaviorBaseData;
  /**
    * resetWhiteBoard 调用参数
    */
  export interface ResetWhiteBoardParams {
      /** 当前页，默认：0 */
      currentPage?: number;
      /** 总页数，默认：1 */
      totalPage?: number;
  }
}

declare module '@polyv/white-board-sdk/core/tools' {
  export * from '@polyv/white-board-sdk/core/tools/animation-task';
  export * from '@polyv/white-board-sdk/core/tools/editor-box';
  export * from '@polyv/white-board-sdk/core/tools/behavior';
  export * from '@polyv/white-board-sdk/core/tools/shape';
  export * from '@polyv/white-board-sdk/core/tools/select-range';
  export * from '@polyv/white-board-sdk/core/tools/shape-hightlight';
  export * from '@polyv/white-board-sdk/core/tools/text-input';
}

declare module '@polyv/white-board-sdk/core/utils/color' {
  import tinycolor from 'tinycolor2';
  /**
    * 颜色处理类
    * @class
    * @description 封装 `tinycolor`
    */
  export class ColorHandle {
      /**
        * 判断两个颜色是否一致
        * @param color1 颜色1
        * @param color2 颜色2
        */
      static isEqual(color1: string, color2: string): boolean;
      constructor(color: string);
      /**
        * 验证颜色是否合法
        */
      isValid(): boolean;
      /**
        * 获取 hex 格式的颜色字符
        */
      toHexString(): string;
      toRgbString(): string;
      setAlpha(alpha: number): this;
      toHsl(): tinycolor.ColorFormats.HSLA;
  }
}

declare module '@polyv/white-board-sdk/core/utils/hight-throttle' {
  /**
    * 高频节流
    * @class
    */
  export class HightThrottle {
      /** 延迟时间，16ms */
      static wait: number;
      wait: number;
      /**
        * 销毁节流器
        */
      destroy(): void;
      /**
        * 设置节流开关
        * @param enabled 开关，默认：true
        */
      setEnabled(enabled?: boolean): void;
      /**
        * 节流模式执行高频操作
        * @optimize 在与鼠标、触摸等高频的操作，涉及到重绘等操作使用节流
        * @param fn 操作
        */
      do(fn: () => void): void;
  }
}

declare module '@polyv/white-board-sdk/core/utils/image-loader' {
  /**
    * 图片加载器
    * @class
    */
  export class ImageLoader {
      constructor();
      /**
        * 销毁图片控制器
        */
      destroy(): void;
      addLoadImgs(imgs?: string[]): void;
      /**
        * 移除等待加载队列中的一张图片
        * @param url 图片地址
        */
      removeWaitImg(url: string): void;
      /**
        * 异步加载一张图片
        * @param url 图片地址
        * @returns Promise 的 HTMLImageElement
        */
      loadImgUrl(url: string): Promise<HTMLImageElement>;
  }
}

declare module '@polyv/white-board-sdk/cursors/index' {
  import { CursorAdapterCtor, CursorMatchStore } from '@polyv/white-board-sdk/core/interfaces/cursor';
  export { Cursor } from '@polyv/white-board-sdk/core/controller/cursor/Cursor';
  /**
    * 全局的光标节点获取方法
    */
  export const globalCursorMatchs: CursorMatchStore;
  /**
    * 注册全局的光标适配器
    * @param cursorName 光标名称
    * @param adapterCtor 适配器类
    */
  export function registerCursorAdapter(AdapterCtor: CursorAdapterCtor): void;
}

declare module '@polyv/white-board-sdk/cursors/arrow' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core';
  import { Cursor } from '@polyv/white-board-sdk/core/controller/cursor/Cursor';
  import { CursorAdapter } from '@polyv/white-board-sdk/core/interfaces/cursor';
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  /**
    * @constant 箭头光标名称
    */
  export const ARROW_CURSOR_NAME = "arrow";
  /**
    * 箭头光标适配器
    * @class
    */
  export class ArrowCursorAdapter implements CursorAdapter {
      whiteBoard: WhiteBoard;
      cursor?: Cursor | undefined;
      static cursorName: string;
      cursorName: string;
      constructor(whiteBoard: WhiteBoard, cursor?: Cursor | undefined);
      getCursorElem(): DomQuery;
  }
}

declare module '@polyv/white-board-sdk/cursors/arrow/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(registers: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/cursors/crosshair' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core';
  import { Cursor } from '@polyv/white-board-sdk/core/controller/cursor/Cursor';
  import { CursorAdapter } from '@polyv/white-board-sdk/core/interfaces/cursor';
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  /**
    * @constant 十字针光标名称
    */
  export const CROSSHAIR_CURSOR_NAME = "crosshair";
  /**
    * 十字针光标适配器
    * @class
    */
  export class CrosshairCursorAdapter implements CursorAdapter {
      whiteBoard: WhiteBoard;
      cursor?: Cursor | undefined;
      static cursorName: string;
      cursorName: string;
      constructor(whiteBoard: WhiteBoard, cursor?: Cursor | undefined);
      getCursorElem(): DomQuery;
  }
}

declare module '@polyv/white-board-sdk/cursors/crosshair/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(registers: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/cursors/eraser' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core';
  import { Cursor } from '@polyv/white-board-sdk/core/controller/cursor/Cursor';
  import { CursorAdapter } from '@polyv/white-board-sdk/core/interfaces/cursor';
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  /**
    * @constant 橡皮擦光标名称
    */
  export const ERASER_CURSOR_NAME = "eraser";
  /**
    * 橡皮擦光标适配器
    * @class
    */
  export class EraserCursorAdapter implements CursorAdapter {
      whiteBoard: WhiteBoard;
      cursor?: Cursor | undefined;
      static cursorName: string;
      cursorName: string;
      constructor(whiteBoard: WhiteBoard, cursor?: Cursor | undefined);
      getCursorElem(): DomQuery;
      getCursorStyle(): string;
  }
}

declare module '@polyv/white-board-sdk/cursors/eraser/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(registers: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/cursors/laser-pen' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core';
  import { Cursor } from '@polyv/white-board-sdk/core/controller/cursor/Cursor';
  import { CursorAdapter } from '@polyv/white-board-sdk/core/interfaces/cursor';
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  /**
    * @constant 激光笔光标名称
    */
  export const LASER_PEN_CURSOR_NAME = "laser-pen";
  /**
    * 激光笔光标适配器
    * @class
    */
  export class LaserPenCursorAdapter implements CursorAdapter {
      whiteBoard: WhiteBoard;
      cursor?: Cursor | undefined;
      static cursorName: string;
      cursorName: string;
      constructor(whiteBoard: WhiteBoard, cursor?: Cursor | undefined);
      getCursorElem(): DomQuery;
      getCursorStyle(): string;
  }
}

declare module '@polyv/white-board-sdk/cursors/laser-pen/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(registers: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/cursors/pencil' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core';
  import { Cursor } from '@polyv/white-board-sdk/core/controller/cursor/Cursor';
  import { CursorAdapter } from '@polyv/white-board-sdk/core/interfaces/cursor';
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  /**
    * @constant 铅笔光标名称
    */
  export const PENCIL_CURSOR_NAME = "pencil";
  /**
    * 铅笔光标适配器
    * @class
    */
  export class PencilCursorAdapter implements CursorAdapter {
      whiteBoard: WhiteBoard;
      cursor?: Cursor | undefined;
      static cursorName: string;
      cursorName: string;
      constructor(whiteBoard: WhiteBoard, cursor?: Cursor | undefined);
      getCursorElem(): DomQuery;
      getCursorStyle(): string;
  }
}

declare module '@polyv/white-board-sdk/cursors/pencil/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(registers: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/cursors/text' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core';
  import { Cursor } from '@polyv/white-board-sdk/core/controller/cursor/Cursor';
  import { CursorAdapter } from '@polyv/white-board-sdk/core/interfaces/cursor';
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  /**
    * @constant 文本光标名称
    */
  export const TEXT_CURSOR_NAME = "text";
  /**
    * 文本光标适配器
    * @class
    */
  export class TextCursorAdapter implements CursorAdapter {
      whiteBoard: WhiteBoard;
      cursor?: Cursor | undefined;
      static cursorName: string;
      cursorName: string;
      constructor(whiteBoard: WhiteBoard, cursor?: Cursor | undefined);
      getCursorElem(): DomQuery;
  }
}

declare module '@polyv/white-board-sdk/cursors/text/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(registers: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/plugins/doc-record-plugin' {
  import { WhiteBoardPlugin } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  import { DocRecordPluginConfig, RemoveDocRecordResult } from '@polyv/white-board-sdk/plugins/doc-record-plugin/types';
  export * from '@polyv/white-board-sdk/plugins/doc-record-plugin/types';
  /**
    * 文档记录插件
    * @class
    */
  export class DocRecordPlugin extends WhiteBoardPlugin<DocRecordPluginConfig> {
      constructor(config?: DocRecordPluginConfig);
      /**
        * @ignore
        */
      inited(): void;
      /**
        * @ignore
        */
      beforeDestroy(): void;
      /**
        * 移除文档记录中的 autoId
        * @api
        * @param autoId
        */
      removeDocRecord(autoId: string | number): RemoveDocRecordResult | undefined;
  }
}

declare module '@polyv/white-board-sdk/plugins/navigation-plugin' {
  import { WhiteBoardPlugin } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  import { NavigationPluginConfig } from '@polyv/white-board-sdk/plugins/navigation-plugin/types';
  export * from '@polyv/white-board-sdk/plugins/navigation-plugin/types';
  /**
    * 导航插件
    * @class
    */
  export class NavigationPlugin extends WhiteBoardPlugin<NavigationPluginConfig> {
      constructor(config: NavigationPluginConfig);
      inited(): void;
  }
}

declare module '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  /**
    * 白板插件配置
    */
  export interface WhiteBoardPluginConfig {
  }
  /**
    * 白板插件
    * @class
    */
  export class WhiteBoardPlugin<C extends WhiteBoardPluginConfig = WhiteBoardPluginConfig> {
      /** 白板实例 */
      whiteBoard?: WhiteBoard;
      /** 插件配置 */
      protected config: C;
      constructor(config: C);
      /**
        * 设置白板实例
        * @ignore
        * @param whiteBoard 白板实例
        */
      setWhiteBoard(whiteBoard: WhiteBoard): void;
      /**
        * 移除白板实例
        * @ignore
        */
      removeWhiteBoard(): void;
      /**
        * 安装完成的 hook，此时可以访问 `whiteBoard` 实例
        * @hook
        * @ignore
        */
      installed(): void;
      /**
        * 白板初始化完成的 hook，此时可以访问 `whiteBoard` 实例所有的 api
        * @hook
        * @ignore
        */
      inited(): void;
      /**
        * 插件被销毁之前的 hook
        * @hook
        * @ignore
        * @description 注意：`this.whiteBoard` 未必是存在，如果该插件未安装进白板实例时，则不会存在该属性。
        */
      beforeDestroy(): void;
      /**
        * 插件被销毁之后的 hook，此时插件的 `whiteBoard` 已被移除，同时也不在白板的插件列表中
        * @hook
        * @ignore
        */
      destroyed(): void;
      /**
        * 销毁当前插件
        * @api
        */
      destroy(): void;
  }
}

declare module '@polyv/white-board-sdk/plugins/thumbnail-plugin' {
  import { ThumbnailDataPlugin } from '@polyv/white-board-sdk/plugins/thumbnail-plugin/thumbnail-data';
  import { ThumbnailPluginConfig } from '@polyv/white-board-sdk/plugins/thumbnail-plugin/types';
  export * from '@polyv/white-board-sdk/plugins/thumbnail-plugin/types';
  export * from '@polyv/white-board-sdk/plugins/thumbnail-plugin/thumbnail-data';
  /**
    * 缩略图插件
    * @class
    */
  export class ThumbnailPlugin<C extends ThumbnailPluginConfig = ThumbnailPluginConfig> extends ThumbnailDataPlugin<C> {
      constructor(config?: ThumbnailPluginConfig);
      /**
        * @ignore
        */
      inited(): void;
      /**
        * @ignore
        */
      beforeDestroy(): void;
      protected refreshThumbnails(): void;
      protected setCurrent(): void;
  }
}

declare module '@polyv/white-board-sdk/plugins/tool-plugin' {
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  import { WhiteBoardPlugin } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  import { OperationIntercept, ToolPluginConfig } from '@polyv/white-board-sdk/plugins/tool-plugin/types';
  export * from '@polyv/white-board-sdk/plugins/tool-plugin/types';
  export * from '@polyv/white-board-sdk/plugins/tool-plugin/constant';
  /**
    * 白板工具插件
    * @class
    */
  export class ToolPlugin extends WhiteBoardPlugin<ToolPluginConfig> {
      $el: DomQuery;
      /** 选中状态下的样式类名 */
      currentClassName: string;
      /** 禁用状态下的样式类名 */
      disabledClassName: string;
      /** data-set 前缀 */
      nodeAttrPrefix: string;
      /** 撤回拦截 */
      beforeUndo?: OperationIntercept;
      /** 重做拦截 */
      beforeRedo?: OperationIntercept;
      /** 清空拦截 */
      beforeClear?: OperationIntercept;
      constructor(config?: ToolPluginConfig);
      inited(): void;
      beforeDestroy(): void;
      /**
        * 移除节点的选中、禁用 className
        * @param $elems 节点选择器
        */
      removeElemClassName(selector: string | DomQuery): void;
      /**
        * 添加激活 className
        * @param $elems 节点选择器
        */
      addCurrentClassName(selector: string | DomQuery): void;
      /**
        * 添加禁用 className
        * @param $elems 节点选择器
        */
      addDisabledClassName(selector: string | DomQuery): void;
      /**
        * 构建 attr 选择器
        * @param suffix dateset后缀
        * @param brackets 是否添加中括号，选传，默认为true
        * @returns 选择器
        */
      buildAttr(suffix: string, brackets?: boolean): string;
  }
}

declare module '@polyv/white-board-sdk/service/_controls' {
  export * from '@polyv/white-board-sdk/service/_controls/draw-mark';
  export * from '@polyv/white-board-sdk/service/_controls/execute-delayer';
  export * from '@polyv/white-board-sdk/service/_controls/playback';
}

declare module '@polyv/white-board-sdk/service/assets' {
  export * from '@polyv/white-board-sdk/service/assets/config';
  export * from '@polyv/white-board-sdk/service/assets/enums';
  export * from '@polyv/white-board-sdk/service/assets/interfaces';
  export * from '@polyv/white-board-sdk/service/assets/request';
  export * from '@polyv/white-board-sdk/service/assets/utils';
}

declare module '@polyv/white-board-sdk/service/service-core' {
  import type { PptJsonType, SubParamsType, UserInfo, WhiteBoard, WhiteEvents } from '@polyv/white-board-sdk/core';
  import { WhiteBoardPlugin } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  import { ServiceName } from '@polyv/white-board-sdk/service/assets';
  import { DomainInfo, EnabledType, OnSliceControlSwitchAnimationDataType, OnSliceControlSwitchPageDataType, PolyvChannelIdType, PolyvDocJson, PolyvDocJsonV1, PolyvDocJsonV2, PolyvDocType, PolyvRoomIdType, PolyvSessionIdType, SeiInfo, ServiceCommonParams } from '@polyv/white-board-sdk/service/assets/interfaces';
  import { OnSliceCloseType, OnSliceControlType, OnSliceDrawType, OnSliceIdType, OnSliceOpenType, OnSliceStartType, PptVideoPosition, SliceCommonType, SocketType } from '@polyv/white-board-sdk/service/assets/interfaces/socket-types';
  import { getPolyvDocJson, GetPolyvDocJsonParams } from '@polyv/white-board-sdk/service/assets/request';
  import { formatDocJson, FormatDocJsonParams, formatSocketData, isRightEvent } from '@polyv/white-board-sdk/service/assets/utils';
  import { CompatibleDataController } from '@polyv/white-board-sdk/service/_controls/compatible-data';
  import { DrawMarkController } from '@polyv/white-board-sdk/service/_controls/draw-mark';
  import { ExecuteDelayer } from '@polyv/white-board-sdk/service/_controls/execute-delayer';
  import { HistoryRequestController } from '@polyv/white-board-sdk/service/_controls/history-request';
  import { PlaybackController } from '@polyv/white-board-sdk/service/_controls/playback';
  import { InitServiceStatusParams, JoinSocketDataParams, MainScreenChangeCallback, PolyvServiceConfig, SendSocketDataFn, SetWhiteBoardPptParams } from '@polyv/white-board-sdk/service/service-core/types';
  export * from '@polyv/white-board-sdk/service/service-core/types';
  /**
    * 保利威服务基础类
    * @class
    */
  export class PolyvService<C extends PolyvServiceConfig = PolyvServiceConfig> extends WhiteBoardPlugin<C> {
      /** 服务名称 */
      serviceName: ServiceName;
      /** 频道号 */
      channelId?: PolyvChannelIdType;
      /** 房间号 */
      roomId?: PolyvRoomIdType;
      /** 场次号 */
      sessionId?: PolyvSessionIdType;
      /** 是否需要 sessionId */
      readonly needSessionId: boolean;
      /** 是否检查 drawMark 记录 */
      pptCheckDrawMarkEnabled: EnabledType;
      /** 域名信息 */
      domainInfo: Required<DomainInfo>;
      /** 当切换到白板时的内容层背景色 */
      readonly whiteBoardContentBg?: string;
      /** 当切换到白板时的内容层比例 */
      readonly contentPropWhenWhiteBoard?: number;
      /** 当切换到白板时的总页数 */
      readonly totalPageWhenWhiteBoard: number;
      /** 发送 socket 数据钩子函数 */
      readonly sendSocketData?: SendSocketDataFn;
      /** 文档与视频位置改变回调 */
      readonly mainScreenChangeCallback?: MainScreenChangeCallback;
      /** 执行延迟器 */
      readonly executeDelayer: ExecuteDelayer;
      /** 回放控制器 */
      readonly playback: PlaybackController;
      /** 绘制记录控制器 */
      readonly drawMarkCtrl: DrawMarkController;
      /** 旧版数据兼容控制器 */
      readonly compatibleData: CompatibleDataController;
      /** 历史请求控制器 */
      readonly historyRequest: HistoryRequestController;
      constructor(config?: PolyvServiceConfig);
      inited(): void;
      beforeDestroy(): void;
      /**
        * 设置日志信息
        */
      protected setLoggerInfo(): void;
      /**
        * 获取服务公用参数
        * @param params 额外的参数
        */
      getServiceCommonParams<T = ServiceCommonParams>(params?: T): ServiceCommonParams & T;
      /**
        * 调用接口获取 docJson
        */
      getPolyvDocJson(params: GetPolyvDocJsonParams): Promise<PolyvDocJsonV1 | PolyvDocJsonV2>;
      static getPolyvDocJson: typeof getPolyvDocJson;
      /**
        * 判断 socket 中的事件是否为服务内部所需的事件
        * @param data json 字符串或 json 数据
        */
      isRightEvent: typeof isRightEvent;
      static isRightEvent: typeof isRightEvent;
      /**
        * 处理从接口获取的pptjson数据，转换为白板格式
        * @param docJson 保利威ppt的json
        */
      formatDocJson: (docJson: PolyvDocJson, params?: FormatDocJsonParams) => Promise<PptJsonType>;
      static formatDocJson: typeof formatDocJson;
      /**
        * 格式化 socket 数据，格式失败时会返回 `undefined`
        * @param data json 字符串或 json 数据
        */
      formatSocketData: typeof formatSocketData;
      static formatSocketData: typeof formatSocketData;
      /**
        * 处理 ppt json 改变
        */
      protected handlePptJsonChanged(): void;
      /**
        * 获取发送 socket 的公共数据
        */
      protected getSliceCommonData(): SliceCommonType;
      /**
        * 触发发送 Socket 数据钩子函数
        * @param data 发送的 Socket 数据
        */
      protected triggerSendSocketData(data: string | SocketType): void;
      /**
        * 设置 sei 信息
        * @api
        * @param seiInfo
        */
      setSeiInfo(seiInfo?: SeiInfo): void;
      /**
        * 插入 socket 消息
        * @api
        * @param data socket 消息数据
        */
      joinSocketData(data: string | SocketType, params?: JoinSocketDataParams): void;
      /**
        * 处理 onSliceId 数据
        * @param socketData
        */
      protected handleOnSliceId(socketData: OnSliceIdType): Promise<void>;
      /**
        * 处理 OnSliceStart 数据
        * @param socketData
        */
      protected handleOnSliceStart(socketData: OnSliceStartType): Promise<void>;
      /**
        * 处理 onSliceOpen 数据
        * @param socketData
        */
      protected handleOnSliceOpen(socketData: OnSliceOpenType): Promise<void>;
      /**
        * 处理 onSliceClose 数据
        * @param socketData
        */
      protected handleOnSliceClose(socketData: OnSliceCloseType): Promise<void>;
      /**
        * 处理 onSliceControl 数据
        * @param socketData
        */
      protected handleOnSliceControl(socketData: OnSliceControlType, params?: JoinSocketDataParams): Promise<void>;
      /**
        * 处理 onSliceDraw 数据
        * @param socketData
        * @param useAnimation 是否使用动画绘制，默认：true
        */
      protected handleOnSliceDraw(socketData: OnSliceDrawType, params?: JoinSocketDataParams): Promise<void>;
      /**
        * @todo 待补充注释并重新命名方法
        */
      initServiceStatus(socketData: InitServiceStatusParams): Promise<void>;
      /**
        * 设置白板实例的ppt/白板，注意该方法会重置分页
        */
      setWhiteBoardPpt(params: SetWhiteBoardPptParams): Promise<void>;
      /**
        * 初始化白板实例某页的历史
        * @param whiteBoard 白板实例
        * @param page 页数
        */
      protected initWhiteBoardPageHistory(whiteBoard: WhiteBoard, page: number): Promise<void>;
      /**
        * 页数改变，获取画板的历史记录
        */
      protected getHistoryByPageChange(data: SubParamsType<WhiteEvents.CurrentPageChanged>): Promise<void>;
      /**
        * 设置服务的用户信息
        * @param userInfo 用户信息
        */
      protected setServiceUserInfo(userInfo: UserInfo): void;
      /**
        * 设置白板的内容层背景色
        */
      protected setWhiteBoardContentBg(): void;
      /**
        * 回调 mainScreenChangeCallback
        * @param mainScreen 位置
        */
      callbackMainScreenChange(mainScreen: PptVideoPosition): void;
      /**
        * 获取 onSliceControl 中分页或切换动画的 socket 对象
        * @api
        * @description 提供给新版助教页发送分页 socket
        */
      getPageControlSocket(): OnSliceControlType<OnSliceControlSwitchPageDataType> | OnSliceControlType<OnSliceControlSwitchAnimationDataType> | undefined;
      /**
        * 发送 onSliceControl 中分页或切换动画的 socket
        * @api
        * @description 提供给新版助教页发送分页 socket
        */
      triggerPageControlSocket(): void;
      /**
        * 用户信息
        */
      get userInfo(): UserInfo | undefined;
      /**
        * 设置当前打开的文档类型
        * @param docType 文档类型，默认为当前记录的
        */
      protected setDocType(docType?: PolyvDocType): void;
      /**
        * 当前打开的文档类型，默认：1
        */
      get docType(): PolyvDocType;
  }
}

declare module '@polyv/white-board-sdk/service/live-start-service' {
  import { ServiceName } from '@polyv/white-board-sdk/service/assets';
  import { LiveWatchService } from '@polyv/white-board-sdk/service/live-watch-service';
  import { SwitchRoomData } from '@polyv/white-board-sdk/service/service-core';
  import { LiveStartOpenDocumentParams, LiveStartOpenWhiteBoardParams, LiveStartServiceConfig } from '@polyv/white-board-sdk/service/live-start-service/types';
  export * from '@polyv/white-board-sdk/service/live-start-service/types';
  /**
    * 直播开播端服务
    * @class
    */
  export class LiveStartService<C extends LiveStartServiceConfig = LiveStartServiceConfig> extends LiveWatchService<C> {
      serviceName: ServiceName;
      constructor(config?: LiveStartServiceConfig);
      inited(): void;
      beforeDestroy(): void;
      /**
        * 打开一份文档，autoId 不得为 0
        * @api
        * @param params 打开参数
        */
      openDocument(params: LiveStartOpenDocumentParams): Promise<void>;
      /**
        * 打开白板
        * @param params 打开参数
        */
      openWhiteBoard(params: LiveStartOpenWhiteBoardParams): Promise<void>;
      /**
        * 授予权限
        * @api
        */
      giveAuth(): void;
      /**
        * 移除权限
        * @api
        */
      removeAuth(): void;
      /**
        * 设置是否为组长
        * @api
        * @param isLeader 是否组长
        */
      setGroupLeader(isLeader?: boolean): void;
      /**
        * 切换房间
        * @api
        * @param data 房间数据
        */
      switchRoom(data: SwitchRoomData): void;
  }
}

declare module '@polyv/white-board-sdk/service/live-watch-service' {
  import { ServiceName } from '@polyv/white-board-sdk/service/assets';
  import { OnSliceControlType, OnSliceDrawType, OnSliceIdType, OnSliceOpenType, OnSliceStartType } from '@polyv/white-board-sdk/service/assets/interfaces';
  import { JoinSocketDataParams, PolyvService } from '@polyv/white-board-sdk/service/service-core';
  import { LiveWatchServiceConfig } from '@polyv/white-board-sdk/service/live-watch-service/types';
  export * from '@polyv/white-board-sdk/service/live-watch-service/types';
  /**
    * 直播观看页服务
    * @class
    */
  export class LiveWatchService<C extends LiveWatchServiceConfig = LiveWatchServiceConfig> extends PolyvService<C> {
    serviceName: ServiceName;
    constructor(config?: LiveWatchServiceConfig);
    inited(): void;
    beforeDestroy(): void;
    protected handleOnSliceId(socketData: OnSliceIdType): Promise<void>;
    protected handleOnSliceStart(socketData: OnSliceStartType): Promise<void>;
    protected handleOnSliceOpen(socketData: OnSliceOpenType): Promise<void>;
    protected handleOnSliceControl(socketData: OnSliceControlType, params?: JoinSocketDataParams): Promise<void>;
    protected handleOnSliceDraw(socketData: OnSliceDrawType, params?: JoinSocketDataParams): Promise<void>;
  }
}

declare module '@polyv/white-board-sdk/core/utils/shape-utils' {
  export * from '@polyv/white-board-sdk/core/utils/shape-utils/bbox-utils';
  export * from '@polyv/white-board-sdk/core/utils/shape-utils/compute-utils';
  export * from '@polyv/white-board-sdk/core/utils/shape-utils/connect-utils';
  export * from '@polyv/white-board-sdk/core/utils/shape-utils/convert-utils';
  export * from '@polyv/white-board-sdk/core/utils/shape-utils/judge-utils';
  export * from '@polyv/white-board-sdk/core/utils/shape-utils/progress-utils';
}

declare module '@polyv/white-board-sdk/shapes/index' {
  import { ShapeCtor, ShapeMatchStore } from '@polyv/white-board-sdk/core/interfaces/shape';
  export * from '@polyv/white-board-sdk/shapes/common/types';
  /**
    * 全局图形匹配器
    */
  export const globalShapeMatchs: ShapeMatchStore;
  /**
    * 注册全局图形类
    * @param Ctor 图形类
    */
  export function registerShape(Ctor: ShapeCtor): void;
}

declare module '@polyv/white-board-sdk/shapes/arrow' {
  import { ShapeSeatZoomData, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { BBox, DrawParams, SimpleBBox } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  import { SimplePoints } from '@polyv/white-board-sdk/shapes/common/types';
  import { ArrowShapeBaseData, ArrowShapeConfig, ArrowShapeStartType } from '@polyv/white-board-sdk/shapes/arrow/types';
  export * from '@polyv/white-board-sdk/shapes/arrow/types';
  /**
    * 箭头图形类
    * @class
    */
  export class ArrowShape extends Shape {
      static shapeName: string;
      shapeName: string;
      /** 笔触颜色 */
      strokeStyle: string;
      /** 末端箭头高度 */
      triangleHeight: number;
      /** 箭头顶点角度 */
      vertexAngle: number;
      /** 箭头开始端类型 */
      startType: ArrowShapeStartType;
      /** 是否双向箭头 */
      twoWay: boolean;
      constructor(config: ArrowShapeConfig);
      /**
        * 获取箭头图形基础数据
        */
      getBaseData(): ArrowShapeBaseData;
      draw(params: DrawParams): void;
      /**
        * 设置起止点
        */
      setPoints(points: SimplePoints): void;
      deviationPoints(diffX: number, diffY: number): void;
      zoomSeatPoints(data: ShapeSeatZoomData): void;
      getBBox(): BBox;
      getShapeSvg(): SVGElement | undefined;
      isOverlapVisionBBox(visionBBox: BBox): boolean;
      isIntersectBBox(rangeBBox: SimpleBBox): boolean;
      isNearby(point: WorldPoint, distance?: number): boolean;
      get points(): SimplePoints;
  }
}

declare module '@polyv/white-board-sdk/shapes/arrow/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/shapes/ellipse' {
  import { ShapeSeatZoomData, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { BBox, DrawParams, SimpleBBox } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  import { SimplePoints } from '@polyv/white-board-sdk/shapes/common/types';
  import { EllipseShapeBaseData, EllipseShapeConfig } from '@polyv/white-board-sdk/shapes/ellipse/types';
  export * from '@polyv/white-board-sdk/shapes/ellipse/types';
  /**
    * 椭圆图形类
    * @class
    */
  export class EllipseShape extends Shape {
      static shapeName: string;
      shapeName: string;
      /** 线条宽度 */
      lineWidth: number;
      /** 笔触颜色 */
      strokeStyle: string;
      constructor(config: EllipseShapeConfig);
      /**
        * 获取椭圆图形基础数据
        */
      getBaseData(): EllipseShapeBaseData;
      draw(params: DrawParams): void;
      /**
        * 设置起止点
        */
      setPoints(points: SimplePoints): void;
      deviationPoints(diffX: number, diffY: number): void;
      zoomSeatPoints(data: ShapeSeatZoomData): void;
      getBBox(): BBox;
      isIntersectBBox(rangeBBox: SimpleBBox): boolean;
      getShapeSvg(): SVGElement | undefined;
      isNearby(point: WorldPoint, distance?: number): boolean;
      get points(): SimplePoints;
  }
}

declare module '@polyv/white-board-sdk/shapes/ellipse/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/shapes/free-line' {
  import { BBox, DrawParams, Shape, ShapeSeatZoomData, SimpleBBox, WorldPoint } from '@polyv/white-board-sdk/core';
  import { FreeLineShapeBaseData, FreeLineShapeConfig } from '@polyv/white-board-sdk/shapes/free-line/types';
  export * from '@polyv/white-board-sdk/shapes/free-line/types';
  /**
    * 自由曲线图形
    * @class
    */
  export class FreeLineShape extends Shape {
      static shapeName: string;
      shapeName: string;
      /** 线条宽度 */
      lineWidth: number;
      /** 笔触颜色 */
      strokeStyle: string;
      /** 马克笔透明度 */
      markerOpacity?: number;
      constructor(config: FreeLineShapeConfig);
      /**
        * 获取自由曲线图形基础数据
        */
      getBaseData(): FreeLineShapeBaseData;
      /**
        * 自由曲线绘制
        */
      draw(params: DrawParams): void;
      /**
        * 设置起止点
        * @param points 世界坐标点列表
        */
      setPoints(points: WorldPoint[]): void;
      deviationPoints(diffX: number, diffY: number): void;
      zoomSeatPoints(data: ShapeSeatZoomData): void;
      getBBox(): BBox;
      isIntersectBBox(rangeBBox: SimpleBBox): boolean;
      getShapeSvg(): SVGElement | undefined;
      isNearby(point: WorldPoint, distance?: number): boolean;
      /**
        * 点坐标列表
        */
      get points(): WorldPoint[];
  }
}

declare module '@polyv/white-board-sdk/shapes/free-line/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/shapes/image' {
  import { DrawParams, Shape } from '@polyv/white-board-sdk/core';
  import { BBox, ShapeSeatZoomData, SimpleBBox, WorldPoint } from '@polyv/white-board-sdk/export/core';
  import { SimplePoints } from '@polyv/white-board-sdk/shapes/common/types';
  import { ImageShapeBaseData, ImageShapeConfig } from '@polyv/white-board-sdk/shapes/image/types';
  export * from '@polyv/white-board-sdk/shapes/image/types';
  /**
    * 图片图形类
    * @class
    */
  export class ImageShape extends Shape {
      static shapeName: string;
      shapeName: string;
      imageUrl: string;
      constructor(config: ImageShapeConfig);
      /**
        * 获取图片图形基础数据
        */
      getBaseData(): ImageShapeBaseData;
      draw(params: DrawParams): void;
      /**
        * 设置起止点
        */
      setPoints(points: SimplePoints): void;
      deviationPoints(diffX: number, diffY: number): void;
      zoomSeatPoints(data: ShapeSeatZoomData): void;
      getBBox(): BBox;
      isOverlapVisionBBox(visionBBox: BBox): boolean;
      isIntersectBBox(rangeBBox: SimpleBBox): boolean;
      /**
        * @todo 完善该方法
        */
      getShapeSvg(): SVGElement | undefined;
      isNearby(point: WorldPoint, distance?: number): boolean;
      /**
        * 起止点
        */
      get points(): SimplePoints;
  }
}

declare module '@polyv/white-board-sdk/shapes/image/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/shapes/laser-pen' {
  import { DrawParams, Shape, WorldPoint } from '@polyv/white-board-sdk/core';
  import { LaserPenShapeBaseData, LaserPenShapeConfig } from '@polyv/white-board-sdk/shapes/laser-pen/types';
  export * from '@polyv/white-board-sdk/shapes/laser-pen/types';
  /**
    * 激光笔图形
    * @class
    */
  export class LaserPenShape extends Shape {
      static shapeName: string;
      shapeName: string;
      isActionStackItem: boolean;
      /** 激光大小 */
      laserSize: number;
      /** 激光颜色 */
      laserColor: string;
      /** 点坐标列表 */
      points: WorldPoint[];
      constructor(config: LaserPenShapeConfig);
      /**
        * 获取激光笔图形基础数据
        */
      getBaseData(): LaserPenShapeBaseData;
      draw(params: DrawParams): void;
      getShapeColor(): string;
  }
}

declare module '@polyv/white-board-sdk/shapes/laser-pen/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/shapes/polygon' {
  import { ShapeSeatZoomData, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { BBox, DrawParams, SimpleBBox } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  import { PolygonShapeBaseData, PolygonShapeConfig } from '@polyv/white-board-sdk/shapes/polygon/types';
  export * from '@polyv/white-board-sdk/shapes/polygon/types';
  /**
    * 多边形图形类
    * @class
    */
  export class PolygonShape extends Shape {
      static shapeName: string;
      shapeName: string;
      /** 线条宽度 */
      lineWidth: number;
      /** 笔触颜色 */
      strokeStyle: string;
      /** 是否绘制起始点 */
      stressStartDot: boolean;
      constructor(config: PolygonShapeConfig);
      /**
        * 获取多边形图形基础数据
        */
      getBaseData(): PolygonShapeBaseData;
      /**
        * 插入一个点
        * @param point 目标点
        */
      pushPoint(point: WorldPoint): void;
      /**
        * 设置多边形的最后一个点
        * @param point 目标点
        */
      changeLastPoint(point: WorldPoint): void;
      /**
        * 设置坐标点列表
        * @param points 坐标点列表
        */
      setPoints(points: WorldPoint[]): void;
      deviationPoints(diffX: number, diffY: number): void;
      zoomSeatPoints(data: ShapeSeatZoomData): void;
      draw(params: DrawParams): void;
      getBBox(): BBox;
      getShapeSvg(): SVGElement | undefined;
      isIntersectBBox(rangeBBox: SimpleBBox): boolean;
      isNearby(point: WorldPoint, distance?: number): boolean;
      get points(): WorldPoint[];
  }
}

declare module '@polyv/white-board-sdk/shapes/polygon/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/shapes/rect' {
  import { ShapeSeatZoomData, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { BBox, DrawParams, SimpleBBox } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  import { SimplePoints } from '@polyv/white-board-sdk/shapes/common/types';
  import { RectShapeBaseData, RectShapeConfig } from '@polyv/white-board-sdk/shapes/rect/types';
  export * from '@polyv/white-board-sdk/shapes/rect/types';
  /**
    * 矩形图形类
    * @class
    */
  export class RectShape extends Shape {
      static shapeName: string;
      shapeName: string;
      /** 线条宽度 */
      lineWidth: number;
      /** 笔触颜色 */
      strokeStyle: string;
      constructor(config: RectShapeConfig);
      /**
        * 获取矩形图形基础数据
        */
      getBaseData(): RectShapeBaseData;
      draw(params: DrawParams): void;
      /**
        * 设置起止点
        */
      setPoints(points: SimplePoints): void;
      deviationPoints(diffX: number, diffY: number): void;
      zoomSeatPoints(data: ShapeSeatZoomData): void;
      getBBox(): BBox;
      isOverlapVisionBBox(visionBBox: BBox): boolean;
      isIntersectBBox(rangeBBox: SimpleBBox): boolean;
      getShapeSvg(): SVGElement | undefined;
      isNearby(point: WorldPoint, distance?: number): boolean;
      /**
        * 起止点
        */
      get points(): SimplePoints;
  }
}

declare module '@polyv/white-board-sdk/shapes/rect/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/shapes/star' {
  import { ShapeSeatZoomData, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { BBox, DrawParams, SimpleBBox } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  import { StarShapeBaseData, StarShapeConfig } from '@polyv/white-board-sdk/shapes/star/types';
  export * from '@polyv/white-board-sdk/shapes/star/types';
  /**
    * 星形类
    * @class
    */
  export class StarShape extends Shape {
      static shapeName: string;
      shapeName: string;
      /** 线条宽度 */
      lineWidth: number;
      /** 笔触颜色 */
      strokeStyle: string;
      constructor(config: StarShapeConfig);
      /**
        * 获取星形图形基础数据
        */
      getBaseData(): StarShapeBaseData;
      /**
        * 设置坐标点列表
        * @param points 坐标点列表
        */
      setPoints(points: WorldPoint[]): void;
      deviationPoints(diffX: number, diffY: number): void;
      zoomSeatPoints(data: ShapeSeatZoomData): void;
      draw(params: DrawParams): void;
      getBBox(): BBox;
      getShapeSvg(): SVGElement | undefined;
      isNearby(point: WorldPoint, distance?: number): boolean;
      isIntersectBBox(rangeBBox: SimpleBBox): boolean;
      get points(): WorldPoint[];
  }
}

declare module '@polyv/white-board-sdk/shapes/star/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/shapes/straight-line' {
  import { ShapeSeatZoomData, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { BBox, DrawParams, SimpleBBox } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  import { SimplePoints } from '@polyv/white-board-sdk/shapes/common/types';
  import { StraightLineShapeBaseData, StraightLineShapeConfig } from '@polyv/white-board-sdk/shapes/straight-line/types';
  export * from '@polyv/white-board-sdk/shapes/straight-line/types';
  /**
    * 直线图形类
    * @class
    */
  export class StraightLineShape extends Shape {
      static shapeName: string;
      shapeName: string;
      /** 线条宽度 */
      lineWidth: number;
      /** 笔触颜色 */
      strokeStyle: string;
      constructor(config: StraightLineShapeConfig);
      /**
        * 获取直线图形基础数据
        */
      getBaseData(): StraightLineShapeBaseData;
      draw(params: DrawParams): void;
      /**
        * 设置起止点
        */
      setPoints(points: SimplePoints): void;
      deviationPoints(diffX: number, diffY: number): void;
      zoomSeatPoints(data: ShapeSeatZoomData): void;
      getBBox(): BBox;
      isOverlapVisionBBox(visionBBox: BBox): boolean;
      isIntersectBBox(rangeBBox: SimpleBBox): boolean;
      getShapeSvg(): SVGElement | undefined;
      isNearby(point: WorldPoint, distance?: number): boolean;
      get points(): SimplePoints;
  }
}

declare module '@polyv/white-board-sdk/shapes/straight-line/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/shapes/text' {
  /** eslint-disable @typescript-eslint/ban-ts-comment */
  import { ShapeSeatZoomData, WorldPoint } from '@polyv/white-board-sdk/core';
  import { BBox, DrawParams, Shape, SimpleBBox } from '@polyv/white-board-sdk/core/tools/shape';
  import { TextShapeBaseData, TextShapeConfig, TextShapeSimpleData } from '@polyv/white-board-sdk/shapes/text/types';
  export * from '@polyv/white-board-sdk/shapes/text/types';
  /**
    * 文本图形类
    * @class
    */
  export class TextShape extends Shape {
      static shapeName: string;
      shapeName: string;
      /** 文本内容 */
      content: string;
      /** 字体颜色 */
      strokeStyle: string;
      /** 字体大小 */
      fontSize: number;
      /** 字体样式 */
      fontFamily: string;
      /** 是否加粗，默认：false */
      isBold: boolean;
      /** 是否斜体，默认：false */
      isItalics: boolean;
      /** 是否有删除线，默认：false */
      isLineThrough: boolean;
      /** 是否有下划线，默认：false */
      isUnderLine: boolean;
      constructor(config: TextShapeConfig);
      /**
        * 获取文本图形基础数据
        */
      getBaseData(): TextShapeBaseData;
      draw(params: DrawParams): void;
      setPoints(points: [WorldPoint, WorldPoint]): void;
      deviationPoints(diffX: number, diffY: number): void;
      zoomSeatPoints(data: ShapeSeatZoomData): void;
      getBBox(): BBox;
      isOverlapVisionBBox(visionBBox: BBox): boolean;
      isIntersectBBox(rangeBBox: SimpleBBox): boolean;
      isNearby(point: WorldPoint): boolean;
      /**
        * 修改数据
        */
      changeSimpleData(simpleData: Partial<TextShapeSimpleData>): void;
  }
}

declare module '@polyv/white-board-sdk/shapes/text/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/shapes/triangle' {
  import { ShapeSeatZoomData, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { BBox, DrawParams, SimpleBBox } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  import { TriangleShpaeConfig, TrianglePoints, TriangleShpaeBaseData } from '@polyv/white-board-sdk/shapes/triangle/types';
  export * from '@polyv/white-board-sdk/shapes/triangle/types';
  /**
    * 三角形图形类
    * @class
    */
  export class TriangleShape extends Shape {
      static shapeName: string;
      shapeName: string;
      /** 线条宽度 */
      lineWidth: number;
      /** 笔触颜色 */
      strokeStyle: string;
      constructor(config: TriangleShpaeConfig);
      /**
        * 获取三角形图形基础数据
        */
      getBaseData(): TriangleShpaeBaseData;
      draw(params: DrawParams): void;
      /**
        * 设置三角形坐标点列表
        * @param points 坐标点列表
        */
      setPoints(points: TrianglePoints): void;
      deviationPoints(diffX: number, diffY: number): void;
      zoomSeatPoints(data: ShapeSeatZoomData): void;
      getBBox(): BBox;
      getShapeSvg(): SVGElement | undefined;
      isIntersectBBox(rangeBBox: SimpleBBox): boolean;
      isNearby(point: WorldPoint, distance?: number): boolean;
      get points(): TrianglePoints;
  }
}

declare module '@polyv/white-board-sdk/shapes/triangle/install' {
  import { WhiteBoardRegisters } from '@polyv/white-board-sdk/registers';
  export function install(register: WhiteBoardRegisters): void;
}

declare module '@polyv/white-board-sdk/ispring/types' {
  import { IPresentation } from '@polyv/white-board-sdk/ispring/types/file';
  import { IAudioNarrationController, IVideoNarrationController } from '@polyv/white-board-sdk/ispring/types/multimedia';
  import { IPresentationView } from '@polyv/white-board-sdk/ispring/types/view';
  export * from '@polyv/white-board-sdk/ispring/types/animation-step';
  export * from '@polyv/white-board-sdk/ispring/types/clock';
  export * from '@polyv/white-board-sdk/ispring/types/constant';
  export * from '@polyv/white-board-sdk/ispring/types/event-dispatcher';
  export * from '@polyv/white-board-sdk/ispring/types/file';
  export * from '@polyv/white-board-sdk/ispring/types/multimedia';
  export * from '@polyv/white-board-sdk/ispring/types/playback-controller';
  export * from '@polyv/white-board-sdk/ispring/types/slide';
  export * from '@polyv/white-board-sdk/ispring/types/sound';
  export * from '@polyv/white-board-sdk/ispring/types/utils-type';
  export * from '@polyv/white-board-sdk/ispring/types/view';
  /**
    * Ispring播放器接口
    */
  export interface IspringPlayer {
      /**
        * 获取ispring的版本
        * @returns 版本
        */
      version(): string;
      /**
        * 获取视图控制器
        * @returns 视图控制器
        */
      view(): IPresentationView;
      /**
        * 获取信息控制器
        * @returns 信息控制器
        */
      presentation(): IPresentation;
      /**
        * 获取音频多媒体控制器
        * @returns 音频多媒体控制器
        */
      audioNarrationController(): IAudioNarrationController;
      /**
        * 获取视频多媒体控制器
        * @returns 视频多媒体控制器
        */
      videoNarrationController(): IVideoNarrationController;
  }
  export type BridgeIspringOptions = {
      player: IspringPlayer;
  };
}

declare module '@polyv/white-board-sdk/ispring/bridge-ispring' {
  /**
    * @file Ispring 入口文件
    */
  import { IframeMessage, IframeMessageParam, WhiteBridge } from '@polyv/white-board-sdk/bridge';
  import { BridgeIspringOptions, IspringPlayer } from '@polyv/white-board-sdk/ispring/types';
  import { ISlide } from '@polyv/white-board-sdk/ispring/types/slide';
  import { SlideStepInfo } from '@polyv/white-board-sdk/core';
  /**
    * Ispring 桥接器
    * @class
    */
  export class BridgeIspring extends WhiteBridge {
      constructor(options: BridgeIspringOptions);
      goToPage(data: IframeMessageParam[IframeMessage.goToPage]): Promise<void>;
      goToNextStep(): Promise<void>;
      goToPreviousStep(): Promise<void>;
      goToStepIndex(data: IframeMessageParam[IframeMessage.goToStepIndex]): Promise<void>;
      resize(): void;
      getCurrentSlideStepInfo(): SlideStepInfo;
      /**
        * 当前是否为最后一页
        */
      get isLastSlide(): boolean;
      /**
        * 当前幻灯片对象
        */
      get currentSlide(): ISlide;
      /**
        * 当前幻灯片索引
        */
      get currentSlideIndex(): number;
      /**
        * 当前动画步骤索引
        */
      get currentStepIndex(): number;
      /**
        * 当前幻灯片动画总数
        */
      get currentSlideAnimationStepCount(): number;
      /**
        * 当前幻灯片动画总时长
        */
      get currentSlideAnimationStepDuration(): number;
      /**
        * 判断当前幻灯片是否播放到最后一个动画
        */
      get currentSlideIsLastStep(): boolean;
      /**
        * 幻灯片总数
        */
      get totalSlide(): number;
      /**
        * 文档尺寸
        */
      get docSize(): {
          width: number;
          height: number;
      };
  }
  export const bridgeIspringTarget: {
      register: (player: IspringPlayer) => void;
  };
}

declare module '@polyv/white-board-sdk/core' {
  export * from '@polyv/white-board-sdk/export/core';
}

declare module '@polyv/white-board-sdk/appliances/types' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  /**
    * 教具对象
    */
  export interface ApplianceTarget {
      /** 教具名称 */
      applianceName: string;
      /** 白板实例 */
      whiteBoard: WhiteBoard;
      /** 在当前教具下的光标名称 */
      cursorName?: string;
      /** 在当前教具下，光标的隐藏时间 */
      cursorHiddenTime?: number;
      /** 当前教具被激活的 hook */
      activated(): void;
      /** 当前教具取消激活的 hook */
      cancelActivate(): void;
  }
  /**
    * 教具类接口
    */
  export interface ApplianceCtor {
      /** 教具名称，教具类的静态属性 */
      applianceName: string;
      new (whiteBoard: WhiteBoard): ApplianceTarget;
  }
}

declare module '@polyv/white-board-sdk/core/interfaces/behavior' {
  import { BasicInfoBaseData, BasicInfoConfig } from '@polyv/white-board-sdk/core/basic/types';
  import { Behavior } from '@polyv/white-board-sdk/core/tools/behavior';
  /**
    * 行为基础数据
    */
  export interface BehaviorBaseData extends BasicInfoBaseData {
      /** 行为名称 */
      behaviorName: string;
      /**
        * 其他参数
        */
      [key: string]: unknown;
  }
  /**
    * 行为配置
    */
  export interface BehaviorConfig extends BasicInfoConfig, Partial<BehaviorBaseData> {
      /**
        * 其他参数
        */
      [key: string]: unknown;
  }
  /**
    * 行为类
    */
  export interface BehaviorCtor {
      /** 行为名称 */
      behaviorName: string;
      new (config: BehaviorConfig): Behavior;
  }
  /**
    * 行为匹配器类型
    */
  export type BehaviorMatchStore = {
      [behaviorName: string]: BehaviorCtor | undefined;
  };
}

declare module '@polyv/white-board-sdk/core/tools/behavior' {
  import { BasicInfo } from '@polyv/white-board-sdk/core/basic';
  import { BehaviorBaseData } from '@polyv/white-board-sdk/core/interfaces/behavior';
  export * from '@polyv/white-board-sdk/core/interfaces/behavior';
  /**
    * 行为类
    * @class
    */
  export class Behavior extends BasicInfo {
      /** 行为名称，默认为空字符串 */
      behaviorName: string;
      isActionStackItem: boolean;
      /**
        * 获取当前基础数据，该方法允许重写
        */
      getBaseData(): BehaviorBaseData;
      /**
        * 执行该行为
        */
      implement(): void;
  }
}

declare module '@polyv/white-board-sdk/behaviors/clear/types' {
  import { BehaviorBaseData, BehaviorConfig } from '@polyv/white-board-sdk/core/interfaces/behavior';
  /**
    * 清空行为基础数据
    */
  export interface ClearBehaviorBaseData extends BehaviorBaseData {
      /**
        * 被清空的标识 id，如果是一个空数组，则不根据 id 清空画板所有操作
        */
      clearIds: string[];
  }
  /**
    * 清空行为配置
    */
  export interface ClearBehaviorConfig extends Partial<ClearBehaviorBaseData>, BehaviorConfig {
  }
}

declare module '@polyv/white-board-sdk/behaviors/editor/types' {
  import { EditMoveDataType, EditOperation, ShapeSeatZoomData, TextChangeData, ZIndexChangeData } from '@polyv/white-board-sdk/core';
  import { BehaviorBaseData, BehaviorConfig } from '@polyv/white-board-sdk/core/interfaces/behavior';
  /**
    * 编辑行为基础数据
    */
  export interface EditorBehaviorBaseData extends BehaviorBaseData {
      /**
        * 被编辑的图形标识 id
        */
      editIds: string[];
      /**
        * 编辑类型
        */
      editOperation: EditOperation;
      /**
        * 移动数据
        */
      moveData?: EditMoveDataType;
      /**
        * 缩放数据
        */
      seatZoomData?: ShapeSeatZoomData;
      /**
        * 层叠数修改数据
        */
      zIndexChangeData?: ZIndexChangeData;
      /**
        * 字体修改数据
        */
      textChangeData?: TextChangeData;
  }
  /**
    * 编辑行为配置
    */
  export interface EditorBehaviorConfig extends Partial<EditorBehaviorBaseData>, BehaviorConfig {
  }
}

declare module '@polyv/white-board-sdk/behaviors/eraser/types' {
  import { BehaviorBaseData, BehaviorConfig } from '@polyv/white-board-sdk/core/interfaces/behavior';
  /**
    * 橡皮擦行为基础数据
    */
  export interface EraserBehaviorBaseData extends BehaviorBaseData {
      /**
        * 被擦除的标识 id
        */
      delIds: string[];
  }
  /**
    * 橡皮擦行为配置
    */
  export interface EraserBehaviorConfig extends Partial<EraserBehaviorBaseData>, BehaviorConfig {
  }
}

declare module '@polyv/white-board-sdk/behaviors/laser-pen/types' {
  import { BehaviorBaseData, BehaviorConfig } from '@polyv/white-board-sdk/core/interfaces/behavior';
  /**
    * 激光笔行为基础数据
    */
  export interface LaserPenBehaviorBaseData extends BehaviorBaseData {
  }
  /**
    * 激光笔行为配置
    */
  export interface LaserPenBehaviorConfig extends Partial<LaserPenBehaviorBaseData>, BehaviorConfig {
  }
}

declare module '@polyv/white-board-sdk/behaviors/redo/types' {
  import { BehaviorBaseData, BehaviorConfig } from '@polyv/white-board-sdk/core/interfaces/behavior';
  /**
    * 重做行为基础数据
    */
  export interface RedoBehaviorBaseData extends BehaviorBaseData {
      /**
        * 被重做的标识 id
        */
      redoIds: string[];
  }
  /**
    * 重做行为配置
    */
  export interface RedoBehaviorConfig extends Partial<RedoBehaviorBaseData>, BehaviorConfig {
  }
}

declare module '@polyv/white-board-sdk/behaviors/undo/types' {
  import { BehaviorBaseData, BehaviorConfig } from '@polyv/white-board-sdk/core/interfaces/behavior';
  /**
    * 撤回行为基础数据
    */
  export interface UndoBehaviorBaseData extends BehaviorBaseData {
      /**
        * 被撤回的标识 id
        */
      undoIds: string[];
  }
  /**
    * 撤回行为配置
    */
  export interface UndoBehaviorConfig extends Partial<UndoBehaviorBaseData>, BehaviorConfig {
  }
}

declare module '@polyv/white-board-sdk/bridge' {
  export * from '@polyv/white-board-sdk/export/bridge';
}

declare module '@polyv/white-board-sdk/appliances' {
  import { ApplianceCtor } from '@polyv/white-board-sdk/appliances/types';
  export * from '@polyv/white-board-sdk/appliances/types';
  /**
    * 已注册了的教具
    */
  export const registerApplianceList: Set<ApplianceCtor>;
  /**
    * 注册全局教具
    * @param applianceName 教具名称
    * @param Ctor 教具类
    */
  export function registerAppliance(Ctor: ApplianceCtor | ApplianceCtor[]): void;
}

declare module '@polyv/white-board-sdk/behaviors' {
  import { BehaviorCtor, BehaviorMatchStore } from '@polyv/white-board-sdk/core/interfaces/behavior';
  /**
    * 全局行为匹配器
    */
  export const globalBehaviorMatchs: BehaviorMatchStore;
  /**
    * 注册全局行为类
    * @param Ctor 行为类
    */
  export function registerBehavior(Ctor: BehaviorCtor): void;
}

declare module '@polyv/white-board-sdk/cursors' {
  import { CursorAdapterCtor, CursorMatchStore } from '@polyv/white-board-sdk/core/interfaces/cursor';
  export { Cursor } from '@polyv/white-board-sdk/core/controller/cursor/Cursor';
  /**
    * 全局的光标节点获取方法
    */
  export const globalCursorMatchs: CursorMatchStore;
  /**
    * 注册全局的光标适配器
    * @param cursorName 光标名称
    * @param adapterCtor 适配器类
    */
  export function registerCursorAdapter(AdapterCtor: CursorAdapterCtor): void;
}

declare module '@polyv/white-board-sdk/shapes' {
  import { ShapeCtor, ShapeMatchStore } from '@polyv/white-board-sdk/core/interfaces/shape';
  export * from '@polyv/white-board-sdk/shapes/common/types';
  /**
    * 全局图形匹配器
    */
  export const globalShapeMatchs: ShapeMatchStore;
  /**
    * 注册全局图形类
    * @param Ctor 图形类
    */
  export function registerShape(Ctor: ShapeCtor): void;
}

declare module '@polyv/white-board-sdk/core/controller/animation-clock' {
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import { AnimationTask } from '@polyv/white-board-sdk/core/tools/animation-task';
  /**
    * 动画时钟控制器
    * @class
    */
  export class AnimationClockController extends Controller {
      inited(): void;
      beforeDestroy(): void;
      /**
        * 插入一个动画任务
        * @api
        * @param task 动画任务
        */
      joinAnimationTask(task: AnimationTask): this;
      /**
        * 清空当前的图形动画
        * @api
        */
      clearAnimationTask(): this;
  }
}

declare module '@polyv/white-board-sdk/core/controller/app-state' {
  import { OperationModel } from '@polyv/white-board-sdk/core/enums';
  import { SlideStepInfo } from '@polyv/white-board-sdk/core/interfaces';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import { ApplianceState, AppState, BasicState, DistalState, GridState, OperationState, PageState, PptState, StepState, ViewState, VisionState } from '@polyv/white-board-sdk/core/controller/app-state/types';
  export * from '@polyv/white-board-sdk/core/controller/app-state/types';
  /**
    * 应用状态控制器
    * @class
    */
  export class AppStateController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      /**
        * 设置可操作的最大页数
        * @api
        * @param page 页数
        */
      setMaxCurrentPage(page: number): this;
      /**
        * 设置可操作的最大动画步骤数
        * @api
        * @param stepIndex 动画步骤
        */
      setMaxStepIndex(stepIndex: number): this;
      /**
        * 设置幻灯片动画总信息
        * @param slideStepInfo 动画信息
        */
      setSlideStepInfo(slideStepInfo?: SlideStepInfo): this;
      /**
        * 设置操作模式
        * @api
        * @param operationModel 操作模式
        */
      setOperationModel(operationModel: OperationModel): this;
      /**
        * 获取应用状态
        * @api
        */
      getAppState(): AppState;
      /**
        * 获取基础状态
        * @api
        */
      getBasicState(): BasicState;
      /**
        * 获取教具状态
        * @api
        */
      getApplianceState(): ApplianceState;
      /**
        * 获取操作状态
        * @api
        */
      getOperationState(): OperationState;
      /**
        * 获取视角状态
        * @api
        */
      getVisionState(): VisionState;
      /**
        * 获取分页状态
        * @api
        */
      getPageState(): PageState;
      /**
        * 获取动画步数状态
        * @api
        */
      getStepState(): StepState;
      /**
        * 获取网格状态
        * @api
        */
      getGridState(): GridState;
      /**
        * 获取 PPT 状态
        * @api
        */
      getPptState(): PptState;
      /**
        * 获取视图状态
        * @api
        */
      getViewState(): ViewState;
      /**
        * 获取远端状态
        * @api
        */
      getDistalState(): DistalState;
      /**
        * 设置远端状态
        * @api
        */
      setDistalState<K extends 'distalCurrentPage' | 'distalStepIndex'>(key: K, val: DistalState[K]): void;
      /**
        * 回到远端状态
        * @api
        */
      toDistalState(): void;
  }
}

declare module '@polyv/white-board-sdk/core/controller/appliance' {
  import { ApplianceCtor, ApplianceTarget } from '@polyv/white-board-sdk/appliances/types';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  /**
    * 教具管理类
    * @class
    * @extends Controller
    */
  export class ApplianceController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      protected inited(): void;
      /**
        * 向白板实例注册教具
        * @api
        * @param Ctor 教具类 / 教具类列表
        */
      registerAppliance(Ctor: ApplianceCtor | ApplianceCtor[]): this;
      /**
        * 获取当前的教具实例
        * @api
        */
      getCurrentApplianceTarget(): ApplianceTarget | undefined;
      /**
        * 修改当前教具
        * @api
        * @param currentAppliance 新的教具
        */
      changeCurrentAppliance(currentAppliance: string): this;
      /**
        * 修改笔触大小
        * @api
        * @param lineWidth 笔触大小
        */
      changeLineWidth(lineWidth: number): this;
      /**
        * 修改笔触颜色
        * @api
        * @param strokeStyle 笔触颜色
        */
      changeStrokeStyle(strokeStyle: string): this;
      /**
        * 修改马克笔透明度
        * @api
        * @param markerOpacity 马克笔透明度
        */
      changeMarkerOpacity(markerOpacity: number): this;
      /**
        * 修改马克笔开关
        * @api
        * @param markerEnabled 马克笔开关
        */
      changeMarkerEnabled(markerEnabled: boolean): this;
      /**
        * 修改字体大小
        * @api
        * @param fontSize 字体大小
        */
      changeFontSize(fontSize: number): this;
      /**
        * 当前教具名称
        * @api
        */
      get currentAppliance(): string;
      /**
        * 当前笔触大小
        * @api
        */
      get lineWidth(): number;
      /**
        * 当前笔触颜色
        * @api
        */
      get strokeStyle(): string;
      /**
        * 马克笔透明度
        * @api
        */
      get markerOpacity(): number;
      /**
        * 马克笔开关
        * @api
        */
      get markerEnabled(): boolean;
      /**
        * 当前字体大小
        * @api
        */
      get fontSize(): number;
  }
}

declare module '@polyv/white-board-sdk/core/controller/auth' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  /**
    * 权限控制器
    * @class
    */
  export class AuthController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      /**
        * 导入权限
        * @api
        * @param auths 权限或权限集合
        */
      includeAuths(auths?: string | string[]): this;
      /**
        * 剔除权限
        * @api
        * @param auths 权限或权限集合
        */
      excludeAuths(auths?: string | string[]): this;
      /**
        * 重置当前的权限
        * @api
        * @param auths 权限集合
        */
      resetAuths(auths?: string[]): this;
      /**
        * 是否具有某个权限或权限集合，不传或传空数组时返回 false，未注册权限控制器时永远返回 true
        * @api
        * @param auth 权限或权限集合
        */
      haveAuths(auth?: string | string[]): boolean;
      get auths(): string[];
  }
}

declare module '@polyv/white-board-sdk/core/controller/compute' {
  import { Canvas } from '@polyv/white-board-sdk/core/canvas';
  import { BrowserPoint, CanvasPoint, EventClientData, TriggeredEvent, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import * as shapeUtils from '@polyv/white-board-sdk/shape-utils';
  import { BBox } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { ConvertEventParams } from '@polyv/white-board-sdk/core/controller/compute/types';
  export * from '@polyv/white-board-sdk/core/controller/compute/types';
  /**
    * 计算控制器，负责各种计算
    * @class
    */
  export class ComputeController extends Controller {
      /**
        * 图形相关的计算方法
        * @api
        */
      shapeUtils: typeof shapeUtils;
      /**
        * 获取画布对象与世界画布的宽度比（画布对象 : 世界画布）
        * @api
        * @param canvas 画布对象
        * @returns 宽度比
        */
      getCoordinateWidthProp(canvas: Canvas): number;
      /**
        * 获取事件对象中的触点信息
        * @api
        * @param event 事件对象
        */
      getEventClientData(event: TriggeredEvent): EventClientData | undefined;
      /**
        * 根据事件对象获取世界坐标点
        * @api
        * @param event 事件对象
        * @returns 世界坐标点
        */
      convertEventToPoint(event: TriggeredEvent, params?: ConvertEventParams): {
          world: WorldPoint;
          browser: BrowserPoint;
      };
      /**
        * 浏览器坐标点转世界坐标点
        * @api
        * @param target 浏览器坐标点 / 点列表
        * @returns 浏世界坐标点 / 点列表
        */
      convertBrowserToWorldPoint(target: BrowserPoint): WorldPoint;
      convertBrowserToWorldPoint(target: BrowserPoint[]): WorldPoint[];
      /**
        * 世界坐标点转浏览器坐标点
        * @api
        * @param target 世界坐标点 / 点列表
        * @returns 浏览器坐标点 / 点列表
        */
      convertWorldToBrowserPoint(target: WorldPoint): BrowserPoint;
      convertWorldToBrowserPoint(target: WorldPoint[]): BrowserPoint[];
      /**
        * 世界坐标点转换成画布坐标点
        * @api
        * @param target 世界坐标点 / 点列表
        * @param canvas 目标画布，选传，默认为当前的 `drawCanvas`
        * @returns 画布坐标点 / 点列表
        */
      convertWorldToCanvasPoint(target: WorldPoint, canvas: Canvas): CanvasPoint;
      convertWorldToCanvasPoint(target: WorldPoint[], canvas: Canvas): CanvasPoint[];
      /**
        * 计算尺寸值，获取尺寸值在画布中的浏览器尺寸
        * @param size 参考尺寸
        * @param canvas 目标画布，选传，默认为当前的 `drawCanvas`
        */
      computeSize(size: number, canvas?: Canvas): number;
      /**
        * 翻转计算尺寸值
        * @param size 参考尺寸
        * @param canvas 目标画布，选传，默认为当前的 `drawCanvas`
        */
      reverseComputeSize(size: number, canvas?: Canvas): number;
      /**
        * 将尺寸值转换成世界坐标系中的数值
        * @param size 尺寸值
        */
      convertSizeToWorldSize(size: number): number;
      /**
        * 计算常规图形的包围盒
        * @param points 世界坐标点列表
        * @param lineWidth 线条粗细（基于 `baseSizeWidth` 中的尺寸），默认为 0
        */
      getNormalShapeBBox(points: WorldPoint[], lineWidth?: number): BBox;
  }
}

declare module '@polyv/white-board-sdk/core/controller/cursor' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import { Cursor } from '@polyv/white-board-sdk/core/controller/cursor/Cursor';
  import { CursorAdapterCtor, CursorDescription } from '@polyv/white-board-sdk/core/interfaces/cursor';
  /**
    * 光标存储器类型
    */
  export type CursorStore = {
      [clientId: string]: Cursor | undefined;
  };
  /**
    * 光标控制器
    * @class
    */
  export class CursorController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      protected inited(): void;
      protected beforeDestroy(): void;
      /**
        * 设置光标描述
        * @api
        * @param clientId 客户端 id
        * @param description 光标描述
        */
      setCursorDescription(clientId: string, description?: CursorDescription): this;
      /**
        * 隐藏光标
        * @api
        * @param target 客户端 id 或光标对象
        */
      hiddenCursor(target: string | Cursor): this;
      /**
        * 根据光标名称获取光标适配器类
        * @param cursorName 光标名称
        */
      getCursorAdapterCtor(cursorName: string): CursorAdapterCtor | undefined;
      /**
        * 设置客户端的光标样式
        * @param cursorName 光标名称
        * @param isCustom 是否使用自定义光标
        */
      setClientCursor(cursorName: string, isCustom?: boolean): this;
  }
}

declare module '@polyv/white-board-sdk/core/controller/draw-hook' {
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import { DrawHook } from '@polyv/white-board-sdk/core/controller/draw-hook/types';
  export * from '@polyv/white-board-sdk/core/controller/draw-hook/types';
  /**
    * 绘制钩子控制器
    * @class
    */
  export class DrawHookController extends Controller {
      /**
        * 插入 before 钩子函数
        * @api
        * @param hook 钩子函数
        */
      pushBeforeHook(hook: DrawHook): this;
      /**
        * 移除 before 钩子函数
        * @api
        * @param hook 钩子函数
        */
      removeBeforeHook(hook: DrawHook): this;
      /**
        * 触发 before 钩子
        */
      callbackBeforeHook(...params: Parameters<DrawHook>): void;
      /**
        * 插入 after 钩子函数
        * @api
        * @param hook 钩子函数
        */
      pushAfterHook(hook: DrawHook): this;
      /**
        * 移除 after 钩子函数
        * @api
        * @param hook 钩子函数
        */
      removeAfterHook(hook: DrawHook): this;
      /**
        * 触发 before 钩子
        */
      callbackAfterHook(...params: Parameters<DrawHook>): void;
  }
}

declare module '@polyv/white-board-sdk/core/controller/editor' {
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import type { ChangeZIndexType, ZIndexData } from '@polyv/white-board-sdk/core/controller/editor/types';
  export * from '@polyv/white-board-sdk/core/controller/editor/types';
  /**
    * 编辑控制器
    * @class
    */
  export class EditorController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      protected inited(): void;
      /**
        * 设置选区范围
        * @api
        * @param start 开始点
        * @param end 结束点
        */
      setSelectRange(start: WorldPoint, end: WorldPoint): this;
      /**
        * 设置结束点坐标
        * @api
        * @param end 结束点坐标
        */
      setEndRange(end: WorldPoint): this;
      /**
        * 关闭选区范围
        * @api
        */
      closeSelectRange(): this;
      /**
        * 获取当前选区选中的图形列表
        * @api
        */
      getSelectedShapes(): Shape[] | undefined;
      /**
        * 设置当前编辑图形
        * @api
        * @param shapes 图形列表
        */
      setEditorShapes(shapes: Shape[]): this;
      /**
        * 关闭编辑框
        * @api
        */
      closeEditorBox(): this;
      /**
        * 获取正在编辑中的图形 id 列表，没有时返回 `undefined`
        * @api
        */
      getEditingIds(): string[] | undefined;
      /**
        * 获取正在编辑中的图形列表，没有时返回 `undefined`
        * @api
        */
      getEditingShapes(): Shape[] | undefined;
      /**
        * 擦除正在编辑中的图形
        * @api
        */
      eraserEditingShape(): this;
      /**
        * 判断是否正在编辑中的图形
        * @api
        * @param id 目标 id
        */
      isEditingShape(id: string): boolean;
      /**
        * 编辑框是否正在拖拽
        * @api
        */
      editorBoxIsDraging(): boolean;
      /**
        * 关闭图形高亮框
        * @api
        */
      closeHightlight(): this;
      /**
        * 判断是否正在高亮的图形
        * @api
        * @param id 目标 id
        */
      isHightlightShape(id: string): boolean;
      /**
        * 设置图形的高亮
        * @api
        * @param shape 目标图形
        */
      setHightlight(shape: Shape): this;
      /**
        * 获取正在高亮的图形
        * @api
        */
      getHightlightShape(): Shape[] | undefined;
      /**
        * 获取层叠数数据
        * @api
        * @param findZIndex 目标层叠数
        */
      getBoardZIndexData(findZIndex?: number): ZIndexData;
      /**
        * 修改层叠数
        * @api
        */
      changeEditingZIndex(type: ChangeZIndexType): this;
  }
}

declare module '@polyv/white-board-sdk/core/controller/factory' {
  import { Canvas } from '@polyv/white-board-sdk/core/canvas';
  import { CanvasCtxConfig, CanvasStyle } from '@polyv/white-board-sdk/core/canvas/types';
  import { BehaviorCtor } from '@polyv/white-board-sdk/core/interfaces/behavior';
  import { BBox, ShapeCtor } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import { JoinBaseDataParams } from '@polyv/white-board-sdk/core/controller/factory/types';
  export * from '@polyv/white-board-sdk/core/controller/factory/types';
  /**
    * 工厂控制器
    * @class
    */
  export class FactoryController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      /**
        * 向白板注册图形类
        * @api
        * @param Ctor 图形类或列表
        */
      registerShape(Ctor: ShapeCtor | ShapeCtor[]): this;
      /**
        * 向白板注册行为类
        * @api
        * @param Ctor 行为类或列表
        */
      registerBehavior(Ctor: BehaviorCtor | BehaviorCtor[]): this;
      /**
        * 根据图形名获取图形类
        * @param shapeName 图形名
        */
      findShapeCtor<T extends ShapeCtor = ShapeCtor>(shapeName?: string): T | undefined;
      /**
        * 根据行为名称获取行为类
        * @param behaviorName 行为名称
        */
      findBehaviorCtor<T extends BehaviorCtor = BehaviorCtor>(behaviorName?: string): T | undefined;
      /**
        * 插入基础数据
        * @param baseData 图形或行为 基础数据
        */
      joinBaseData(params: JoinBaseDataParams): this;
      /**
        * 根据包围盒创建画布
        * @param bbox 包围盒
        * @param canvasConfig 画布实例化参数
        */
      createCanvasByBBox(bbox: BBox, canvasConfig?: Partial<CanvasCtxConfig>, style?: CanvasStyle): Canvas;
  }
}

declare module '@polyv/white-board-sdk/core/controller/focus' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  /**
    * 焦点控制器
    * @class
    */
  export class FocusController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      protected inited(): void;
      protected beforeDestroy(): void;
      /**
        * 当前是否聚焦在白板
        */
      get isFocus(): boolean;
  }
}

declare module '@polyv/white-board-sdk/core/controller/grid' {
  import type { BrowserPoint } from '@polyv/white-board-sdk/core/interfaces';
  import type { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  /**
    * 网格控制器
    * @class
    */
  export class GridController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      protected inited(): void;
      /**
        * 设置网格开关
        * @api
        * @param gridEnabled 网格开关，默认：false
        */
      setGridEnabled(gridEnabled?: boolean): this;
      /**
        * 设置网格大小
        * @api
        * @param gridSize 网格大小
        * @todo 验证参数合法值
        */
      setGridSize(gridSize?: number): this;
      /**
        * 设置网格颜色
        * @api
        * @param gridColor 网格颜色
        * @todo 验证参数合法值
        */
      setGridColor(gridColor?: string): this;
      /**
        * 过滤网格的浏览器坐标点
        * @api
        * @param browserPoint 浏览器坐标点
        */
      filterBrowserPoint(browserPoint: BrowserPoint): BrowserPoint;
      /**
        * 网格开关
        * @api
        */
      get gridEnabled(): boolean;
      /**
        * 当前网格大小
        * @api
        */
      get gridSize(): number;
      /**
        * 当前网格颜色
        * @api
        */
      get gridColor(): string;
  }
}

declare module '@polyv/white-board-sdk/core/controller/image' {
  import type { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import type { ImageLoadData } from '@polyv/white-board-sdk/core/controller/image/types';
  export * from '@polyv/white-board-sdk/core/controller/image/types';
  /**
    * 图片控制器，专供图片图形使用
    * @class
    */
  export class ImageController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      /**
        * 触发上传本地图片
        * @api
        */
      triggerImageUpload(): Promise<void>;
      /**
        * 获取图片加载信息
        * @api
        * @param imageUrl 图片地址
        */
      getImageLoadData(imageUrl: string): ImageLoadData | undefined;
      /**
        * 插入一个图片加载任务
        * @api
        * @param imageUrl 图片地址
        * @param source 加载来源
        */
      pushImageLoadTask(imageUrl: string, source?: string): void;
      /**
        * 设置图片的 oss 压缩配置
        * @api
        * @param url 图片地址
        */
      setImageOSSCompress(url: string): string;
  }
}

declare module '@polyv/white-board-sdk/core/controller/interact' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import { CustomToastFn, ToastOption, ToastTask } from '@polyv/white-board-sdk/core/controller/interact/types';
  export * from '@polyv/white-board-sdk/core/controller/interact/types';
  /**
    * 交互控制器
    * @class
    */
  export class InteractController extends Controller {
      /** 自定义 toast 提示 */
      customToast?: CustomToastFn;
      constructor(whiteBoard: WhiteBoard);
      protected beforeDestroy(): void;
      /**
        * 提示文本
        * @api
        * @param option 提示文本或提示选项
        */
      toast(option: string | ToastOption): ToastTask | undefined;
      /**
        * 关闭提示
        * @api
        * @param task 提示任务对象
        */
      closeToast(task?: ToastTask): void;
      /**
        * 清空所有提示
        * @api
        */
      clearToast(): void;
  }
}

declare module '@polyv/white-board-sdk/core/controller/keyboard' {
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import type { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  /**
    * 键盘控制器
    * @class
    */
  export class KeyboardController extends Controller {
      /** 是否按住了 Shift 键 */
      isPressHoldShift: boolean;
      constructor(whiteBoard: WhiteBoard);
      protected inited(): void;
      protected beforeDestroy(): void;
      /**
        * 设置键盘控制开关
        * @api
        * @param enabled 开关，默认：true
        */
      setKeyboardEnabled(enabled?: boolean): this;
      /**
        * 键盘开关
        * @api
        */
      get keyboardEnbaled(): boolean;
  }
}

declare module '@polyv/white-board-sdk/core/controller/lang' {
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import type { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import type { LanguageConfig, LanguageI18n } from '@polyv/white-board-sdk/core/controller/lang/types';
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  export * from '@polyv/white-board-sdk/core/controller/lang/types';
  /**
    * 语言控制器
    * @class
    */
  export class LangController extends Controller {
      /** dom 节点中语言 code 的属性名称 */
      langCodeAttrKey: string;
      readonly ZhCNLang = "zh_CN";
      readonly EnLang = "en";
      constructor(whiteBoard: WhiteBoard);
      /**
        * 设置语言
        * @api
        * @param language 语言
        */
      setLanguage(language: string): this;
      /**
        * 获取文本
        * @api
        * @param code 语言标识
        */
      getText(code: string, options?: Record<string, string>): string;
      /**
        * 设置 dom 节点的语言
        * @api
        * @param $selector 节点选择器
        * @param code 语言标识
        */
      setQueryLang($selector: DomQuery, code: string, options?: Record<string, string>): this;
      /**
        * 添加语言配置
        * @api
        * @param i18ns 语言配置
        */
      addI18ns(i18ns: LanguageI18n): this;
      /**
        * 添加语言配置
        * @api
        * @param language 语言
        * @param config 语言配置
        */
      addI18n(language: string, config: LanguageConfig): this;
      get language(): string;
      get i18ns(): LanguageI18n;
  }
}

declare module '@polyv/white-board-sdk/core/controller/laser-pen' {
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  /**
    * 激光笔控制器
    * @class
    */
  export class LaserPenController extends Controller {
    inited(): void;
  }
}

declare module '@polyv/white-board-sdk/core/controller/listen-canvas' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  /**
    * 监听画布事件控制器，用于派发事件
    * @class
    */
  export class ListenCanvasController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      protected inited(): void;
      protected beforeDestroy(): void;
      /**
        * 设置节流开关
        * @api
        * @param enabled 开关，默认：true
        */
      setThrottleEnabled(enabled?: boolean): this;
  }
}

declare module '@polyv/white-board-sdk/core/controller/mouse-wheel' {
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import type { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  /**
    * 鼠标滚轮控制器
    * @class
    */
  export class MouseWheelController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      protected inited(): void;
      /**
        * 设置鼠标滚轮开关
        * @param mouseWheelEnabled 开关，默认：true
        */
      setMouseWheelEnabled(enabled?: boolean): this;
      /**
        * 鼠标滚轮开关
        * @api
        */
      get mouseWheelEnabled(): boolean;
  }
}

declare module '@polyv/white-board-sdk/core/controller/page' {
  import { Board } from '@polyv/white-board-sdk/core/board';
  import { TriggerCustomEventParams } from '@polyv/white-board-sdk/core/event';
  import type { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  /**
    * 分页控制器
    * @class
    */
  export class PageController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      /**
        * 根据画笔 ID 获取画板
        * @param boardId 画板 ID
        */
      getBoardById(boardId: string): Board | undefined;
      /**
        * 重置分页，注意该 api 的调用场景需要为被动调用，不会触发 custom 事件
        * @api
        * @param total 总页数
        * @param currentPage 当前页
        */
      resetPage(total: number, currentPage: number): this;
      /**
        * 添加一页
        * @api
        * @description 注意该 api 的使用场景为用户主动进行添加一页操作
        */
      addPage(): this;
      /**
        * 修改当前页
        * @api
        * @param page 新的页数
        */
      changeCurrentPage(page?: number, triggerCustom?: TriggerCustomEventParams): this;
      /**
        * 切换到上一页
        * @api
        * @description 注意该 api 的使用场景为用户主动进行上一页操作
        * @param loop 是否循环切页，默认：true
        */
      prePage(loop?: boolean): this;
      /**
        * 切换到下一页
        * @api
        * @description 注意该 api 的使用场景为用户主动进行下一页操作
        * @param loop 是否循环切页，默认：true
        */
      nextPage(loop?: boolean): this;
      /**
        * 当前页数
        * @api
        */
      get currentPage(): number;
      /**
        * 总页数
        * @api
        */
      get totalPage(): number;
      /**
        * 画板列表
        * @api
        */
      get boardList(): Board[];
      /**
        * 是否处于第一页
        * @api
        */
      get isFirstPage(): boolean;
      /**
        * 是否处于最后一页
        * @api
        */
      get isLastPage(): boolean;
  }
}

declare module '@polyv/white-board-sdk/core/controller/plugin' {
  import { WhiteBoardPlugin } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  /**
    * 插件控制器
    * @class
    */
  export class PluginController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      protected inited(): void;
      protected beforeDestroy(): void;
      /**
        * 安装插件，传入的插件必须继承 {@link WhiteBoardPlugin}
        * @api
        * @param plugin 插件或插件列表
        */
      installPlugin(plugin: WhiteBoardPlugin | WhiteBoardPlugin[]): this;
      /**
        * 卸载插件，传入的插件必须继承 {@link WhiteBoardPlugin}
        * @api
        * @param plugin 插件或插件列表
        */
      removePlugin(plugin: WhiteBoardPlugin | WhiteBoardPlugin[]): this;
      /**
        * 已安装的插件列表
        * @api
        */
      get plugins(): WhiteBoardPlugin[];
  }
}

declare module '@polyv/white-board-sdk/core/controller/ppt' {
  import { PptType } from '@polyv/white-board-sdk/core/enums/ppt-enum';
  import { ClosePptParams, OpenPptParams, PptImageData, PptJsonType } from '@polyv/white-board-sdk/core/interfaces';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  /**
    * PPT 控制器
    * @class
    */
  export class PptController extends Controller {
      /** ppt 身份标识，用于跟当前白板实例创建的 iframe 进行信息传递 */
      readonly pptIdent: string;
      constructor(whiteBoard: WhiteBoard);
      protected inited(): void;
      protected beforeDestroy(): void;
      /**
        * 根据页数获取 PPT 图片
        * @api
        * @param page 页数
        * @param thumbnail 是否返回缩略图地址，默认：false
        * @returns 当没有打开 PPT 或传入的页数不正确时，返回 undefined，当 `thumbnail` 为 true 时，返回大图的对象，即 {@link PptImageData} 类型，当 `thumbnail` 为 false 时，返回 string 类型的地址。
        */
      getPptImgByPage(page?: number, thumbnail?: false): PptImageData | undefined;
      getPptImgByPage(page?: number, thumbnail?: true): string | undefined;
      /**
        * 动画 PPT 切到下一步动画，注意该 api 必须为用户主动性触发
        * @api
        * @description 当前打开的 PPT 非动画的情况下不生效
        */
      animationGoToNextStep(): this;
      /**
        * 动画 PPT 切到上一步动画，注意该 api 必须为用户主动性触发
        * @api
        * @description 当前打开的 PPT 非动画的情况下不生效
        */
      animationGoToPreviousStep(): this;
      /**
        * 切换到当前页的指定动画步骤中
        * @api
        * @param stepIndex 动画步骤数
        * @description 当前打开的 PPT 非动画的情况下不生效
        */
      switchAnimationStepIndex(stepIndex: number): this;
      /**
        * 打开一个 PPT
        * @api
        * @param option 调用参数
        */
      openPpt(option: OpenPptParams): this;
      /**
        * 关闭当前 PPT
        * @api
        * @param params 调用参数
        */
      closePpt(params?: ClosePptParams): this;
      /**
        * 设置动画步骤数
        * @param stepIndex 动画步骤数
        */
      setStepIndex(stepIndex: number): void;
      /**
        * 当前动画步骤索引
        * @api
        */
      get stepIndex(): number;
      /**
        * 当前正在打开的 PPT 数据
        * @api
        */
      get pptJson(): PptJsonType | undefined;
      /**
        * 是否已打开了 PPT
        * @api
        */
      get isOpenedPpt(): boolean;
      /**
        * 当前是否正在打开一个动画 PPT
        * @api
        */
      get isAnimationPpt(): boolean;
      /**
        * PPT 图片列表
        * @api
        * @description 当没打开 PPT 时返回 undefined
        */
      get pptImages(): PptImageData[] | undefined;
      /**
        * PPT 缩略图列表
        * @api
        * @description 当没打开 PPT 时返回 undefined
        */
      get thumbnails(): string[] | undefined;
      /**
        * 当前打开的 PPT 的文件名
        * @api
        * @description 当没打开 PPT 时返回 undefined
        */
      get fileName(): string | undefined;
      /**
        * 当前打开的 PPT 类型
        * @api
        * @description 当没打开 PPT 时返回 undefined
        */
      get pptType(): PptType | undefined;
      /**
        * 当前打开的 PPT 的标识 ID，当没有打开 PPT 的时候返回 0
        * @api
        * @description 当没打开 PPT 时返回 undefined
        */
      get currentAutoId(): number | string;
      /**
        * 当前打开的动画 PPT 地址
        * @api
        * @description 当没打开 PPT 时返回 undefined
        */
      get animationUrl(): string | undefined;
  }
}

declare module '@polyv/white-board-sdk/core/controller/resize' {
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  /**
    * 尺寸监听器
    * @class
    */
  export class ResizeController extends Controller {
      inited(): void;
      beforeDestroy(): void;
  }
}

declare module '@polyv/white-board-sdk/core/controller/text-input' {
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import type { OpenTextInputParams } from '@polyv/white-board-sdk/core/controller/text-input/types';
  export * from '@polyv/white-board-sdk/core/controller/text-input/types';
  /**
    * 文本输入框控制器
    * @class
    */
  export class TextInputController extends Controller {
      /**
        * 打开文本输入框
        * @api
        */
      openTextInput(params?: OpenTextInputParams): this;
      /**
        * 关闭输入框
        * @api
        */
      closeTextInput(): this;
  }
}

declare module '@polyv/white-board-sdk/core/controller/touch' {
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  /**
    * 触摸控制器
    * @class
    */
  export class TouchController extends Controller {
      /** 滑动切页滑动距离阀值，单位 px */
      static slideMoveThreshold: number;
      /** 滑动切页滑动时间阀值，单位 ms */
      static slideTimeThreshold: number;
      protected inited(): void;
      protected beforeDestroy(): void;
  }
}

declare module '@polyv/white-board-sdk/core/controller/user-role' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  /**
    * 用户角色控制器
    * @class
    */
  export class UserRoleController extends Controller {
      currentUserRole: string;
      constructor(whiteBoard: WhiteBoard);
      protected inited(): void;
      /**
        * 设置当前的用户角色
        * @api
        * @param userRole 用户角色
        */
      setCurrentUserRole(userRole: string): void;
  }
}

declare module '@polyv/white-board-sdk/core/controller/utils' {
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  export * from '@polyv/white-board-sdk/core/controller/utils/types';
  /**
    * 工具方法控制器
    * @class
    */
  export class UtilsController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      /**
        * 设置静态资源地址的协议头
        * @param url 地址
        */
      setStaticUrlProtocol(url: string): string;
  }
}

declare module '@polyv/white-board-sdk/core/controller/view' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import { RotateAngle, RotateDirection } from '@polyv/white-board-sdk/core/controller/view/types';
  export * from '@polyv/white-board-sdk/core/controller/view/types';
  /**
    * 视图控制器
    */
  export class ViewController extends Controller {
      /** 允许旋转的角度 */
      static allowRotateAngles: RotateAngle[];
      /** 网页全屏下的 className */
      static fullScreenClassName: string;
      constructor(whiteBoard: WhiteBoard);
      /**
        * 旋转内容层
        * @api
        * @param angle 旋转角度或选择方向，默认为 0
        */
      rotateContent(angle?: RotateAngle | RotateDirection): this;
      /**
        * 切换网页全屏状态
        * @api
        */
      toggleFullScreen(): this;
      /**
        * 进入网页全屏
        * @api
        */
      enterFullScreen(): this;
      /**
        * 退出网页全屏
        * @api
        */
      quitFullScreen(): this;
      /**
        * 当前内容层旋转的角度
        * @api
        */
      get rotateAngle(): RotateAngle;
      /**
        * 当前是否已横向旋转，即旋转到 90°、270°
        * @api
        */
      get isTransverseRotated(): boolean;
      /**
        * 当前是否正在网页全屏中
        * @api
        */
      get isFullScreen(): boolean;
  }
}

declare module '@polyv/white-board-sdk/core/controller/vision' {
  import { ZoomModel, ZoomType } from '@polyv/white-board-sdk/core/enums/zoom-enum';
  import { TriggerCustomEventParams } from '@polyv/white-board-sdk/core/event';
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import { SetVisionParams } from '@polyv/white-board-sdk/core/controller/vision/types';
  export * from '@polyv/white-board-sdk/core/controller/vision/types';
  /**
    * 视角控制器
    * @class
    */
  export class VisionController extends Controller {
      /** 坐标系宽度边界百分比 */
      _boundWidthScale: number;
      /** 坐标系高度边界百分比 */
      _boundHeightScale: number;
      constructor(whiteBoard: WhiteBoard);
      inited(): void;
      /**
        * 设置缩放模式
        * @api
        * @param zoomModel 缩放模式
        */
      setZoomModel(zoomModel: ZoomModel): this;
      /**
        * 设置视角数据，设置顺序：缩放百分比 -> 视角中心点
        * @api
        * @param params 视角参数
        */
      setVision(params?: SetVisionParams, triggerCustom?: TriggerCustomEventParams): this;
      /**
        * 校正视角中心点
        */
      proofVisionCenter(): void;
      /**
        * 修改内容层比例
        * @api
        * @param contentProp 内容层比例
        */
      setContentProp(contentProp?: number): void;
      /**
        * 缩放视角
        * @api
        * @param percen 缩放百分比
        */
      zoom(percen?: number | ZoomType, triggerCustom?: TriggerCustomEventParams): this;
      /**
        * 获取全视角图片。当前为无限画布下返回 null
        */
      getFullViewImg(): string | null;
      /**
        * 视角是否在固定状态
        * @api
        */
      isFixedVision(): boolean;
      /**
        * 内容层比例
        * @api
        */
      get contentProp(): number;
      /**
        * 当前缩放模式
        * @api
        */
      get zoomModel(): ZoomModel;
      /**
        * 当前缩放百分比
        * @api
        */
      get zoomPercen(): number;
      /**
        * 实际可缩放的最小百分比
        * @api
        */
      get zoomMinPercen(): number;
      /**
        * 实际可缩放的最大百分比
        * @api
        */
      get zoomMaxPercen(): number;
      /**
        * 视角中心点坐标
        * @api
        */
      get visionCenter(): WorldPoint;
      /**
        * 坐标系宽度边界百分比
        * @api
        */
      get boundWidthScale(): number;
      /**
        * 坐标系高度边界百分比
        * @api
        */
      get boundHeightScale(): number;
  }
}

declare module '@polyv/white-board-sdk/core/controller/watermark' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Controller } from '@polyv/white-board-sdk/core/controller/Controller';
  import type { WatermarkConfig } from '@polyv/white-board-sdk/core/controller/watermark/types';
  export * from '@polyv/white-board-sdk/core/controller/watermark/types';
  /**
    * 水印控制器
    * @class
    */
  export class WatermarkController extends Controller {
      constructor(whiteBoard: WhiteBoard);
      protected inited(): void;
      protected beforeDestroy(): void;
      /**
        * 设置水印配置
        * @api
        * @param config 水印配置，默认：false
        */
      setWatermark(config?: WatermarkConfig | boolean): this;
      /**
        * 移除水印
        * @api
        */
      removeWatermark(): this;
      /**
        * 当前的水印配置
        * @api
        */
      get watermarkConfig(): WatermarkConfig | boolean;
  }
}

declare module '@polyv/white-board-sdk/core/basic/types' {
  import { UserInfo } from '@polyv/white-board-sdk/core/interfaces';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  /**
    * 底层信息基础数据
    */
  export interface BasicInfoBaseData {
      /**
        * 标识 id
        */
      id: string;
      /**
        * 所在的画板 id
        */
      boardId: string;
      /**
        * 客户端 id
        */
      clientId: string;
      /**
        * 用户信息
        */
      userInfo?: UserInfo;
  }
  /**
    * 基础信息配置
    */
  export interface BasicInfoConfig extends Partial<BasicInfoBaseData> {
      /**
        * 白板实例
        */
      whiteBoard: WhiteBoard;
  }
}

declare module '@polyv/white-board-sdk/core/tools/shape' {
  import { BasicInfo } from '@polyv/white-board-sdk/core/basic';
  import { Canvas, CanvasStyle } from '@polyv/white-board-sdk/core/canvas';
  import { ShapeSeatZoomData, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { BBox, DrawParams, ShapeBaseData, ShapeConfig, SimpleBBox } from '@polyv/white-board-sdk/core/interfaces/shape';
  export * from '@polyv/white-board-sdk/core/interfaces/shape';
  /**
    * 图形类
    * @class
    */
  export class Shape extends BasicInfo {
      /** 图形名称，默认为空字符串 */
      shapeName: string;
      isActionStackItem: boolean;
      /** 该图形是否可被选中 */
      capture: boolean;
      /** 该图形是否被固定 */
      fixed: boolean;
      constructor(config: ShapeConfig);
      /**
        * 获取当前图形数据，该方法允许重写
        */
      getBaseData(): ShapeBaseData;
      /**
        * 设置画布样式
        * @param canvas 目标画布
        * @param style 样式对象
        */
      protected setCanvasStyle(canvas: Canvas, style?: CanvasStyle): void;
      /**
        * 设置画布中心点
        */
      protected setCanvasCenter(params: DrawParams): void;
      /**
        * 恢复画布中心点
        */
      protected restoreCanvasCenter(params: DrawParams): void;
      /**
        * 绘制当前图形
        * @param params 绘制参数
        */
      draw(params: DrawParams): void;
      /**
        * 判断点是否靠近该图形，默认返回 false
        * @param point 世界坐标点
        * @param distance 判断距离
        */
      isNearby(point: WorldPoint, distance?: number): boolean;
      /**
        * 判断当前图形是否与一个范围的包围盒有相交，默认返回 false
        * @param rangeBBox 范围的包围盒
        */
      isIntersectBBox(rangeBBox: SimpleBBox): boolean;
      /**
        * 获取包围盒（世界坐标系）
        */
      getBBox(): BBox | undefined;
      /**
        * 判断当前图形是否与传入的视角包围盒有重叠的地方，默认返回 true
        * @param visionBBox 视角包围盒包围盒
        * @returns 返回 `true` 表示有重叠
        */
      isOverlapVisionBBox(visionBBox: BBox): boolean;
      /**
        * 获取当前图形的 svg
        * @returns 图形的 svg
        */
      getShapeSvg(): SVGElement | undefined;
      /**
        * 设置是否已被擦除
        * @param erased
        */
      setErased(erased?: boolean): this;
      /**
        * 设置是否可见
        * @param visible 是否可见，默认：true
        */
      setVisible(visible?: boolean): this;
      /**
        * 设置图形绘制的持续时间
        * @param durationTime 持续时间
        */
      setDurationTime(durationTime: number): this;
      /**
        * 偏移当前图形
        * @param diffX x坐标偏移量
        * @param diffY y坐标偏移量
        */
      deviationPoints(diffX: number, diffY: number): void;
      /**
        * 缩放坐标
        * @param data 缩放数据
        */
      zoomSeatPoints(data: ShapeSeatZoomData): void;
      /**
        * 获取在世界坐标系下的一半的线条宽度
        * @param lineWidth 线条宽度
        */
      protected getHalfLineWidth(lineWidth: number): number;
      /**
        * 获取该图形的颜色描述。
        * 获取优先级：该图形的 strokeStyle 属性 > 白板实例教具的 strokeStyle。
        */
      getShapeColor(): string;
      /**
        * 设置图形动画进度值
        * @param progress 进度，范围 0 ~ 1，小于 0 或大于 1 时默认为 0 或 1
        */
      setAnimationProgress(progress: number): void;
      /**
        * 设置层叠数
        * @param zIndex 层叠数
        */
      setZIndex(zIndex: number): void;
      /**
        * 该图形是否可见
        */
      get visible(): boolean;
      /**
        * 层叠数
        */
      get zIndex(): number;
      /**
        * 持续时间
        */
      get durationTime(): number;
      /**
        * 该图形是否已被擦除
        */
      get erased(): boolean;
      /** 动画时钟进度，范围：0 ~ 1 */
      get animationProgress(): number;
  }
}

declare module '@polyv/white-board-sdk/core/board/types' {
  import { Behavior } from '@polyv/white-board-sdk/core/tools/behavior';
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  /**
    * 画板栈与历史列表的 item 类型
    */
  export type StackItem = Shape | Behavior;
  /**
    * 画板类实例化参数类型
    */
  export interface BoardConfig {
      /**
        * 画板 id，组成格式：board_{数字字符}
        */
      boardId?: string;
  }
  /**
    * 画板 `drawBoardToCanvas` 参数类型
    */
  export interface DrawBoardParams {
      /** 是否过滤包围盒，默认：true */
      filterBBox?: boolean;
      /** 是否过滤图形的 visible 属性，默认：true */
      filterVisible?: boolean;
      /** 是否使用动画绘制，默认 true */
      useAnimation?: boolean;
      /** 调用来源 */
      source?: string;
  }
}

declare module '@polyv/white-board-sdk/core/enums/zoom-enum' {
  /**
    * 缩放模式枚举
    * @category Vision
    */
  export enum ZoomModel {
      /**
        * 内容层内部缩放
        * @description 缩放时在canvas内缩放，内容层大小不变
        */
      ZoomInSide = "zoomInside",
      /**
        * 内容层外部缩放
        * @description 缩放时，改变内容层大小
        * @description 该缩放模式下，缩放百分比最小值不小于 1，且 `boundWidthScale` 与 `boundHeightScale` 无效
        */
      ZoomOutSide = "zoomOutside"
  }
  /**
    * 缩放类型枚举
    * @category Vision
    */
  export enum ZoomType {
      /** 放大 */
      Large = "large",
      /** 缩小 */
      Small = "small",
      /** 恢复 */
      Reset = "reset"
  }
}

declare module '@polyv/white-board-sdk/core/interfaces/shape' {
  /**
    * @file 图形模块的类型定义
    */
  import { Canvas } from '@polyv/white-board-sdk/core/canvas';
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  import { BasicInfoBaseData, BasicInfoConfig } from '@polyv/white-board-sdk/core/basic/types';
  /**
    * 绘制图形方法参数
    */
  export interface DrawParams {
      /** 绘制的画布对象 */
      canvas: Canvas;
      /** 是否使用动画绘制，默认 true */
      useAnimation?: boolean;
  }
  /**
    * 图形基础数据
    */
  export interface ShapeBaseData extends BasicInfoBaseData {
      /** 图形名称 */
      shapeName: string;
      /**
        * 层叠数，用于决定绘制的先后顺序，默认为 0
        */
      zIndex: number;
      /**
        * 持续时间，单位：毫秒(ms)，默认为 0
        */
      durationTime: number;
      /**
        * 其他参数
        */
      [key: string]: unknown;
  }
  /**
    * 图形配置
    */
  export interface ShapeConfig extends BasicInfoConfig, Partial<ShapeBaseData> {
      /**
        * 该图形是否可见，选传，默认为 true
        */
      visible?: boolean;
      /**
        * 该图形是否可被选中，选传，默认为 true
        */
      capture?: boolean;
      /**
        * 该图形是否被固定，选传，默认为 false
        */
      fixed?: boolean;
      /**
        * 其他参数
        */
      [key: string]: unknown;
  }
  /**
    * 图形类
    */
  export interface ShapeCtor {
      /** 图形名称 */
      shapeName: string;
      new (config: ShapeConfig): Shape;
  }
  /**
    * 图形匹配器类型
    */
  export type ShapeMatchStore = {
      [shapeName: string]: ShapeCtor | undefined;
  };
  /**
    * 起止点方向
    */
  export type PointDirection = 't' | 'b' | 'l' | 'r' | 'tl' | 'tr' | 'bl' | 'br';
  /**
    * 简单的包围盒（世界坐标系）
    */
  export interface SimpleBBox {
      /** 世界坐标系 x 坐标最小值 */
      minX: number;
      /** 世界坐标系 x 坐标最大值 */
      maxX: number;
      /** 世界坐标系 y 坐标最小值 */
      minY: number;
      /** 世界坐标系 y 坐标最大值 */
      maxY: number;
  }
  /**
    * 包围盒类型（世界坐标系）
    */
  export interface BBox extends SimpleBBox {
      /** 左上角世界坐标系 x 坐标 */
      x: number;
      /** 左上角世界坐标系 y 坐标 */
      y: number;
      /** 世界坐标系下的宽度 */
      width: number;
      /** 世界坐标系下的高度 */
      height: number;
  }
}

declare module '@polyv/white-board-sdk/core/canvas/base' {
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { CanvasArrowParams, CanvasCtxConfig, CanvasFontStyle, CanvasFontWeight, CanvasStarParams, Point } from '@polyv/white-board-sdk/core/canvas/types';
  /**
    * 基础的画布封装类
    * @class
    */
  export class CanvasBase {
      /** 画布初始化配置 */
      config: CanvasCtxConfig;
      /** 所在的白板示例 */
      whiteBoard: WhiteBoard;
      /** 是否使用 svg 引擎 */
      useSvg: boolean;
      constructor(config: CanvasCtxConfig);
      get width(): number;
      get height(): number;
      /**
        * 输出当前画布的 svg，仅在 `useSvg` 下生效
        * @todo
        */
      getSvg(): SVGElement | undefined;
      /**
        * 获取渲染器节点选择器
        */
      getRenderQuery(): DomQuery<Element>;
      /**
        * 清空画布内容
        */
      clearRender(): void;
      /**
        * 设置渲染器宽高，注意：该方法会清空画布
        * @param width 宽度
        * @param height 高度
        */
      setRenderSize(width: number, height: number): void;
      /**
        * 开始一条路径或重置当前路径
        * @description 封装 `beginPath`
        */
      beginPath(): void;
      /**
        * 创建从当前点回到起始点的路径
        * @description 封装 `closePath`
        */
      closePath(): void;
      /**
        * 把当前路径移到指定点中
        * @description 封装 `moveTo`
        * @param x 目标点的 x 坐标
        * @param y 目标点的 y 坐标
        */
      moveTo(x: number, y: number): void;
      /**
        * 添加一个新点，然后创建从该点到画布中最后指定点的线条（不会绘制线条）
        * @description 封装 `lineTo`
        * @param x 目标点的 x 坐标
        * @param y 目标点的 y 坐标
        */
      lineTo(x: number, y: number): void;
      /**
        * 创建二阶贝塞尔曲线路径
        * @description 封装 `quadraticCurveTo`
        * @param cpx 贝塞尔控制点的 x 坐标
        * @param cpy 贝塞尔控制点的 y 坐标
        * @param x 结束点的 x 坐标
        * @param y 结束点的 y 坐标
        */
      quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
      /**
        * 创建三阶贝塞尔曲线路径
        * @description 封装 `bezierCurveTo`
        * @param cp1x 第一个贝塞尔控制点的 x 坐标
        * @param cp1y 第一个贝塞尔控制点的 y 坐标
        * @param cp2x 第二个贝塞尔控制点的 x 坐标
        * @param cp2y 第二个贝塞尔控制点的 y 坐标
        * @param endx 结束点的 x 坐标
        * @param endy 结束点的 y 坐标
        */
      bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, endx: number, endy: number): this;
      /**
        * 绘制当前路径
        * @description 封装 `stroke`
        */
      stroke(): this;
      /**
        * 填充当前路径
        * @description 封装 `fill`
        */
      fill(): this;
      /**
        * 绘制矩形（无填充）
        * @description 封装 `strokeRect`
        * @param startX 开始点的 x 坐标
        * @param startY 开始点的 y 坐标
        * @param endX 结束点的 x 坐标
        * @param endY 结束点的 y 坐标
        */
      strokeRect(startX: number, startY: number, endX: number, endY: number): this;
      /**
        * 绘制文本（填充）
        * @description 封装 `fillText`
        * @param text 绘制的文本字符
        * @param x 绘制文本的 x 坐标
        * @param y 绘制文本的 y 坐标
        * @param maxWidth 允许的最大文本宽度，选传，以像素计。
        */
      fillText(text: string, x: number, y: number, maxWidth?: number): this;
      /**
        * 获取文本在画布中的测量值
        * @description 封装 `measureText`
        * @param text 文本字符
        */
      measureText(text: string): TextMetrics;
      /**
        * 旋转当前绘图
        * @description 封装 `rotate`
        * @param angle 用弧度表示的角度
        */
      rotate(angle: number): this;
      /**
        * 保存当前环境
        * @description 封装 `save`
        */
      save(): this;
      /**
        * 恢复之前保存过的环境
        * @description 封住 `restore`
        */
      restore(): this;
      /**
        * 重新映射画布上圆点 (0, 0) 的位置
        * @description 封装 `translate`
        * @param x 新圆点的 x 坐标
        * @param y 新圆点的 y 坐标
        */
      translate(x: number, y: number): this;
      /**
        * 绘制图片
        * @description 封装 `drawImage`
        */
      drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): this;
      toDataURL(type?: string): string;
      /**
        * 绘制直线（无填充）
        * @param startX 开始点的 x 坐标
        * @param startY 开始点的 y 坐标
        * @param endX 结束点的 x 坐标
        * @param endY 结束点的 y 坐标
        */
      strokeStraightLine(startX: number, startY: number, endX: number, endY: number): this;
      /**
        * 绘制椭圆（无填充）
        * @param x 圆心点 x 坐标
        * @param y 圆心点 y 坐标
        * @param radiusX 椭圆 x 轴半径
        * @param radiusY 椭圆 y 轴半径
        */
      strokeEllipse(x: number, y: number, radiusX: number, radiusY: number): this;
      /**
        * 绘制圆形（无填充）
        * @param x 圆心点 x 坐标
        * @param y 圆心点 y 坐标
        * @param r 圆的半径
        */
      strokeCircular(x: number, y: number, r: number): this;
      /**
        * 绘制圆形（填充）
        * @param x 圆心点 x 坐标
        * @param y 圆心点 y 坐标
        * @param r 圆的半径
        */
      fillCircular(x: number, y: number, r: number): this;
      /**
        * 获取箭头绘制路径
        * @param startX 开始点的 x 坐标
        * @param startY 开始点的 y 坐标
        * @param endX 结束点的 x 坐标
        * @param endY 结束点的 y 坐标
        * @param params 箭头参数
        */
      measureArrow(startX: number, startY: number, endX: number, endY: number, params?: CanvasArrowParams): {
          x: number;
          y: number;
      }[];
      /**
        * 绘制箭头
        * @param startX 开始点的 x 坐标
        * @param startY 开始点的 y 坐标
        * @param endX 结束点的 x 坐标
        * @param endY 结束点的 y 坐标
        * @param params 箭头参数
        */
      arrow(startX: number, startY: number, endX: number, endY: number, params?: CanvasArrowParams): this;
      /**
        * 绘制三角形（非填充）
        * @param p1x 第一点 x 坐标
        * @param p1y 第一点 y 坐标
        * @param p2x 第二点 x 坐标
        * @param p2y 第二点 y 坐标
        * @param p3x 第三点 x 坐标
        * @param p3y 第三点 y 坐标
        */
      strokeTriangle(p1x: number, p1y: number, p2x: number, p2y: number, p3x: number, p3y: number): this;
      /**
        * 绘制多边形
        * @param points 点列表
        * @param close 是否闭合到起点
        */
      strokePolygon(points: Point[], close?: boolean): this;
      /**
        * 获取星形的路径
        * @param startX 开始点的 x 坐标
        * @param startY 开始点的 y 坐标
        * @param endX 结束点的 x 坐标
        * @param endY 结束点的 y 坐标
        * @param params 星形参数
        */
      measureStar(startX: number, startY: number, endX: number, endY: number, params?: CanvasStarParams): Point[];
      /**
        * 设置笔触颜色
        * @param strokeStyle 笔触颜色
        */
      setStrokeStyle(strokeStyle: string | CanvasGradient | CanvasPattern): void;
      /**
        * 设置线条宽度
        * @param lineWidth 线条宽度
        */
      setLineWidth(lineWidth: number): void;
      /**
        * 设置填充颜色
        * @param fillStyle 填充颜色
        */
      setFillStyle(fillStyle: string | CanvasGradient | CanvasPattern): void;
      /**
        * 设置文本基线
        * @param textBaseline 文本基线
        */
      setTextBaseline(textBaseline: CanvasTextBaseline): void;
      /**
        * 设置相交线的拐角类型
        * @param lineJoin 拐角类型
        */
      setLineJoin(lineJoin: CanvasLineJoin): void;
      /**
        * 设置线条末端线帽样式
        * @param lineCap 线帽样式
        */
      setLineCap(lineCap: CanvasLineCap): void;
      /**
        * 设置文本样式
        * @param fontStyle 文本样式
        */
      setFontStyle(fontStyle: CanvasFontStyle): void;
      /**
        * 设置文本粗细
        * @param fontWeight 文本粗细
        */
      setFontWeight(fontWeight: CanvasFontWeight): void;
      /**
        * 设置文本字体大小
        * @param fontSize 文本字体大小
        */
      setFontSize(fontSize: string): void;
      /**
        * 设置文本字体系列
        * @param fontFamily 文本字体系列
        */
      setFontFamily(fontFamily: string): void;
  }
}

declare module '@polyv/white-board-sdk/core/canvas/types' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  /** 画布类参数 */
  export interface CanvasCtxConfig {
      /** 画布类型 */
      type: string;
      /** 白板实例 */
      whiteBoard: WhiteBoard;
      /** 画布宽度 */
      width: number;
      /** 画布高度 */
      height: number;
      /** 是否使用 svg 引擎，默认 false */
      useSvg?: boolean;
      /** 强制 devicePixelRatio */
      dpr?: number;
  }
  /** 当前画布的 Rect 数据 */
  export interface CanvasClientRect {
      /** 宽度 */
      width: number;
      /** 高度 */
      height: number;
  }
  /**
    * 清空画布方式，size - 尺寸，api - `clearRect`
    */
  export type ClearCanvasWay = 'size' | 'api';
  /**
    * 画布文本样式类型
    */
  export type CanvasFontStyle = 'normal' | 'italic';
  /**
    * 画布文本粗细类型
    */
  export type CanvasFontWeight = 'normal' | 'bold' | 'lighter';
  /**
    * 画布字体属性
    */
  export interface CanvasFontAttribute {
      /** 字体斜体 */
      fontStyle: CanvasFontStyle;
      /** 字体加粗 */
      fontWeight: CanvasFontWeight;
      /** 字体大小 */
      fontSize: string;
      /** 字体样式 */
      fontFamily: string;
  }
  /**
    * 画布样式对象
    */
  export interface CanvasStyle {
      /** 线条宽度 */
      lineWidth?: number;
      /** 笔触颜色 */
      strokeStyle?: string;
      /** 填充颜色 */
      fillStyle?: string;
      /** 字体对齐基准 */
      textBaseline?: CanvasTextBaseline;
      /** 字体斜体 */
      fontStyle?: CanvasFontStyle;
      /** 字体加粗 */
      fontWeight?: CanvasFontWeight;
      /** 字体大小 */
      fontSize?: number;
      /** 字体样式 */
      fontFamily?: string;
  }
  /**
    * 画布箭头参数
    */
  export interface CanvasArrowParams {
      /**
        * 末端箭头高度，选传，默认：20
        */
      triangleHeight?: number;
      /**
        * 箭头顶点角度，选传，默认：45
        */
      vertexAngle?: number;
      /**
        * 箭头开始端类型，选传，默认：tapering，tapering - 尖端型，rightAngle - 直角型，在双向箭头下该参数无效
        */
      startType?: 'tapering' | 'rightAngle';
      /**
        * 是否为双向箭头，选传，默认：false
        */
      twoWay?: boolean;
  }
  /**
    * 画布星形参数
    */
  export interface CanvasStarParams {
      /**
        * 星形角数量，选传，默认：5
        */
      angles?: number;
      /**
        * 内圈占比，选传，默认：0.5，范围：0 ~ 1
        */
      circlePercent?: number;
  }
  /**
    * 普通点
    */
  export type Point = {
      x: number;
      y: number;
  };
}

declare module '@polyv/white-board-sdk/core/controller/image/types' {
  /**
    * 图片节点记录对象类型
    */
  export interface ImageElemStoreItem {
      /** 图片节点 */
      image: HTMLImageElement;
      /** 图片来源 */
      source: string;
  }
  /**
    * 图片节点记录器类型
    */
  export type ImageElemStore = {
      [imageUrl: string]: ImageElemStoreItem | undefined;
  };
  /**
    * 图片加载状态
    */
  export type ImageLoadState = 'success' | 'loading' | 'error';
  /**
    * 图片加载数据
    */
  export type ImageLoadData = {
      /** 图片节点 */
      image: HTMLImageElement;
      /** 图片加载状态 */
      state: ImageLoadState;
  };
  /**
    * 图片上传成功回调参数
    */
  export interface ImageUploadSuccessCallbackParams {
      /** 图片在线地址 */
      imageUrl: string;
  }
  /**
    * 图片上传失败回调参数
    */
  export interface ImageUploadFailCallbackParams {
      message: string;
  }
  /**
    * 图片上传处理方法参数
    */
  export interface ImageUploadHandlerParams {
      file: File;
      success: (params: ImageUploadSuccessCallbackParams) => void;
      fail: (params: ImageUploadFailCallbackParams) => void;
  }
  export type ImageUploadHandler = (params: ImageUploadHandlerParams) => unknown;
}

declare module '@polyv/white-board-sdk/core/enums/other-enum' {
  /**
    * 操作模式
    */
  export enum OperationModel {
      /**
        * 常规操作模式
        * @description 该模式下，触发主动的撤回、重做、清空、橡皮擦的操作时可操作任意的对象
        */
      Normal = "normal",
      /**
        * 仅操作自己的操作模式
        * @description 该模式下，触发主动的撤回、重做、清空、橡皮擦的操作时只能操作自己创建的对象
        * @description 如果实例化白板时，没有传入 `userInfo` 或 `userInfo.userId` 为空字符串、 `undefined` 时，均判断为非自己创建的对象
        * @description 创建行为或图形对象时，没有传入 `userInfo` 或 `userInfo.userId` 为空字符串、 `undefined` 时，均判断为非自己创建的对象
        */
      Self = "self",
      /**
        * 禁止操作模式
        * @description 该模式下，无法操作任何对象
        */
      Never = "never"
  }
}

declare module '@polyv/white-board-sdk/core/interfaces/cursor' {
  /**
    * @file 光标模块类型
    */
  import { DomQuerySelector } from '@polyv/white-board-sdk/utils/dom';
  import { Cursor } from '@polyv/white-board-sdk/core/controller/cursor/Cursor';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces/index';
  /**
    * 光标描述接口
    */
  export interface CursorDescription {
      /** 世界坐标点 */
      worldPoint?: WorldPoint;
      /** 光标名称 */
      cursorName?: string;
      /** 光标的颜色 */
      color?: string;
  }
  /**
    * 光标类实例化参数
    */
  export interface CursorConfig extends CursorDescription {
      whiteBoard: WhiteBoard;
      /** 客户端 id，会作为光标的唯一标识 */
      clientId: string;
  }
  /**
    * 光标适配器
    */
  export interface CursorAdapter {
      /** 光标名称 */
      cursorName: string;
      /** 获取光标的节点 */
      getCursorElem: () => DomQuerySelector;
      /** 获取 css 光标样式 */
      getCursorStyle?: () => string;
      /** 销毁光标适配器 */
      destroy?: () => unknown;
  }
  /**
    * 光标适配器类
    */
  export interface CursorAdapterCtor {
      /** 光标名称 */
      cursorName: string;
      /** 构造器类型 */
      new (whiteBoard: WhiteBoard, cursor?: Cursor): CursorAdapter;
  }
  /**
    * 光标匹配类型
    */
  export type CursorMatchStore = {
      [cursorName: string]: CursorAdapterCtor | undefined;
  };
}

declare module '@polyv/white-board-sdk/core/consts/appliance-const' {
  /**
    * @constant 箭头教具名称
    */
  export const ARROW_APPLIANCE_NAME = "arrow";
  /**
    * @constant 选择教具名称
    */
  export const CHOICE_APPLIANCE_NAME = "choice";
  /**
    * @constant 椭圆教具类
    */
  export const ELLIPSE_APPLIANCE_NAME = "ellipse";
  /**
    * @constant 橡皮擦教具名称
    */
  export const ERASER_APPLIANCE_NAME = "eraser";
  /**
    * @constant 自由画笔教具名称
    */
  export const FREE_LINE_APPLIANCE_NAME = "freeLine";
  /**
    * @constant 激光笔教具名称
    */
  export const LASER_PEN_APPLIANCE_NAME = "laserPen";
  /**
    * @constant 移动教具名称
    */
  export const MOVE_APPLIANCE_NAME = "move";
  /**
    * @constant 多边形教具名称
    */
  export const POLYGON_APPLIANCE_NAME = "polygon";
  /**
    * @constant 矩形教具名称
    */
  export const RECT_APPLIANCE_NAME = "rect";
  /**
    * @constant 星形教具名称
    */
  export const STAR_APPLIANCE_NAME = "star";
  /**
    * @constant 直线教具名称
    */
  export const STRAIGHT_LINE_APPLIANCE_NAME = "straightLine";
  /**
    * @constant 文本教具名称
    */
  export const TEXT_APPLIANCE_NAME = "text";
  /**
    * @constant 三角形教具名称
    */
  export const TRIANGLE_APPLIANCE_NAME = "triangle";
}

declare module '@polyv/white-board-sdk/core/consts/behavior-consts' {
  /**
    * @constant 清空行为名称
    */
  export const CLEAR_BEHAVIOR_NAME = "clear";
  /**
    * @constant 编辑行为名称
    */
  export const EDITOR_BEHAVIOR_NAME = "editor";
  /**
    * @constant 橡皮擦行为名称
    */
  export const ERASER_BEHAVIOR_NAME = "eraser";
  /**
    * @constant 隐藏激光笔行为名称
    */
  export const LASER_PEN_BEHAVIOR_NAME = "laserPen";
  /**
    * @constant 重做行为名称
    */
  export const REDO_BEHAVIOR_NAME = "redo";
  /**
    * @constant 撤回行为名称
    */
  export const UNDO_BEHAVIOR_NAME = "undo";
}

declare module '@polyv/white-board-sdk/core/consts/shape-consts' {
  /**
    * @constant 箭头图形名称
    */
  export const ARROW_SHAPE_NAME = "arrow";
  /**
    * @constant 椭圆图形名称
    */
  export const ELLIPSE_SHAPE_NAME = "ellipse";
  /**
    * @constant 自由曲线图形名称
    */
  export const FREE_LINE_SHAPE_NAME = "freeLine";
  /**
    * @constant 图片图形名称
    */
  export const IMAGE_SHAPE_NAME = "image";
  /**
    * @constant 激光笔图形名称
    */
  export const LASER_PEN_SHAPE_NAME = "laserPen";
  /**
    * @constant 多边形图形名称
    */
  export const POLYGON_SHAPE_NAME = "polygon";
  /**
    * @constant 矩形图形名称
    */
  export const RECT_SHAPE_NAME = "rect";
  /**
    * @constant 星形图形名
    */
  export const STAR_SHAPE_NAME = "star";
  /**
    * @constant 直线图形名称
    */
  export const STRAIGHT_LINE_SHAPE_NAME = "straightLine";
  /**
    * @constant 文本图形名称
    */
  export const TEXT_SHAPE_NAME = "text";
  /**
    * @constant 三角形图形名称
    */
  export const TRIANGLE_SHAPE_NAME = "triangle";
}

declare module '@polyv/white-board-sdk/core/controller/Controller' {
  /**
    * @file 公用的控制器父类
    * 由于按需加载功能，该文件不得直接引用 core 中的代码，只能引入类型代码
    */
  import type { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  /**
    * 白板控制器
    * @class
    */
  export class Controller {
      whiteBoard: WhiteBoard;
      constructor(whiteBoard: WhiteBoard);
      /**
        * 白板示例初始化完成的 hook
        */
      protected inited(): void;
      /**
        * 白板实例被销毁之前的 hook
        */
      protected beforeDestroy(): void;
  }
}

declare module '@polyv/white-board-sdk/core/enums/auth-enum' {
  /**
    * 内置的权限枚举
    * @category Auth
    */
  export enum Auth {
      /**
        * 允许发送 socket 事件
        */
      SendSocket = "SendSocket",
      /**
        * 允许操纵教具
        * @description 仍可调用 `changeCurrentAppliance` `changeLineWidth` 等方法操纵教具
        */
      Appliance = "Appliance",
      /**
        * 允许操纵视角
        * @description 仍可调用 `setVision` `zoom` 等方法操作视角
        */
      Vision = "Vsion",
      /**
        * 允许撤回与重做当前画板
        * @description 仍可调用 `undoCurrentBoard` `redoCurrentBoard` 进行撤回重做
        */
      UndoRedo = "UndoRedo",
      /**
        * 允许清空当前画板
        * @description 仍可调用 `clearCurrentBoard` 进行清空
        */
      Clear = "Clear",
      /**
        * 允许开启网格功能
        * @description 仍可调用 `setGridEnabled` 等网格模块方法
        */
      Grid = "Gid",
      /**
        * 允许控制页数、ppt 的动画步骤数
        * @description 仍可调用 `changeCurrentPage` `prePage` `nextPage` 等方法进行页面
        */
      Page = "Page",
      /**
        * 能否自由翻页，不存在该权限时，只能翻到主播最大的页数
        */
      FreedomPage = "FreedomPage",
      /**
        * 允许添加页数，前提需要有 {@link Auth.Page} 权限
        * @description 仍可调用 `addPage` `prePage` `nextPage` 等方法进行页数添加
        */
      AddPage = "AddPage",
      /**
        * 允许编辑图形
        */
      EditShape = "EditShape"
  }
}

declare module '@polyv/white-board-sdk/core/enums/editor-enum' {
  /**
    * 编辑操作类型枚举
    */
  export enum EditOperation {
    /** 移动图形 */
    Move = "move",
    /** 缩放图形 */
    Size = "size",
    /** 编辑文本数据 */
    Text = "text",
    /** 修改层叠数 */
    ZIndex = "zIndex"
  }
}

declare module '@polyv/white-board-sdk/core/enums/user-role-enum' {
  /**
    * 观众角色
    */
  export enum UserRole {
      /**
        * 主播，该模式下的观众可任意操作白板，同时所有的操作都会广播到房间中。
        * ```
        * - 云直播：讲师、具有主讲权限的嘉宾
        * - 高互动：研讨会主持人、联席主持人、具有权限的参会人
        * ```
        */
      Anchor = "Anchor",
      /**
        * 普通观众，该模式下的观众只能切页，同时页数只能切换到跟主播最大的页数。
        * ```
        * - 云直播：观看页观众、嘉宾、助教
        * ```
        */
      OrdinaryViewer = "OrdinaryViewer",
      /**
        * 研讨会移动端主持人
        * ```
        * - 高互动：移动端主持人
        * ```
        */
      SeminarMobileHost = "SeminarMobileHost",
      /**
        * 研讨会参会人
        * ```
        * - 高互动：参会人
        * ```
        */
      SeminarAttendee = "SeminarAttendee"
  }
}

declare module '@polyv/white-board-sdk/core/event/custom-event' {
  import { WhiteEvents } from '@polyv/white-board-sdk/core/event';
  /**
    * 自定义事件参数对象类型
    */
  export type TriggerCustomEventObject = {
      [WhiteEvents.CurrentPageChangedCustom]?: boolean;
      [WhiteEvents.PushHistoryCustom]?: boolean;
      [WhiteEvents.VisionCenterChangedCustom]?: boolean;
      [WhiteEvents.ZoomPercenChangedCustom]?: boolean;
  };
  /**
    * 自定义事件参数类型，默认为 `true`
    */
  export type TriggerCustomEventParams = TriggerCustomEventObject | boolean;
  /**
    * 根据 triggerCustom 判断自定义事件是否回调
    * @param event 事件
    * @param params 参数
    */
  export function canTriggerCustomEvent(event: keyof TriggerCustomEventObject, params?: TriggerCustomEventParams): boolean;
}

declare module '@polyv/white-board-sdk/core/event/event-enum' {
  /**
    * 白板事件枚举
    * @enum
    */
  export enum WhiteEvents {
      /**
        * 初始化完成事件，即 WhiteBoard 的构造函数执行到最后
        * @params {@link WhiteBoardInitedEventParams}
        */
      WhiteBoardInited = "whiteBoardInited",
      /**
        * 白板实例被销毁之前
        * @params {@link BeforeDestroyEventParams}
        */
      BeforeDestroy = "beforeDestroy",
      /**
        * 触发 resize 方法
        * @important 注意该事件的回调内不允许执行 resize 方法，否则会出现死循环
        * @params {@link ResizeCallbackEventParams}
        */
      ResizeCallback = "resizeCallback",
      /**
        * 外层容器尺寸改变
        */
      OutsideResize = "outsideResize",
      /**
        * 用户角色被修改
        * @params {@link UserRoleChangedEventParams}
        */
      UserRoleChanged = "userRoleChanged",
      /**
        * 当前教具被修改之后
        * @params {@link CurrentApplianceChangedEventParams}
        */
      CurrentApplianceChanged = "currentApplianceChanged",
      /**
        * 笔触大小被修改之后
        * @params {@link LineWidthChangedEventParams}
        */
      LineWidthChanged = "lineWidthChanged",
      /**
        * 笔触颜色被修改之后
        * @params {@link StrokeStyleEventParams}
        */
      StrokeStyleChanged = "strokeStyleChanged",
      /**
        * 马克笔透明度被修改之后
        * @params {@link MarkerOpacityChangedEventParams}
        */
      MarkerOpacityChanged = "markerOpacityChanged",
      /**
        * 马克笔开关被修改之后
        * @params {@link MarkerEnabledChangedEventParams}
        */
      MarkerEnabledChanged = "markerEnabledChanged",
      /**
        * 字体大小被修改之后
        * @params {@link FontSizeChangedEventParams}
        */
      FontSizeChanged = "fontSizeChanged",
      /**
        * 触发绘画按下
        * @params {@link TriggeredEventParams}
        */
      TriggeredDrawDown = "triggeredDrawDown",
      /**
        * 触发绘画移动
        * @params {@link TriggeredEventParams}
        */
      TriggeredDrawMove = "triggeredDrawMove",
      /**
        * 触发绘画抬起
        * @params {@link TriggeredEventParams}
        */
      TriggeredDrawUp = "triggeredDrawUp",
      /**
        * 触发双指移动
        * @params {@link TriggeredDBFingerMoveEventParams}
        */
      TriggeredDBFingerMove = "triggeredDBFingerMove",
      /**
        * 触发画布上的鼠标移动
        * @params {@link TriggeredEventParams}
        */
      TriggeredCanvasMouseMove = "triggeredCanvasMouseMove",
      /**
        * 触发画布上的鼠标移出
        * @params {@link TriggeredEventParams}
        */
      TriggeredCanvasMouseOut = "triggeredCanvasMouseOut",
      /**
        * 触发画布点击
        * @params {@link TriggeredEventParams}
        */
      TriggeredCanvasClick = "triggeredCanvasClick",
      /**
        * 触发画布双击
        * @params {@link TriggeredEventParams}
        */
      TriggeredCanvasDBClick = "triggeredCanvasDBClick",
      /**
        * 处理鼠标右键菜单按下
        * @params {@link TriggeredEventParams}
        */
      TriggeredContextMenu = "triggeredContextMenu",
      /**
        * 光标状态改变事件
        * @params {@link CursorStatusChangedEventParams}
        */
      CursorStatusChanged = "cursorStatusChanged",
      /**
        * 光标隐藏
        * @params {@link CursorHiddenEventParams}
        */
      CursorHidden = "cursorHidden",
      /**
        * 缩放百分比修改之后
        * @params {@link ZoomPercenChangedEventParams}
        */
      ZoomPercenChanged = "zoomPercenChanged",
      /**
        * 缩放百分比修改之后[自定义]
        * @params {@link ZoomPercenChangedEventParams}
        */
      ZoomPercenChangedCustom = "zoomPercenChangedCustom",
      /**
        * 视角中心点坐标修改之后
        * @params {@link VisionCenterEventParams}
        */
      VisionCenterChanged = "visionCenterChanged",
      /**
        * 视角中心点坐标修改之后[自定义]
        * @params {@link VisionCenterEventParams}
        */
      VisionCenterChangedCustom = "visionCenterChangedCustom",
      /**
        * 白板内容层比例修改之后
        * @params {@link ContentPropChangedEventParams}
        */
      ContentPropChanged = "contentPropChanged",
      /**
        * 权限修改之后
        * @params {@link AuthChangedEventParams}
        */
      AuthChanged = "authChanged",
      /**
        * 网格开关修改之后
        * @params {@link GridStateChangeEventParams}
        */
      GridStateChanged = "gridStateChanged",
      /**
        * 当前画板数据修改之后
        * @params {@link CurrentBoardDataChangeEventParams}
        */
      CurrentBoardDataChanged = "currentBoardDataChanged",
      /**
        * 全局画板的历史被插入后
        * @params {@link PushHistoryEventParams}
        */
      PushHistory = "pushHistory",
      /**
        * 全局画板的历史被插入后[自定义]
        * @params {@link PushHistoryEventParams}
        */
      PushHistoryCustom = "pushHistoryCustom",
      /**
        * 当前页修改之前
        * @params {@link PageDataEventParams}
        */
      CurrentPageBeforeChanged = "currentPageBeforeChanged",
      /**
        * 当前页修改之后
        * @params {@link PageDataEventParams}
        */
      CurrentPageChanged = "currentPageChanged",
      /**
        * 当前页修改之后[自定义]
        * @params {@link PageDataEventParams}
        */
      CurrentPageChangedCustom = "currentPageChangedCustom",
      /**
        * 总页数被修改之后
        * @params {@link PageDataEventParams}
        */
      TotalPageChanged = "totalPageChanged",
      /**
        * PPT 动画步骤改变之后
        * @params {@link PptStepIndexChangedEventParams}
        */
      PptStepIndexChanged = "pptStepIndexChanged",
      /**
        * PPT 动画步骤数主动改变之后
        * @description 该事件会有一个 500ms 的延迟时间
        * @params {@link PptStepIndexChangedEventParams}
        */
      PptStepIndexInitiativeChanged = "pptStepIndexInitiativeChanged",
      /**
        * 动画 ppt 初始化完毕
        */
      AnimationPptInited = "AnimationPptInited",
      /**
        * 动画 ppt 幻灯片动画信息改变
        */
      AnimationSlideStepInfoChanged = "AnimationSlideStepInfoChanged",
      /**
        * PPT JSON 修改之后
        * @params {@link PptJsonChangedEventParams}
        */
      PptJsonChanged = "pptJsonChanged",
      /**
        * 旋转角度发生改变之后
        * @params {@link RotateAngleChangedEventParams}
        */
      RotateAngleChanged = "rotateAngleChanged",
      /**
        * 网页全屏状态改变之后
        * @params {@link FullScreenStateChangedEventParams}
        */
      FullScreenStateChanged = "fullScreenStateChanged",
      /**
        * 聚焦在白板
        * @params {@link FocusEventParams}
        */
      FocusWhiteBoard = "focusWhiteBoard",
      /**
        * 白板失焦
        * @params {@link FocusEventParams}
        */
      BlurWhiteBoard = "blurWhiteBoard",
      /**
        * 图片加载状态改变
        * @params {@link ImageLoadStatusChangeEventParams}
        */
      ImageLoadStatusChange = "imageLoadStatusChange"
  }
}

declare module '@polyv/white-board-sdk/core/event/types' {
  import { StackItem } from '@polyv/white-board-sdk/core/board/types';
  import { ImageLoadState, RotateAngle } from '@polyv/white-board-sdk/core/controller';
  import { BrowserPoint, PptJsonType, SlideStepInfo, TriggeredEvent, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { CursorDescription } from '@polyv/white-board-sdk/core/interfaces/cursor';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { WhiteEvents } from '@polyv/white-board-sdk/core/event/event-enum';
  /**
    * 事件公用参数
    */
  interface CommonEventParams<E extends WhiteEvents> {
      event: E;
      whiteBoard: WhiteBoard;
  }
  /**
    * 初始化完成事件回调参数
    * @enumBy {@link WhiteEvents.WhiteBoardInited}
    */
  export interface WhiteBoardInitedEventParams extends CommonEventParams<WhiteEvents.WhiteBoardInited> {
  }
  /**
    * 编辑器被销毁之前回调参数
    * @enumBy {@link WhiteEvents.BeforeDestroy}
    */
  export interface BeforeDestroyEventParams extends CommonEventParams<WhiteEvents.BeforeDestroy> {
  }
  /**
    * 触发 resize 方法事件回调参数
    * @enumBy {@link WhiteEvents.ResizeCallback}
    */
  export interface ResizeCallbackEventParams extends CommonEventParams<WhiteEvents.ResizeCallback> {
  }
  /**
    * 用户身份被修改事件回调参数
    * @enumBy {@link WhiteEvents.UserRoleChanged}
    */
  export interface UserRoleChangedEventParams extends CommonEventParams<WhiteEvents.UserRoleChanged> {
      /** 新的用户角色 */
      userRole: string;
  }
  /**
    * 当前教具被修改之后回调参数
    * @enumBy {@link WhiteEvents.CurrentApplianceChanged}
    */
  export interface CurrentApplianceChangedEventParams extends CommonEventParams<WhiteEvents.CurrentApplianceChanged> {
      /** 新的教具名称 */
      currentAppliance: string;
  }
  /**
    * 笔触大小被修改之后回调参数
    * @enumBy {@link WhiteEvents.LineWidthChanged}
    */
  export interface LineWidthChangedEventParams extends CommonEventParams<WhiteEvents.LineWidthChanged> {
      /** 新的笔触大小 */
      lineWidth: number;
  }
  /**
    * 笔触颜色被修改之后回调参数
    * @enumBy {@link WhiteEvents.StrokeStyleChanged}
    */
  export interface StrokeStyleEventParams extends CommonEventParams<WhiteEvents.StrokeStyleChanged> {
      /** 新的笔触颜色 */
      strokeStyle: string;
  }
  /**
    * 马克笔透明度被修改之后回调参数
    * @enumBy {@link WhiteEvents.MarkerOpacityChanged}
    */
  export interface MarkerOpacityChangedEventParams extends CommonEventParams<WhiteEvents.MarkerOpacityChanged> {
      /** 新的马克笔透明度 */
      markerOpacity: number;
  }
  /**
    * 马克笔开关被修改之后回调参数
    * @enumBy {@link WhiteEvents.MarkerEnabledChanged}
    */
  export interface MarkerEnabledChangedEventParams extends CommonEventParams<WhiteEvents.MarkerEnabledChanged> {
      /** 新的马克笔开关 */
      markerEnabled: boolean;
  }
  /**
    * 字体大小被修改之后回调参数
    * @enumBy {@link WhiteEvents.FontSizeChanged}
    */
  export interface FontSizeChangedEventParams extends CommonEventParams<WhiteEvents.FontSizeChanged> {
      /** 新的字体大小 */
      fontSize: number;
  }
  /**
    * 触发事件的回调参数
    */
  export interface TriggeredEventParams<E extends WhiteEvents> extends CommonEventParams<E> {
      /** 世界坐标点 */
      point: WorldPoint;
      /** 浏览器坐标点 */
      browserPoint: BrowserPoint;
      /** 触发的事件对象 */
      e: TriggeredEvent;
  }
  /**
    * 双指事件回调参数
    */
  export interface TriggeredDBFingerMoveEventParams extends CommonEventParams<WhiteEvents.TriggeredDBFingerMove> {
      /** 触发的事件对象 */
      e: TouchEvent;
      /** 双指间的距离 */
      length: number;
  }
  /**
    * 光标状态改变事件
    * @enumBy {@link WhiteEvents.CursorStatusChanged}
    */
  export interface CursorStatusChangedEventParams extends CommonEventParams<WhiteEvents.CursorStatusChanged> {
      /** 客户端 id */
      clientId: string;
      /** 光标描述 */
      description: CursorDescription;
  }
  /**
    * 光标隐藏回调参数
    * @enumBy {@link WhiteEvents.CursorHidden}
    */
  export interface CursorHiddenEventParams extends CommonEventParams<WhiteEvents.CursorHidden> {
      /** 客户端 id */
      clientId: string;
  }
  /**
    * 缩放事件回调参数
    * @enumBy {@link WhiteEvents.ZoomPercenChanged}
    */
  export interface ZoomPercenChangedEventParams<E extends WhiteEvents.ZoomPercenChanged | WhiteEvents.ZoomPercenChangedCustom> extends CommonEventParams<E> {
      /** 缩放百分比 */
      zoomPercen: number;
  }
  /**
    * 视角中心点坐标修改回调参数
    * @enumBy {@link WhiteEvents.VisionCenterChanged}
    */
  export interface VisionCenterEventParams<E extends WhiteEvents.VisionCenterChanged | WhiteEvents.VisionCenterChangedCustom> extends CommonEventParams<E> {
      /** 视角中心点坐标 */
      visionCenter: WorldPoint;
  }
  /**
    * 白板内容层比例修改回调参数
    * @enumBy {@link WhiteEvents.ContentPropChanged}
    */
  export interface ContentPropChangedEventParams extends CommonEventParams<WhiteEvents.ContentPropChanged> {
      /** 内容层比例 */
      contentProp: number;
  }
  /**
    * 权限改变回调参数
    * @enumBy {@link WhiteEvents.AuthChanged}
    */
  export interface AuthChangedEventParams extends CommonEventParams<WhiteEvents.AuthChanged> {
      /** 新的权限列表 */
      auths: string[];
  }
  /**
    * 网格状态修改回调参数
    * @enumBy {@link WhiteEvents.GridStateChanged}
    */
  export interface GridStateChangeEventParams extends CommonEventParams<WhiteEvents.GridStateChanged> {
      /** 网格开关 */
      gridEnabled: boolean;
      /** 网格大小 */
      gridSize: number;
      /** 网格颜色 */
      gridColor: string;
  }
  /**
    * 当前画板数据修改回调参数
    * @enumBy {@link WhiteEvents.CurrentBoardDataChanged}
    */
  export interface CurrentBoardDataChangeEventParams extends CommonEventParams<WhiteEvents.CurrentBoardDataChanged> {
      /** 操作栈 */
      actionStack: StackItem[];
      /** 撤回栈 */
      undoStack: StackItem[];
      /** 画板历史 */
      history: StackItem[];
  }
  /**
    * 全局画板的历史被插入后回调参数
    * @enumBy {@link WhiteEvents.PushHistory}
    */
  export interface PushHistoryEventParams<E extends WhiteEvents.PushHistory | WhiteEvents.PushHistoryCustom> extends CommonEventParams<E> {
      /** 被插入的目标栈对象 */
      target: StackItem;
  }
  /**
    * 分页数据改变回到参数
    * @enumBy {@link WhiteEvents.CurrentPageChanged} {@link WhiteEvents.TotalPageChanged}
    */
  export interface PageDataEventParams<E extends WhiteEvents> extends CommonEventParams<E> {
      /** 当前页 */
      currentPage: number;
      /** 总页数 */
      totalPage: number;
  }
  /**
    * 动画 ppt 幻灯片动画信息改变回调参数
    * @enumBy {@link WhiteEvents.AnimationSlideStepInfoChanged}
    */
  export interface AnimationSlideStepInfoChangedEVentParams extends CommonEventParams<WhiteEvents.AnimationSlideStepInfoChanged> {
      /** 当前页 */
      currentPage: number;
      /** 动画步骤信息 */
      stepInfo: SlideStepInfo;
  }
  /**
    * PPT 动画步骤数改变回调参数
    * @enumBy {@link WhiteEvents.PptStepIndexChanged}
    */
  export interface PptStepIndexChangedEventParams extends CommonEventParams<WhiteEvents.PptStepIndexChanged> {
      /** 动画步骤数 */
      stepIndex: number;
  }
  /**
    * PPT JSON 修改回调参数
    * @enumBy {@link WhiteEvents.PptJsonChanged,}
    */
  export interface PptJsonChangedEventParams extends CommonEventParams<WhiteEvents.PptJsonChanged> {
      /**
        * PPT JSON 数据，返回 undefined 时表示 PPT 被关闭
        */
      pptJson: PptJsonType | undefined;
  }
  /**
    * 旋转角度改变回调参数
    * @enumBy {@link WhiteEvents.RotateAngleChanged}
    */
  export interface RotateAngleChangedEventParams extends CommonEventParams<WhiteEvents.RotateAngleChanged> {
      /** 改变后的旋转角度 */
      rotateAngle: RotateAngle;
  }
  /**
    * 网页全屏状态改变回调参数
    * @enumBy {@link WhiteEvents.FullScreenStateChanged}
    */
  export interface FullScreenStateChangedEventParams extends CommonEventParams<WhiteEvents.FullScreenStateChanged> {
      /** 是否正在网页全屏 */
      isFullScreen: boolean;
  }
  /**
    * 焦点事件参数类型
    * @enumBy {@link WhiteEvents.FocusWhiteBoard}、{@link WhiteEvents.BlurWhiteBoard}
    */
  export interface FocusEventParams<E extends WhiteEvents.FocusWhiteBoard | WhiteEvents.BlurWhiteBoard> extends CommonEventParams<E> {
      /** 是否聚焦 */
      isFocus: boolean;
  }
  /**
    * 图片加载状态改变参数类型
    * @enumBy {@link WhiteEvents.ImageLoadStatusChange}
    */
  export interface ImageLoadStatusChangeEventParams extends CommonEventParams<WhiteEvents.ImageLoadStatusChange> {
      /** 图片地址 */
      imageUrl: string;
      /** 状态 */
      status: ImageLoadState;
  }
  /**
    * 事件参数的关联类型
    */
  export type EventParamsRelation = {
      [WhiteEvents.WhiteBoardInited]: WhiteBoardInitedEventParams;
      [WhiteEvents.BeforeDestroy]: BeforeDestroyEventParams;
      [WhiteEvents.ResizeCallback]: ResizeCallbackEventParams;
      [WhiteEvents.OutsideResize]: undefined;
      [WhiteEvents.UserRoleChanged]: UserRoleChangedEventParams;
      [WhiteEvents.CurrentApplianceChanged]: CurrentApplianceChangedEventParams;
      [WhiteEvents.LineWidthChanged]: LineWidthChangedEventParams;
      [WhiteEvents.StrokeStyleChanged]: StrokeStyleEventParams;
      [WhiteEvents.MarkerOpacityChanged]: MarkerOpacityChangedEventParams;
      [WhiteEvents.MarkerEnabledChanged]: MarkerEnabledChangedEventParams;
      [WhiteEvents.FontSizeChanged]: FontSizeChangedEventParams;
      [WhiteEvents.TriggeredDrawDown]: TriggeredEventParams<WhiteEvents.TriggeredDrawDown>;
      [WhiteEvents.TriggeredDrawMove]: TriggeredEventParams<WhiteEvents.TriggeredDrawMove>;
      [WhiteEvents.TriggeredDBFingerMove]: TriggeredDBFingerMoveEventParams;
      [WhiteEvents.TriggeredDrawUp]: TriggeredEventParams<WhiteEvents.TriggeredDrawUp>;
      [WhiteEvents.TriggeredCanvasMouseMove]: TriggeredEventParams<WhiteEvents.TriggeredCanvasMouseMove>;
      [WhiteEvents.TriggeredCanvasClick]: TriggeredEventParams<WhiteEvents.TriggeredCanvasClick>;
      [WhiteEvents.TriggeredCanvasDBClick]: TriggeredEventParams<WhiteEvents.TriggeredCanvasDBClick>;
      [WhiteEvents.TriggeredCanvasMouseOut]: TriggeredEventParams<WhiteEvents.TriggeredCanvasMouseOut>;
      [WhiteEvents.TriggeredContextMenu]: TriggeredEventParams<WhiteEvents.TriggeredContextMenu>;
      [WhiteEvents.CursorStatusChanged]: CursorStatusChangedEventParams;
      [WhiteEvents.CursorHidden]: CursorHiddenEventParams;
      [WhiteEvents.ZoomPercenChanged]: ZoomPercenChangedEventParams<WhiteEvents.ZoomPercenChanged>;
      [WhiteEvents.ZoomPercenChangedCustom]: ZoomPercenChangedEventParams<WhiteEvents.ZoomPercenChangedCustom>;
      [WhiteEvents.VisionCenterChanged]: VisionCenterEventParams<WhiteEvents.VisionCenterChanged>;
      [WhiteEvents.VisionCenterChangedCustom]: VisionCenterEventParams<WhiteEvents.VisionCenterChangedCustom>;
      [WhiteEvents.ContentPropChanged]: ContentPropChangedEventParams;
      [WhiteEvents.AuthChanged]: AuthChangedEventParams;
      [WhiteEvents.GridStateChanged]: GridStateChangeEventParams;
      [WhiteEvents.CurrentBoardDataChanged]: CurrentBoardDataChangeEventParams;
      [WhiteEvents.PushHistory]: PushHistoryEventParams<WhiteEvents.PushHistory>;
      [WhiteEvents.PushHistoryCustom]: PushHistoryEventParams<WhiteEvents.PushHistoryCustom>;
      [WhiteEvents.CurrentPageBeforeChanged]: PageDataEventParams<WhiteEvents.CurrentPageBeforeChanged>;
      [WhiteEvents.CurrentPageChanged]: PageDataEventParams<WhiteEvents.CurrentPageChanged>;
      [WhiteEvents.CurrentPageChangedCustom]: PageDataEventParams<WhiteEvents.CurrentPageChangedCustom>;
      [WhiteEvents.TotalPageChanged]: PageDataEventParams<WhiteEvents.TotalPageChanged>;
      [WhiteEvents.PptStepIndexChanged]: PptStepIndexChangedEventParams;
      [WhiteEvents.PptStepIndexInitiativeChanged]: PptStepIndexChangedEventParams;
      [WhiteEvents.AnimationPptInited]: undefined;
      [WhiteEvents.AnimationSlideStepInfoChanged]: AnimationSlideStepInfoChangedEVentParams;
      [WhiteEvents.PptJsonChanged]: PptJsonChangedEventParams;
      [WhiteEvents.RotateAngleChanged]: RotateAngleChangedEventParams;
      [WhiteEvents.FullScreenStateChanged]: FullScreenStateChangedEventParams;
      [WhiteEvents.FocusWhiteBoard]: FocusEventParams<WhiteEvents.FocusWhiteBoard>;
      [WhiteEvents.BlurWhiteBoard]: FocusEventParams<WhiteEvents.BlurWhiteBoard>;
      [WhiteEvents.ImageLoadStatusChange]: ImageLoadStatusChangeEventParams;
  };
  /** 获取事件回调参数类型 */
  export type SubParamsType<E extends WhiteEvents> = EventParamsRelation[E];
  /** 获取事件触发参数类型 */
  export type PubParamsType<E extends WhiteEvents> = Omit<SubParamsType<E>, 'event' | 'whiteBoard'>;
  /** 事件回调函数类型 */
  export type OnHandlerFn<E extends WhiteEvents> = (params: SubParamsType<E>) => unknown;
  export {};
}

declare module '@polyv/white-board-sdk/core/event/EventCenter' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { WhiteEvents } from '@polyv/white-board-sdk/core/event/event-enum';
  import { OnHandlerFn, PubParamsType } from '@polyv/white-board-sdk/core/event/types';
  import { TriggerCustomEventObject, TriggerCustomEventParams } from '@polyv/white-board-sdk/core/event/custom-event';
  /**
    * 事件中心
    * @class
    */
  export class EventCenter {
      whiteBoard: WhiteBoard;
      constructor(whiteBoard: WhiteBoard);
      /**
        * 触发事件回调
        * @param event 事件
        * @param params 事件参数
        */
      trigger<E extends WhiteEvents>(event: E, params: PubParamsType<E>): void;
      /**
        * 触发事件回调
        * @param event 事件
        * @param params 事件参数
        * @param triggerCustom 自定义参数
        */
      triggerCustomEvent<E extends keyof TriggerCustomEventObject>(event: E, params: PubParamsType<E>, triggerCustom: TriggerCustomEventParams | undefined): void;
      /**
        * 监听事件
        * @param event 事件名称
        * @param handler 回调处理
        * @param context this 上下文对象，选传，默认为 whiteBoard 实例
        */
      on<E extends WhiteEvents>(event: E | E[], handler: OnHandlerFn<E> | OnHandlerFn<E>[], context?: unknown): void;
      /**
        * 监听一次性事件
        * @param event 事件名称
        * @param handler 回调处理
        * @param context this 上下文对象，选传，默认为 whiteBoard 实例
        */
      once<E extends WhiteEvents>(event: E | E[], handler: OnHandlerFn<E> | OnHandlerFn<E>[], context?: unknown): void;
      /**
        * 移除事件监听
        * @param event 事件名
        * @param handler 回调处理
        */
      off<E extends WhiteEvents>(event: E | E[], handler: any | any[]): void;
  }
}

declare module '@polyv/white-board-sdk/core/controller/lang/types' {
  /**
    * 语言配置类型
    */
  export type LanguageConfig = {
      [code: string]: string | undefined;
  };
  /**
    * 国际化语言配置
    */
  export type LanguageI18n = {
      [language: string]: LanguageConfig | undefined;
  };
}

declare module '@polyv/white-board-sdk/core/controller/view/types' {
  /**
    * 旋转角度，顺时针方向
    */
  export type RotateAngle = 0 | 90 | 180 | 270;
  /**
    * 旋转方向，CW-顺时针，CCW-逆时针
    */
  export type RotateDirection = 'CW' | 'CCW';
  /**
    * 网页全屏下的 position 定位方式
    */
  export type FullScreenPosition = 'absolute' | 'fixed';
}

declare module '@polyv/white-board-sdk/core/controller/watermark/types' {
  /**
    * 水印类型，`text` - 文本水印，`image` - 图片水印
    */
  export type WatermarkType = 'text' | 'image';
  /**
    * 水印样式，`tiled` - 平铺，`center` - 居中
    */
  export type WatermarkStyle = 'tiled' | 'center';
  /**
    * 水印字体大小（字符串类型）
    */
  export type WatermarkFontSizeStr = 'large' | 'middle' | 'small';
  /**
    * 水印字体加粗类型，`normal` - 不加粗，`bold` - 加粗
    */
  export type WatermarkFontWeight = 'normal' | 'bold';
  /**
    * 水印间隔类型
    */
  export type WatermarkDistance = number | [number] | [number, number];
  /**
    * 水印配置
    */
  export interface WatermarkConfig {
      /**
        * 水印内容，默认：水印水印
        */
      content?: string;
      /**
        * 水印类型，选传，默认：`text`
        */
      watermarkType?: WatermarkType;
      /**
        * 水印样式，选传，默认：`tiled`
        */
      watermarkStyle?: WatermarkStyle;
      /**
        * 水印字体大小，仅文本水印下有效，选传，默认：24，传入字符串时为对应内置的字体大小；
        *
        * PC端：`large` - 32、`middle` - 24、`small` - 16
        *
        * 移动端：`large` - 20、`middle` - 16、`small` - 12
        */
      fontSize?: number | WatermarkFontSizeStr;
      /**
        * 水印字体加粗，进文本水印下有效，默认：`normal`
        */
      fontWeight?: WatermarkFontWeight;
      /**
        * 水印颜色，仅文本水印下生效，默认：#000000
        */
      color?: string;
      /**
        * 图片宽度，仅图片水印下生效，不传时使用原图宽度
        */
      imageWidth?: number;
      /**
        * 水印的不透明度，默认：0.3，范围：0 ~ 1，1 表示不透明
        */
      opacity?: number;
      /**
        * 水印间隔，默认：30
        */
      distance?: WatermarkDistance;
      /**
        * 旋转角度，默认：15
        */
      angle?: number;
  }
  /**
    * 获取单位水印画布参数
    */
  export type GetUnitCanvasParams = Required<Pick<WatermarkConfig, 'content' | 'watermarkType' | 'fontWeight' | 'opacity' | 'color' | 'imageWidth' | 'angle'>> & {
      fontSize: number;
      /** 图片高度 */
      imageHeight: number;
      /** 图片对象实例 */
      imageTarget?: HTMLImageElement;
  };
}

declare module '@polyv/white-board-sdk/core/interfaces/editor' {
  import { TextShapeSimpleData } from '@polyv/white-board-sdk/shape';
  import { Shape, SimpleBBox } from '@polyv/white-board-sdk/core/tools';
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces/index';
  /**
    * 选区范围类实例化参数类型
    */
  export interface SelectRangeConfig {
      /** 选区颜色，默认为教具的 strokeStyle */
      color?: string;
      /** 选取透明度，默认：0.1 */
      alpha?: number;
      /** 选区范围 */
      range: [start: WorldPoint, end: WorldPoint];
  }
  /**
    * 图形高亮框实例化参数类型
    */
  export interface ShapeHightlightConfig {
      /** 高亮框颜色，默认为教具的 strokeStyle */
      color?: string;
  }
  /**
    * 编辑框实例化参数类型
    */
  export interface EditorBoxConfig {
      /** 编辑的图形列表 */
      targets: Shape[];
  }
  /**
    * 编辑移动操作数据类型
    */
  export interface EditMoveDataType {
      /** x 轴方向移动距离 */
      diffX?: number;
      /** y 轴方向移动距离 */
      diffY?: number;
  }
  /**
    * 图形四边缩放百分比
    */
  export interface ShapeZoomPercen {
      /** 顶部百分比 */
      top?: number;
      /** 左侧百分比 */
      left?: number;
      /** 右侧百分比 */
      right?: number;
      /** 底部百分比 */
      bottom?: number;
  }
  /**
    * 图形位置缩放数据
    */
  export interface ShapeSeatZoomData {
      /** 缩放包围盒 */
      bbox: SimpleBBox;
      /** 四边缩放百分比 */
      percens: ShapeZoomPercen;
  }
  /**
    * 层叠数修改数据
    */
  export type ZIndexChangeData = {
      [id: string]: [prev: number, next: number];
  };
  /**
    * 字体修改数据
    */
  export interface TextChangeData {
      oldData: Partial<TextShapeSimpleData>;
      newData: Partial<TextShapeSimpleData>;
  }
}

declare module '@polyv/white-board-sdk/core/tools/animation-task' {
  export * from '@polyv/white-board-sdk/core/tools/animation-task/task-ctor';
  export * from '@polyv/white-board-sdk/core/tools/animation-task/shape-task';
}

declare module '@polyv/white-board-sdk/core/tools/editor-box' {
  import { SimpleBBox } from '@polyv/white-board-sdk/core/tools';
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  import { EditorBoxConfig } from '@polyv/white-board-sdk/core/interfaces/editor';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  /**
    * 编辑框类
    * @class
    */
  export class EditorBox {
      /** 编辑框外层节点 */
      $editorBox: DomQuery<HTMLDivElement>;
      constructor(whiteBoard: WhiteBoard, config: EditorBoxConfig);
      /**
        * 设置编辑中的图形列表
        * @param shapes 图形列表
        */
      setTarget(shapes: Shape[]): void;
      /**
        * 销毁编辑框
        */
      destroy(): void;
      /**
        * 同步编辑框状态
        */
      syncEditorBoxState(): void;
      /**
        * 获取编辑框当前的包围盒
        */
      getEditorBBox(): SimpleBBox | undefined;
      /**
        * 同步编辑框的位置
        */
      syncEditorBoxPosition(): void;
      /**
        * 同步编辑框样式
        */
      syncEditorStyle(): void;
      /**
        * 正在编辑中的图形对象
        */
      get targets(): Shape[];
      /**
        * 正在编辑中的图形 id
        */
      get editIds(): string[];
      /**
        * 编辑框是否正在拖拽
        */
      get isDraging(): boolean;
  }
}

declare module '@polyv/white-board-sdk/core/tools/select-range' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { SelectRangeConfig } from '@polyv/white-board-sdk/core/interfaces/editor';
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  /**
    * 选区范围类
    * @class
    */
  export class SelectRange {
      constructor(whiteBoard: WhiteBoard, config: SelectRangeConfig);
      /**
        * 设置结束点坐标
        * @api
        * @param end 结束点坐标
        */
      setEndRange(end: WorldPoint): void;
      /**
        * 设置范围坐标
        * @api
        * @param start 开始点坐标
        * @param end 结束点坐标
        */
      setRange(start: WorldPoint, end: WorldPoint): void;
      /**
        * 获取选中的图形，如果没有选中则返回 undefined
        * @api
        */
      getSelectedShapes(): Shape[] | undefined;
      /**
        * 销毁选区范围
        * @api
        */
      destroy(): void;
  }
}

declare module '@polyv/white-board-sdk/core/tools/shape-hightlight' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  import { ShapeHightlightConfig } from '@polyv/white-board-sdk/core/interfaces/editor';
  /**
    * 图形高亮框类
    * @class
    */
  export class ShapeHightlight {
      constructor(whiteBoard: WhiteBoard, config?: ShapeHightlightConfig);
      /**
        * 销毁当前实例
        * @api
        */
      destroy(): void;
      /**
        * 设置高亮颜色
        * @api
        * @param color 颜色
        */
      setColor(color: string): void;
      /**
        * 设置高亮中的图形
        * @api
        * @param shapes 目标图形
        */
      setHightlightTarget(shapes: Shape[]): void;
      /**
        * 刷新高亮节点
        * @api
        */
      refresh(): void;
      get targets(): Shape[];
  }
}

declare module '@polyv/white-board-sdk/core/tools/text-input' {
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  import { TextInputConfig } from '@polyv/white-board-sdk/core/tools/text-input/types';
  export * from '@polyv/white-board-sdk/core/tools/text-input/types';
  /**
    * 文本输入框
    * @class
    */
  export class TextInput {
      whiteBoard: WhiteBoard;
      /** 文本输入框外层节点 */
      $el: DomQuery;
      constructor(config: TextInputConfig);
      /**
        * 销毁文本输入框
        */
      destroy(): void;
      /**
        * 设置绑定的标识 id
        * @param bindId 标识 id
        */
      setBindId(bindId?: string): this;
      /**
        * 触发输入框聚焦
        */
      focus(): this;
      /**
        * 将当前文本输入框插入到组件层中
        */
      appendComponentDiv(): this;
      /**
        * 获取文本dom的尺寸
        */
      getContentDomSize(): {
          width: number;
          height: number;
      };
      /**
        * 获取文本输入框在世界坐标系下的起止坐标
        */
      getTextInputPoints(): [WorldPoint, WorldPoint];
      /**
        * 移除文本模板dom
        */
      removeTempDom(): void;
      /** 绑定的标识 id */
      get bindId(): string | undefined;
      /** 文本内容 */
      get content(): string;
      /** 坐标点 */
      get point(): WorldPoint;
      /** 字体颜色 */
      get strokeStyle(): string;
      /** 字体大小 */
      get fontSize(): number;
      /** 字体样式 */
      get fontFamily(): string;
      /** 是否加粗 */
      get isBold(): boolean;
      /** 是否斜体 */
      get isItalics(): boolean;
      /** 是否删除线 */
      get isLineThrough(): boolean;
      /** 是否有下划线 */
      get isUnderLine(): boolean;
      /**
        * 过滤输入框的文本，返回html字符串，用于输入框尺寸自适应内容
        * @param value 文本
        */
      static filterTextValue(value: string): string;
  }
}

declare module '@polyv/white-board-sdk/core/controller/cursor/Cursor' {
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { CursorConfig, CursorDescription } from '@polyv/white-board-sdk/core/interfaces/cursor';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  /**
    * 光标类
    * @class
    */
  export class Cursor {
      /** 所在的白板实例 */
      whiteBoard: WhiteBoard;
      /** 客户端id */
      clientId: string;
      /** 世界坐标点 */
      worldPoint?: WorldPoint;
      /** 光标名称 */
      cursorName?: string;
      /** 光标颜色 */
      color?: string;
      /** 光标外层 */
      $cursor: DomQuery;
      constructor(config: CursorConfig);
      /**
        * 销毁光标
        */
      destroy(): void;
      /**
        * 设置光标描述
        */
      setDescription(description: Partial<CursorDescription>): void;
  }
}

declare module '@polyv/white-board-sdk/plugins/doc-record-plugin/types' {
  import { PptJsonType } from '@polyv/white-board-sdk/core';
  import { WhiteBoardPluginConfig } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  /**
    * 文档记录对象类型
    */
  export interface DocRecordItem {
      /** 文档标识 id */
      autoId: number | string;
      /** 当前页 */
      currentPage: number;
      /** 动画步骤数 */
      stepIndex: number;
      /** 文件名 */
      fileName: string;
      /** json 类型 */
      pptJson: PptJsonType;
      /** 是否当前打开的文档 */
      isCurrent: boolean;
  }
  /**
    * 白板记录类型
    */
  export interface WhiteRecord {
      /** 当前页 */
      currentPage: number;
  }
  /**
    * 当前文档记录状态，`white` - 打开的是白板，`doc` - 打开的是文档
    */
  export type DocRecordStatus = 'white' | 'doc';
  /**
    * changeCallback 回调参数类型
    */
  export interface DocRecordChangeCallbackParams {
      /** 文档记录 */
      docList: DocRecordItem[];
      /** 白板记录 */
      whiteRecord: WhiteRecord;
      /** 记录状态 */
      recordStatus: DocRecordStatus;
  }
  /**
    * 文档打开记录修改回调
    */
  export interface DocRecordChangeCallback {
      (params: DocRecordChangeCallbackParams): unknown;
  }
  /**
    * 文档打开记录插件配置
    */
  export interface DocRecordPluginConfig extends WhiteBoardPluginConfig {
      /** 默认的白板记录 */
      defaultWhiteRecord?: WhiteRecord;
      /** 默认的文档列表 */
      defaultDocList?: DocRecordItem[];
      /** 记录修改回调 */
      changeCallback?: DocRecordChangeCallback;
  }
  /**
    * removeDocRecord 方法返回类型
    */
  export interface RemoveDocRecordResult {
      /** 删除后要打开的白板信息 */
      whiteRecord?: WhiteRecord;
      /** 删除后要打开的文档信息 */
      docRecord?: DocRecordItem;
  }
}

declare module '@polyv/white-board-sdk/plugins/navigation-plugin/types' {
  import type { DomQuerySelector } from '@polyv/white-board-sdk/utils/dom';
  import { WhiteBoardPluginConfig } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  /**
    * 导航插件配置
    */
  export interface NavigationPluginConfig extends WhiteBoardPluginConfig {
      /**
        * 导航节点选择器
        */
      selector?: DomQuerySelector;
      /**
        * 导航器可视窗背景，默认：rgba(0, 0, 0, .4)
        */
      maskColor?: string;
  }
}

declare module '@polyv/white-board-sdk/plugins/thumbnail-plugin/thumbnail-data' {
  import { ThumbnailDataChangeCallback, ThumbnailDataPluginConfig, ThumbnailItemParams } from '@polyv/white-board-sdk/plugins/thumbnail-plugin';
  import { WhiteBoardPlugin } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  /**
    * 缩略图数据插件
    * @class
    */
  export class ThumbnailDataPlugin<C extends ThumbnailDataPluginConfig = ThumbnailDataPluginConfig> extends WhiteBoardPlugin<C> {
      /** 修改回调 */
      changeCallback?: ThumbnailDataChangeCallback;
      constructor(config?: ThumbnailDataPluginConfig);
      /**
        * @ignore
        */
      inited(): void;
      /**
        * @ignore
        */
      beforeDestroy(): void;
      /**
        * 刷新缩略图
        * @api
        */
      refresh(): void;
      /**
        * 刷新缩略图数据
        */
      protected refreshThumbnails(): void;
      /**
        * 设置缩略图列表的当前页
        */
      protected setCurrent(): void;
      /**
        * 切换缩略图
        * @api
        * @param index 缩略图索引
        */
      switchThumbnail(index: number): void;
      get thumbnails(): ThumbnailItemParams[];
  }
}

declare module '@polyv/white-board-sdk/plugins/thumbnail-plugin/types' {
  import { DomQuerySelector } from '@polyv/white-board-sdk/utils/dom';
  import { ScrollBaseOptions } from '@polyv/white-board-sdk/utils/scroll-tool/types';
  import { WhiteBoardPluginConfig } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  /**
    * 缩略图插件方向，`horizontal` - 横向，`vertical` - 纵向
    */
  export type ThumbnailDirection = 'horizontal' | 'vertical';
  /**
    * 缩略图节点类型
    */
  export interface ThumbnailItemParams {
      /** 节点类型，白板或 ppt */
      type: 'white' | 'ppt';
      /**
        * 类型为 ppt 时的缩略图背景地址，
        * 当 type 为 white 或不存在对应的缩略图图片时该值为 undefined
        */
      url?: string;
      /** 对象索引，从 0 开始 */
      index: number;
      /** 是否为当前页 */
      isCurrent: boolean;
  }
  /**
    * 获取缩略图节点函数类型
    */
  export interface GetThumbnailItem {
      (params: ThumbnailItemParams): DomQuerySelector;
  }
  /**
    * 点击缩略图回调函数类型
    */
  export interface ClickThumbnailCallback {
      (index: number): unknown;
  }
  /**
    * 缩略图数据修改回调函数类型
    */
  export interface ThumbnailDataChangeCallback {
      (thumbnails: ThumbnailItemParams[]): unknown;
  }
  /**
    * 缩略图数据插件实例化参数类型
    */
  export interface ThumbnailDataPluginConfig extends WhiteBoardPluginConfig {
      /** 缩略图数据修改回调函数 */
      changeCallback?: ThumbnailDataChangeCallback;
  }
  /**
    * 缩略图插件实例化参数类型
    */
  export interface ThumbnailPluginConfig extends ThumbnailDataPluginConfig {
      /** 缩略图选择器 */
      selector?: DomQuerySelector;
      /** 方向，默认：vertical */
      direction?: ThumbnailDirection;
      /** 当前页状态下的 class，默认：current */
      currentClassName?: string;
      /** 获取缩略图 Dom 节点 */
      getThumbnailItem?: GetThumbnailItem;
      /** 点击缩略图回调类型 */
      clickThumbnailCallback?: ClickThumbnailCallback;
      /** 滚动条参数 */
      scrollOptions?: ScrollBaseOptions;
      /** 图片加载失败时的占位图 */
      imageLoadErrorUrl?: string;
  }
}

declare module '@polyv/white-board-sdk/plugins/tool-plugin/types' {
  import { ToolPlugin } from '@polyv/white-board-sdk/plugins/tool-plugin/index';
  import { WhiteBoard } from '@polyv/white-board-sdk/core';
  import { SubParamsType, WhiteEvents } from '@polyv/white-board-sdk/core/event';
  import { DomQuerySelector, DomQuery } from '@polyv/white-board-sdk/utils/dom';
  import { WhiteBoardPluginConfig } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  /**
    * 拦截执行方法
    */
  export type InterceptDone = () => void;
  /**
    * 操作拦截方法
    */
  export type OperationIntercept = (options: {
      done: InterceptDone;
  }) => unknown;
  /**
    * 工具栏 ui 实例
    */
  export interface ToolUIInstance {
      /**
        * 初始化完毕 hook
        * @param whiteBoard 白板实例
        * @param tool 工具栏实例
        */
      inited?: (whiteBoard: WhiteBoard, tool: ToolPlugin) => unknown;
      /**
        * 被销毁之前 hook
        */
      beforeDestroy?: () => unknown;
      /**
        * 获取节点选择器，在 `inited` 之后调用
        */
      getSelector(): DomQuerySelector;
  }
  /**
    * 白板工具插件配置
    */
  export interface ToolPluginConfig extends WhiteBoardPluginConfig {
      /**
        * 工具栏节点选择器
        */
      selector?: DomQuerySelector;
      /**
        * ui 实例，优先级大于 selector
        */
      ui?: ToolUIInstance;
      /**
        * 选中状态下的样式类名
        * @default current
        */
      currentClassName?: string;
      /**
        * 禁用状态下的样式类名
        * @default disabled
        */
      disabledClassName?: string;
      /**
        * 自定义 data-set 前缀
        * @default data
        */
      nodeAttrPrefix?: string;
      /**
        * 撤回之前的回调，传入后不会自动执行撤回
        */
      beforeUndo?: OperationIntercept;
      /**
        * 重做之前的回调，传入后不会自动执行重做
        */
      beforeRedo?: OperationIntercept;
      /**
        * 清空之前的回调，传入后不会自动执行清空
        */
      beforeClear?: OperationIntercept;
  }
  export type BindWhiteEvent = {
      [E in WhiteEvents]?: (parms: SubParamsType<E>) => unknown;
  };
  export type BindClickEventCallback = (target: DomQuery) => unknown;
  export type BindClickEvent = {
      [selector: string]: BindClickEventCallback;
  };
  /**
    * 工具接口
    */
  export interface ToolTarget {
      /** 绑定的 dom click 事件 */
      bindClickEvent: BindClickEvent;
      /** 绑定的白板事件 */
      bindWhiteEvent: BindWhiteEvent;
      /** 白板初始化完成钩子 */
      inited(): void;
      /** 重置状态 */
      resetState(): void;
  }
}

declare module '@polyv/white-board-sdk/plugins/tool-plugin/constant' {
  /**
    * 白板工具 data-set 后缀枚举
    */
  export enum ToolAttrSuffix {
    /** 教具 */
    APPLIANCE = "appliance",
    /** 线条大小 */
    LINE_WIDTH = "line-width",
    /** 笔触颜色 */
    STROKE_STYLE = "stroke-style",
    /** 马克笔开关 */
    MARKER_PEN = "marker-pen",
    /** 当前笔触颜色 */
    CURRENT_STROKE_STYLE = "current-stroke-style",
    /** 字体大小 */
    FONT_SIZE = "font-size",
    /** 图片上传 */
    IMAGE_UPLOAD = "image-upload",
    /** 复位缩放 */
    ZOOM_RESET = "zoom-reset",
    /** 放大 */
    ZOOM_LARGE = "zoom-large",
    /** 缩小 */
    ZOOM_SMALL = "zoom-small",
    /** 缩放百分比 */
    ZOOM_PERCEN = "zoom-percen",
    /** 网格开关 */
    GRID_ENABLED = "grid-enabled",
    /** 当前网格大小 */
    CURRENT_GRID_SIZE = "current-grid-size",
    /** 缩小网格 */
    GRID_SMALL = "grid-small",
    /** 增大网格 */
    GRID_LARGE = "grid-large",
    /** 撤销按钮 */
    UNDO = "undo",
    /** 重做按钮 */
    REDO = "redo",
    /** 清空按钮 */
    CLEAR = "clear",
    /** 添加一页 */
    ADD_PAGE = "add-page",
    /** 上一页 */
    PRE_PAGE = "pre-page",
    /** 下一页 */
    NEXT_PAGE = "next-page",
    /** 当前页 */
    CURRENT_PAGE = "current-page",
    /** 总页数 */
    TOTAL_PAGE = "total-page",
    /** 上一步 */
    PRE_STEP = "pre-step",
    /** 下一步 */
    NEXT_STEP = "next-step",
    /** 旋转 */
    ROTATE = "rotate",
    /** 网页全屏 */
    FULL_SCREEN = "full-screen",
    /** 回到当前页 */
    TO_DISTAL = "to-distal"
  }
}

declare module '@polyv/white-board-sdk/service/_controls/draw-mark' {
  export * from '@polyv/white-board-sdk/service/_controls/draw-mark/draw-mark-controller';
  export * from '@polyv/white-board-sdk/service/_controls/draw-mark/types';
}

declare module '@polyv/white-board-sdk/service/_controls/execute-delayer' {
  import type { PolyvService } from '@polyv/white-board-sdk/service/service-core';
  import type { SeiInfo } from '@polyv/white-board-sdk/service/assets/interfaces';
  import type { DelayerDoParams } from '@polyv/white-board-sdk/service/_controls/execute-delayer/types';
  /**
    * 执行延迟器
    * @class
    */
  export class ExecuteDelayer {
      service: PolyvService;
      constructor(service: PolyvService);
      /**
        * 销毁实例
        */
      destroy(): void;
      /**
        * 获取当前 sei 信息
        */
      getSeiInfo(): SeiInfo | undefined;
      /**
        * 设置 sei 信息
        * @param seiInfo
        */
      setSeiInfo(seiInfo?: SeiInfo): void;
      do(fn: () => unknown, params: DelayerDoParams): void;
  }
}

declare module '@polyv/white-board-sdk/service/_controls/playback' {
  export * from '@polyv/white-board-sdk/service/_controls/playback/enum';
  export * from '@polyv/white-board-sdk/service/_controls/playback/interface';
  export * from '@polyv/white-board-sdk/service/_controls/playback/playback-controller';
}

declare module '@polyv/white-board-sdk/service/assets/config' {
  /**
    * @file 服务配置文件
    */
  import { DomainInfo } from '@polyv/white-board-sdk/service/assets/interfaces';
  /**
    * 域名信息
    */
  export const defaultDomainInfo: Required<DomainInfo>;
}

declare module '@polyv/white-board-sdk/service/assets/enums' {
  /**
    * 服务名称枚举
    */
  export enum ServiceName {
      /** 常规 */
      Normal = "Normal",
      /** 开播端服务 */
      LiveStart = "LiveStart",
      /** 观看页服务 */
      LiveWatch = "LiveWatch"
  }
  /**
    * socket 类型枚举
    */
  export enum SocketEvent {
      /**
        * 进入状态信息
        * @interface {@link OnSliceIdType}
        */
      OnSliceId = "onSliceID",
      /**
        * 开始上课事件
        * @interface {@link OnSliceStartType}
        */
      OnSliceStart = "onSliceStart",
      /**
        * 打开事件
        * @interface {@link OnSliceOpenType}
        */
      OnSliceOpen = "onSliceOpen",
      /**
        * 关闭事件
        * @interface {@link OnSliceCloseType}
        */
      OnSliceClose = "onSliceClose",
      /**
        * 操作事件
        * @interface {@link OnSliceControlType}
        */
      OnSliceControl = "onSliceControl",
      /**
        * 绘制事件
        * @interface {@link OnSliceDrawType}
        */
      OnSliceDraw = "onSliceDraw",
      /**
        * 视频事件
        */
      OnSliceVideo = "onSliceVideo"
  }
  /**
    * onSliceControl 类型枚举
    */
  export enum SliceControlType {
      /**
        * 切换到指定页
        * @interface {@link OnSliceControlSwitchPageDataType}
        */
      SwitchPage = "switchpage",
      /**
        * 切换到动画 PPT 的动画步骤
        * @interface {@link OnSliceControlSwitchAnimationDataType}
        */
      SwitchAnimation = "switchAnimation",
      /**
        * 切换摄像头与文档区域位置
        * @interface {@link OnSliceControlChangeVideoAndPPTPositionDataType}
        * @compatible
        */
      ChangeVideoAndPPTPosition = "changeVideoAndPPTPosition",
      /**
        * 关闭摄像头
        * @interface {@link OnSliceControlCloseCameraType}
        * @compatible
        */
      CloseCamera = "closeCamera",
      /**
        * 激光笔路径
        * @interface {@link OnSliceControlLaserPaintDataType}
        * @compatible
        */
      LaserPaint = "laserPaint",
      /**
        * 删除（旧版的类型，包括撤回、橡皮擦）
        * @interface {@link OnSliceControlDeleteDataType}
        * @compatible
        */
      Delete = "delete",
      /**
        * 删除所有（旧版的类型，代表清空）
        * @interface {@link OnSliceControlAllDeleteDataType}
        * @compatible
        */
      AllDelete = "alldelete",
      /**
        * 最大化容器（互动学堂）
        * @interface {@link HiClassSliceControlToggleMaxmizeContainerDataType}
        */
      HiClassToggleMaximizeContainer = "togglePPTFullScreenForSmallClass",
      /**
        * 最小化容器（互动学堂）
        * @interface {@link HiClassSliceControlMinimizeContainerDataType}
        */
      HiClassMinimizeContainer = "hidePPTForSmallClass",
      /**
        * 取消最小化容器（互动学堂）
        * @interface {@link HiClassSliceControlCancelMinimizeContainerDataType}
        */
      HiClassCancelMinimizeContainer = "showPPTForSmallClass",
      /**
        * 改变容器或白板尺寸位置（互动学堂）
        * @interface {@link HiClassSliceControlChangePositionDataType}
        */
      HiClassChangePosition = "changeContainnerDetailForSmallClass",
      /**
        * 置顶容器（互动学堂）
        * @interface {@link HiClassSliceControlTopmostContainerDataType}
        */
      HiClassTopmostContainer = "changePPTToTopForSmallClass",
      /**
        * 缩放视角（互动学堂）
        * @interface {@link HiClassSliceControlZoomVisionDataType}
        */
      HiClassZoomVision = "changeWhiteZoomForSmallClass"
  }
  /**
    * onSliceVideo 类型枚举
    */
  export enum SliceVideoType {
      /**
        * 播放视频
        */
      Play = "play",
      /**
        * 暂停视频
        */
      Pause = "pause",
      /**
        * 设置进度
        */
      Seek = "seek",
      /**
        * 音量设置
        */
      Volume = "volume",
      /**
        * 全屏
        */
      Fullscreen = "fullscreen"
  }
}

declare module '@polyv/white-board-sdk/service/assets/interfaces' {
  import { ToastOption, ToastTask, WhiteBoard } from '@polyv/white-board-sdk/core';
  export * from '@polyv/white-board-sdk/service/assets/interfaces/polyv-doc-json';
  export * from '@polyv/white-board-sdk/service/assets/interfaces/socket-types';
  export * from '@polyv/white-board-sdk/service/assets/interfaces/request';
  /**
    * 频道号类型
    */
  export type PolyvChannelIdType = string;
  /**
    * 保利威房间号类型
    */
  export type PolyvRoomIdType = number | string;
  /**
    * 保利威场次号类型
    */
  export type PolyvSessionIdType = string;
  /**
    * 保利威 Socket 数据中 autoId 类型
    */
  export type PolyvAutoIdType = number | string;
  /**
    * 保利威 Socket 数据中 page 类型
    */
  export type PolyvPageType = number | string;
  /**
    * 保利威 Socket 数据中 step 类型
    */
  export type PolyvStepType = number | string;
  /**
    * 开关类型
    */
  export type EnabledType = boolean | 'Y' | 'N';
  /**
    * 保利威文档 docType 类型，服务层所有 docType 均默认为 1
    */
  export type PolyvDocType = 0 | '0' | 'old' | 1 | '1' | 'new';
  /**
    * 服务层文档类型。
    * v1 - 使用旧接口获取 docJson。
    * v2 - 使用新接口获取 docJson。
    */
  export type ServiceDocVersion = 'v1' | 'v2';
  /**
    * 域名信息类型
    */
  export interface DomainInfo {
      /** 旧版 doc 域名，默认：//doc.polyv.net */
      docV1Domain?: string;
      /** doc 域名，默认：//doc-2.polyv.net */
      docDomain?: string;
      /** apichat 域名，默认：//apichat.polyv.net */
      apiChatDomain?: string;
      /** api 域名，默认：//api.polyv.net */
      apiDomain?: string;
  }
  /**
    * sei 信息
    */
  export interface SeiInfo {
      /** 当前直播画面的播放时间进度，单位：毫秒 */
      time: number;
  }
  /**
    * 服务公用参数
    */
  export interface ServiceCommonParams {
      /** 白板实例 */
      whiteBoard?: WhiteBoard;
      /** 域名信息 */
      domainInfo?: DomainInfo;
      /** 提示信息 */
      toast?: (option: string | ToastOption) => ToastTask | undefined;
  }
}

declare module '@polyv/white-board-sdk/service/assets/request' {
  export * from '@polyv/white-board-sdk/service/assets/request/get-doc';
  export * from '@polyv/white-board-sdk/service/assets/request/get-playback';
  export * from '@polyv/white-board-sdk/service/assets/request/get-single-page';
}

declare module '@polyv/white-board-sdk/service/assets/utils' {
  /**
    * @file 保利威服务工具方法
    */
  import { DomainInfo, EnabledType, PolyvPageType, PolyvStepType } from '@polyv/white-board-sdk/service/assets/interfaces';
  export * from '@polyv/white-board-sdk/service/assets/utils/doc-utils';
  export * from '@polyv/white-board-sdk/service/assets/utils/socket-utils';
  /**
    * 格式化域名信息
    * @param domainInfo 域名信息
    */
  export function formatDomainInfo(domainInfo?: DomainInfo): Required<DomainInfo>;
  /**
    * 格式化 Socket 中的 step 字段，使其转换成 number 类型，如果传入的是一个 undefined 则返回 0。
    * @param step Socket 中 step 字段
    */
  export function formatStep(step?: PolyvStepType): number;
  /**
    * 格式化 Socket 中的 page 字段，使其转换成 number 类型。
    * @param page Socket 中 pageId 字段
    */
  export function formatPage(page: PolyvPageType): number;
  /**
    * 开关转布尔值，不传或非 boolean、Y、N 返回 false
    * @param enabled
    */
  export function enabledToBool(enabled?: EnabledType): boolean;
}

declare module '@polyv/white-board-sdk/service/assets/interfaces/socket-types' {
  /**
    * @file 保利威 Socket 消息类型定义
    */
  import { OnSliceDrawType } from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/draw-type';
  import { OnSliceControlType } from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/control-type';
  import { SocketEvent } from '@polyv/white-board-sdk/service/assets/enums';
  import { PolyvAutoIdType, PolyvDocType, PolyvPageType, PolyvRoomIdType, PolyvStepType } from '@polyv/white-board-sdk/service/assets/interfaces/index';
  import { DrawMarkType } from '@polyv/white-board-sdk/service/_controls/draw-mark';
  import { OnSliceVideoType } from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/video-type';
  /**
    * 文档与视频位置，0-文档在主屏（大的），1-文档在副屏（小的）
    */
  export type PptVideoPosition = 0 | 1;
  /**
    * 是否关闭摄像头，0-未关闭，1-已关闭
    */
  export type IsCloseCamera = 0 | 1;
  /**
    * Socket 公共数据类型
    */
  export interface SliceCommonType {
      /** 房间号 */
      roomId: PolyvRoomIdType;
      /** 场次号 */
      sessionId?: string;
      /** 用户 id */
      userId: string;
      /**
        * 广播模式。
        * 1 - 表示消息广播给除自己之外的所有其它人。
        * 0 - 表示广播给房间内所有人，包括自己。
        */
      emitMode: 1;
      /** 文档类型 */
      docType: 1;
  }
  /**
    * 互动学堂下已打开的 PPT 对象数据类型
    */
  export interface PptListItem {
      /** 标识 ID，用作 containerId */
      autoId: PolyvAutoIdType;
      /** 当前页数 */
      pageId: PolyvPageType;
      /** 动画索引 */
      step: PolyvStepType;
      /** PPT 容器宽度 */
      width: number;
      /** PPT 容器高度 */
      height: number;
      /** PPT 容器左上角世界坐标点的 y 坐标 */
      top: number;
      /** PPT 容器左上角世界坐标点的 x 坐标 */
      left: number;
  }
  /**
    * 初始化状态 onSliceID 数据类型
    */
  export interface OnSliceIdType {
      EVENT: SocketEvent.OnSliceId;
      data: {
          /** 当前打开的PPT标识ID，数字 0 为白板，默认：0 */
          autoId?: PolyvAutoIdType;
          /** 当前页数，默认：0 */
          pageId?: PolyvPageType;
          /** 当前动画进度，默认：0 */
          step?: PolyvStepType;
          /** 文档类型 */
          docType?: PolyvDocType;
          /** 用户 id */
          userId?: string;
          /** 房间号 */
          roomId?: PolyvRoomIdType;
          /** 场次号 */
          sessionId?: string;
          /** 绘制记录 */
          drawMark?: DrawMarkType;
          /** 是否关闭了摄像头 */
          isCamClosed?: IsCloseCamera;
          /** 互动学堂下已打开的 ppt 列表 */
          pptList?: PptListItem[];
          /** 互动学堂下已最小化的 ppt 列表 */
          pptStorageList?: PptListItem[];
          /** 互动学堂下正在最大化中的 ppt autoId */
          fullScreenPPT?: number;
          /** 互动学堂下大白板的缩放百分比 */
          zoom?: number;
          /** 互动学堂下大白板的视角中心点 y 坐标 */
          top?: number;
          /** 互动学堂下大白板的视角中心点 x 坐标 */
          left?: number;
          /** 互动学堂下讲师端大白板的宽度 */
          width?: number;
          /** 互动学堂下讲师端大白板的高度 */
          height?: number;
      };
      /** 是否正在上课，默认：false */
      inClass?: boolean;
      /** 是否正在分组讨论中，默认：false */
      inDiscuss?: boolean;
      /** 分组 ID，仅在 inDiscuss 为 true 的时候使用 groupId 作为 roomId */
      groupId?: string;
      /** PPT与视频位置 */
      pptAndVedioPosition?: PptVideoPosition;
  }
  /**
    * 开始上课 OnSliceStart 数据类型
    */
  export interface OnSliceStartType extends SliceCommonType {
      EVENT: SocketEvent.OnSliceStart;
      data: {
          /** 当前正在打开的 PPT 或 白板，0 表示为白板 */
          autoId: PolyvAutoIdType;
          /** 当前页数 */
          pageId: PolyvPageType;
          /** 当前动画步骤数 */
          step: PolyvStepType;
          /** 文档类型 */
          docType?: PolyvDocType;
      };
      /** 该 socket 位于回放的产生时间进度，单位：ms */
      timeStamp?: number;
      /** 绘制记录 */
      drawMark?: DrawMarkType;
  }
  /**
    * 切换 PPT 或白板的 data 数据类型
    */
  export interface OnSliceOpenDataType {
      /**
        * 标识 ID。
        * 在互动学堂中，该字段表示打开某个 PPT 容器。
        * 在云直播中，该字段表示切换到某个 PPT 文档或白板，当该字段为数字类型 0 时，表示切换到白板，即关闭 PPT。
        */
      autoId: PolyvAutoIdType;
      /** 当前页 */
      pageId: PolyvPageType;
      /** 动画步骤数 */
      step?: PolyvStepType;
      /** 文档类型 */
      docType?: PolyvDocType;
      /** 互动学堂下，打开的 PPT 容器的宽度 */
      width?: number;
      /** 互动学堂下，打开的 PPT 容器的高度 */
      height?: number;
      /** 互动学堂下，打开的 PPT 容器左上角世界坐标点的 y 坐标 */
      top?: number;
      /** 互动学堂下，打开的 PPT 容器左上角世界坐标点的 x 坐标 */
      left?: number;
      /** 该 socket 位于回放的产生时间进度，单位：ms */
      timeStamp?: number;
  }
  /**
    * 切换 PPT 或白板 的 onSliceOpen 数据类型
    */
  export interface OnSliceOpenType extends SliceCommonType {
      EVENT: SocketEvent.OnSliceOpen;
      data: OnSliceOpenDataType;
  }
  /**
    * 互动学堂下，关闭 PPT 容器的 onSliceClose 类型
    */
  export interface OnSliceCloseType extends SliceCommonType {
      EVENT: SocketEvent.OnSliceClose;
      /** 关闭的 PPT 标识id */
      autoId: PolyvAutoIdType;
  }
  /**
    * 所有 Socket 数据类型汇总的类型
    */
  export type SocketType = OnSliceIdType | OnSliceStartType | OnSliceOpenType | OnSliceCloseType | OnSliceControlType | OnSliceDrawType | OnSliceVideoType;
  export * from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/draw-type';
  export * from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/control-type';
  export * from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/video-type';
}

declare module '@polyv/white-board-sdk/service/_controls/compatible-data' {
  export * from '@polyv/white-board-sdk/service/_controls/compatible-data/compatible-data-controller';
  export * from '@polyv/white-board-sdk/service/_controls/compatible-data/types';
}

declare module '@polyv/white-board-sdk/service/_controls/history-request' {
  export * from '@polyv/white-board-sdk/service/_controls/history-request/history-request-controller';
  export * from '@polyv/white-board-sdk/service/_controls/history-request/types';
}

declare module '@polyv/white-board-sdk/service/service-core/types' {
  import { PptJsonType, UserInfo, WhiteBoard } from '@polyv/white-board-sdk/core';
  import { WhiteBoardPluginConfig } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  import { DomainInfo, EnabledType, PolyvAutoIdType, PolyvChannelIdType, PolyvDocType, PolyvRoomIdType, PolyvSessionIdType } from '@polyv/white-board-sdk/service/assets/interfaces';
  import { OnSliceControlSwitchPageDataType, OnSliceControlType, OnSliceIdType, OnSliceOpenType, OnSliceStartType, PptVideoPosition } from '@polyv/white-board-sdk/service/assets/interfaces/socket-types';
  /**
    * 发送 socket 数据方法类型
    */
  export interface SendSocketDataFn {
      (data: string): unknown;
  }
  /**
    * 文档与视频位置改变回调方法类型
    */
  export interface MainScreenChangeCallback {
      (mainScreen: PptVideoPosition): unknown;
  }
  /**
    * 保利威服务类实例化参数
    */
  export interface PolyvServiceConfig extends WhiteBoardPluginConfig {
      /** 频道号 */
      channelId?: PolyvChannelIdType;
      /** 房间号 */
      roomId?: PolyvRoomIdType;
      /** 场次号 */
      sessionId?: PolyvSessionIdType;
      /** 用户信息 */
      userInfo?: UserInfo;
      /** 域名配置 */
      domainInfo?: DomainInfo;
      /** 是否需要 sessionId，默认：true */
      needSessionId?: boolean;
      /** 是否检查 drawMark 记录，默认：N */
      pptCheckDrawMarkEnabled?: EnabledType;
      /** 当切换到白板时的内容层背景色 */
      whiteBoardContentBg?: string;
      /** 当切换到白板时内容层的比例 */
      contentPropWhenWhiteBoard?: number;
      /** 当切换到白板时的总页数 */
      totalPageWhenWhiteBoard?: number;
      /** 发送 socket 方法 */
      sendSocketData?: SendSocketDataFn;
      /** 文档与视频位置改变回调 */
      mainScreenChangeCallback?: MainScreenChangeCallback;
  }
  /**
    * 插入 socket 的来源；
    * `chat` - 来自聊天室；
    * `history` - 来自历史记录；
    * `playback` - 来自回放；
    */
  export type JoinSocketDataSource = 'chat' | 'history' | 'playback';
  /**
    * 插入 socket 消息参数类型
    */
  export interface JoinSocketDataParams {
      /** 是否使用动画，默认：true */
      useAnimation?: boolean;
      /** 延迟时间，单位：毫秒(ms) */
      delayTime?: number;
      /** 插入来源，选传，默认：`chat` */
      source?: JoinSocketDataSource;
  }
  export interface SetWhiteBoardPptParams {
      /** 白板示例 */
      whiteBoard: WhiteBoard;
      /** doc 标识 id */
      autoId: PolyvAutoIdType;
      /** 当前页 */
      currentPage: number;
      /** 动画步骤 */
      stepIndex: number;
      /** 文档类型 */
      docType?: PolyvDocType;
      /** 总页数，默认：1，当 autoId 为 0 时使用该字段切到白板的总页数 */
      totalPage?: number;
      /** ppt json，优先级高于请求 autoId */
      pptJson?: PptJsonType;
  }
  export type InitServiceStatusParams = OnSliceIdType | OnSliceStartType | OnSliceOpenType | OnSliceControlType<OnSliceControlSwitchPageDataType>;
  /**
    * 切换房间 switchRoom 参数类型
    */
  export type SwitchRoomData = Omit<OnSliceIdType['data'], 'userId'>;
}

declare module '@polyv/white-board-sdk/service/live-start-service/types' {
  import { PptJsonType } from '@polyv/white-board-sdk/core';
  import { PolyvAutoIdType, PolyvDocType } from '@polyv/white-board-sdk/service/assets';
  import { LiveWatchServiceConfig } from '@polyv/white-board-sdk/service/live-watch-service';
  /**
    * 开播端服务实例化参数
    */
  export interface LiveStartServiceConfig extends LiveWatchServiceConfig {
      /** 是否具有操作权限，默认 true */
      hasAuth?: boolean;
  }
  /**
    * 开播端 `openDocument` 参数类型
    */
  export interface LiveStartOpenDocumentParams {
      /** 文档的 autoId */
      autoId: PolyvAutoIdType;
      /** 文档类型 */
      docType?: PolyvDocType;
      /** 打开后的当前页数，默认：0 */
      currentPage?: number;
      /** 动画文档打开后的动画步骤书，默认：0 */
      stepIndex?: number;
      /** ppt json，传了该字段则不会请求 doc json 来转换 */
      pptJson?: PptJsonType;
  }
  /**
    * 开播端 `openWhiteBoard` 参数类型
    */
  export interface LiveStartOpenWhiteBoardParams {
      /** 打开后的当前页数，默认：0 */
      currentPage?: number;
  }
}

declare module '@polyv/white-board-sdk/service/live-watch-service/types' {
  import { PolyvServiceConfig } from '@polyv/white-board-sdk/service/service-core';
  /**
    * 直播观看端服务实例化参数
    */
  export interface LiveWatchServiceConfig extends PolyvServiceConfig {
  }
}

declare module '@polyv/white-board-sdk/core/utils/shape-utils/bbox-utils' {
  /**
    * @file 包围盒相关的工具方法
    */
  import { BrowserPoint, CanvasPoint, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { SimpleBBox } from '@polyv/white-board-sdk/core/interfaces/shape';
  /**
    * 获取点列表的边界数据
    * @category BBox
    * @param targets 点列表
    */
  export function getBoundingData(targets: WorldPoint[] | CanvasPoint[] | BrowserPoint[]): {
      minX: number;
      maxX: number;
      minY: number;
      maxY: number;
      width: number;
      height: number;
  };
  /**
    * 连接包围盒
    * @category BBox
    * @param bbox 简单包围盒
    * @returns 返回由该包围盒形成的多段线条
    */
  export function connectBBox(bbox: SimpleBBox): WorldPoint[];
  /**
    * 合并包围盒
    * @category BBox
    * @param bboxs 包围盒列表，长度不为 0
    */
  export function mergeBBox(bboxs: SimpleBBox[]): SimpleBBox | undefined;
  /**
    * 判断目标点是否在包围盒中
    * @category BBox
    * @param point 目标点
    * @param bbox 包围盒
    */
  export function worldPointIsInBBox(point: WorldPoint, bbox: SimpleBBox): boolean;
  /**
    * 判断点列表中是否至少存在一个点在包围盒中
    * @category BBox
    * @param points 点列表，传空数组时返回 false
    * @param bbox 包围盒
    */
  export function woldPointsAtLastInBBox(points: WorldPoint[], bbox: SimpleBBox): boolean;
  /**
    * 判断两个包围盒是否有重叠的部分
    * @category BBox
    * @param box1 包围盒1
    * @param box2 包围盒2
    * @returns 是否重叠
    */
  export function twoBBoxIsOverlap(box1: SimpleBBox, box2: SimpleBBox): boolean;
  /**
    * 判断两个包围盒的边线是否相交
    * @category BBox
    * @param bbox1 包围盒1
    * @param bbox2 包围盒2
    */
  export function twoBBoxLineIsIntersect(bbox1: SimpleBBox, bbox2: SimpleBBox): boolean;
  /**
    * 判断多段线条是否与范围的包围盒重叠
    * @category BBox
    * @param line 多段线条
    * @param range 范围包围盒
    */
  export function multsLineAndBBoxIsIntersect(line: WorldPoint[], bbox: SimpleBBox): boolean;
}

declare module '@polyv/white-board-sdk/core/utils/shape-utils/compute-utils' {
  /**
    * @file 计算公式相关的工具方法
    */
  import { PointDirection, ShapeZoomPercen, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  /**
    * 计算三阶贝塞尔曲线的坐标
    * @category Compute
    * @param t 贝塞尔曲线百分比
    * @param p1 开始点
    * @param cp1 控制点1
    * @param cp2 控制点2
    * @param p2 结束点
    * @knowledge 三阶贝塞尔曲线计算公式
    */
  export function computeThreeOrderBezier(t: number, p1: WorldPoint, cp1: WorldPoint, cp2: WorldPoint, p2: WorldPoint): WorldPoint;
  /**
    * 计算点到线段的距离
    * @category Compute
    * @param point 目标点坐标
    * @param line 线段坐标
    * @knowledge 海伦公式 + 三角形面积公式
    */
  export function computePointToSegmentLineDistance(point: WorldPoint, line: [start: WorldPoint, end: WorldPoint]): number;
  /**
    * 计算两点之间的距离
    * @category Compute
    * @param {Point} start
    * @param {Point} end
    */
  export function computeTwoPointDistance(start: WorldPoint, end: WorldPoint): number;
  /**
    * 计算多段线段的长度
    * @category Compute
    * @param line 多段线点列表
    */
  export function computeMultsLineLength(line: WorldPoint[]): number;
  /**
    * 根据起止坐标获取顺时针下的旋转角度（以弧度表示），起始：y正向，保留小数点后3位
    * @category Compute
    * @param start 开始坐标
    * @param end 结束坐标
    */
  export function computeRotateForTwoPoint(start: WorldPoint, end: WorldPoint): number;
  /**
    * 获取起止坐标的方向
    * @category Compute
    * @param start 开始坐标
    * @param end 结束坐标
    */
  export function computeDirectionForTwoPoint(start: WorldPoint, end: WorldPoint): PointDirection | undefined;
  /**
    * 获取等比改变下的改变坐标百分比
    * @param percens 四个方位的百分比数据
    */
  export function getEqualRatioPercenInfo(percens: ShapeZoomPercen): ShapeZoomPercen;
}

declare module '@polyv/white-board-sdk/core/utils/shape-utils/connect-utils' {
  /**
    * @file 连接相关的工具函数
    */
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  /**
    * 连接矩形的点列表
    * @category Connect
    * @param points 点列表
    */
  export function connectRectPoints(points: [WorldPoint, WorldPoint]): WorldPoint[];
  /**
    * 连接多边形的起止点
    * @category Connect
    * @param points 多边形路径点
    */
  export function connectPolygon(points: WorldPoint[]): WorldPoint[];
}

declare module '@polyv/white-board-sdk/core/utils/shape-utils/convert-utils' {
  /**
    * @file 转换相关的工具方法
    */
  import { ShapeSeatZoomData, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  /**
    * 获取目标点以某个点为中心点，旋转指定角度后的坐标
    * @category Convert
    * @param point 目标点
    * @param center 旋转中心点
    * @param radian 以弧度表示的角度
    */
  export function rotatePoints(point: WorldPoint, center: WorldPoint, radian: number): WorldPoint;
  export function rotatePoints(points: WorldPoint[], center: WorldPoint, radian: number): WorldPoint[];
  /**
    * 获取点列表所构成的中心点坐标
    * @category Convert
    * @param points 世界坐标点列表
    */
  export function getWorldPointsCenter(points: WorldPoint[]): WorldPoint;
  /**
    * 将世界坐标点列表转换成以图形中心为原点的列表
    * @category Convert
    * @param points 点列表
    */
  export function converPointsToCenter(points: WorldPoint[]): WorldPoint[];
  /**
    * 格式化三角形路径
    * @category Convert
    * @param start 开始点
    * @param end 结束点
    */
  export function convertTrianglePoints(start: WorldPoint, end: WorldPoint): [p1: WorldPoint, p2: WorldPoint, p3: WorldPoint];
  /**
    * 获取点列表偏移后的点
    * @param points 点列表
    * @param diffX x坐标偏移量
    * @param diffY y坐标偏移量
    */
  export function deviationPoints<T extends WorldPoint[] = WorldPoint[]>(points: T, diffX: number, diffY: number): T;
  /**
    * 获取位置缩放之后的点列表
    * @param points 点列表
    * @param data 位置缩放数据
    */
  export function zoomSeatPoints<T extends WorldPoint[] = WorldPoint[]>(points: T, data: ShapeSeatZoomData): T;
  /**
    * 反向转换位置缩放数据
    * @param data 位置缩放数据
    */
  export function reverseShapeSeatZoomData(data: ShapeSeatZoomData): ShapeSeatZoomData;
}

declare module '@polyv/white-board-sdk/core/utils/shape-utils/judge-utils' {
  /**
    * @file 判断相关的工具方法
    */
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  /**
    * 判断目标点是否靠近线段
    * @category Judge
    * @param point 目标点坐标
    * @param line 线段坐标
    * @param distance 距离
    */
  export function isNearbySegmentLine(point: WorldPoint, line: [start: WorldPoint, end: WorldPoint], distance?: number): boolean;
  /**
    * 判断目标点是否靠近线条
    * @category Judge
    * @param point 目标点坐标
    * @param line 线条坐标
    * @param distance 距离
    */
  export function pointIsNearbyMultsLine(point: WorldPoint, line: WorldPoint[], distance?: number): boolean;
  /**
    * 判断点在有向线段的左侧还是右侧
    * @category Judge
    * @param point 目标点坐标
    * @param line 线段坐标
    * @returns -1：点在线段右侧，0：点在线段上，1：点在线段左侧
    * @knowledge 向量叉乘
    */
  export function pointAtLintLeftOrRight(point: WorldPoint, line: [start: WorldPoint, end: WorldPoint]): 0 | 1 | -1;
  /**
    * 判断两条线段是否相交
    * @category Judge
    * @param line1 线条1
    * @param line2 线条2
    */
  export function twoSegmentLineIsIntersect(line1: [start: WorldPoint, end: WorldPoint], line2: [start: WorldPoint, end: WorldPoint]): boolean;
  /**
    * 判断线段是否与一条多段的线段相交
    * @category Judge
    * @param target 目标线段
    * @param multistage 多段线段
    */
  export function segmentAndMultsIsIntersect(target: [start: WorldPoint, end: WorldPoint], multistage: WorldPoint[]): boolean;
  /**
    * 判断两条多段线条是否相交
    * @category Judge
    * @param multistage1 多段线条1
    * @param multistage2 多段线条2
    */
  export function multsLineIsIntersect(multistage1: WorldPoint[], multistage2: WorldPoint[]): boolean;
  /**
    * 判断点是否均为同一个点
    * @category Judge
    * @param points 点列表
    */
  export function isEqualPoints(points: WorldPoint[]): boolean;
}

declare module '@polyv/white-board-sdk/core/utils/shape-utils/progress-utils' {
  /**
    * @file 图形百分比相关的工具方法
    */
  import { CanvasPoint, WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  /**
    * 获取简单的起止点动画进度计算后的数值
    * @category Progress
    * @param start 开始点
    * @param end 结束点
    * @param progress 进度
    */
  export function getSimpleProgressPoint(start: CanvasPoint, end: CanvasPoint, progress: number): [start: CanvasPoint, end: CanvasPoint];
  /**
    * 获取简单的起止点动画进度计算后的数值
    * @category Progress
    * @param start 开始点
    * @param end 结束点
    * @param progress 进度
    */
  export function getProgressPoint(start: WorldPoint, end: WorldPoint, progress: number): [start: WorldPoint, end: WorldPoint];
  /**
    * 计算多边形动画进度
    * @category Progress
    * @param line 多边形点列表
    * @param progress 进度
    * @param close 是否闭合线段
    */
  export function getPolygonProgressPoint(line: WorldPoint[], progress: number, close?: boolean): WorldPoint[];
}

declare module '@polyv/white-board-sdk/shapes/common/types' {
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  /**
    * 简单的起止点类型
    */
  export type SimplePoints = [start: WorldPoint, end: WorldPoint];
}

declare module '@polyv/white-board-sdk/shapes/arrow/types' {
  import { ShapeBaseData, ShapeConfig } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { SimplePoints } from '@polyv/white-board-sdk/shapes/common/types';
  /**
    * 箭头图形开始端类型，tapering - 尖端型，rightAngle - 直角型
    */
  export type ArrowShapeStartType = 'tapering' | 'rightAngle';
  /**
    * 箭头图形基础数据
    */
  export interface ArrowShapeBaseData extends ShapeBaseData {
      /**
        * 笔触颜色
        */
      strokeStyle: string;
      /**
        * 起止点
        */
      points: SimplePoints;
      /**
        * 末端箭头高度，选传，默认：20
        */
      triangleHeight: number;
      /**
        * 箭头顶点角度，选传，默认：45
        */
      vertexAngle: number;
      /**
        * 箭头开始端类型，选传，默认：tapering，在双向箭头下该参数无效
        */
      startType: ArrowShapeStartType;
      /**
        * 是否为双向箭头，选传，默认：false
        */
      twoWay: boolean;
  }
  /**
    * 箭头图形配置
    */
  export interface ArrowShapeConfig extends Partial<ArrowShapeBaseData>, ShapeConfig {
  }
}

declare module '@polyv/white-board-sdk/shapes/ellipse/types' {
  import { ShapeBaseData, ShapeConfig } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { SimplePoints } from '@polyv/white-board-sdk/shapes/common/types';
  /**
    * 椭圆图形基础数据
    */
  export interface EllipseShapeBaseData extends ShapeBaseData {
      /**
        * 线条宽度
        */
      lineWidth: number;
      /**
       * 笔触颜色
       */
      strokeStyle: string;
      /**
       * 起止点
       */
      points: SimplePoints;
  }
  /**
    * 椭圆图形配置
    */
  export interface EllipseShapeConfig extends Partial<EllipseShapeBaseData>, ShapeConfig {
  }
}

declare module '@polyv/white-board-sdk/shapes/free-line/types' {
  import { WorldPoint } from '@polyv/white-board-sdk/core';
  import { ShapeBaseData, ShapeConfig } from '@polyv/white-board-sdk/core/interfaces/shape';
  export interface FreeLineShapeBaseData extends ShapeBaseData {
      /**
        * 线条宽度
        */
      lineWidth: number;
      /**
        * 笔触颜色
        */
      strokeStyle: string;
      /**
        * 马克笔透明度
        */
      markerOpacity?: number;
      /**
        * 点坐标列表
        */
      points: WorldPoint[];
  }
  /**
    * 自由曲线图形配置
    */
  export interface FreeLineShapeConfig extends Partial<FreeLineShapeBaseData>, ShapeConfig {
  }
}

declare module '@polyv/white-board-sdk/shapes/image/types' {
  import { ShapeBaseData, ShapeConfig } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { SimplePoints } from '@polyv/white-board-sdk/shapes/common/types';
  /**
    * 图片图形基础数据
    */
  export interface ImageShapeBaseData extends ShapeBaseData {
      /**
        * 图片地址
        */
      imageUrl: string;
      /**
        * 起止点
        */
      points: SimplePoints;
  }
  /**
    * 图片图形配置
    */
  export interface ImageShapeConfig extends Partial<ImageShapeBaseData>, ShapeConfig {
  }
}

declare module '@polyv/white-board-sdk/shapes/laser-pen/types' {
  import { WorldPoint } from '@polyv/white-board-sdk/core';
  import { ShapeBaseData, ShapeConfig } from '@polyv/white-board-sdk/core/interfaces/shape';
  export interface LaserPenShapeBaseData extends ShapeBaseData {
      /**
        * 激光大小
        */
      laserSize: number;
      /**
        * 激光颜色
        */
      laserColor: string;
      /**
        * 点坐标列表
        */
      points: WorldPoint[];
  }
  /**
    * 激光笔图形配置
    */
  export interface LaserPenShapeConfig extends Partial<LaserPenShapeBaseData>, ShapeConfig {
  }
}

declare module '@polyv/white-board-sdk/shapes/polygon/types' {
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { ShapeBaseData, ShapeConfig } from '@polyv/white-board-sdk/core/interfaces/shape';
  /**
    * 多边形图形基础数据
    */
  export interface PolygonShapeBaseData extends ShapeBaseData {
      /**
        * 线条宽度
        */
      lineWidth: number;
      /**
        * 笔触颜色
        */
      strokeStyle: string;
      /**
        * 点列表
        */
      points: WorldPoint[];
  }
  /**
    * 多边形图形配置
    */
  export interface PolygonShapeConfig extends Partial<PolygonShapeBaseData>, ShapeConfig {
  }
}

declare module '@polyv/white-board-sdk/shapes/rect/types' {
  import { ShapeBaseData, ShapeConfig } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { SimplePoints } from '@polyv/white-board-sdk/shapes/common/types';
  /**
    * 矩形图形基础数据
    */
  export interface RectShapeBaseData extends ShapeBaseData {
      /**
        * 线条宽度
        */
      lineWidth: number;
      /**
        * 笔触颜色
        */
      strokeStyle: string;
      /**
        * 起止点
        */
      points: SimplePoints;
  }
  /**
    * 矩形配置
    */
  export interface RectShapeConfig extends Partial<RectShapeBaseData>, ShapeConfig {
  }
}

declare module '@polyv/white-board-sdk/shapes/star/types' {
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { ShapeBaseData, ShapeConfig } from '@polyv/white-board-sdk/core/interfaces/shape';
  /**
    * 星形图形基础数据
    */
  export interface StarShapeBaseData extends ShapeBaseData {
      /**
        * 线条宽度
        */
      lineWidth: number;
      /**
        * 笔触颜色
        */
      strokeStyle: string;
      /**
        * 起止点
        */
      points: WorldPoint[];
  }
  /**
    * 星形图形配置
    */
  export interface StarShapeConfig extends Partial<StarShapeBaseData>, ShapeConfig {
  }
}

declare module '@polyv/white-board-sdk/shapes/straight-line/types' {
  import { ShapeBaseData, ShapeConfig } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { SimplePoints } from '@polyv/white-board-sdk/shapes/common/types';
  /**
    * 直线图形基础数据
    */
  export interface StraightLineShapeBaseData extends ShapeBaseData {
      /**
        * 线条宽度
        */
      lineWidth: number;
      /**
        * 笔触颜色
        */
      strokeStyle: string;
      /**
        * 起止点
        */
      points: SimplePoints;
  }
  /**
    * 直线图形配置
    */
  export interface StraightLineShapeConfig extends Partial<StraightLineShapeBaseData>, ShapeConfig {
  }
}

declare module '@polyv/white-board-sdk/shapes/text/types' {
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { ShapeBaseData, ShapeConfig } from '@polyv/white-board-sdk/core/interfaces/shape';
  export interface TextShapeSimpleData {
      /** 文本内容 */
      content: string;
      /** 字体颜色 */
      strokeStyle: string;
      /** 字体尺寸，默认为白板实例的 `fontSize` */
      fontSize: number;
      /** 字体样式，默认：Arial */
      fontFamily: string;
      /** 是否加粗，默认：false */
      isBold: boolean;
      /** 是否斜体，默认：false */
      isItalics: boolean;
      /** 是否有删除线，默认：false */
      isLineThrough: boolean;
      /** 是否有下划线，默认：false */
      isUnderLine: boolean;
  }
  /**
    * 文本图形基础数据
    */
  export interface TextShapeBaseData extends TextShapeSimpleData, ShapeBaseData {
      /** 坐标点 */
      points: [WorldPoint, WorldPoint];
      /** 单行文本下根据文本是否溢出而自动换行 */
      autoNewLineBySingle?: boolean;
  }
  /**
    * 文本图形配置
    */
  export interface TextShapeConfig extends Partial<TextShapeBaseData>, ShapeConfig {
  }
}

declare module '@polyv/white-board-sdk/shapes/triangle/types' {
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { ShapeBaseData, ShapeConfig } from '@polyv/white-board-sdk/core/interfaces/shape';
  /**
    * 三角形点类型
    */
  export type TrianglePoints = [p1: WorldPoint, p2: WorldPoint, p3: WorldPoint];
  /**
    * 三角形图形基础数据
    */
  export interface TriangleShpaeBaseData extends ShapeBaseData {
      /**
        * 线条宽度
        */
      lineWidth: number;
      /**
        * 笔触颜色
        */
      strokeStyle: string;
      /**
        * 点列表
        */
      points: TrianglePoints;
  }
  /**
    * 三角形配置
    */
  export interface TriangleShpaeConfig extends Partial<TriangleShpaeBaseData>, ShapeConfig {
  }
}

declare module '@polyv/white-board-sdk/ispring/types/file' {
  import { INarration } from '@polyv/white-board-sdk/ispring/types/multimedia';
  import { ISlides } from '@polyv/white-board-sdk/ispring/types/slide';
  import { IGraphicAsset } from '@polyv/white-board-sdk/ispring/types/utils-type';
  /**
    * 文档公司信息
    */
  export interface ICompany {
      /**
        * 获取公司logo信息
        * @description 如果没有关联公司 logo 则返回 null
        */
      logo(): null | IGraphicAsset;
      /**
        * 返回当用户单击公司徽标时要打开公司网站的目标窗口名称
        * @returns 窗口名称
        */
      webSiteTarget(): string;
      /**
        * 获取公司网站名称
        */
      webSiteUrl(): string;
  }
  /**
    * 该ppt文件的信息接口
    */
  export interface IPresentation {
      /**
        * 获取公司信息
        * @description 若没关联公司信息则返回null
        */
      company(): null | ICompany;
      /**
        * 获取ppt文件标题
        * @returns 标题
        */
      title(): string;
      /**
        * 获取ppt文件唯一标识
        * @returns 唯一标识
        */
      uniqueId(): string;
      /**
        * 获取ppt幻灯片集合接口
        * @returns 幻灯片集合接口
        */
      slides(): ISlides;
      /**
        * 获取演示文稿音频与视频多媒体接口
        * @returns 演示文稿音频与视频多媒体接口
        */
      narration(): INarration;
  }
}

declare module '@polyv/white-board-sdk/ispring/types/multimedia' {
  import { NarrationTrackPlaybackState } from '@polyv/white-board-sdk/ispring/types/constant';
  import { IEventDispatcher } from '@polyv/white-board-sdk/ispring/types/event-dispatcher';
  import { ITimestamp } from '@polyv/white-board-sdk/ispring/types/utils-type';
  /**
    * 多媒体轨道接口
    */
  export interface INarrationTrack {
      /**
        * 获取多媒体开始时演示文稿中的位置
        * @returns 位置信息
        */
      startTimestamp(): ITimestamp;
      /**
        * 获取多媒体结束时演示文稿中的位置
        * @returns 位置信息
        */
      endTimestamp(): ITimestamp;
      /**
        * 获取当前多媒体的播放状态
        */
      playbackState(): NarrationTrackPlaybackState;
      /**
        * 多媒体播放状态改变事件
        */
      playbackStateChangedEvent(): IEventDispatcher<'playbackStateChangedEvent'>;
  }
  /**
    * 音频多媒体轨道接口
    * @extends INarrationTrack
    */
  export interface IAudioTrack extends INarrationTrack {
  }
  /**
    * 视频多媒体轨道接口
    * @extends INarrationTrack
    */
  export interface IVideoTrack extends INarrationTrack {
      /**
        * 获取原视频宽度
        * @returns 宽度
        */
      width(): number;
      /**
        * 获取原视频高度
        */
      height(): number;
  }
  /**
    * 多媒体控制器
    */
  export interface INarrationController {
      /**
        * 获取当前正在播放的多媒体轨道对象列表
        * @returns 轨道对象
        */
      activeTracks(): INarrationTrack[];
      /**
        * 获取当前是否正在缓存中
        * @returns 是否缓冲中
        */
      isBuffering(): boolean;
  }
  /**
    * 音频控制器接口
    * @extends INarrationController
    */
  export interface IAudioNarrationController extends INarrationController {
  }
  /**
    * 视频视图接口
    */
  export interface IVideoNarrationView {
      /**
        * 获取视频的element对象
        * @returns 视频的element对象
        */
      displayObject(): Element;
      /**
        * 获取视频的宽度
        * @returns 宽度
        */
      width(): number;
      /**
        * 获取视频的高度
        * @returns 高度
        */
      height(): number;
      /**
        * 设置视频的宽高
        * @param width 宽度
        * @param height 高度
        */
      resize(width: number, height: number): void;
  }
  /**
    * 视频控制器接口
    * @extends INarrationController
    */
  export interface IVideoNarrationController extends INarrationController {
      /**
        * 获取视频视图接口
        */
      view(): IVideoNarrationView;
  }
  /**
    * 多媒体集合接口
    */
  export interface INarrationTracks {
      /**
        * 获取当前类型多媒体的总数
        * @returns 总数
        */
      count(): number;
      /**
        * 根据下标获取多媒体轨道对象
        * @description 下标超出范围时会抛出异常，不传值时会返回undefined
        * @returns 多媒体轨道对象
        */
      getTrack(index: number): INarrationTrack | never | undefined;
  }
  /**
    * 音频多媒体集合接口
    * @extends INarrationTracks
    */
  export interface IAudioTracks extends INarrationTracks {
      /**
        * 根据下标获取音频多媒体轨道对象
        * @description 下标超出范围时会抛出异常，不传值时会返回undefined
        * @returns 音频多媒体轨道对象
        */
      getAudioTrack(index: number): IAudioTrack | never | undefined;
  }
  /**
    * 视频多媒体集合接口
    * @extends INarrationTracks
    */
  export interface IVideoTracks extends INarrationTracks {
      /**
        * 根据下标获取视频多媒体轨道对象
        * @description 下标超出范围时会抛出异常，不传值时会返回undefined
        * @returns 视频多媒体轨道对象
        */
      getVideoTrack(index: number): IVideoTrack | never | undefined;
  }
  /**
    * 演示文稿音频与视频多媒体接口
    */
  export interface INarration {
      /**
        * 获取音频多媒体集合
        */
      audioTracks(): IAudioTracks;
      /**
        * 获取视频多媒体集合
        */
      videoTracks(): IVideoTracks;
  }
}

declare module '@polyv/white-board-sdk/ispring/types/view' {
  import { IPresentationPlaybackController } from '@polyv/white-board-sdk/ispring/types/playback-controller';
  import { ISoundController } from '@polyv/white-board-sdk/ispring/types/sound';
  /**
    * 视图控制器接口
    */
  export interface IPresentationView {
      /**
        * 获取当前ppt视图的宽度
        * @returns 宽度
        */
      width(): number;
      /**
        * 获取当前ppt视图的高度
        * @returns 高度
        */
      height(): number;
      /**
        * 调整显示视图显示对象的大小
        * @param width 宽度
        * @param height 高度
        */
      resize(width: number, height: number): void;
      /**
        * 获取回放控制器
        * @returns 回放控制器
        */
      playbackController(): IPresentationPlaybackController;
      /**
        * 获取视图层的HTML对象
        * @returns HTML对象
        */
      displayObject(): Element;
      /**
        * 获取音量级别控制器
        * @returns 音量级别控制器
        */
      soundController(): ISoundController;
  }
}

declare module '@polyv/white-board-sdk/ispring/types/animation-step' {
  /**
    * 动画步骤接口
    */
  export interface IAnimationStep {
      /**
        * 获取下一个动画步骤是否在当前动画步骤的暂停阶段之后自动启动
        * @returns 是否自动启动
        */
      automaticAdvance(): boolean;
      /**
        * 获取该动画步骤的持续时间
        * @returns 动画步骤的持续时间
        */
      duration(): number;
      /**
        * 获取该动画步骤相对于当前幻灯片开头的动画步骤开始时间
        * @returns 开始时间
        */
      startTime(): number;
  }
  /**
    * 一个幻灯片对象下的动画集合接口
    */
  export interface IAnimationSteps {
      /**
        * 获取动画总数
        * @returns 动画总数
        */
      count(): number;
      /**
        * 获取当前幻灯片的所有动画步骤的持续时间
        * @returns 持续时间
        */
      duration(): number;
      /**
        * 根据动画步骤下标获取动画步骤对象
        * @param stepIndex 动画步骤数
        * @description 下标超出范围时会抛出异常，不传值时会返回undefined
        * @returns 动画对象
        */
      getStep(stepIndex: number): never | undefined | IAnimationStep;
  }
}

declare module '@polyv/white-board-sdk/ispring/types/clock' {
  import { PresentationClockState } from '@polyv/white-board-sdk/ispring/types/constant';
  import { IEventDispatcher } from '@polyv/white-board-sdk/ispring/types/event-dispatcher';
  import { ITimestamp } from '@polyv/white-board-sdk/ispring/types/utils-type';
  /**
    * 动画时钟接口
    */
  export interface IPresentationClock {
      /**
        * 获取时钟状态
        * @returns 时钟状态枚举值
        */
      state(): PresentationClockState;
      /**
        * 获取当前幻灯片的播放位置
        * @returns 位置信息接口
        */
      timestamp(): ITimestamp;
      /**
        * 动画时钟是否正在处于缓冲状态
        */
      buffering(): boolean;
      /**
        * 动画时钟是否正在处于进行
        */
      running(): boolean;
      /**
        * 动画时钟是否已开始
        */
      started(): boolean;
      /**
        * 动画时钟是否被挂起
        */
      suspended(): boolean;
      /**
        * 缓冲状态改变事件
        * @returns 事件监听器
        */
      bufferStateChangeEvent(): IEventDispatcher<'bufferStateChangeEvent'>;
      /**
        * 动画时钟开始事件
        * @returns 事件监听器
        */
      startEvent(): IEventDispatcher<'startEvent'>;
      /**
        * 动画时钟停止事件
        * @returns 事件监听器
        */
      stopEvent(): IEventDispatcher<'stopEvent'>;
      /**
        * 动画时钟状态改变事件
        * @returns 事件监听器
        */
      stateChangeEvent(): IEventDispatcher<'stateChangeEvent'>;
      /**
        * 动画状态瞬间改变事件
        * @returns 事件监听器
        */
      tickEvent(): IEventDispatcher<'tickEvent'>;
  }
}

declare module '@polyv/white-board-sdk/ispring/types/constant' {
  /**
    * 回放状态枚举
    */
  export enum PresentationPlaybackState {
      /**
        * 演示文稿播放控制器正在播放幻灯片
        */
      PLAYING_SLIDE = "playingSlide",
      /**
        * 演示文稿播放控制器正在播放幻灯片转换效果
        */
      PLAYING_TRANSITION = "playingTransition",
      /**
        * 演示文稿播放控制器暂停幻灯片转换
        */
      PAUSED_TRANSITION = "pausedTransition",
      /**
        * 演示文稿播放控制器暂停幻灯片
        */
      PAUSED_SLIDE = "pausedSlide",
      /**
        * 演示文稿播放控制器已挂起状态
        */
      SUSPENDED = "suspended",
      /**
        * 演示文稿回放控制器正在缓冲数据
        */
      BUFFERING = "buffering"
  }
  /**
    * 时钟状态枚举
    */
  export enum PresentationClockState {
      /**
        * 时钟已启动
        */
      STARTED = "started",
      /**
        * 时钟已挂起。当演示文稿等待用户操作时，时钟切换到挂起状态
        */
      SUSPENDED = "suspended",
      /**
        * 由于数据缓冲而暂停时钟
        */
      BUFFERING = "buffering",
      /**
        * 时钟已停止
        */
      STOPPED = "stopped",
      /**
        * 幻灯片过渡效果正在倒转
        */
      REWINDING = "rewinding"
  }
  /**
    * 幻灯片切换动画状态
    */
  export enum TransitionPlaybackState {
      /**
        * 正在播放过渡效果
        */
      PLAYING = "playing",
      /**
        * 已暂停转换效果
        */
      PAUSED = "paused",
      /**
        * 转换效果不起作用
        */
      IDLE = "idle"
  }
  /**
    * 多媒体播放状态
    */
  export enum NarrationTrackPlaybackState {
      /**
        * 正在播放
        */
      ACTIVATED = "activated",
      /**
        * 已暂停或未播放
        */
      DEACTIVATED = "deactivated",
      /**
        * 正在缓冲中
        */
      BUFFERING = "buffering"
  }
}

declare module '@polyv/white-board-sdk/ispring/types/event-dispatcher' {
  import { IPresentationClock } from '@polyv/white-board-sdk/ispring/types/clock';
  import { INarrationTrack } from '@polyv/white-board-sdk/ispring/types/multimedia';
  import { IAsset } from '@polyv/white-board-sdk/ispring/types/utils-type';
  /**
    * 事件处理回调方法类型
    */
  export type IEventDispatcherHandler = {
      /**
        * 幻灯片播放完成事件
        */
      playbackCompleteEvent: () => unknown;
      /**
        * 幻灯片切换事件
        * @param slideIndex 幻灯片下标
        */
      slideChangeEvent: (slideIndex: number) => unknown;
      /**
        * 幻灯片切换开始事件
        * @param slideIndex 幻灯片下标
        */
      transitionEffectStartEvent: (slideIndex: number) => unknown;
      /**
        * 幻灯片切换完成事件
        * @param slideIndex 幻灯片下标
        */
      transitionEffectCompleteEvent: (slideIndex: number) => unknown;
      /**
        * 动画步骤改变事件
        * @param stepIndex 改变后的动画步骤
        */
      stepChangeEvent: (stepIndex: number) => unknown;
      /**
        * 缓冲状态改变事件
        * @param theClock 动画时钟对象
        */
      bufferStateChangeEvent: (theClock: IPresentationClock) => unknown;
      /**
        * 动画时钟开始事件
        * @param theClock 动画时钟对象
        */
      startEvent: (theClock: IPresentationClock) => unknown;
      /**
        * 动画暂停事件
        * @param theClock 动画时钟对象
        */
      stopEvent: (theClock: IPresentationClock) => unknown;
      /**
        * 动画时钟状态改变事件
        * @param theClock 动画时钟对象
        */
      stateChangeEvent: (theClock: IPresentationClock) => unknown;
      /**
        * 动画状态瞬间改变事件
        * @param theClock 动画时钟对象
        */
      tickEvent: (theClock: IPresentationClock) => unknown;
      /**
        * 资源加载完成事件
        * @param theAsset 资源对象
        */
      loadCompleteEvent: (theAsset: IAsset) => unknown;
      /**
        * 资源加载失败事件
        * @param theAsset 资源对象
        */
      loadFailedEvent: (theAsset: IAsset) => unknown;
      /**
        * 资源加载进度改变事件
        * @param theAsset 资源对象
        */
      loadProgressEvent: (theAsset: IAsset) => unknown;
      /**
        * 多媒体播放状态改变事件
        * @param track 多媒体轨道对象
        */
      playbackStateChangedEvent: (track: INarrationTrack) => unknown;
      /**
        * 静音状态改变事件
        */
      muteStateToggledEvent: () => unknown;
      /**
        * 实际音量级别改变事件
        */
      realVolumeChangedEvent: () => unknown;
      /**
        * 音量级别改变事件
        */
      volumeChangedEvent: () => unknown;
  };
  /**
    * 事件处理接口
    */
  export interface IEventDispatcher<M extends keyof IEventDispatcherHandler> {
      /**
        * 添加事件监听
        * @param fn 回调方法
        */
      addHandler(fn: IEventDispatcherHandler[M]): void;
      /**
        * 移除事件监听
        * @param fn 回调方法
        */
      removeHandler(fn: IEventDispatcherHandler[M]): void;
  }
}

declare module '@polyv/white-board-sdk/ispring/types/playback-controller' {
  import { IPresentationClock } from '@polyv/white-board-sdk/ispring/types/clock';
  import { PresentationPlaybackState } from '@polyv/white-board-sdk/ispring/types/constant';
  import { IEventDispatcher } from '@polyv/white-board-sdk/ispring/types/event-dispatcher';
  import { ISlide, ISlideTransitionController } from '@polyv/white-board-sdk/ispring/types/slide';
  /**
    * 回放控制器接口
    */
  export interface IPresentationPlaybackController {
      /**
        * 获取时钟控制器
        * @returns 时钟控制器
        */
      clock(): IPresentationClock;
      /**
        * 获取幻灯片切换动画控制器
        * @returns 动画切换控制器
        */
      slideTransitionController(): ISlideTransitionController;
      /**
        * 获取当前幻灯片接口
        * @returns 幻灯片对象
        */
      currentSlide(): ISlide;
      /**
        * 获取当前幻灯片下标
        * @returns 下标
        */
      currentSlideIndex(): number;
      /**
        * 切换到第一页幻灯片
        * @param [autoStart=true] 是否自动开始
        */
      gotoFirstSlide(autoStart?: boolean): void;
      /**
        * 切换到最后一页幻灯片
        * @param [autoStart=true] 是否自动开始
        */
      gotoLastSlide(autoStart?: boolean): void;
      /**
        * 切换到上次查看的幻灯片
        * @param [autoStart=true] 是否自动开始
        */
      gotoLastSlideViewed(autoStart?: boolean): void;
      /**
        * 切换到下一张幻灯片，考虑隐藏幻灯片和自定义幻灯片放映
        * @param [autoStart=true] 是否自动开始
        */
      gotoNextSlide(autoStart?: boolean): void;
      /**
        * 切换到上一张幻灯片，考虑隐藏幻灯片和自定义幻灯片放映
        * @param [autoStart=true] 是否自动开始
        */
      gotoPreviousSlide(autoStart?: boolean): void;
      /**
        * 切换到指定页数
        * @param slideIndex 指定页数
        * @param [autoStart=true] 是否自动开始
        */
      gotoSlide(slideIndex: number, autoStart?: boolean): void;
      /**
        * 移动到演示文稿中指定的位置
        * @param slideIndex 指定页数
        * @param stepIndex 指定动画步骤
        * @param timeOffset 从目标动画步骤开始的时间偏移，以秒为单位
        * @param [autoStart=false] 是否自动开始
        */
      gotoTimestamp(slideIndex: number, stepIndex: number, timeOffset: number, autoStart?: boolean): void;
      /**
        * 获取第一个幻灯片的下标
        * @returns 幻灯片下标
        */
      firstSlideIndex(): number;
      /**
        * 获取最后一页幻灯片的下标，考虑隐藏幻灯片和自定义幻灯片放映
        * @returns 幻灯片下标
        */
      lastSlideIndex(): number;
      /**
        * 获取下一页幻灯片的下标
        * @description 考虑隐藏幻灯片和自定义幻灯片放映，若当前为最后一页，则返回-1
        * @returns 幻灯片下标
        */
      nextSlideIndex(): number;
      /**
        * 获取上一页幻灯片下标
        * @description 考虑隐藏幻灯片和自定义幻灯片放映，若当前为第一页，则返回-1
        * @returns 幻灯片下标
        */
      previousSlideIndex(): number;
      /**
        * 暂停幻灯片播放
        */
      pause(): void;
      /**
        * 启动幻灯片播放
        */
      play(): void;
      /**
        * 获取回放状态
        * @returns 回放状态枚举值
        */
      playbackState(): PresentationPlaybackState;
      /**
        * 切换到下一个动画步骤
        */
      gotoNextStep(): void;
      /**
        * 切换到上一个动画步骤
        */
      gotoPreviousStep(): void;
      /**
        * 页数修改事件
        * @returns 事件监听器
        */
      slideChangeEvent(): IEventDispatcher<'slideChangeEvent'>;
      /**
        * 动画步骤修改事件
        * @returns 事件监听器
        */
      stepChangeEvent(): IEventDispatcher<'stepChangeEvent'>;
      /**
        * 回放完成事件
        * @returns 事件监听器
        */
      playbackCompleteEvent(): IEventDispatcher<'playbackCompleteEvent'>;
  }
}

declare module '@polyv/white-board-sdk/ispring/types/slide' {
  import { IAnimationSteps } from '@polyv/white-board-sdk/ispring/types/animation-step';
  import { TransitionPlaybackState } from '@polyv/white-board-sdk/ispring/types/constant';
  import { IEventDispatcher } from '@polyv/white-board-sdk/ispring/types/event-dispatcher';
  /**
    * 幻灯片接口
    */
  export interface ISlide {
      /**
        * 获取该幻灯片的下标
        * @returns 下标
        */
      index(): number;
      /**
        * 该幻灯片是否已完全加载
        * @returns 是否已加载完成
        */
      isLoaded(): boolean;
      /**
        * 获取该幻灯片的标题
        * @returns 标题
        */
      title(): string;
      /**
        * 该幻灯片是否已播放完毕，即执行到最后一个动画（找出来的，文档上没有）
        * 如果该幻灯片播放过最后一个动画，此时该方法一直返回 true，是个坑，慎用
        * @returns 是否播放完毕
        */
      completed(): boolean;
      /**
        * 获取该幻灯片的动画集合接口
        * @returns 动画集合接口
        */
      animationSteps(): IAnimationSteps;
  }
  /**
    * 幻灯片集合接口
    */
  export interface ISlides {
      /**
        * 获取该文档下的幻灯片总数
        * @returns 幻灯片总数
        */
      count(): number;
      /**
        * 根据下标获取幻灯片接口
        * @param slideIndex 幻灯片下标
        * @description 下标超出范围时会抛出异常，不传值时会返回undefined
        * @returns 幻灯片对象
        */
      getSlide(slideIndex: number): never | undefined | ISlide;
  }
  /**
    * 动画切换控制器接口
    */
  export interface ISlideTransitionController {
      /**
        * 获取幻灯片切换动画状态
        * @returns 切换状态枚举值
        */
      state(): TransitionPlaybackState;
      /**
        * 幻灯片切换开始事件
        * @returns 事件监听器
        */
      transitionEffectStartEvent(): IEventDispatcher<'transitionEffectStartEvent'>;
      /**
        * 幻灯片切换完成事件
        * @returns 事件监听器
        */
      transitionEffectCompleteEvent(): IEventDispatcher<'transitionEffectCompleteEvent'>;
      /**
        * 幻灯片切换进度，0 ~ 1
        * @returns 进度
        */
      transitionProgress(): number;
  }
}

declare module '@polyv/white-board-sdk/ispring/types/sound' {
  import { IEventDispatcher } from '@polyv/white-board-sdk/ispring/types/event-dispatcher';
  /**
    * 音量控制器
    */
  export interface ISoundController {
      /**
        * 设置音量是否静音
        * @param mute 是否静音
        */
      mute(mute: boolean): void;
      /**
        * 获取当前音量是否为静音状态
        * @returns 是否静音
        */
      muted(): boolean;
      /**
        * 获取当前实际的声音音量级别
        * @description 如果当前处于静音状态会返回 0
        * @returns 音量级别
        */
      realVolume(): number;
      /**
        * 设置音量级别
        * @description 当传入值不在 0 到 1 的范围内会抛出异常
        * @param volume 音量级别 0 ~ 1
        */
      setVolume(volume: number): void | never;
      /**
        * 获取当前音量级别
        * @description 不受静音影响
        * @returns 音量级别 0 ~ 1
        */
      volume(): number;
      /**
        * 静音状态改变事件
        */
      muteStateToggledEvent(): IEventDispatcher<'muteStateToggledEvent'>;
      /**
        * 实际音量级别改变事件
        */
      realVolumeChangedEvent(): IEventDispatcher<'realVolumeChangedEvent'>;
      /**
        * 音量级别改变事件
        */
      volumeChangedEvent(): IEventDispatcher<'volumeChangedEvent'>;
  }
}

declare module '@polyv/white-board-sdk/ispring/types/utils-type' {
  import { IEventDispatcher } from '@polyv/white-board-sdk/ispring/types/event-dispatcher';
  /**
    * 资源接口
    */
  export interface IAsset {
      /**
        * 获取资源是否已加载完毕
        * @returns 是否加载完毕
        */
      isLoaded(): boolean;
      /**
        * 如果资源未加载，则异步加载该资源
        * @description 通过 loadCompleteEvent 事件来判断资源是否加载完毕
        */
      load(): void;
      /**
        * 卸载已加载的资源，如果该资源正在加载，则停止加载
        */
      unload(): void;
      /**
        * 获取该资源加载进度，范围：0 ~ 1
        * @returns 加载进度
        */
      progress(): number;
      /**
        * 资源加载完成事件
        * @returns 事件监听器
        */
      loadCompleteEvent(): IEventDispatcher<'loadCompleteEvent'>;
      /**
        * 资源加载失败事件
        * @returns 事件监听器
        */
      loadFailedEvent(): IEventDispatcher<'loadFailedEvent'>;
      /**
        * 资源加载进度改变事件
        * @returns 事件监听器
        */
      loadProgressEvent(): IEventDispatcher<'loadProgressEvent'>;
  }
  /**
    * 图片资源接口
    */
  export interface IGraphicAsset extends IAsset {
      /**
        * 创建图片实例
        * @returns 图片实例
        */
      createImgInstance(): HTMLImageElement;
      /**
        * 创建具有图片资源的canvas实例
        * @returns 画布实例
        */
      createInstance(): HTMLCanvasElement;
      /**
        * 获取该图片资源的高度
        * @description 需要在图片资源加载完毕（isLoaded）后调用，未加载完毕前调用会抛出异常
        * @returns 高度
        */
      height(): number | never;
      /**
        * 获取该图片资源的宽度
        * @description 需要在图片资源加载完毕（isLoaded）后调用，未加载完毕前调用会抛出异常
        * @returns 宽度
        */
      width(): number | never;
      /**
        * 获取该图片的路径地址
        * @description 需要在图片资源加载完毕（isLoaded）后调用，未加载完毕前调用会抛出异常
        * @returns 路径地址
        */
      path(): number | never;
  }
  /**
    * 实例的位置信息接口
    */
  export interface ITimestamp {
      /**
        * 获取该实例所在的的幻灯片下标
        * @returns 幻灯片下标
        */
      slideIndex(): number;
      /**
        * 获取该实例所在幻灯片的动画步骤下标
        * @returns 动画步骤下标
        */
      stepIndex(): number;
      /**
        * 获取该实例的动画步骤开始的时间(以秒为单位)
        * @returns 时间偏移值
        */
      timeOffset(): number;
  }
}

declare module '@polyv/white-board-sdk/core/controller/app-state/types' {
  import { OperationModel } from '@polyv/white-board-sdk/core/enums';
  import { PptType } from '@polyv/white-board-sdk/core/enums/ppt-enum';
  import { PptImageData, PptJsonType, SlideStepInfo } from '@polyv/white-board-sdk/core/interfaces/ppt';
  import { RotateAngle } from '@polyv/white-board-sdk/core/controller/view/types';
  /**
    * 基础状态
    */
  export interface BasicState {
      /** 操作模式 */
      operationModel: OperationModel;
      /** 当前用户角色 */
      currentUserRole: string;
      /** 能否发送 socket */
      SendSocketState: boolean;
  }
  /**
    * 教具状态
    */
  export interface ApplianceState {
      /** 当前教具名称 */
      currentAppliance: string;
      /** 当前笔触大小 */
      strokeStyle: string;
      /** 当前笔触大小 */
      lineWidth: number;
      /** 当前字体大小 */
      fontSize: number;
      /** 马克笔开关 */
      markerEnabled: boolean;
      /** 马克笔透明度 */
      markerOpacity: number;
      /** 能否控制教具 */
      controlApplianceState: boolean;
  }
  /**
    * 操作状态
    */
  export interface OperationState {
      /** 能否执行撤回 */
      undoState: boolean;
      /** 能否执行重做 */
      redoState: boolean;
      /** 能否执行清空 */
      clearState: boolean;
      /** 能否进行编辑图形 */
      editShapeState: boolean;
      /** 能否执行删除选中的画笔 */
      deleteState: boolean;
  }
  /**
    * 视觉状态
    */
  export interface VisionState {
      /** 当前缩放百分比 */
      zoomPercen: number;
      /** 能否放大视角 */
      largeZoomState: boolean;
      /** 能否缩小视角 */
      narrowZoomState: boolean;
      /** 能否重置视角 */
      resetVisionState: boolean;
      /** 能否操纵视角 */
      controlVisionState: boolean;
  }
  /**
    * 分页状态
    */
  export interface PageState {
      /** 当前页数 */
      currentPage: number;
      /** 总页数 */
      totalPage: number;
      /** 可操作的最大页数 */
      maxCurrentPage: number;
      /** 能否下一页 */
      nextPageState: boolean;
      /** 能否上一页 */
      prePageState: boolean;
      /** 能否添加一页 */
      addPageState: boolean;
      /** 能否切换页数 */
      switchPageState: boolean;
  }
  /**
    * 步骤状态
    */
  export interface StepState {
      /** 可操作的最大动画步骤数 */
      maxStepIndex: number;
      /** 能否下一步 */
      nextStepState: boolean;
      /** 能否上一步 */
      preStepState: boolean;
      /** 能否切换步数 */
      switchStepState: boolean;
  }
  /**
    * 网格状态
    */
  export interface GridState {
      /** 网格开关 */
      gridEnabled: boolean;
      /** 网格颜色 */
      gridColor: string;
      /** 网格大小 */
      gridSize: number;
      /** 操纵网格状态 */
      controlGridState: boolean;
  }
  /**
    * PPT 文档状态
    */
  export interface PptState {
      /** 当前动画步骤索引 */
      stepIndex: number;
      /** 当前打开的 PPT 标识 ID，如果没有打开 PPT 则返回数字 0 */
      currentAutoId: number | string;
      /** 当前打开的 PPT 的文件名，没有打开时为 undefined */
      fileName: string | undefined;
      /** 当前打开的 PPT 类型，没有打开时为 undefined */
      pptType: PptType | undefined;
      /** 当前打开的 PPT 的图片列表，没有打开时为 undefined */
      pptImages: PptImageData[] | undefined;
      /** 当前打开的 PPT 的缩略图列表，没有打开时为 undefined */
      thumbnails: string[] | undefined;
      /** 当前是否已打开了一份 PPT */
      isOpenedPpt: boolean;
      /** ppt json，没有打开时为 undefined */
      pptJson?: PptJsonType;
      /** 当前是否动画ppt */
      isAnimationPpt: boolean;
      /** 当前幻灯片动画信息 */
      slideStepInfo: SlideStepInfo | undefined;
  }
  /**
    * 视图状态
    */
  export interface ViewState {
      /** 内容层旋转角度 */
      rotateAngle: RotateAngle;
      /** 是否已横向旋转 */
      isTransverseRotated: boolean;
      /** 是否正在网页全屏 */
      isFullScreen: boolean;
  }
  /**
    * 远端状态
    */
  export interface DistalState {
      /** 远端的页数 */
      distalCurrentPage: number | undefined;
      /** 远端的步骤数 */
      distalStepIndex: number | undefined;
  }
  /**
    * 应用状态
    */
  export interface AppState extends BasicState, ApplianceState, OperationState, VisionState, PageState, GridState, PptState, StepState, ViewState, DistalState {
  }
}

declare module '@polyv/white-board-sdk/shape-utils' {
  export * from '@polyv/white-board-sdk/export/shape-utils';
}

declare module '@polyv/white-board-sdk/core/controller/compute/types' {
  /**
    * 转换 Event 点参数
    */
  export interface ConvertEventParams {
      /**
        * 是否过滤网格点，选传，不传时根据内部判断来进行过滤
        */
      filterGrid?: boolean;
  }
}

declare module '@polyv/white-board-sdk/core/controller/draw-hook/types' {
  import { Board, DrawBoardParams } from '@polyv/white-board-sdk/core/board';
  import { Canvas } from '@polyv/white-board-sdk/core/canvas';
  /**
    * 绘制钩子
    */
  export interface DrawHook {
    (board: Board, canvas: Canvas, params?: DrawBoardParams): void;
  }
}

declare module '@polyv/white-board-sdk/core/controller/editor/types' {
  /**
    * 层叠数数据
    */
  export interface ZIndexData {
      /** 下移一层的层叠数 */
      moveDownZIndex: number;
      /** 上移一层的层叠数 */
      moveUpZIndex: number;
      /** 最底层的层叠数 */
      bottomMostZIndex: number;
      /** 最顶层的层叠数 */
      topMostZIndex: number;
  }
  /**
    * 修改层叠数类型
    * @type `to-down` 下移一层
    * @type `to-up` 上移一层
    * @type `to-bottom` 置于底层
    * @type `to-top` 置于顶层
    */
  export type ChangeZIndexType = 'to-down' | 'to-up' | 'to-bottom' | 'to-top';
}

declare module '@polyv/white-board-sdk/core/controller/factory/types' {
  import { ShapeBaseData } from '@polyv/white-board-sdk/core/interfaces/shape';
  import { BehaviorBaseData } from '@polyv/white-board-sdk/core/interfaces/behavior';
  /**
    * 基础数据联合类型
    */
  export type BaseData = ShapeBaseData | BehaviorBaseData;
  /**
    * `joinBaseData` 参数类型
    */
  export interface JoinBaseDataParams {
      /** 基础数据，必传 */
      baseData: BaseData | BaseData[];
      /** 是否根据动画绘制，默认为 true */
      useAnimation?: boolean;
  }
}

declare module '@polyv/white-board-sdk/core/controller/interact/types' {
  import type { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  /**
    * 提示类型
    */
  export type ToastType = 'info' | 'success' | 'warning' | 'error';
  /**
    * 提示选项
    */
  export interface ToastOption {
      /** 提示内容，优先级高于 langCode */
      content?: string;
      /** 提示类型，默认：info */
      type?: ToastType;
      /** 多语言标识 */
      langCode?: string;
      /** 多语言下的语言选项 */
      langOptions?: Record<string, string>;
      /** 显示的持续时间，单位：ms，默认：3000 */
      duration?: number;
  }
  /**
    * 自定义提示选项
    */
  export interface CustomToastOption {
      /** 提示内容 */
      content: string;
      /** 提示类型 */
      type: ToastType;
      /** 显示的持续时间，单位：ms */
      duration: number;
  }
  /**
    * 自定义提示方法
    */
  export type CustomToastFn = (option: CustomToastOption) => unknown;
  /**
    * 提示任务对象
    */
  export interface ToastTask {
      /** 提示的唯一标识 */
      id: string;
      /** 提示的节点选择器 */
      $el: DomQuery;
      /** 定时器 */
      closeTimer: number;
      /** 关闭方法 */
      close: () => void;
  }
}

declare module '@polyv/white-board-sdk/core/controller/text-input/types' {
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  import { TextInput } from '@polyv/white-board-sdk/core/tools/text-input';
  /** 文本编辑框数据 */
  export interface TextInputDataType {
      /** 文本，默认：空字符串 */
      content: string;
      /** 左上角的世界坐标点，默认：(0, 0) */
      point: WorldPoint;
      /** 颜色，默认：白板实例的笔触颜色 */
      strokeStyle: string;
      /** 字体大小，基础值，默认：白板实例的字体大小 */
      fontSize: number;
      /** 字体样式，默认：Arial */
      fontFamily: string;
      /** 是否加粗，默认：false */
      isBold: boolean;
      /** 是否斜体，默认：false */
      isItalics: boolean;
      /** 是否有删除线，默认：false */
      isLineThrough: boolean;
      /** 是否有下划线，默认：false */
      isUnderLine: boolean;
  }
  /**
    * 文本输入框回调方法类型
    */
  export type TextInputEventCallback = (textInput: TextInput) => unknown;
  /**
    * 打开文本输入框参数类型
    */
  export interface OpenTextInputParams {
      /** 文本输入框基础数据 */
      textInputData?: Partial<TextInputDataType>;
      /** 输入事件 */
      input?: TextInputEventCallback;
      /** 失焦事件 */
      blur?: TextInputEventCallback;
      /** 具有内容且首次失焦事件 */
      onceBlur?: TextInputEventCallback;
  }
}

declare module '@polyv/white-board-sdk/core/controller/utils/types' {
  /**
    * 协议头类型
    */
  export type ProtocolType = 'http' | 'https';
}

declare module '@polyv/white-board-sdk/core/controller/vision/types' {
  import { ZoomType } from '@polyv/white-board-sdk/core/enums/zoom-enum';
  import { WorldPoint } from '@polyv/white-board-sdk/core/interfaces';
  /**
    * 内容层的尺寸与坐标值
    */
  export interface ContentSizePosition {
      width: number;
      height: number;
      left: number;
      top: number;
  }
  /**
    * 设置视角数据参数
    */
  export interface SetVisionParams {
      /**
        * 缩放百分比
        */
      zoomPercen?: number | ZoomType;
      /**
        * 世界坐标系下 X 轴偏移量，将当前中心点的 X 轴方向移动一段距离
        */
      diffX?: number;
      /**
        * 世界坐标系下 Y 轴偏移量，将当前中心点的 Y 轴方向移动一段距离
        */
      diffY?: number;
      /**
        * 是否重置视角中心点坐标，优先级高于 `diffX`、`diffY`
        */
      resetCenter?: boolean;
      /**
        * 视角中心点坐标，优先级高于 `diffX`、`diffY`、`resetCenter`
        */
      visionCenter?: WorldPoint;
      /**
        * 是否重载当前画板操作栈，默认为 true
        */
      reloadAction?: boolean;
  }
}

declare module '@polyv/white-board-sdk/core/interfaces/index' {
  import type { WhiteBoardPlugin } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  import { CustomToastFn, ProtocolType } from '@polyv/white-board-sdk/core/controller';
  import type { ImageUploadHandler } from '@polyv/white-board-sdk/core/controller/image/types';
  import type { LanguageI18n } from '@polyv/white-board-sdk/core/controller/lang/types';
  import type { FullScreenPosition, RotateAngle } from '@polyv/white-board-sdk/core/controller/view/types';
  import type { WatermarkConfig } from '@polyv/white-board-sdk/core/controller/watermark/types';
  import type { OperationModel } from '@polyv/white-board-sdk/core/enums/other-enum';
  import type { ZoomModel } from '@polyv/white-board-sdk/core/enums/zoom-enum';
  import type { BehaviorBaseData } from '@polyv/white-board-sdk/core/interfaces/behavior';
  import type { CursorMatchStore } from '@polyv/white-board-sdk/core/interfaces/cursor';
  import type { FilterPptUrlType, PptJsonType } from '@polyv/white-board-sdk/core/interfaces/ppt';
  import type { ShapeBaseData } from '@polyv/white-board-sdk/core/interfaces/shape';
  export * from '@polyv/white-board-sdk/core/interfaces/behavior';
  export * from '@polyv/white-board-sdk/core/interfaces/cursor';
  export * from '@polyv/white-board-sdk/core/interfaces/editor';
  export * from '@polyv/white-board-sdk/core/interfaces/ppt';
  export * from '@polyv/white-board-sdk/core/interfaces/shape';
  /**
    * 世界坐标点
    */
  export interface WorldPoint {
      x: number;
      y: number;
  }
  /**
    * 浏览器坐标点
    * @description content 左上角为原点的坐标
    */
  export interface BrowserPoint {
      left: number;
      top: number;
  }
  /**
    * 画布坐标点
    * @description 在 canvas 内部的绘制点
    */
  export interface CanvasPoint {
      cx: number;
      cy: number;
  }
  /**
    * 事件触点信息
    */
  export interface EventClientData {
      clientX: number;
      clientY: number;
  }
  /**
    * 忽略聚焦事件传入类型
    */
  export type IgnoreFocusEnabledKeys = 'zoom' | 'pageStep';
  /**
    * 用户信息
    */
  export interface UserInfo {
      /** 用户标识 */
      userId?: string;
      /** 用户名 */
      userName?: string;
      /** 其他信息 */
      [key: string]: any;
  }
  /** 白板实例配置类型 */
  export interface WhiteBoardConfig {
      /** 用户信息，选传 */
      userInfo?: UserInfo;
      /**
        * 客户端 id，优先级：`clientId` > `userInfo.userId` > 随机数
        */
      clientId?: string;
      /** 用途，用于打印信息 */
      purpose?: string;
      /** 白板宽度，默认：100% */
      width?: string;
      /** 白板高度，默认：100% */
      height?: string;
      /** 白板外层背景，默认：none */
      background?: string;
      /** 白板内层背景，默认：none */
      contentBg?: string;
      /** 操作模式，默认：`OperationModel.NORMAL` */
      operationModel?: OperationModel;
      /**
        * 用户角色，默认：空；
        * 注意！传入角色后部分参数会被覆盖
        */
      userRole?: string;
      /** 教具，默认：空 */
      currentAppliance?: string;
      /** 笔触大小，默认：2 */
      lineWidth?: number;
      /** 笔触颜色，默认：#ff5b5b */
      strokeStyle?: string;
      /** 马克笔透明度，默认：0.5 */
      markerOpacity?: number;
      /** 自由画笔时是否使用马克笔，默认：false */
      markerEnabled?: boolean;
      /** 字体大小，默认：15 */
      fontSize?: number;
      /** 光标适配器匹配对象，key 值为光标名称 `cursorName` */
      cursorMatchs?: CursorMatchStore;
      /** 白板内层比例，不传或传0为铺满外层，默认：0 */
      contentProp?: number | undefined;
      /** 缩放模式，默认：`ZoomModel.ZOOM_INSIDE` */
      zoomModel?: ZoomModel;
      /** 缩放百分比，默认：1 */
      zoomPercen?: number;
      /** 最小缩放百分比，默认：0.2 */
      zoomMinPercen?: number;
      /** 最大缩放百分比，默认：5 */
      zoomMaxPercen?: number;
      /** 移动端双指缩放速度，默认：1，值越大，速度越慢 */
      zoomSpeed?: number;
      /** 视角中心点坐标，默认：{ x: 0, y: 0 } */
      visionCenter?: WorldPoint;
      /** 坐标系宽度边界百分比，默认：Infinity */
      boundWidthScale?: number;
      /** 坐标系高度边界百分比，默认：Infinity */
      boundHeightScale?: number;
      /** 插件列表 */
      plugins?: WhiteBoardPlugin[];
      /** 权限列表，默认具有所有的内置权限 */
      auths?: string[];
      /** 从 `auths` 中导入某些权限 */
      includeAuths?: string[];
      /** 从 `auths` 中剔除某些权限，优先级高于 `includeAuths` */
      excludeAuths?: string[];
      /** 是否开启网格，默认：false */
      gridEnabled?: boolean;
      /** 网格大小，单位：px，默认：16 */
      gridSize?: number;
      /** 网格颜色，默认：#D0D0D0 */
      gridColor?: string;
      /** 鼠标滚轮开关，默认：true */
      mouseWheelEnabled?: boolean;
      /** 键盘控制开关，默认：true */
      keyboardEnabled?: boolean;
      /** 当前页数，默认：0 */
      currentPage?: number;
      /** 总页数，默认：1 */
      totalPage?: number;
      /** 水印配置，默认：false */
      watermarkConfig?: WatermarkConfig | boolean;
      /** 默认打开的 PPT */
      pptJson?: PptJsonType;
      /** 创建后动画PPT的默认当前页的动画步骤索引，从 0 开始，默认：0 */
      pptStepIndex?: number;
      /** 过滤动画 ppt 地址 */
      filterPptUrl?: FilterPptUrlType;
      /** 创建后的旋转角度，默认：0 */
      rotateAngle?: RotateAngle;
      /** 网页全屏下的 z-index 层叠数 */
      fullScreenZIndex?: number;
      /**
        * 网页全屏下插入的节点，默认：无
        * @deprecated
        */
      fullScreenTo?: string | HTMLElement;
      /** 网页全屏下的 position 定位方式，默认：fixed */
      fullScreenPosition?: FullScreenPosition;
      /** 语言 */
      language?: string;
      /** 语言配置 */
      i18ns?: LanguageI18n;
      /** 是否进行图片压缩加载，默认：true */
      compressImage?: boolean;
      /** 允许的图片类型 */
      allowImageAccept?: string[];
      /** 允许的图片文件扩展名 */
      allowImageExtension?: string[];
      /** 图片文件大小限制，传 0 表示不限制，单位：kb，默认：2 * 1024 */
      imageFileSizeLimit?: number;
      /** 图片上传处理 */
      imageUploadHandler?: ImageUploadHandler;
      /** 自定义 toast */
      customToast?: CustomToastFn;
      /** 静态资源的协议头，传入 false 则不设置协议头，默认：https */
      staticProtocol?: ProtocolType | boolean;
      /** 忽略聚焦白板才能响应键盘事件的条件，对象可传属性：zoom、flip，默认：false */
      ignoreFocusEnabled?: boolean | Record<IgnoreFocusEnabledKeys, boolean>;
  }
  /** 代表任意的函数类型 */
  export type AnyFunc = (...arg: any[]) => unknown;
  /** 事件回调类型 */
  export type TriggeredEvent = TouchEvent | PointerEvent | MouseEvent;
  /** 图形或行为的基础数据类型 */
  export type BaseDataType = ShapeBaseData | BehaviorBaseData;
  /**
    * resetWhiteBoard 调用参数
    */
  export interface ResetWhiteBoardParams {
      /** 当前页，默认：0 */
      currentPage?: number;
      /** 总页数，默认：1 */
      totalPage?: number;
  }
}

declare module '@polyv/white-board-sdk/shape' {
  export * from '@polyv/white-board-sdk/export/shape';
}

declare module '@polyv/white-board-sdk/core/tools/animation-task/task-ctor' {
  /**
    * 动画任务类
    * @class
    */
  export class AnimationTask {
      /**
        * 设置图形动画进度值
        * @param progress 进度，范围 0 ~ 1，小于 0 或大于 1 时默认为 0 或 1
        */
      setAnimationProgress(progress: number): void;
      /**
        * 动画时钟速度
        * @param step 速度，范围 0 ~ 1，小于 0 或大于 1 时默认为 0 或 1
        */
      setAnimationStep(step: number): void;
      /**
        * 递增动画进度
        */
      increaseProgress(): void;
      /** 动画时钟进度，范围：0 ~ 1 */
      get animationProgress(): number;
      /**
        * 动画时钟速度，范围：0 ~ 1
        */
      get animationStep(): number;
  }
}

declare module '@polyv/white-board-sdk/core/tools/animation-task/shape-task' {
  import { Shape } from '@polyv/white-board-sdk/core/tools/shape';
  import { AnimationTask } from '@polyv/white-board-sdk/core/tools/animation-task/task-ctor';
  /**
    * 图形动画任务
    * @class
    */
  export class ShapeAnimationTask extends AnimationTask {
    constructor(shape: Shape);
    setAnimationProgress(progress: number): void;
  }
}

declare module '@polyv/white-board-sdk/core/tools/text-input/types' {
  import { TextInputDataType, TextInputEventCallback } from '@polyv/white-board-sdk/core/controller/text-input';
  import { WhiteBoard } from '@polyv/white-board-sdk/core/WhiteBoard';
  /**
    * 文本输入框实例配置
    */
  export interface TextInputConfig extends Partial<TextInputDataType> {
    whiteBoard: WhiteBoard;
    /** 绑定的标识 id */
    bindId?: string;
    /** 输入事件 */
    input?: TextInputEventCallback;
    /** 失焦事件 */
    blur?: TextInputEventCallback;
    /** 具有内容且首次失焦事件 */
    onceBlur?: TextInputEventCallback;
  }
}

declare module '@polyv/white-board-sdk/utils/scroll-tool/types' {
  /** 滚动基础参数 */
  export interface ScrollBaseOptions {
    /** 滚动条尺寸，默认：4 */
    scrollSize?: number;
    /** 滚动条颜色，默认：none */
    scrollBarColor?: string;
    /** 滚动指示器颜色，默认：#366bee */
    scrollIndicatorColor?: string;
    /** 滚动条定位位置，默认：4 */
    scrollPosition?: number;
  }
  /** 滚动工具参数 */
  export interface ScrollToolOptions extends ScrollBaseOptions {
    /** 垂直方向是否滚动，默认：true */
    scrollY?: boolean;
    /** 水平方向是否滚动，默认：false */
    scrollX?: boolean;
    /** 是否滚动懒加载图片，默认：false */
    lazyLoadImage?: boolean;
    /** 当图片懒加载失败时的占位图地址 */
    lazyLoadErrorUrl?: string;
  }
  /** 懒加载插件配置参数 */
  export interface LazyLoadOptions {
    lazyLoadErrorUrl?: string;
  }
}

declare module '@polyv/white-board-sdk/plugins/tool-plugin/index' {
  import { DomQuery } from '@polyv/white-board-sdk/utils/dom';
  import { WhiteBoardPlugin } from '@polyv/white-board-sdk/plugins/plugin-ctor/WhiteBoardPlugin';
  import { OperationIntercept, ToolPluginConfig } from '@polyv/white-board-sdk/plugins/tool-plugin/types';
  export * from '@polyv/white-board-sdk/plugins/tool-plugin/types';
  export * from '@polyv/white-board-sdk/plugins/tool-plugin/constant';
  /**
    * 白板工具插件
    * @class
    */
  export class ToolPlugin extends WhiteBoardPlugin<ToolPluginConfig> {
      $el: DomQuery;
      /** 选中状态下的样式类名 */
      currentClassName: string;
      /** 禁用状态下的样式类名 */
      disabledClassName: string;
      /** data-set 前缀 */
      nodeAttrPrefix: string;
      /** 撤回拦截 */
      beforeUndo?: OperationIntercept;
      /** 重做拦截 */
      beforeRedo?: OperationIntercept;
      /** 清空拦截 */
      beforeClear?: OperationIntercept;
      constructor(config?: ToolPluginConfig);
      inited(): void;
      beforeDestroy(): void;
      /**
        * 移除节点的选中、禁用 className
        * @param $elems 节点选择器
        */
      removeElemClassName(selector: string | DomQuery): void;
      /**
        * 添加激活 className
        * @param $elems 节点选择器
        */
      addCurrentClassName(selector: string | DomQuery): void;
      /**
        * 添加禁用 className
        * @param $elems 节点选择器
        */
      addDisabledClassName(selector: string | DomQuery): void;
      /**
        * 构建 attr 选择器
        * @param suffix dateset后缀
        * @param brackets 是否添加中括号，选传，默认为true
        * @returns 选择器
        */
      buildAttr(suffix: string, brackets?: boolean): string;
  }
}

declare module '@polyv/white-board-sdk/service/_controls/draw-mark/draw-mark-controller' {
  import type { OnSliceControlType, OnSliceDrawType, OnSliceIdType, OnSliceStartType, PolyvAutoIdType, PolyvPageType } from '@polyv/white-board-sdk/service/assets/interfaces';
  import type { DrawMarkType } from '@polyv/white-board-sdk/service/_controls/draw-mark/types';
  /**
    * 绘制记录控制器
    * @class
    */
  export class DrawMarkController {
      getDrawMark(): Record<string, string[]>;
      /**
        * 判断是否在 drawMark
        * @param autoId
        * @param pageId
        */
      isInDrawMark(autoId: PolyvAutoIdType, pageId: PolyvPageType): boolean;
      /**
        * 重置 drawMark
        * @param drawMark
        */
      resetDrawMark(drawMark: DrawMarkType): void;
      /**
        * 设置 drawMark
        * @param autoId
        * @param pageId
        */
      setDrawMark(autoId: PolyvAutoIdType, pageId: PolyvPageType): void;
      /**
        * 移除 drawMark
        * @param autoId
        * @param page
        */
      removeDrawMark(autoId: PolyvAutoIdType, pageId: PolyvPageType): void;
      /**
        * 清空 drawMark
        */
      clearDrawMark(): void;
      /**
        * drawMark 模块处理 onSliceID
        * @param socketData
        */
      handleOnSliceId(socketData: OnSliceIdType): void;
      /**
        * drawMark 模块处理 OnSliceStart
        * @param socketData
        */
      handleOnSliceStart(socketData: OnSliceStartType): void;
      /**
        * drawMark 模块处理 onSliceControl
        * @param socketData
        */
      handleOnSliceControl(socketData: OnSliceControlType): void;
      /**
        * drawMark 模块处理 onSliceDraw
        * @param socketData
        */
      handleOnSliceDraw(socketData: OnSliceDrawType): void;
  }
}

declare module '@polyv/white-board-sdk/service/_controls/draw-mark/types' {
  import { PolyvAutoIdType, PolyvPageType } from '@polyv/white-board-sdk/service/assets/interfaces';
  /**
    * 绘制记录类型
    */
  export type DrawMarkType = {
    [autoId in PolyvAutoIdType]?: PolyvPageType[];
  };
}

declare module '@polyv/white-board-sdk/service/_controls/execute-delayer/types' {
  import { PolyvAutoIdType, PolyvDocType, PolyvPageType, PolyvStepType } from '@polyv/white-board-sdk/service/assets/interfaces';
  import { OnSliceCloseType, OnSliceIdType, OnSliceStartType, SocketType } from '@polyv/white-board-sdk/service/assets/interfaces/socket-types';
  /**
    * 主动延迟任务
    */
  export interface DelayTask {
      /** 任务唯一标识 */
      taskId: string;
      /** 定时器 */
      timer: number;
      /** 延迟时间 */
      delayTime: number;
  }
  export type SeiQueueItemSocketType = Exclude<SocketType, OnSliceIdType | OnSliceStartType | OnSliceCloseType>;
  export interface SeiQueueItem {
      /** socket 信息 */
      socketData: SeiQueueItemSocketType;
      /** 时间节点 */
      timeProgress: number;
      /** 执行方法 */
      do: () => unknown;
      /** 执行方法上下文对象 */
      context: unknown;
  }
  export type DelayerDoParams = {
      /** socket 信息 */
      socketData: SocketType;
      /** 上下文对象 */
      context: unknown;
      /** 主动延迟时间，优先级低于 sei */
      delayTime?: number;
  };
  /**
    * 某个 sei 时间下的状态
    */
  export interface SeiState {
      autoId: PolyvAutoIdType;
      pageId: PolyvPageType;
      stepIndex: PolyvStepType;
      docType?: PolyvDocType;
  }
}

declare module '@polyv/white-board-sdk/service/_controls/playback/enum' {
  /**
    * 回放初始化类型
    */
  export enum PlaybackInitType {
      /**
        * 常规回放，调用参数类型 {@link PlaybackInitNormalParams}
        */
      Normal = "normal",
      /**
        * 根据场次信息进行回放，调用参数类型 {@link PlaybackInitSessionParams}
        */
      Session = "session",
      /**
        * 根据 vid 进行回放，调用参数类型 {@link PlaybackInitVidParams}
        */
      Vid = "vid"
  }
  /**
    * 回放类型
    */
  export enum PlaybackType {
      /** 回放 */
      Playback = "playback",
      /** 暂存 */
      Record = "record"
  }
}

declare module '@polyv/white-board-sdk/service/_controls/playback/interface' {
  import { OnSliceControlChangeVideoAndPPTPositionDataType, OnSliceControlCloseCameraType, OnSliceControlType, OnSliceStartType, PolyvAutoIdType, PolyvDocType, PolyvPageType, PolyvRoomIdType, PolyvSessionIdType, PolyvStepType, PptVideoPosition, SocketType } from '@polyv/white-board-sdk/service/assets/interfaces';
  import { PlaybackType } from '@polyv/white-board-sdk/service/_controls/playback/enum';
  /**
    * 默认回放调用参数
    */
  export interface PlaybackNormalParams {
      /** 文件 id，`type` 为 `record` 时必传 */
      fileId?: string;
      /** 回放 id，`type` 为 `playback` 时必传 */
      vid?: string;
      /** 房间号 */
      roomId: PolyvRoomIdType;
      /** 回放类型 */
      type: PlaybackType;
  }
  /**
    * 场次回放调用参数
    */
  export interface PlaybackSessionParams {
      /** 场次信息 */
      sessionInfo: string;
      /** 房间号 */
      roomId: PolyvRoomIdType;
  }
  /**
    * vid回放调用参数
    */
  export interface PlaybackVidParams {
      /** 保利威账号 id */
      appId: string;
      /** vid */
      vid: string;
      /** 事件戳 */
      timestamp: number;
      /** 签名 */
      sign: string;
  }
  /**
    * 当前回放的播放时间信息
    */
  export interface PlaybackTimeData {
      /** 当前的播放时间，单位：毫秒/ms */
      time: number;
  }
  /**
    * 获取当前回放的播放时间信息
    */
  export interface GetPlaybackTimeFn {
      (): PlaybackTimeData;
  }
  /**
    * playbackInit 回放初始化公用调用参数
    */
  export interface PlaybackInitCommonParams {
      /** 获取当前播放时间信息 */
      getPlaybackTime: GetPlaybackTimeFn;
  }
  /**
    * playbackInit 默认回放初始化调用参数
    */
  export interface PlaybackInitNormalParams extends PlaybackInitCommonParams, PlaybackNormalParams {
  }
  /**
    * playbackInit 场次回放初始化调用参数
    */
  export interface PlaybackInitSessionParams extends PlaybackInitCommonParams, PlaybackSessionParams {
  }
  /**
    * playbackInit vid回放初始化调用参数
    */
  export interface PlaybackInitVidParams extends PlaybackInitCommonParams, PlaybackVidParams {
  }
  /**
    * playbackInit 调用参数类型
    */
  export type PlaybackInitParams = PlaybackInitNormalParams | PlaybackInitSessionParams | PlaybackInitVidParams;
  /**
    * 回放列表单次操作点类型，接口返回的类型
    */
  export interface PlaybackOperationItem {
      /**
        * autoId
        * @deprecated 该字段不可信，勿用
        */
      autoId: PolyvAutoIdType | null;
      /**
        * 文档类型
        * @deprecated 该字段不可信，勿用
        */
      docType: PolyvDocType;
      /**
        * 页数
        * @deprecated 该字段不可信，勿用
        */
      pageId: PolyvPageType;
      /** 操作点唯一标识 */
      id: string;
      /** 房间号 */
      roomId: PolyvRoomIdType;
      /** 场次号 */
      sessionid?: PolyvSessionIdType;
      sessionId?: PolyvSessionIdType;
      /** 该操作对应的时间戳 */
      time: number;
      /** 该操作对应的 socket 字符串 */
      content: string;
  }
  /**
    * 回放列表单次操作点过滤后的类型，整理完后的类型
    */
  export interface PlaybackOperationFilterItem<T extends SocketType = SocketType> {
      /** 操作点唯一标识 */
      id: string;
      /** autoId */
      autoId: PolyvAutoIdType | undefined;
      /** 文档类型 */
      docType: PolyvDocType;
      /** 房间号 */
      roomId: PolyvRoomIdType;
      /** 页数 */
      pageId: PolyvPageType;
      /** 该操作对应的 socket 数据对象 */
      socketData: T;
      /** 时间进度，单位：毫秒/ms */
      timeProgress: number;
      /** 场次号，即 sessionid */
      sessionId: PolyvSessionIdType;
      /** 该操作对应的时间戳 */
      time: number;
  }
  /**
    * 回放每页记录存储的 key 对象类型
    */
  export interface PlaybackPageRecordStoreKey {
      autoId: PolyvAutoIdType;
      pageId: PolyvPageType;
      docType: PolyvDocType;
      sessionId: PolyvSessionIdType;
  }
  /**
    * 每页的记录存储类型
    */
  export type PlaybackPageRecordStore = Record<string, PlaybackOperationFilterItem[] | undefined>;
  /**
    * 场次开始记录类型
    */
  export type SliceStartRecordItem = PlaybackOperationFilterItem<OnSliceStartType>;
  /**
    * 切换主副屏记录类型
    */
  export type SwitchMainScreenRecordItem = PlaybackOperationFilterItem<OnSliceControlType<OnSliceControlChangeVideoAndPPTPositionDataType>>;
  /**
    * 关闭摄像头记录类型
    */
  export type CloseCameraRecordItem = PlaybackOperationFilterItem<OnSliceControlType<OnSliceControlCloseCameraType>>;
  export type InvolveDocItem = {
      autoId: PolyvAutoIdType;
      docType: PolyvDocType;
  };
  /**
    * 回放目标数据类型
    */
  export interface PlaybackTargetData {
      /** 该回放中涉及到的文档 autoId（非 0） */
      involveAutoIds: PolyvAutoIdType[];
      /** 该回放中涉及到的文档信息 */
      involveDocs: InvolveDocItem[];
      /** 过滤后的回放列表，去除切换主副屏、关闭摄像头 */
      playbackList: PlaybackOperationFilterItem[];
      /** 原始回放列表 */
      originList: PlaybackOperationFilterItem[];
      /** 每页的记录存储 */
      pageRecordStore: PlaybackPageRecordStore;
      /** 场次开始记录 */
      sliceStartRecord: SliceStartRecordItem[];
      /** 切换主副屏记录 */
      switchMainScreenRecord: SwitchMainScreenRecordItem[];
      /** 关闭摄像头记录 */
      closeCameraRecord: CloseCameraRecordItem[];
      /** 回放总时长 */
      duration: number;
  }
  /**
    * 回放状态
    */
  export interface PlaybackState {
      /** 时间点 */
      playbackTime: number;
      /** 时间点所在位置的最后一个回放点的时间 */
      lastTimeProgress: number;
      /** 所在的 autoId */
      autoId: PolyvAutoIdType;
      /** 所在文档的类型 */
      docType: PolyvDocType;
      /** 所在文档的页数 */
      pageId: PolyvPageType;
      /** 所在的动画步骤数 */
      stepIndex: PolyvStepType;
      /** 所在的场次号 */
      sessionId: PolyvSessionIdType;
      /** 总回放进度的索引 */
      mainRecordIndex: number;
      /** 对应页的 key 值 */
      pageStoreKey: string;
      /** 对应页的记录 */
      pageRecord: PlaybackOperationFilterItem[];
      /** 对应页数的回放索引 */
      pageRecordIndex: number;
      /** 插入的 socket 列表 */
      joinSocketList: PlaybackOperationFilterItem[];
      /** 文档与视频区的位置 */
      mainScreen: PptVideoPosition;
  }
}

declare module '@polyv/white-board-sdk/service/_controls/playback/playback-controller' {
  import { PolyvService } from '@polyv/white-board-sdk/service/service-core';
  import { PlaybackInitNormalParams, PlaybackInitSessionParams, PlaybackInitVidParams, PlaybackTargetData, GetPlaybackTimeFn, PlaybackState } from '@polyv/white-board-sdk/service/_controls/playback/interface';
  import { PlaybackInitType } from '@polyv/white-board-sdk/service/_controls/playback/enum';
  /**
    * 回放控制器
    * @class
    */
  export class PlaybackController {
      service: PolyvService;
      /** 当前正在回放的目标数据 */
      playbackTarget?: PlaybackTargetData;
      /** 获取当前回放的播放时间 */
      getPlaybackTime?: GetPlaybackTimeFn;
      /** 当前的回放状态 */
      currentPlaybackState?: PlaybackState;
      constructor(service: PolyvService);
      /**
        * 初始化回放
        * @api
        * @param params 初始化参数
        * @param type 初始化类型
        */
      playbackInit(params: PlaybackInitNormalParams, type?: PlaybackInitType.Normal): Promise<PlaybackTargetData>;
      playbackInit(params: PlaybackInitSessionParams, type: PlaybackInitType.Session): Promise<PlaybackTargetData>;
      playbackInit(params: PlaybackInitVidParams, type: PlaybackInitType.Vid): Promise<PlaybackTargetData>;
      /**
        * 播放回放
        * @api
        */
      play(): void;
      /**
        * 暂停回放
        * @api
        */
      pause(): void;
      /**
        * 停止回放
        * @api
        */
      stop(): void;
      /**
        * 设置回放的播放位置时间
        * @api
        * @param time 位置时间
        */
      seekTime(time: number): Promise<void>;
      /**
        * 销毁回放实例
        */
      destroy(): void;
      /**
        * 是否正在回放中
        */
      get isPlaybacking(): boolean;
  }
}

declare module '@polyv/white-board-sdk/service/assets/interfaces/polyv-doc-json' {
  /**
    * v1 版文档转换文件 json 数据类型
    */
  export interface PolyvDocJsonV1JsonContent {
      images: string[];
      smallImages: string[];
  }
  /**
    * v1 版的 docJson
    */
  export interface PolyvDocJsonV1 {
      /** 文档自增 id */
      autoId: number;
      /** 频道号 */
      channelId: string | number;
      /** 创建时间 */
      createTime: number;
      /** 文件Id */
      fileId: string;
      /** 文件名称 */
      fileName: string;
      /** 文件扩展名（如.ppt） */
      fileType: string;
      /** 文档 json 内容 */
      jsonContent: string;
  }
  /**
    * 转换文件 JSON 数据类型
    */
  export interface ConvertFileJson {
      /** 图片总数 */
      imageCount: number;
      /** 文档图片地址数组 */
      images: string[];
      /** 文档每页的标题数组 */
      pptTitles: string[];
      /** 文档缩略图地址数组 */
      smallImages: string[];
      /** 动画文档线上地址，仅动画转换才有 */
      htmlUrl?: string;
      /** 动画文件夹压缩包oss地址 */
      htmlUrlZip?: string;
      /** 文档图片压缩包oss地址 */
      imagesZip?: string;
      /** 文档缩略图压缩包oss地址 */
      smallImagesZip?: string;
      /** flash地址 */
      flashUrl?: string;
  }
  /**
    * v2 版的 docJson
    */
  export interface PolyvDocJsonV2 {
      /** 文档自增 id */
      autoId: number;
      /** 频道号 */
      channelId?: string | number;
      /** 转换的json数据 */
      convertFileJson: ConvertFileJson;
      /** 转换类型，common-普通转换，animate-动画转换 */
      convertType: 'common' | 'animate';
      /** 创建时间 */
      createTime: number;
      /** 文件Id */
      fileId: string;
      /** 文件名称 */
      fileName: string;
      /** 文件扩展名（如.ppt） */
      fileType: string;
      /** 转换状态 */
      status: string;
      /** 文件总页数 */
      totalPage: number;
  }
  /**
    * docJson 类型
    */
  export type PolyvDocJson = PolyvDocJsonV1 | PolyvDocJsonV2;
}

declare module '@polyv/white-board-sdk/service/assets/interfaces/request' {
  /**
    * 接口返回结构
    */
  export interface ResponseResult<D = undefined> {
    code: number;
    message?: string;
    status: 'success' | 'error';
    data: D;
  }
}

declare module '@polyv/white-board-sdk/service/assets/request/get-doc' {
  import { PolyvAutoIdType } from '@polyv/white-board-sdk/service/assets/index';
  import { PolyvDocType, ServiceCommonParams } from '@polyv/white-board-sdk/service/assets/interfaces';
  import { PolyvDocJsonV1, PolyvDocJsonV2 } from '@polyv/white-board-sdk/service/assets/interfaces/polyv-doc-json';
  /**
    * 根据 doc 缓存获取目标 autoId 的 docType，不存在缓存时返回 1
    */
  export function getDocTypeByCache(autoId: PolyvAutoIdType): PolyvDocType;
  /**
    * 获取 docJson 方法参数类型
    */
  export interface GetPolyvDocJsonParams extends ServiceCommonParams {
      /** doc 标识 id */
      autoId: PolyvAutoIdType;
      /** 文档类型，默认为 1 */
      docType?: PolyvDocType;
  }
  /**
    * 根据 docType 获取 docJson
    */
  export function getPolyvDocJson(params: GetPolyvDocJsonParams): Promise<PolyvDocJsonV1 | PolyvDocJsonV2>;
  /**
    * 调用接口获取 docJson（v1版本）
    * @api
    * @param autoId doc标识id
    * @param params 额外参数
    */
  export function getPolyvDocJsonV1(autoId: PolyvAutoIdType, params?: ServiceCommonParams): Promise<PolyvDocJsonV1>;
  /**
    * 调用接口获取 docJson（v2版本）
    * @api
    * @param autoId doc标识id
    * @param params 额外参数
    */
  export function getPolyvDocJsonV2(autoId: PolyvAutoIdType, params?: ServiceCommonParams): Promise<PolyvDocJsonV2>;
}

declare module '@polyv/white-board-sdk/service/assets/request/get-playback' {
  import { ServiceCommonParams } from '@polyv/white-board-sdk/service/assets/interfaces';
  import { PlaybackNormalParams, PlaybackOperationItem, PlaybackSessionParams, PlaybackVidParams } from '@polyv/white-board-sdk/service/_controls/playback/interface';
  /**
    * getPlaybackByNormal 调用参数
    */
  export interface GetPlaybackByNormalParams extends ServiceCommonParams, PlaybackNormalParams {
  }
  /**
    * getPlaybackBySession 调用参数
    */
  export interface GetPlaybackBySessionParams extends ServiceCommonParams, PlaybackSessionParams {
  }
  /**
    * getPlaybackByVid 调用参数
    */
  export interface GetPlaybackByVidParams extends ServiceCommonParams, PlaybackVidParams {
  }
  /**
    * 根据 json 获取回放内容
    */
  export function getPlaybackByNormal(params: GetPlaybackByNormalParams): Promise<PlaybackOperationItem[]>;
  /**
    * 根据场次信息获取回放内容
    */
  export function getPlaybackBySession(params: GetPlaybackBySessionParams): Promise<PlaybackOperationItem[]>;
  /**
    * 根据 vid 获取回放内容
    */
  export function getPlaybackByVid(params: GetPlaybackByVidParams): Promise<PlaybackOperationItem[]>;
}

declare module '@polyv/white-board-sdk/service/assets/request/get-single-page' {
  import { PolyvAutoIdType, PolyvPageType, PolyvRoomIdType, PolyvSessionIdType, ServiceCommonParams } from '@polyv/white-board-sdk/service/assets/interfaces';
  /**
    * 获取单页 ppt 数据方法参数类型
    */
  export interface GetSinglePagePptDataParams extends ServiceCommonParams {
      roomId: PolyvRoomIdType;
      autoId: PolyvAutoIdType;
      pageIndex: PolyvPageType;
      sessionId?: PolyvSessionIdType;
  }
  /**
    * 获取单页画笔数据接口返回类型
    */
  export interface SinglePageDataType {
      /** 数据唯一标识 */
      id: string;
      /** socket 数据 json 字符串 */
      content: string;
      /** pptId */
      autoId: number;
      /** 页数下标 */
      pageId: PolyvPageType;
      /** 房间号 */
      roomId: PolyvRoomIdType;
      /** 场次id */
      sessionId?: string;
      /** 插入时间 */
      time: number;
  }
  /**
    * 获取单页 ppt 画笔数据
    */
  export function getSinglePagePptData(params: GetSinglePagePptDataParams): Promise<SinglePageDataType[]>;
}

declare module '@polyv/white-board-sdk/service/assets/utils/doc-utils' {
  import { PptJsonType } from '@polyv/white-board-sdk/core';
  import { PolyvAutoIdType, PolyvDocJson, PolyvDocJsonV1, PolyvDocJsonV2, PolyvDocType, ServiceCommonParams, ServiceDocVersion } from '@polyv/white-board-sdk/service/assets/interfaces';
  /**
    * 判断两个 autoId 是否相同
    * @param autoId1
    * @param autoId2
    * @returns
    */
  export function isEqualAutoId(autoId1: PolyvAutoIdType, autoId2: PolyvAutoIdType): boolean;
  /**
    * 格式化 autoId，将其转换成 string 类型
    * @param autoId
    */
  export function formatPolyvAutoId(autoId: PolyvAutoIdType): string;
  /**
    * 转换 docType，使其转换成服务层的 docVersion，`'0'`、`0`、`old` 时返回 `v1`，其他值则返回 `v2`，不传返回 `v2`。
    * @api
    * @param docType 文档类型
    */
  export function filterToServiceDocVision(docType?: PolyvDocType): ServiceDocVersion;
  /**
    * 判断是否为 v1 版的 docJson
    * @api
    * @param docJson
    */
  export function isDocJsonV1(docJson: PolyvDocJson): docJson is PolyvDocJsonV1;
  /**
    * 判断是否为 v2 版的 docJson
    * @api
    * @param docJson
    */
  export function isDocJsonV2(docJson: PolyvDocJson): docJson is PolyvDocJsonV2;
  /**
    * 过滤 docJson 参数
    */
  export interface FormatDocJsonParams extends ServiceCommonParams {
  }
  /**
    * 处理从接口获取的 docJson 数据，转换为白板格式
    * @api
    * @param docJson 保利威的 docJson
    */
  export function formatDocJson(docJson: PolyvDocJson, params?: FormatDocJsonParams): Promise<PptJsonType>;
}

declare module '@polyv/white-board-sdk/service/assets/utils/socket-utils' {
  import { SliceControlType } from '@polyv/white-board-sdk/service/assets/enums';
  import { GetSliceControlRelation, OnSliceControlType, PolyvAutoIdType, PolyvDocType, PolyvPageType, PolyvRoomIdType, PolyvSessionIdType, SocketType } from '@polyv/white-board-sdk/service/assets/interfaces';
  /**
    * 判断 socket 中的事件是否为服务内部所需的事件
    * @api
    * @param data json 字符串或 json 数据
    */
  export function isRightEvent(data: string | Record<string, unknown>): boolean;
  /**
    * 格式化 socket 数据，格式失败时会返回 `undefined`
    * @api
    * @param data json 字符串或 json 数据
    */
  export function formatSocketData(data: string | SocketType): SocketType | undefined;
  /**
    * 判断是否为 onSliceControl 的某一个类型
    * @param socketData socket对象
    * @param type onSliceControl 类型
    */
  export function isSliceControl<DT extends SliceControlType>(socketData: SocketType, type: DT): socketData is OnSliceControlType<GetSliceControlRelation<DT>>;
  /**
    * 从 socketData 中读取 timeStamp
    * @param socketData
    */
  export function getSocketTimeProgress(socketData: SocketType): number | undefined;
  /**
    * 从 socketData 中读取画笔绘制持续时间
    * @param socketData
    */
  export function getSocketDrawDuration(socketData: SocketType): number | undefined;
  /**
    * 从 socketData 中尽可能地读取 autoId
    * @param socketData
    */
  export function getSocketAutoId(socketData: SocketType): PolyvAutoIdType | undefined;
  /**
    * 从 socketData 中尽可能地读取 docType
    * @param socketData
    */
  export function getSocketDocType(socketData: SocketType): PolyvDocType;
  /**
    * 获取 socketData 的 pageId
    * @param socketData
    */
  export function getSocketPageId(socketData: SocketType): PolyvPageType | undefined;
  /**
    * 获取 socketData 的 sessionId
    * @param socketData
    */
  export function getSocketSessionId(socketData: SocketType): PolyvSessionIdType | undefined;
  /**
    * 获取 socketData 的 roomId
    * @param socketData
    */
  export function getSocketRoomId(socketData: SocketType): PolyvRoomIdType | undefined;
}

declare module '@polyv/white-board-sdk/service/assets/interfaces/socket-types/draw-type' {
  import { PolyvAutoIdType, PolyvPageType } from '@polyv/white-board-sdk/service/assets/interfaces/index';
  import { BaseDataType } from '@polyv/white-board-sdk/core';
  import { SocketEvent } from '@polyv/white-board-sdk/service/assets/enums';
  import { SliceCommonType } from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/index';
  import { FromBackType } from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/control-type';
  /**
    * onSliceDraw 中 data 新版类型
    */
  export interface OnSliceDrawDataType {
      /** 绘制目标的标识 ID，某个 PPT 或白板 */
      autoId: PolyvAutoIdType;
      /** 在某一页绘制 */
      pageId: PolyvPageType;
      /** 基础数据 */
      baseData: BaseDataType;
      /** 该 socket 位于回放的产生时间进度，单位：ms */
      timeStamp?: number;
  }
  /**
    * 旧版的绘制类型
    * @compatible
    * @freeline 自由曲线
    * @line 自由曲线，与 freeLine 一致
    * @rect 矩形
    * @circ 椭圆
    * @ellipse 椭圆，与 circ 一致
    * @straightLine 直线
    * @arrowLine 箭头
    * @text 文本
    */
  export type OldDrawType = 'freeline' | 'line' | 'circ' | 'ellipse' | 'rect' | 'straightLine' | 'arrowLine' | 'text';
  /**
    * onSliceDraw 中 data 旧版类型
    * @compatible
    */
  export interface OnSliceDrawOldDataType {
      /** 绘制目标的标识 ID，某个 PPT 或白板 */
      autoId: PolyvAutoIdType;
      /** 在某一页绘制 */
      pageId: PolyvPageType;
      /** 索引 */
      ID?: number;
      /** 标识ID */
      drawID?: string;
      /** 线条尺寸 */
      size?: number;
      /** 线条尺寸 */
      lineWidth?: number;
      /** 颜色 */
      color?: string;
      /** 颜色 */
      strokeStyle?: string;
      /** 图形类型 */
      type?: OldDrawType;
      /** 绘制时的宽度 */
      clientWidth?: number;
      /** 绘制时的高度 */
      clientHeight?: number;
      /** 点列表 */
      points?: Array<{
          x: number;
          y: number;
      }>;
      /** 字体样式 */
      font?: string;
      /** 文本内容 */
      content?: string;
      /** 绘制时间 */
      intervalTime?: number;
      /** 该 socket 位于回放的产生时间进度，单位：ms */
      timeStamp?: number;
      /** 来源，如果存在该字段且有值，代表是从被擦除或撤回中重新绘制的 */
      fromBack?: FromBackType;
      /** 修改数据，如果存在改字段且有值，代表是修改了文字内容 */
      changeData?: OnSliceDrawOldDataType;
  }
  /**
    * 绘制事件 onSliceDraw 数据类型
    */
  export interface OnSliceDrawType extends SliceCommonType {
      EVENT: SocketEvent.OnSliceDraw;
      data: OnSliceDrawDataType | OnSliceDrawOldDataType;
  }
}

declare module '@polyv/white-board-sdk/service/assets/interfaces/socket-types/control-type' {
  import { IsCloseCamera, PptVideoPosition, SliceCommonType } from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/index';
  import { SocketEvent, SliceControlType } from '@polyv/white-board-sdk/service/assets/enums';
  import { PolyvAutoIdType, PolyvDocType, PolyvPageType, PolyvStepType } from '@polyv/white-board-sdk/service/assets/interfaces/index';
  /**
    * 擦除、撤回、重做、draw 中 fromBack 的类型，
    * 如果 fromBack 为空或 undefined，表示该画笔是被擦除而消失的，
    * 如果 fromBack 为 back，表示该画笔是被撤回而消失的，
    * 如果 fromBack 为 unback，表示该画笔是被重做而消失的
    */
  export type FromBackType = 'back' | 'unback';
  /**
    * 操作数据类型 - 公用接口
    */
  export interface OnSliceControlCommonDataType {
      autoId: PolyvAutoIdType;
      pageId: PolyvPageType;
      /** 该 socket 位于回放的产生时间进度，单位：ms */
      timeStamp?: number;
  }
  /**
    * 操作数据类型 - 切换到指定页
    */
  export interface OnSliceControlSwitchPageDataType extends OnSliceControlCommonDataType {
      type: SliceControlType.SwitchPage;
      docType?: PolyvDocType;
      step?: PolyvStepType;
  }
  /**
    * 操作数据类型 - 切换到指定的动画步骤
    */
  export interface OnSliceControlSwitchAnimationDataType extends OnSliceControlCommonDataType {
      type: SliceControlType.SwitchAnimation;
      step: PolyvStepType;
  }
  /**
    * 操作数据类型 - 切换文档与视频区的位置
    * @compatible
    */
  export interface OnSliceControlChangeVideoAndPPTPositionDataType {
      type: SliceControlType.ChangeVideoAndPPTPosition;
      /** PPT 是否在主区域 */
      pptIsMain: PptVideoPosition;
      /** 该 socket 位于回放的产生时间进度，单位：ms */
      timeStamp?: number;
  }
  /**
    * 操作数据类型 - 关闭摄像头
    * @compatible
    */
  export interface OnSliceControlCloseCameraType {
      type: SliceControlType.CloseCamera;
      /** 摄像头是否已关闭 */
      isCamClosed: IsCloseCamera;
      /** 该 socket 位于回放的产生时间进度，单位：ms */
      timeStamp?: number;
  }
  /**
    * 操作数据类型 - 删除
    * @compatible
    */
  export interface OnSliceControlDeleteDataType extends OnSliceControlCommonDataType {
      type: SliceControlType.Delete;
      /** 索引 id */
      ID?: number;
      /** 删除的 id，多个 drawID 以英文逗号分隔 */
      drawID?: string;
      /** 删除类型 */
      fromBack?: FromBackType;
  }
  /**
    * 操作数据类型 - 删除所有
    * @compatible
    */
  export interface OnSliceControlAllDeleteDataType extends OnSliceControlCommonDataType {
      type: SliceControlType.AllDelete;
  }
  /**
    * 操作数据类型 - 激光笔
    * @compatible
    */
  export interface OnSliceControlLaserPaintDataType extends OnSliceControlCommonDataType {
      type: SliceControlType.LaserPaint;
      /** 绘制时的宽度 */
      clientWidth: number;
      /** 绘制时的高度 */
      clientHeight: number;
      /** 移动持续时间 */
      moveTime: number;
      /** 移动路径点列表 */
      points: Array<{
          x: number;
          y: number;
      }>;
      /** 激光笔状态，存在值时为关闭激光笔 */
      status?: 'close';
  }
  /**
    * 操作数据类型 - 最大化容器（互动学堂）
    */
  export interface HiClassSliceControlToggleMaxmizeContainerDataType {
      type: SliceControlType.HiClassToggleMaximizeContainer;
      autoId: PolyvAutoIdType;
      /** 是否最大化，0-取消最大化，1-最大化 */
      fullStatus: 0 | 1;
  }
  /**
    * 操作数据类型 - 最小化容器（互动学堂）
    */
  export interface HiClassSliceControlMinimizeContainerDataType {
      type: SliceControlType.HiClassMinimizeContainer;
      autoId: PolyvAutoIdType;
  }
  /**
    * 操作数据类型 - 取消最小化容器（互动学堂）
    */
  export interface HiClassSliceControlCancelMinimizeContainerDataType {
      type: SliceControlType.HiClassCancelMinimizeContainer;
      autoId: PolyvAutoIdType;
  }
  /**
    * 操作数据类型 - 修改容器或白板的尺寸位置（互动学堂）
    */
  export interface HiClassSliceControlChangePositionDataType {
      type: SliceControlType.HiClassChangePosition;
      /** 标识Id，如果为数字 0 时表示修改大白板的位置与尺寸 */
      autoId: PolyvAutoIdType;
      /**
        * 如果修改的是 PPT 容器，则为容器左上角的 y 坐标。
        * 如果修改的是大白板，则为视角中心点的 y 坐标。
        */
      top?: number;
      /**
        * 如果修改的是 PPT 容器，则为容器左上角的 x 坐标。
        * 如果修改的是大白板，则为视角中心点的 x 坐标。
        */
      left?: number;
      /**
        * 如果修改的是 PPT 容器，则为容器宽度。
        * 如果修改的是大白板，则为讲师端的白板区域宽度（计算的比例宽）。
        */
      width?: number;
      /**
        * 如果修改的是 PPT 容器，则为容器高度。
        * 如果修改的是大白板，则为讲师端的白板区域高度（计算的比例高）。
        */
      height?: number;
  }
  /**
    * 操作数据类型 - 置顶容器（互动学堂）
    */
  export interface HiClassSliceControlTopmostContainerDataType {
      type: SliceControlType.HiClassTopmostContainer;
      autoId: PolyvAutoIdType;
  }
  /**
    * 操作数据类型 - 缩放视角（互动学堂）
    */
  export interface HiClassSliceControlZoomVisionDataType {
      type: SliceControlType.HiClassZoomVision;
      autoId: PolyvAutoIdType;
      /** 缩放百分比 */
      zoom: number;
  }
  /**
    * 互动学堂操作类型汇总
    */
  export type HiClassSliceControlDataType = HiClassSliceControlToggleMaxmizeContainerDataType | HiClassSliceControlMinimizeContainerDataType | HiClassSliceControlCancelMinimizeContainerDataType | HiClassSliceControlChangePositionDataType | HiClassSliceControlTopmostContainerDataType | HiClassSliceControlZoomVisionDataType;
  /**
    * 操作数据类型汇总类型
    */
  export type OnSliceControlDataType = OnSliceControlSwitchPageDataType | OnSliceControlSwitchAnimationDataType | OnSliceControlDeleteDataType | OnSliceControlAllDeleteDataType | OnSliceControlLaserPaintDataType | OnSliceControlChangeVideoAndPPTPositionDataType | OnSliceControlCloseCameraType | HiClassSliceControlDataType;
  /**
    * 操作事件 onSliceControl 数据类型
    */
  export interface OnSliceControlType<DT extends OnSliceControlDataType = OnSliceControlDataType> extends SliceCommonType {
      EVENT: SocketEvent.OnSliceControl;
      data: DT;
  }
  /**
    * onSliceControl 的类型关系
    */
  export type SliceControlRelation = {
      [SliceControlType.SwitchPage]: OnSliceControlSwitchPageDataType;
      [SliceControlType.SwitchAnimation]: OnSliceControlSwitchAnimationDataType;
      [SliceControlType.ChangeVideoAndPPTPosition]: OnSliceControlChangeVideoAndPPTPositionDataType;
      [SliceControlType.CloseCamera]: OnSliceControlCloseCameraType;
      [SliceControlType.LaserPaint]: OnSliceControlLaserPaintDataType;
      [SliceControlType.Delete]: OnSliceControlDeleteDataType;
      [SliceControlType.AllDelete]: OnSliceControlAllDeleteDataType;
      [SliceControlType.HiClassToggleMaximizeContainer]: HiClassSliceControlToggleMaxmizeContainerDataType;
      [SliceControlType.HiClassMinimizeContainer]: HiClassSliceControlMinimizeContainerDataType;
      [SliceControlType.HiClassCancelMinimizeContainer]: HiClassSliceControlCancelMinimizeContainerDataType;
      [SliceControlType.HiClassChangePosition]: HiClassSliceControlChangePositionDataType;
      [SliceControlType.HiClassTopmostContainer]: HiClassSliceControlTopmostContainerDataType;
      [SliceControlType.HiClassZoomVision]: HiClassSliceControlZoomVisionDataType;
  };
  /**
    * 根据 type 获取 onSliceControl 类型
    */
  export type GetSliceControlRelation<DT extends SliceControlType> = SliceControlRelation[DT];
}

declare module '@polyv/white-board-sdk/service/assets/interfaces/index' {
  import { ToastOption, ToastTask, WhiteBoard } from '@polyv/white-board-sdk/core';
  export * from '@polyv/white-board-sdk/service/assets/interfaces/polyv-doc-json';
  export * from '@polyv/white-board-sdk/service/assets/interfaces/socket-types';
  export * from '@polyv/white-board-sdk/service/assets/interfaces/request';
  /**
    * 频道号类型
    */
  export type PolyvChannelIdType = string;
  /**
    * 保利威房间号类型
    */
  export type PolyvRoomIdType = number | string;
  /**
    * 保利威场次号类型
    */
  export type PolyvSessionIdType = string;
  /**
    * 保利威 Socket 数据中 autoId 类型
    */
  export type PolyvAutoIdType = number | string;
  /**
    * 保利威 Socket 数据中 page 类型
    */
  export type PolyvPageType = number | string;
  /**
    * 保利威 Socket 数据中 step 类型
    */
  export type PolyvStepType = number | string;
  /**
    * 开关类型
    */
  export type EnabledType = boolean | 'Y' | 'N';
  /**
    * 保利威文档 docType 类型，服务层所有 docType 均默认为 1
    */
  export type PolyvDocType = 0 | '0' | 'old' | 1 | '1' | 'new';
  /**
    * 服务层文档类型。
    * v1 - 使用旧接口获取 docJson。
    * v2 - 使用新接口获取 docJson。
    */
  export type ServiceDocVersion = 'v1' | 'v2';
  /**
    * 域名信息类型
    */
  export interface DomainInfo {
      /** 旧版 doc 域名，默认：//doc.polyv.net */
      docV1Domain?: string;
      /** doc 域名，默认：//doc-2.polyv.net */
      docDomain?: string;
      /** apichat 域名，默认：//apichat.polyv.net */
      apiChatDomain?: string;
      /** api 域名，默认：//api.polyv.net */
      apiDomain?: string;
  }
  /**
    * sei 信息
    */
  export interface SeiInfo {
      /** 当前直播画面的播放时间进度，单位：毫秒 */
      time: number;
  }
  /**
    * 服务公用参数
    */
  export interface ServiceCommonParams {
      /** 白板实例 */
      whiteBoard?: WhiteBoard;
      /** 域名信息 */
      domainInfo?: DomainInfo;
      /** 提示信息 */
      toast?: (option: string | ToastOption) => ToastTask | undefined;
  }
}

declare module '@polyv/white-board-sdk/service/assets/interfaces/socket-types/video-type' {
  import { SliceVideoType, SocketEvent } from '@polyv/white-board-sdk/service/assets/enums';
  import { SliceCommonType } from '@polyv/white-board-sdk/service/assets/interfaces/index';
  /**
    * ispring 视频数据类型
    */
  export interface IspringVideoData {
      /** 视频标识 */
      id: string;
      /** 是否已暂停 */
      paused: boolean;
      /** 当前播放时间 */
      currentTime: number;
      /** 视频时长 */
      duration: number;
      /** 音量，0～1 */
      volume: number;
      /** 是否全屏 */
      fullscreen: boolean;
  }
  export interface OnSliceVideoDataType extends IspringVideoData {
      type: SliceVideoType;
  }
  /**
    * 视频事件 onSliceVideo 数据类型
    */
  export interface OnSliceVideoType extends SliceCommonType {
      EVENT: SocketEvent.OnSliceVideo;
      data: OnSliceVideoDataType;
  }
}

declare module '@polyv/white-board-sdk/service/_controls/compatible-data/compatible-data-controller' {
  import { ClearBehaviorBaseData, LaserPenBehaviorBaseData, UndoBehaviorBaseData } from '@polyv/white-board-sdk/behavior';
  import { WorldPoint } from '@polyv/white-board-sdk/core';
  import { LaserPenShapeBaseData } from '@polyv/white-board-sdk/shape';
  import { OnSliceControlAllDeleteDataType, OnSliceControlDeleteDataType, OnSliceControlLaserPaintDataType, OnSliceControlType, OnSliceDrawDataType, OnSliceDrawOldDataType, OnSliceDrawType } from '@polyv/white-board-sdk/service/assets';
  import { PolyvService } from '@polyv/white-board-sdk/service/service-core';
  import { LowPadStreamerHandler } from '@polyv/white-board-sdk/service/_controls/compatible-data/low-pad-streamer-handler';
  import { ConvertOldPointsParams, FilterSocketParams } from '@polyv/white-board-sdk/service/_controls/compatible-data/types';
  /**
    * 旧版数据转新版数据控制器
    * @class
    */
  export class CompatibleDataController {
      service: PolyvService;
      /** 低版本讲课啦兼容处理 */
      lowPadHandler: LowPadStreamerHandler;
      constructor(service: PolyvService);
      /**
        * 转换旧版数据的点
        * @param params
        */
      convertOldPoints(params: ConvertOldPointsParams): WorldPoint[];
      /**
        * 判断是否为新版的 draw 数据
        * @param data draw socket 数据
        */
      isNewSliceDrawData(data: OnSliceDrawDataType | OnSliceDrawOldDataType): data is OnSliceDrawDataType;
      /**
        * 过滤 onSliceDraw 中的 socket 数据，转换成新版数据
        */
      filterSocketDrawData(params: FilterSocketParams<OnSliceDrawType>): OnSliceDrawDataType | undefined;
      /**
        * 根据 onSliceControl 中 alldelete 的类型创建一个清空行为基础数据
        */
      filterAllDeleteData(params: FilterSocketParams<OnSliceControlType<OnSliceControlAllDeleteDataType>>): ClearBehaviorBaseData;
      /**
        * 根据 onSliceControl 中 delete 类型创建一个撤回行为基础数据
        */
      filterDeleteData(params: FilterSocketParams<OnSliceControlType<OnSliceControlDeleteDataType>>): UndoBehaviorBaseData;
      /**
        * 根据 onSliceControl 中 laserPaint 的类型创建一个激光笔的基础数据
        */
      filterLaserPaintData(params: FilterSocketParams<OnSliceControlType<OnSliceControlLaserPaintDataType>>): LaserPenShapeBaseData | LaserPenBehaviorBaseData | undefined;
  }
}

declare module '@polyv/white-board-sdk/service/_controls/compatible-data/types' {
  import { WhiteBoard } from '@polyv/white-board-sdk/core';
  /**
    * 过滤 socket 方法参数类型
    */
  export interface FilterSocketParams<T> {
      /** 白板实例 */
      whiteBoard?: WhiteBoard;
      /** socket 数据 */
      socketData: T;
  }
  /**
    * 转换旧版点坐标参数类型
    */
  export interface ConvertOldPointsParams {
      whiteBoard?: WhiteBoard;
      points: Array<{
          x: number;
          y: number;
      }>;
      clientWidth: number;
      clientHeight: number;
  }
}

declare module '@polyv/white-board-sdk/service/_controls/history-request/history-request-controller' {
  import { ExecuteProtect } from '@polyv/white-board-sdk/service/assets/utils/execute-protect';
  import { PolyvService } from '@polyv/white-board-sdk/service/service-core';
  import { HistoryRequestKeyTarget } from '@polyv/white-board-sdk/service/_controls/history-request/types';
  /**
    * 历史记录请求控制器
    * @class
    */
  export class HistoryRequestController {
      service: PolyvService;
      /** 请求保护器 */
      executeProtect: ExecuteProtect;
      constructor(service: PolyvService);
      /**
        * 生成请求 key 的字符串
        */
      generateRequestKeyStr(keyTarget: HistoryRequestKeyTarget): string;
      /**
        * 设置历史请求记录
        * @param keyTarget 请求 key 对象
        */
      setHistoryRecord(keyTarget: HistoryRequestKeyTarget): void;
      /**
        * 是否存在请求历史记录
        * @param keyTarget 请求 key 对象
        */
      hasHistoryRecord(keyTarget: HistoryRequestKeyTarget): boolean;
      /**
        * 清空请求历史记录
        */
      clearHistoryRecord(): void;
      /**
        * 设置历史请求的 Promise 实例
        * @param keyTarget 请求 key 对象
        * @param val Promise 实例
        */
      setHistoryPromise(keyTarget: HistoryRequestKeyTarget, val: Promise<void>): void;
      /**
        * 获取历史请求的 Promise 实例
        * @param keyTarget 请求 key 对象
        */
      getHistoryPromise(keyTarget: HistoryRequestKeyTarget): Promise<void> | undefined;
      /**
        * 移除历史请求的 Promise 实例
        * @param keyTarget 请求 key 对象
        */
      removeHistoryPromise(keyTarget: HistoryRequestKeyTarget): void;
      /**
        * 清空请求 Promises
        */
      clearHistoryPromise(): void;
      /**
        * 发送历史请求失败日志
        * @param keyTarget 请求 key 请求
        */
      sendHistoryErrorLog(keyTarget: HistoryRequestKeyTarget, error?: Error): void;
      /**
        * 销毁
        */
      destroy(): void;
  }
}

declare module '@polyv/white-board-sdk/service/_controls/history-request/types' {
  import { PolyvAutoIdType, PolyvPageType, PolyvRoomIdType, PolyvSessionIdType } from '@polyv/white-board-sdk/service/assets';
  /**
    * 历史请求 key 对象类型
    */
  export interface HistoryRequestKeyTarget {
    /** autoId */
    autoId: PolyvAutoIdType;
    /** 页数 */
    pageIndex: PolyvPageType;
    /** 房间号 */
    roomId: PolyvRoomIdType;
    /** 场次号 */
    sessionId?: PolyvSessionIdType;
  }
}

declare module '@polyv/white-board-sdk/service/assets/index' {
  export * from '@polyv/white-board-sdk/service/assets/config';
  export * from '@polyv/white-board-sdk/service/assets/enums';
  export * from '@polyv/white-board-sdk/service/assets/interfaces';
  export * from '@polyv/white-board-sdk/service/assets/request';
  export * from '@polyv/white-board-sdk/service/assets/utils';
}

declare module '@polyv/white-board-sdk/service/assets/interfaces/socket-types/index' {
  /**
    * @file 保利威 Socket 消息类型定义
    */
  import { OnSliceDrawType } from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/draw-type';
  import { OnSliceControlType } from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/control-type';
  import { SocketEvent } from '@polyv/white-board-sdk/service/assets/enums';
  import { PolyvAutoIdType, PolyvDocType, PolyvPageType, PolyvRoomIdType, PolyvStepType } from '@polyv/white-board-sdk/service/assets/interfaces/index';
  import { DrawMarkType } from '@polyv/white-board-sdk/service/_controls/draw-mark';
  import { OnSliceVideoType } from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/video-type';
  /**
    * 文档与视频位置，0-文档在主屏（大的），1-文档在副屏（小的）
    */
  export type PptVideoPosition = 0 | 1;
  /**
    * 是否关闭摄像头，0-未关闭，1-已关闭
    */
  export type IsCloseCamera = 0 | 1;
  /**
    * Socket 公共数据类型
    */
  export interface SliceCommonType {
      /** 房间号 */
      roomId: PolyvRoomIdType;
      /** 场次号 */
      sessionId?: string;
      /** 用户 id */
      userId: string;
      /**
        * 广播模式。
        * 1 - 表示消息广播给除自己之外的所有其它人。
        * 0 - 表示广播给房间内所有人，包括自己。
        */
      emitMode: 1;
      /** 文档类型 */
      docType: 1;
  }
  /**
    * 互动学堂下已打开的 PPT 对象数据类型
    */
  export interface PptListItem {
      /** 标识 ID，用作 containerId */
      autoId: PolyvAutoIdType;
      /** 当前页数 */
      pageId: PolyvPageType;
      /** 动画索引 */
      step: PolyvStepType;
      /** PPT 容器宽度 */
      width: number;
      /** PPT 容器高度 */
      height: number;
      /** PPT 容器左上角世界坐标点的 y 坐标 */
      top: number;
      /** PPT 容器左上角世界坐标点的 x 坐标 */
      left: number;
  }
  /**
    * 初始化状态 onSliceID 数据类型
    */
  export interface OnSliceIdType {
      EVENT: SocketEvent.OnSliceId;
      data: {
          /** 当前打开的PPT标识ID，数字 0 为白板，默认：0 */
          autoId?: PolyvAutoIdType;
          /** 当前页数，默认：0 */
          pageId?: PolyvPageType;
          /** 当前动画进度，默认：0 */
          step?: PolyvStepType;
          /** 文档类型 */
          docType?: PolyvDocType;
          /** 用户 id */
          userId?: string;
          /** 房间号 */
          roomId?: PolyvRoomIdType;
          /** 场次号 */
          sessionId?: string;
          /** 绘制记录 */
          drawMark?: DrawMarkType;
          /** 是否关闭了摄像头 */
          isCamClosed?: IsCloseCamera;
          /** 互动学堂下已打开的 ppt 列表 */
          pptList?: PptListItem[];
          /** 互动学堂下已最小化的 ppt 列表 */
          pptStorageList?: PptListItem[];
          /** 互动学堂下正在最大化中的 ppt autoId */
          fullScreenPPT?: number;
          /** 互动学堂下大白板的缩放百分比 */
          zoom?: number;
          /** 互动学堂下大白板的视角中心点 y 坐标 */
          top?: number;
          /** 互动学堂下大白板的视角中心点 x 坐标 */
          left?: number;
          /** 互动学堂下讲师端大白板的宽度 */
          width?: number;
          /** 互动学堂下讲师端大白板的高度 */
          height?: number;
      };
      /** 是否正在上课，默认：false */
      inClass?: boolean;
      /** 是否正在分组讨论中，默认：false */
      inDiscuss?: boolean;
      /** 分组 ID，仅在 inDiscuss 为 true 的时候使用 groupId 作为 roomId */
      groupId?: string;
      /** PPT与视频位置 */
      pptAndVedioPosition?: PptVideoPosition;
  }
  /**
    * 开始上课 OnSliceStart 数据类型
    */
  export interface OnSliceStartType extends SliceCommonType {
      EVENT: SocketEvent.OnSliceStart;
      data: {
          /** 当前正在打开的 PPT 或 白板，0 表示为白板 */
          autoId: PolyvAutoIdType;
          /** 当前页数 */
          pageId: PolyvPageType;
          /** 当前动画步骤数 */
          step: PolyvStepType;
          /** 文档类型 */
          docType?: PolyvDocType;
      };
      /** 该 socket 位于回放的产生时间进度，单位：ms */
      timeStamp?: number;
      /** 绘制记录 */
      drawMark?: DrawMarkType;
  }
  /**
    * 切换 PPT 或白板的 data 数据类型
    */
  export interface OnSliceOpenDataType {
      /**
        * 标识 ID。
        * 在互动学堂中，该字段表示打开某个 PPT 容器。
        * 在云直播中，该字段表示切换到某个 PPT 文档或白板，当该字段为数字类型 0 时，表示切换到白板，即关闭 PPT。
        */
      autoId: PolyvAutoIdType;
      /** 当前页 */
      pageId: PolyvPageType;
      /** 动画步骤数 */
      step?: PolyvStepType;
      /** 文档类型 */
      docType?: PolyvDocType;
      /** 互动学堂下，打开的 PPT 容器的宽度 */
      width?: number;
      /** 互动学堂下，打开的 PPT 容器的高度 */
      height?: number;
      /** 互动学堂下，打开的 PPT 容器左上角世界坐标点的 y 坐标 */
      top?: number;
      /** 互动学堂下，打开的 PPT 容器左上角世界坐标点的 x 坐标 */
      left?: number;
      /** 该 socket 位于回放的产生时间进度，单位：ms */
      timeStamp?: number;
  }
  /**
    * 切换 PPT 或白板 的 onSliceOpen 数据类型
    */
  export interface OnSliceOpenType extends SliceCommonType {
      EVENT: SocketEvent.OnSliceOpen;
      data: OnSliceOpenDataType;
  }
  /**
    * 互动学堂下，关闭 PPT 容器的 onSliceClose 类型
    */
  export interface OnSliceCloseType extends SliceCommonType {
      EVENT: SocketEvent.OnSliceClose;
      /** 关闭的 PPT 标识id */
      autoId: PolyvAutoIdType;
  }
  /**
    * 所有 Socket 数据类型汇总的类型
    */
  export type SocketType = OnSliceIdType | OnSliceStartType | OnSliceOpenType | OnSliceCloseType | OnSliceControlType | OnSliceDrawType | OnSliceVideoType;
  export * from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/draw-type';
  export * from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/control-type';
  export * from '@polyv/white-board-sdk/service/assets/interfaces/socket-types/video-type';
}

declare module '@polyv/white-board-sdk/behavior' {
  export * from '@polyv/white-board-sdk/export/behavior';
}

declare module '@polyv/white-board-sdk/service/_controls/compatible-data/low-pad-streamer-handler' {
  import { PolyvAutoIdType, PolyvPageType } from '@polyv/white-board-sdk/service/assets/interfaces';
  export type LowPadRecordKeyDataType = {
      autoId: PolyvAutoIdType;
      pageId: PolyvPageType;
  };
  export type LowPadTransformParams = {
      autoId: PolyvAutoIdType;
      pageId: PolyvPageType;
      ID: number;
  };
  /**
    * 低版本讲课啦兼容处理；
    * 兼容的版本：v0.4.3
    */
  export class LowPadStreamerHandler {
      /**
        * 是否为低版本讲课啦数据
        * @param data draw 数据
        */
      isLowPadStreamerData(data: {
          drawID?: string;
          ID?: number;
      }): boolean;
      /**
        * 清空所有记录
        */
      clearRecord(): void;
      /**
        * 根据 autoId 清空记录
        * @param autoId
        */
      clearRecordByAutoId(autoId: PolyvAutoIdType): void;
      /**
        * 根据 autoId 和 pageId 清空记录
        * @param autoId
        * @param pageId
        */
      clearRecordByPageId(autoId: PolyvAutoIdType, pageId: PolyvPageType): void;
      /**
        * 在记录中获取 drawID
        */
      getDrawId(params: LowPadTransformParams): string | undefined;
      /**
        * 设置 drawId
        */
      setDrawId(params: LowPadTransformParams, drawId: string): void;
      /**
        * 转换 ID
        * @param params
        */
      transformDrawId(params: LowPadTransformParams): string;
      /**
        * 获取删除时的 drawId
        * @param params
        */
      getDeleteDrawId(params: LowPadTransformParams): string | undefined;
  }
}

declare module '@polyv/white-board-sdk/service/assets/utils/execute-protect' {
  import { AnyFunc } from '@polyv/white-board-sdk/core';
  /**
    * 执行保护机制配置
    */
  export interface ExecuteProtectConfig {
      /** 单位时间，单位：秒，默认：20 */
      unitSecond?: number;
      /** 单位次数，默认：30 */
      unitCount?: number;
      /** 恢复时间，单位：秒，默认：60 */
      resumeSecond?: number;
  }
  export type ProjectErrorCallback = (error: Error) => void;
  export interface CreateProtectConfig {
      /** this 上下文 */
      context?: unknown;
      /** 异常回调 */
      errorCallback?: ProjectErrorCallback;
  }
  /**
    * 执行保护机制
    * @class
    */
  export class ExecuteProtect {
      /** 单位时间，单位：秒 */
      unitSecond: number;
      /** 单位次数 */
      unitCount: number;
      /** 恢复时间，单位：秒 */
      resumeSecond: number;
      /** 记录执行的次数 */
      executeCount: number;
      /** 是否已经超频 */
      isOverClocked: boolean;
      /** 首次执行的时间戳 */
      firstExecuteTimestamp?: number;
      constructor(config?: ExecuteProtectConfig);
      /**
        * 销毁
        */
      destroy(): void;
      /**
        * 恢复
        */
      resume(): void;
      /**
        * 对某个函数进行保护执行
        * @param fn 目标函数
        * @param config 配置
        */
      createProtect<F extends AnyFunc>(fn: F, config?: CreateProtectConfig): {
          /** 执行请求 */
          execute: (...params: Parameters<F>) => ReturnType<F>;
      };
  }
}

