import * as Y from "yjs";
import { WebsocketProvider } from "y-websocket";
import { DesignWidget } from "@/types";
export type YWidget = Y.Map<any>;
export type YArray = Y.Array<YWidget>;
interface Delta {
    insert?: Array<any> | string;
    delete?: number;
    retain?: number;
}
interface KeysData {
    key: string;
    action: 'add' | 'update' | 'delete';
    value: any;
}
export interface UpdateData {
    type: 'array' | 'map';
    path: Array<number | string>;
    target: any;
    deltaData?: Delta;
    keysData?: KeysData;
    handler: Function;
}
export default class SynchronizeService<T> {
    ydoc: Y.Doc;
    wsProvider: WebsocketProvider;
    yWidget: Y.Array<YWidget>;
    constructor(serverUrl?: string, roomName?: string);
    createWidget(widget: DesignWidget): Y.Map<any>;
    _onDataUpdate(YArrayEvent: Array<any>, Transaction: any): void;
    onDataUpdate: (data: T[], updateData: UpdateData[]) => void;
    getCurrentByPath(data: any, path: Array<string | number>): any;
    handlerArray(path: Array<string | number>, deltaData: Delta, currentData: any): void;
    handlerMap(path: Array<string | number>, keysData: KeysData, currentData: any): void;
    destroy(): void;
}
export {};
