import Shell from "olympus-r/engine/env/Shell";
export default class Shell17 extends Shell {
    readonly type: string;
    readonly platform: Platform;
    readonly clientType: ClientType;
    /**
     * 初始化一起作业外壳
     *
     * @memberof Shell17
     */
    initShell17(): void;
    /**
     * 调用外壳通过window.external传递进来的接口
     *
     * @param {string} funcName 接口名
     * @param {...any[]} paramsList 参数列表
     * @returns {*}
     */
    callExternal(funcName: string, ...paramsList: any[]): Promise<any>;
    protected _initParams: any;
    getInitParams(refresh?: boolean): Promise<any>;
    protected mergeInitParams(result: any): any;
    innerJump(name: string): void;
    homeworkHTMLLoaded(): void;
    updateTitle(str: string, txtColor?: number, bgColor?: number): void;
    redirectToLogin(from?: string): void;
    openFairylandPage(params: {
        url: string;
        name: string;
        useNewCore?: string;
        orientation?: string;
        fullScreen?: boolean;
        page_viewable?: boolean;
        initParams?: {
            [key: string]: string;
        };
    }): void;
    pageQueueNew(params: {
        url: string;
        name: string;
        useNewCore?: string;
        orientation?: string;
        initParams?: {
            [key: string]: string;
        };
    }): void;
    pageQueueBack(params: {
        name?: string;
        index?: number;
        step?: number;
        url?: string;
        initParams?: {
            [key: string]: string;
        };
    }): void;
    pageQueueRefresh(params?: {
        url?: string;
        initParams?: {
            [key: string]: string;
        };
    }): void;
    pageQueueQuit(params?: Object): void;
    disMissView(): void;
    showlog(msg: string): void;
    log_b(data: {
        [name: string]: any;
    }): void;
    payOrder(params: PayOrderParams): void;
    /**
     * 触发外壳事件
     *
     * @param {string} type 事件类型
     * @param {...any[]} args 事件参数列表
     * @memberof Shell17
     */
    trigger(type: string, ...args: any[]): void;
    /**
     * 添加外壳监听
     *
     * @param {string} type 监听类型
     * @param {(...args:any[])=>void} handler 处理函数
     * @param {boolean} [once=false] 是否一次性监听
     * @memberof Shell17
     */
    bindTrigger(type: string, handler: (...args: any[]) => void, once?: boolean): void;
    /**
     * 移除外壳监听
     *
     * @param {string} type 监听类型
     * @param {(...args:any[])=>void} handler 处理函数
     * @memberof Shell17
     */
    unbindTrigger(type: string, handler: (...args: any[]) => void): void;
    hasGPU(callback: (status: GPUStatus) => void): void;
    startRecord(params: any): void;
    stopRecord(params: any): void;
    startPlayback(params: any): void;
    stopPlayback(params: any): void;
    /*************************** 下面是本地存储接口 ***************************/
    /**
     * 获取本地存储
     *
     * @param {string} key 要获取值的键
     * @returns {string} 获取的值
     * @memberof Shell
     */
    localStorageGet(key: string): any;
    /**
     * 设置本地存储
     *
     * @param {string} key 要设置的键
     * @param {string} value 要设置的值
     * @memberof Shell
     */
    localStorageSet(key: string, value: string): void;
    /**
     * 移除本地存储
     *
     * @param {string} key 要移除的键
     * @memberof Shell
     */
    localStorageRemove(key: string): void;
    /**
     * 清空本地存储
     *
     * @memberof Shell
     */
    localStorageClear(): void;
    /*************************** 下面是音频接口 ***************************/
    protected initAudio(): void;
    /**
     * 开始下载音频
     *
     * @param {string} url 音频地址
     * @memberof Shell17
     */
    loadAudio(url: string): void;
    /**
     * 开始播放音频
     *
     * @param {string} url 音频地址
     * @memberof Shell17
     */
    playAudio(url: string): void;
    /**
     * 暂停播放音频
     *
     * @param {string} url 音频地址
     * @memberof Shell17
     */
    pauseAudio(url: string): void;
    /**
     * 音频跳转到指定位置
     *
     * @param {string} url 音频地址
     * @param {number} time 跳转位置（毫秒）
     * @memberof Shell17
     */
    seekAudio(url: string, time: number): void;
    /**
     * 停止播放音频
     *
     * @param {string} url 音频地址
     * @memberof Shell17
     */
    stopAudio(url: string): void;
    /*************************** 下面是视频接口 ***************************/
    playerVideo(params: PlayerVideoParams): void;
}
export interface PlayerVideoParams {
    /**
     * 视频地址（多个cdn线路）
     *
     * @type {string[]}
     * @memberof PlayerVideoParams
     */
    urlList: string[];
    /**
     * 整个题目的ID
     *
     * @type {string}
     * @memberof PlayerVideoParams
     */
    id?: string;
    /**
     * 当视频通过ip播放时需要在header中加host
     *
     * @type {string}
     * @memberof PlayerVideoParams
     */
    header?: string;
    /**
     * 视频标题
     *
     * @type {string}
     * @memberof PlayerVideoParams
     */
    title?: string;
    /**
     * 视频图片
     *
     * @type {string}
     * @memberof PlayerVideoParams
     */
    placeholderImageUrl?: string;
    /**
     * 是否保存播放进度 默认true
     *
     * @type {boolean}
     * @memberof PlayerVideoParams
     */
    isSavePlayProgress?: boolean;
    /**
     * 配音模式 1:播放原始视频  2：开始配音播放 3:播放预览视频
     *
     * @type {number}
     * @memberof PlayerVideoParams
     */
    voiceDubbingType?: number;
    /**
     * 是否全屏
     *
     * @type {boolean}
     * @memberof PlayerVideoParams
     */
    fullScreen?: boolean;
    /**
     * 视频的背景音
     *
     * @type {string}
     * @memberof PlayerVideoParams
     */
    backMusicUrl?: string;
}
export interface PayOrderParams {
    /** 支付类型 1代表微信支付 2代表支付宝支付 */
    orderType: number;
    /** 支付需要的参数 */
    data: any;
    /** 支付回调的方法名 */
    handler: string;
}
export interface PayOrderHandlerParams {
    /** 支付类型 1代表微信支付 2代表支付宝支付 */
    orderType: number;
    /** 具体查看各个支付平台的code */
    code: number;
    /** 说明 */
    msg: string;
}
/**
 * GPU开启状态
 */
export declare enum GPUStatus {
    AUTO = 0,
    OPEN = 1,
    CLOSE = 2
}
export declare enum Platform {
    WEB = 0,
    IOS17 = 1,
    Android17 = 2,
    WXApp = 3
}
export declare enum ClientType {
    UNKNOWN = 0,
    STUDENT = 1,
    TEACHER = 2,
    PARENT = 3,
    YUNKETANG = 4
}
