import { FiberRoot } from 'react-reconciler';
import ServerElement, { RenderNode } from './ServerElement';
import { NodeTask } from '@/utils';
interface SpliceTask {
    type: NodeTask.SPLICE;
    key?: number;
    children?: number[];
    targetNode: RenderNode | null;
    taskNode: ServerElement;
    parentPath: any[];
}
interface UpdateTask {
    type: NodeTask.UPDATE;
    key?: number;
    propName: string;
    propValue: any;
    path: any[];
    taskNode: ServerElement;
}
export type Task = SpliceTask | UpdateTask;
export declare const ROOT_KEY = "mona";
export default class TaskController {
    context: any;
    _root: ServerElement;
    tasks: Task[];
    _stopUpdate: boolean;
    rootContainer?: FiberRoot;
    rootKey: string;
    constructor(context: any);
    requestUpdate(task: Task): void;
    applyUpdate(): void;
    genUpdatePath(paths: string[]): string;
    stopUpdate(): void;
    addCallback(cbKey: string, cb: (...args: any) => any): void;
    removeCallback(name: string | number): void;
    appendChild(child: ServerElement): void;
    removeChild(child: ServerElement): void;
    insertBefore(child: ServerElement, beforeChild: ServerElement): void;
}
export {};
