import { IPublicTypeNodeSchema, IPublicModelHistory, IPublicTypeDisposable } from '@alilc/lowcode-types'; import type { IDocumentModel } from '../designer'; export interface Serialization { serialize(data: K): T; unserialize(data: T): K; } export interface IHistory extends IPublicModelHistory { onStateChange(func: () => any): IPublicTypeDisposable; } export declare class History implements IHistory { private redoer; private document?; private session; private records; private point; private emitter; private asleep; private currentSerialization; get hotData(): any; private timeGap; constructor(dataFn: () => T | null, redoer: (data: T) => void, document?: IDocumentModel); setSerialization(serialization: Serialization): void; isSavePoint(): boolean; private sleep; private wakeup; go(originalCursor: number): void; back(): void; forward(): void; savePoint(): void; /** * | 1 | 1 | 1 | * | -------- | -------- | -------- | * | modified | redoable | undoable | */ getState(): number; /** * 监听 state 变更事件 * @param func * @returns */ onChangeState(func: () => any): IPublicTypeDisposable; onStateChange(func: () => any): IPublicTypeDisposable; /** * 监听历史记录游标位置变更事件 * @param func * @returns */ onChangeCursor(func: () => any): IPublicTypeDisposable; onCursor(func: () => any): () => void; destroy(): void; /** * * @deprecated * @returns * @memberof History */ isModified(): boolean; } export declare class Session { readonly cursor: number; private timeGap; private _data; private activeTimer; get data(): any; constructor(cursor: number, data: any, timeGap?: number); log(data: any): void; isActive(): boolean; end(): void; private setTimer; private clearTimer; }