import { EventEmitter } from '../EventEmitter';
import { WhiteboardPage } from './WhiteboardPage';
/**
 * @typedef {{ width: number, height: number, originalWidth?: number, originalHeight?: number }} WhiteboardPageSize
 * @typedef {{ strokes?: any[], text?: any[], images?: any[] }} WhiteboardPageData
 * @typedef {{ pages?: Record<string, WhiteboardPageData> }} WhiteboardData
 * @typedef {{
 *  Renderer?: any,
 *  superdoc?: any,
 *  enabled?: boolean,
 *  onChange?: (data: WhiteboardData) => void,
 *  onSetData?: (pages: WhiteboardPage[]) => void,
 *  onEnabledChange?: (enabled: boolean) => void,
 * }} WhiteboardInit
 */
/**
 * Whiteboard manager for multi-page annotations.
 */
export class Whiteboard extends EventEmitter<import('../EventEmitter').DefaultEventMap> {
    /**
     * Initialize the whiteboard instance.
     * @param {WhiteboardInit} [props]
     */
    constructor(props?: WhiteboardInit);
    /**
     * Register items for a UI palette type (e.g. stickers, comments).
     * @param {string} type
     * @param {any[]} items
     */
    register(type: string, items: any[]): void;
    /**
     * Get registered items by type.
     * @param {string} type
     * @returns {any[] | undefined}
     */
    getType(type: string): any[] | undefined;
    /**
     * Set current tool for all pages.
     * @param {string} tool
     */
    setTool(tool: string): void;
    /**
     * Get current tool.
     * @returns {string}
     */
    getTool(): string;
    /**
     * Enable/disable interactivity for all pages.
     * @param {boolean} enabled
     */
    setEnabled(enabled: boolean): void;
    /**
     * @returns {boolean}
     */
    isEnabled(): boolean;
    /**
     * Set overlay opacity.
     * @param {number} opacity
     */
    setOpacity(opacity: number): void;
    /**
     * @returns {number}
     */
    getOpacity(): number;
    /**
     * Return all page instances.
     * @returns {WhiteboardPage[]}
     */
    getPages(): WhiteboardPage[];
    /**
     * Set size for a page (creates page if missing).
     * @param {number} pageIndex
     * @param {WhiteboardPageSize} size
     */
    setPageSize(pageIndex: number, size: WhiteboardPageSize): void;
    /**
     * Get a page by index.
     * @param {number} pageIndex
     * @returns {WhiteboardPage}
     */
    getPage(pageIndex: number): WhiteboardPage;
    /**
     * Serialize whiteboard data.
     * @returns {WhiteboardData}
     */
    getWhiteboardData(): WhiteboardData;
    /**
     * Load whiteboard data from JSON.
     * @param {WhiteboardData} json
     */
    setWhiteboardData(json: WhiteboardData): void;
    #private;
}
export type WhiteboardPageSize = {
    width: number;
    height: number;
    originalWidth?: number;
    originalHeight?: number;
};
export type WhiteboardPageData = {
    strokes?: any[];
    text?: any[];
    images?: any[];
};
export type WhiteboardData = {
    pages?: Record<string, WhiteboardPageData>;
};
export type WhiteboardInit = {
    Renderer?: any;
    superdoc?: any;
    enabled?: boolean;
    onChange?: (data: WhiteboardData) => void;
    onSetData?: (pages: WhiteboardPage[]) => void;
    onEnabledChange?: (enabled: boolean) => void;
};
//# sourceMappingURL=Whiteboard.d.ts.map