import type EventEmitter2 from "eventemitter2";
import type { RoomMemberManager } from "../members";
import { ApplianceManagerLike, BaseSubWorkModuleProps, FilterRenderType, _ArrayTrue, _ObjectTrue } from "../plugin/types";
import type { MasterControlForWorker } from "./mainEngine";
import { EPostMessageType } from "./enum";
import { ISerializableStorageRenderScenesData, PageId, ScenePath, Uid, ViewId, WorkId } from "../collector/types";
export interface RenderCotrol {
    readonly roomMemberManager: RoomMemberManager;
    readonly control: ApplianceManagerLike;
    /** 本地发布可显示绘制权限到服务端 */
    publishRender(param: {
        viewId: Uid;
        option: {
            render?: _ArrayTrue;
            hide?: _ArrayTrue;
            clear?: _ArrayTrue;
        };
        isSync: boolean;
    }): void;
    /** 发布当个用户显示绘制权限到服务端 */
    publishOneRender(viewId: Uid, uid: Uid, type: FilterRenderType, isSync: boolean): void;
    /** 发布当个用户删除笔记权限到服务端 */
    publishOneClear(viewId: Uid, uid: Uid, isAdd: boolean, isSync: boolean): void;
    /** 服务端同步可显示绘制权限 */
    syncRenderUids(viewId: Uid, _render?: _ObjectTrue, _hide?: _ObjectTrue, _clear?: _ObjectTrue): void;
    /** 销毁view的render数据 */
    destoryByViewId(viewId: string): void;
}
export type AuthRenderViewsData = Map<ViewId, AuthRenderScenesData>;
export type AuthRenderScenesData = Map<ScenePath, AuthRenderSceneData>;
export type AuthRenderSceneData = {
    render: Uid;
    pages: AuthPagesData;
};
export type AuthPagesData = Map<PageId, Set<WorkId>>;
export declare class RenderCotrolImple implements RenderCotrol {
    readonly control: ApplianceManagerLike;
    readonly roomMemberManager: RoomMemberManager;
    readonly worker: MasterControlForWorker;
    readonly publicMsgEmitter: EventEmitter2;
    private renderUids;
    private pageAuth;
    private isLocalRender;
    private isCurWritable;
    constructor(props: BaseSubWorkModuleProps);
    onWritableChange(bol: boolean): void;
    addPage(porps: {
        viewId: ViewId;
        pageId?: PageId;
        render?: Uid;
        elementIds?: Set<WorkId>;
    }, isActive?: boolean): void;
    delPage(pageId: string, viewId: string): void;
    private delViewPage;
    clearRenderPage(viewId: string, scenePath: string, isSync?: boolean): void;
    hasPage(pageId: string, viewId: string, scenePath: string): boolean;
    getPageInfo(pageId: string, viewId: string, scenePath: string): Set<string> | undefined;
    addRenderPageElementId(porps: {
        viewId: ViewId;
        scenePath: string;
        elementId: WorkId;
    }, isSync?: boolean, isActive?: boolean): void;
    delRenderPageElementId(porps: {
        viewId: ViewId;
        scenePath: string;
        elementId: WorkId;
    }, isSync?: boolean, isActive?: boolean): void;
    setPageRender(viewId: string, scenePath: string, pageId: Uid, isSync?: boolean): void;
    isWriteable(): boolean;
    isRenderAble(param: {
        uid: Uid;
        viewId: string;
        scenePath?: ScenePath;
        filterLocalSelf?: boolean;
    }): boolean;
    isClearAble(param: {
        uid: Uid;
        viewId: Uid;
        scenePath?: ScenePath;
        filterLocalSelf?: boolean;
        elementId?: WorkId;
    }): boolean;
    isFilterAble(param: {
        viewId: string;
        scenePath: ScenePath;
        elementId: WorkId;
    }, type?: EPostMessageType): boolean;
    isFilterCursor(viewId: string): boolean;
    isUsePageAuth(viewId: string): boolean;
    publishRender(param: {
        viewId: Uid;
        option?: {
            render?: _ArrayTrue;
            hide?: _ArrayTrue;
            clear?: _ArrayTrue;
        };
        isSync: boolean;
    }): void;
    publishOneRender(viewId: Uid, uid: Uid, type: FilterRenderType, isSync?: boolean): void;
    publishOneClear(viewId: Uid, uid: Uid, isAdd: boolean, isSync?: boolean): void;
    syncRenderUids(viewId: Uid, _render?: _ObjectTrue, _hide?: _ObjectTrue, _clear?: _ObjectTrue): void;
    syncPageAuth(viewId: Uid, viewData?: ISerializableStorageRenderScenesData, forceUpdate?: boolean): void;
    destoryByViewId(viewId: string, isLocal?: boolean): void;
    private renderEffect;
    private pageAuthEffect;
    private cloneElementIds;
    private delElementIds;
}
