export interface IPluginConfig {
    provider: string;
    version: string;
    path?: string;
    export?: string;
    genericsImplementation?: {
        [pageName: string]: {
            [componentName: string]: string;
        };
    };
}
export interface ISubPackageItem {
    independent?: boolean;
    name?: string;
    entry?: string;
    root: string;
    pages: string[];
    plugins?: {
        [alias: string]: IPluginConfig;
    };
    useExtendedLib?: {
        [key: string]: boolean | string;
    };
}
export interface IWindow {
    backgroundColorTop?: string;
    backgroundColorBottom?: string;
    backgroundColorContent?: string;
    backgroundColor?: string;
    enablePullDownRefresh?: boolean;
    navigationBarTextStyle?: 'black' | 'white' | `@${string}`;
    navigationBarTitleText?: string;
    navigationStyle?: 'default' | 'custom';
    backgroundTextStyle?: 'dark' | 'light' | `@${string}`;
    onReachBottomDistance?: number;
    pageOrientation?: 'portrait' | 'auto' | 'landscape';
    navigationBarBackgroundColor?: string;
    renderingMode?: 'seperated' | 'mixed';
    restartStrategy?: 'homePage' | 'homePageAndLatestPage';
    visualEffectInBackground?: 'hidden' | 'none';
    initialRenderingCache?: 'static' | 'dynamic';
    handleWebviewPreload?: 'static' | 'manual' | 'auto';
    homeButton?: boolean;
}
export interface ITabBar {
    custom?: boolean;
    list: Array<{
        pagePath: string;
        text?: string;
        iconPath?: string;
        selectedIconPath?: string;
        renderer?: 'skyline' | 'webview' | 'cover-view';
    }>;
    borderStyle?: 'black' | 'white' | `@${string}`;
    position?: 'bottom' | 'top';
    color?: string;
    selectedColor?: string;
    backgroundColor?: string;
}
export interface IAppBar {
    custom?: boolean;
}
export interface ISkylineFeatures {
    defaultContentBox?: boolean;
    defaultDisplayBlock?: boolean;
}
export interface ISupportMaterial {
    materialType: string;
    name: string;
    desc: string;
    path: string;
}
export type IRequirePrivateInfos = Array<'getFuzzyLocation' | 'getLocation' | 'onLocationChange' | 'startLocationUpdate' | 'startLocationUpdateBackground' | 'chooseLocation' | 'choosePoi' | 'chooseAddress'>;
type IPlatform = 'mini-ios' | 'mini-android' | 'mini-weixin';
interface IAppJSONStaticConfig {
    pattern: string;
    platforms: IPlatform[];
}
interface IOriginAppJSON {
    __warning__?: string;
    window?: IWindow;
    plugins?: {
        [key: string]: IPluginConfig;
    };
    entryPagePath?: string;
    permission?: {
        'scope.userLocation'?: {
            desc: string;
        };
        'scope.userFuzzyLocation'?: {
            desc: string;
        };
    };
    workers?: string | {
        path: string;
        isSubpackage: boolean;
    };
    subPackages?: Array<ISubPackageItem>;
    subpackages?: Array<ISubPackageItem>;
    preloadRule?: {
        [key: string]: {
            network?: 'all' | 'wifi';
            packages: Array<string>;
        };
    };
    usingComponents?: {
        [key: string]: string;
    };
    componentPlaceholder?: {
        [key: string]: string;
    };
    tabBar?: ITabBar;
    appBar?: IAppBar;
    requiredBackgroundModes?: Array<string>;
    mimeTypeDeclarations?: {
        [key: string]: Array<string>;
    };
    networkTimeout?: {
        request?: number;
        connectSocket?: number;
        uploadFile?: number;
        downloadFile?: number;
    };
    debug?: boolean;
    resizable?: boolean;
    displayMode?: 'mobile' | 'pad' | 'desktop';
    frameset?: boolean;
    functionalPages?: boolean | {
        independent: boolean;
    };
    cloud?: boolean;
    cloudVersion?: string;
    cloudConfig?: {
        gatewayDomain?: string;
        publicKey?: string;
        gatewayId?: string;
    };
    openDataContext?: string;
    openLocationPagePath?: string;
    sitemapLocation?: string;
    serviceProviderTicket?: string;
    style?: 'v2';
    useExtendedLib?: {
        [key: string]: boolean | string;
    };
    entranceDeclare?: {
        locationMessage?: {
            path?: string;
            query?: string;
        };
    };
    darkmode?: boolean;
    themeLocation?: string;
    theme?: string;
    singlePage?: {
        navigationBarFit?: 'float' | 'squeezed';
    };
    lazyCodeLoading?: 'requiredComponents';
    enablePassiveEvent?: boolean | {
        [key: string]: boolean;
    };
    supportedMaterials?: ISupportMaterial[];
    requireBackgroundModes?: string[];
    embeddedAppIdList?: string[];
    renderer?: "skyline" | "webview";
    resolveAlias?: {
        [key: string]: string;
    };
    debugOptions?: {
        enableFPSPanel?: boolean;
    };
    halfPage?: {
        firstPageNavigationStyle?: 'default' | 'custom';
    };
    requiredPrivateInfos?: IRequirePrivateInfos;
    rendererOptions?: {
        defaultDisplayBlock?: boolean;
        skyline?: {
            disableABTest?: boolean;
            sdkVersionBegin?: string;
            sdkVersionEnd?: string;
            iosVersionBegin?: string;
            iosVersionEnd?: string;
            androidVersionBegin?: string;
            androidVersionEnd?: string;
        } & ISkylineFeatures;
    };
    componentFramework?: 'glass-easel' | 'exparser';
    accountCardPackage?: {
        root: string;
        cardList: Array<{
            type: number;
            componentPath: string;
        }>;
    };
    xrEntryPagePath?: string;
    miniApp?: {
        useAuthorizePage?: boolean;
    };
    __usePrivacyCheck__?: boolean;
}
export interface IAppJSON extends IOriginAppJSON {
    pages: Array<string>;
    static?: IAppJSONStaticConfig[];
    "mini-ios"?: IOriginAppJSON & {
        pages?: Array<string>;
    };
    "mini-android"?: IOriginAppJSON & {
        pages?: Array<string>;
    };
    "mini-weixin"?: IOriginAppJSON & {
        pages?: Array<string>;
    };
}
export {};
