import { EduRoleTypeEnum, EduUser } from 'agora-rte-sdk';
import OSS from 'ali-oss';
import { ReactEventHandler } from 'react';
import { IframeBridge } from '@netless/iframe-bridge';
import { MemberState, Room, SceneDefinition, RoomPhase, CameraState } from 'white-web-sdk';
import { CourseWareItem } from '../api/declare';
import { MaterialDataResource } from '../services/upload-service';
import { EduScenarioAppStore as EduScenarioAppStore } from './index';
import { StorageCourseWareItem } from '../types';
import { BoardClient } from '../utilities/board-client';
import { OSSConfig } from '../utilities/kit';
import { ZoomController } from './zoom';
import { Resource } from '../context/type';
export interface ToolItem {
    value: string;
    label: any;
    icon: any;
    isActive?: boolean;
    component?: React.FC<{
        isActive: boolean;
        onClick: ReactEventHandler<any>;
    }>;
}
export declare type CustomizeGlobalState = {
    materialList: CourseWareItem[];
    dynamicTaskUuidList: any[];
    roomScenes: GlobalRoomScene;
    grantUsers: string[];
    follow: boolean;
    isFullScreen: boolean;
};
export declare type GlobalRoomScene = {
    [resourceUuid: string]: {
        contextPath: string;
        index: number;
        sceneName: string;
        scenePath: string;
        totalPage: string;
        resourceName: string;
        show: boolean;
    };
};
export type { Resource };
export declare enum BoardPencilSize {
    thin = 4,
    small = 8,
    normal = 12,
    large = 18
}
export declare enum BoardFrontSizeType {
    size12 = "12",
    size14 = "14",
    size18 = "18",
    size24 = "24",
    size26 = "26",
    size36 = "36",
    size48 = "48",
    size72 = "72"
}
export declare const resolveFileInfo: (file: any) => {
    fileName: string;
    fileType: string;
};
export declare const demoOssConfig: OSSConfig;
export interface SceneItem {
    file: {
        name: string;
        type: string;
    };
    path: string;
    rootPath: string;
}
export declare enum DownloadStatus {
    notCache = 0,
    downloading = 1,
    cached = 2,
    failed = 3
}
export declare enum CustomRoomPhase {
    Idle = "idle"
}
export declare const ApaasRoomPhase: {
    Idle: CustomRoomPhase.Idle;
    Connecting: RoomPhase.Connecting;
    Connected: RoomPhase.Connected;
    Reconnecting: RoomPhase.Reconnecting;
    Disconnecting: RoomPhase.Disconnecting;
    Disconnected: RoomPhase.Disconnected;
};
export declare class BoardStore extends ZoomController {
    checkInResult: any;
    setCheckInResult(result: any): void;
    scenes: any[];
    loading: boolean;
    converting: boolean;
    currentPage: number;
    totalPage: number;
    currentScene: any;
    hasBoardPermission: number;
    selector: string;
    showFolder: boolean;
    boardRegion: string;
    boardConnectionState: string;
    closeFolder(): void;
    openFolder(): void;
    showUpload: boolean;
    showExtension: boolean;
    activeFooterItem: string;
    uuid: string;
    roomToken: string;
    sceneItems: SceneItem[];
    activeScenePath: string;
    ready: boolean;
    follow: boolean;
    grantUsers: any[];
    permission: number;
    menuTitle: string;
    isFullScreen: boolean;
    enableStatus: string | boolean;
    downloading: boolean;
    appStore: EduScenarioAppStore;
    _boardClient?: BoardClient;
    get boardClient(): BoardClient;
    ossClient: OSS;
    folder: string;
    constructor(appStore: EduScenarioAppStore);
    get room(): Room;
    get localUser(): EduUser;
    get activeSceneName(): string;
    get localUserUuid(): string;
    get boardPenIsActive(): boolean;
    joinBoard(): Promise<void>;
    leaveBoard(): Promise<void>;
    init(info: {
        boardId: string;
        boardToken: string;
        boardRegion: string;
    }): Promise<void>;
    loadScene(data: any[]): SceneDefinition[];
    sceneList: any[];
    controller: any;
    _resourcesList: Resource[];
    _boardItem: Resource;
    get resourcesList(): Resource[];
    changeSceneItem(resourceUuid: string): void;
    updateBoardSceneItems({ scenes, resourceUuid, resourceName, page, taskUuid }: any, setScene: boolean): void;
    findResourcePage(resourceName: string): number;
    getResourcePath(str: string): string;
    get activeIndex(): number;
    currentPath: string;
    get bizScreenShare(): boolean;
    get isBoardScreenShare(): boolean;
    get showBoardTool(): [boolean, boolean];
    get canSharingScreen(): boolean;
    get isShareScreen(): boolean;
    removeScreenShareScene(): void;
    closeMaterial(resourceUuid: string): Promise<void>;
    autoFetchDynamicTask(): Promise<void>;
    updatePageHistory(): void;
    currentScenePath: string;
    resourceUuid: string;
    updateLocalResourceList(): void;
    updateLocalSceneState(): void;
    updateCourseWareList(): void;
    courseWareList: any[];
    findFirstPPT(): void;
    fetchRoomScenes(): Promise<import("../api/declare").ConvertedFileList | undefined>;
    join(info: {
        role: EduRoleTypeEnum;
        isWritable: boolean;
        boardId: string;
        boardToken: string;
        disableDeviceInputs: boolean;
        disableCameraTransform: boolean;
        disableAutoResize: boolean;
    }): Promise<void>;
    pptAutoFullScreen(): void;
    setGrantPermission(v: boolean): Promise<void>;
    setGrantUsers(args: any[]): void;
    aClassJoinBoard(params: any): Promise<void>;
    get roleIsTeacher(): boolean;
    get roleIsStudent(): boolean;
    isTeacher(): boolean;
    isStudent(): boolean;
    resetBoardPath(): void;
    resetBoardScenes(): void;
    leave(): Promise<void>;
    changeFooterMenu(itemName: string): void;
    get currentSelector(): string;
    lineSelector: string;
    laserPoint: boolean;
    get boardRoomIsAvailable(): boolean;
    setLaserPoint(): void;
    shape: string;
    setTool(tool: string): void;
    currentStrokeWidth: number;
    changeStroke(value: any): void;
    rgbToHexColor(r: number, g: number, b: number): string;
    changeHexColor(colorHex: string): void;
    currentActiveToolItem: string;
    get currentColor(): string;
    currentStroke: string;
    getCurrentStroke(memberState: MemberState): number;
    currentArrow: any;
    getCurrentArrow(memberState: MemberState): any;
    currentFontSize: BoardFrontSizeType;
    changeFontSize(size: BoardFrontSizeType): void;
    getCurrentFontSize(memberState: MemberState): BoardFrontSizeType;
    updateScale(scale: number): void;
    get loadingType(): string;
    updatePen(value: any): void;
    changePage(idx: number, force?: boolean): void;
    getCurrentContextPath(): string;
    setScenePath(path: string): void;
    updateCameraState(cameraState: CameraState): void;
    updateBoardState(globalState: CustomizeGlobalState): void;
    updatePagination(): void;
    notices: any[];
    uploadPhase: string;
    convertPhase: string;
    isCancel: boolean;
    uploadingPhase: string;
    convertingPhase: string;
    scale: number;
    get zoomValue(): number;
    online: boolean;
    showColorPicker: boolean;
    strokeColor: any;
    _grantPermission?: boolean;
    fileLoading: boolean;
    uploadingProgress: number;
    allTools: any[];
    installTools(tools: any[]): void;
    get _tools(): any[];
    get tools(): any[];
    reset(): void;
    roomIsWritable(room: Room): boolean;
    setWritable(v: boolean): Promise<void>;
    grantUserPermission(userUuid: string): Promise<void>;
    revokeUserPermission(userUuid: string): Promise<void>;
    get userRole(): EduRoleTypeEnum;
    get roomType(): number;
    get boardService(): import("../services/edu-board-service").EduBoardService;
    get hasPermission(): boolean;
    checkUserPermission(userUuid: string): boolean;
    grantBoardPermission(userUuid: string): Promise<void>;
    revokeBoardPermission(userUuid: string): Promise<void>;
    resizeObserver: ResizeObserver;
    whiteBoardContainer?: HTMLElement;
    mount(dom: any): void;
    unmount(): void;
    hideExtension(): void;
    setZoomScale(operation: string): void;
    zoomBoard(type: string): void;
    setFullScreen(type: boolean): void;
    preloading: boolean;
    preloadingProgress: number;
    get isLoading(): true | "preparing" | undefined;
    get loadingStatus(): "" | "whiteboard.loading";
    get globalState(): CustomizeGlobalState;
    removeMaterialList(resourceUuids: string[]): Promise<void>;
    putCourseResource(resourceUuid: string, currentPage?: number): Promise<void>;
    setScreenShareScenePath(): void;
    iframe: IframeBridge;
    insertH5(url: string, resourceUuid: string, currentPage?: number): Promise<void>;
    putImage(url: string): Promise<void>;
    putAV(url: string, type: string, mimeType: string): Promise<void>;
    putSceneByResourceUuid(uuid: string): Promise<void>;
    getFileInQueryMaterial(fileName: string): Promise<import("../services/upload-service").UploadServiceResult>;
    addMaterial(resourceRecord: CourseWareItem): void;
    handleUpload(payload: any): Promise<void>;
    cancelUpload(): Promise<void>;
    clearScene(): void;
    get isH5IFrame(): boolean;
    get canSyncCameraState(): boolean;
    scaleToFit(): void;
    moveCamera(): void;
    _extraResources: CourseWareItem[];
    _resourcesMap: Map<string, CourseWareItem>;
    resolveResource(item: any): any;
    get extraResources(): MaterialDataResource[];
    upsertResources(items: CourseWareItem[]): void;
    get publicResources(): MaterialDataResource[];
    get initCourseWare(): MaterialDataResource;
    initCourseWareLoading: boolean;
    initCourseWareProgress: number;
    openInitCourseWare(): Promise<void>;
    get internalResources(): CourseWareItem[];
    _personalResources: CourseWareItem[];
    get personalResources(): MaterialDataResource[];
    get allResources(): MaterialDataResource[];
    get totalProgress(): number;
    progressMap: Record<string, number>;
    destroy(): Promise<void>;
    downloadList: StorageCourseWareItem[];
    refreshState(): Promise<void>;
    updateDownloadById(taskUuid: string, props: Partial<StorageCourseWareItem>): void;
    internalDownload(taskUuid: string): Promise<void>;
    startDownload(taskUuid: string): Promise<void>;
    cancelDownload(taskUuid: string): Promise<void>;
    deleteSingle(taskUuid: string): Promise<void>;
    deleteAllCache(): Promise<void>;
    downloadAll(): Promise<void>;
    activeMap: Record<string, boolean>;
}
export declare type HandleUploadType = {
    file: File;
    resourceName: string;
    onProgress: (evt: any) => any;
};
