type ConfList<D> = {
    name: string;
    value: D;
}[];
interface Location {
    lat: string;
    lon: string;
}
export interface AuthList {
    location: boolean;
    album: boolean;
    record: boolean;
    user: boolean;
}
interface Device {
    width: number;
    height: number;
    dpr: number;
    name: string;
    system: string;
    platform: string;
}
export type CompileModeList = {
    modeName: string;
    entryPath: string;
    entryParam: string;
    entryScene: string;
    active: boolean;
    needUpdate: boolean;
    updateStatus: 'success' | 'fail';
}[];
export interface CompileModeConfig {
    list: CompileModeList;
}
interface LarkApiOutput {
    chooseContact: string;
    chooseChat: string;
    startPasswordVerify: {
        errCode: number;
        token: string;
    };
    getHostLaunchQuery: string;
    badgeChange: {
        openChatId: string;
        badge: number;
    };
    getChatInfo: string;
}
interface WiFiStatus {
    status: 'on' | 'off';
    list: {
        SSID: string;
        BSSID: string;
        secure: boolean;
        signalStrength: number;
        active: boolean;
    }[];
}
interface Accelerometer {
    x: number;
    y: number;
    z: number;
}
export interface ToolBox {
    location: Location;
    scan: string;
    authList: AuthList;
    larkApi: LarkApiOutput;
    compass: number;
    wifiStatus: WiFiStatus;
    accelerometer: Accelerometer;
}
export interface MockRule {
    ruleName: string;
    enable: boolean;
    apiName: string;
    paramRules: {
        name: string;
        regExp: string;
    }[];
    response: {
        status: 'success' | 'fail';
        data: {
            active: boolean;
            type: 'custom' | 'template';
            json: object;
        }[];
    };
}
export interface MockPanel {
    enable: boolean;
    rules: MockRule[];
}
export interface BaseSimulatorConfig {
    network: number;
    networkList: ConfList<SimulatorConfig['network']>;
    device: Device;
    deviceList: ConfList<SimulatorConfig['device']>;
    customDevice: {
        name: string;
        value: Device;
    };
    scale: number;
    scaleList: ConfList<SimulatorConfig['scale']>;
    scene: number;
    sceneList: ConfList<SimulatorConfig['scene']>;
    autoRefresh: boolean;
    toolBox: ToolBox;
    onUserCaptureScreen: boolean;
    compileModeConfig: CompileModeConfig;
    updateReady: boolean;
    lastUpload: {
        time?: number;
        version: string;
    };
    lastPreview: {
        time?: number;
    };
    lastMobilePreview: {
        time?: number;
        url?: string;
        watch?: boolean;
    };
    lastPCPreview: {
        time?: number;
        watch?: boolean;
    };
    mockPanel: MockPanel;
    darkMode: 'dark' | 'light';
}
export declare const emptyToolBox: ToolBox;
export declare const emptyMockPanel: MockPanel;
export interface SimulatorConfig extends BaseSimulatorConfig {
    urlCheck: boolean;
    es6: boolean;
    sdkVersion: string;
    sdkList: SDKInfo[];
    useNPM: boolean;
    enableWebviewSafeDomain: boolean;
    needSubPackage: boolean;
    request: [];
    socket: [];
    upload: [];
    download: [];
    debugAccountInfo: DebugAccountInfo;
    appID: string;
    applicationType: ApplicationType;
    debugTenantList: DebugTenant[];
}
type Env = 'feishu' | 'lark' | 'feishu-boe' | 'lark-boe' | 'feishu-pre' | 'lark-pre';
export interface BaseAccountInfo {
    user: {
        id: string;
        name: string;
        display_name?: string;
        avatar: string;
        loginCredentialId: string;
        env: Env;
    };
    tenant: {
        id: string;
        name: string;
        avatar: string;
        isLogin: boolean;
    };
}
export interface AccountInfo extends BaseAccountInfo {
    mpSession: string;
    larkSession?: string;
    larkSessionList?: string[];
    env: Env;
    tenantList?: BaseAccountInfo[];
}
export interface DebugAccountInfo {
    user: {
        id: string;
        loginCredentialId: string;
        env: Env;
    };
    tenant: {
        id: string;
        name: string;
        i18nName?: {
            enUS: string;
            zhCN: string;
        };
    };
    larkSession?: string;
    larkSessionList?: string[];
    env: Env;
}
export interface DebugTenant {
    user: {
        id: string;
        loginCredentialId: string;
        env: Env;
    };
    tenant: {
        id: string;
        name: string;
        i18nName: {
            enUS: string;
            zhCN: string;
        };
        isLogin: boolean;
        isFormal: boolean;
    };
}
export interface IdeSdkInfo {
    path: string;
    version: string;
    versionList: string[];
}
export type CompileType = 'mobile' | 'pc';
export type AppType = 'gadget' | 'h5' | 'block' | 'h5_offline' | 'h5_in_block';
export declare enum AppTypeEnum {
    Gadget = "gadget",
    H5 = "h5",
    GadgetNav = "gadget-nav",
    GadgetPlugin = "gadget-plugin",
    Block = "block",
    H5Offline = "h5_offline",
    H5InBlock = "h5_in_block"
}
export type BlockRenderType = 'offlineWeb' | 'blockDSL';
export interface SDKInfo {
    version: string;
    url: string;
    larkVersion: string;
    type: 'remote' | 'local';
}
export interface AppInfo {
    compilePath: string;
    projectName: string;
    lastOpen: number;
}
export type AppInfoList = {
    [k in AppType]?: {
        compilePath: string;
        type: AppType;
        projectName: string;
    }[];
};
export type DocUrl = {
    i18nName: {
        ['en-US']: string;
        ['zh-CN']: string;
    };
    url: string;
};
export interface EditorFileStack {
    filePath: string;
    model?: any;
    state?: any;
    icon?: string;
    isSelected: boolean;
    isChanged?: boolean;
    isReload?: boolean;
    notSave?: boolean;
}
export interface ProjectInfo {
    appid: string;
    projectname: string;
    setting?: {
        [key: string]: any;
    };
    blocks?: string[];
}
export interface BlockInfo {
    blockTypeID: string;
    blockRenderType?: BlockRenderType;
    creator?: string;
    useStartLoading?: boolean;
    darkmode?: boolean;
    showFrame?: boolean;
    schema?: object;
    offlineWebConfig?: object;
}
export interface BlockInfoMap {
    [blockPath: string]: BlockInfo;
}
export interface BlockLoadMode {
    mountType: 'creator' | 'blockId' | 'blockEntity';
    blockId?: string;
    sourceMeta?: string;
    sourceData?: string;
}
export interface BlockConfig {
    blockTypeId: string;
    blockRenderType?: BlockRenderType;
    blockPath: string;
    blockOriginPath: string;
    offlineWebConfig?: {
        main_url: string;
    };
}
export interface BlockContainerSize {
    uuid: string;
    name: string;
    width: number;
    height: number;
}
export interface BlockCustomSize {
    selectedName: string;
    customSizeList: BlockContainerSize[];
}
export interface FrameworkOption {
    useUpgrade: boolean;
    minimumVersion: string;
}
export type ApplicationType = 'custom' | 'store' | 'invalid' | 'nopermission';
export interface AppMeta {
    app_base_info: {
        app_id: string;
        bot_id: string;
        icon: string;
        name: string;
        openSchemaWhiteList: string[];
        useOpenSchemaWhiteList: string[];
        version: string;
    };
}
export type Lang = 'zh-CN' | 'en-US';
export {};
