export declare namespace IMiniApp {
    type IBuileType = 'LOCAL' | 'CLOUD';
    type IDeviceType = 'simulator' | 'device' | 'catalyst';
    type ISignType = 'appleId' | 'certificate';
    type ISelfCertificate = {
        certificatePath?: string;
        certificatePassword?: string;
        profilePath?: string;
        isPublish?: boolean;
    };
    interface IAndroidCertificate {
        keyStore: string;
        storePass: string;
        keyPass: string;
        keyAlias: string;
    }
    interface ISignCertficateInfo {
        signType: ISignType;
        appleIdInfo: {
            appleId?: string;
            password?: string;
        };
        selfCertificate: ISelfCertificate;
        androidCertificate: IAndroidCertificate;
    }
    interface IAndroidRunLocalSimpleArgs {
        buildType: IBuileType;
        device: string;
    }
    type IAndroidRunLocalArgs = IAndroidRunLocalSimpleArgs & {
        projectPath: string;
        variant: string;
        mainActivity: string;
    };
    interface IAndroidRunCloudSimpleArgs {
        buildType: IBuileType;
        deviceType: IDeviceType;
        device: string;
    }
    type IAndroidRunCloudArgs = IAndroidRunCloudSimpleArgs & {
        projectPath: string;
    };
    interface IAndroidBuildLocalSimpleArgs {
        buildType: IBuileType;
    }
    type IAndroidBuildLocalArgs = IAndroidBuildLocalSimpleArgs & {
        projectPath: string;
        variant: string;
    };
    interface IAndroidBuildPluginArgs {
        projectPath: string;
        pluginId: string;
        gradleArgs?: string[];
    }
    interface IAndroidBuildCloudSimpleArgs {
        buildType: IBuileType;
    }
    type IAndroidBuildCloudArgs = IAndroidBuildCloudSimpleArgs & {
        projectPath: string;
        variant: string;
    };
    interface AndroidProjectConfig {
        sourceDir: string;
        appName: string;
        packageName: string;
    }
    type AndroidProjectParams = {
        sourceDir?: string;
        appName?: string;
        manifestPath?: string;
        packageName?: string;
    };
    type IIOSPluginDir = {
        pluginId: string;
        dir: string;
    };
    type IIOSRunLocalSimpleArgs = {
        buildType: IBuileType;
        device?: string;
        udid?: string;
    };
    type IIOSRunLocalArgs = IIOSRunLocalSimpleArgs & {
        projectPath: string;
        scheme: string;
    };
    type ITheme = 'Light' | 'LightSpecial' | 'Dark' | 'DarkSpecial' | 'Default';
    interface IIOSRunCloudSimpleArgs {
        buildType: IBuileType;
        deviceType: IDeviceType;
        device?: string;
        udid?: string;
        demoIpaPath: string;
        sdkPath: string;
        miniappCacheDirPath: string;
        arch?: string;
        bindingInfo: any;
        certificateInfo: ISignCertficateInfo;
        pluginDirList: IIOSPluginDir[];
        theme: ITheme;
        i18nInfo: II18NInfo;
        debugInfo?: IDebugInfo;
    }
    type IIOSRunCloudArgs = IIOSRunCloudSimpleArgs & {
        projectPath: string;
    };
    type IIOSBuildLocalSimpleArgs = {
        buildType: IBuileType;
        output: string;
    };
    type IIOSBuildLocalArgs = IIOSBuildLocalSimpleArgs & {
        projectPath: string;
        scheme: string;
        exportOptionPlistPath?: string;
    };
    type CodesignIpaArgs = {
        projectPath: string;
        demoIpaPath: string;
        miniappCacheDir: string;
        opts: {
            output: string;
            outputAppWithName?: string;
            bundleId?: string;
            certificate?: string;
            profile?: string;
            tpnsProfile?: string;
        };
        isUsingTpush: boolean;
        _inLandun?: boolean;
    };
    type ITranslations = {
        common?: Record<string, string>;
        ios?: Record<string, string>;
        android?: Record<string, string>;
    };
    type II18NInfo = Record<string, ITranslations>;
    type IDebugInfo = {
        debugType: 'HotReload' | 'Release' | 'RemoteDebug' | 'Debug';
    };
    type IIOSBuildCloudSimpleArgs = {
        buildType: IBuileType;
        output: string;
        demoIpaPath: string;
        sdkPath: string;
        miniappCacheDirPath: string;
        arch?: string;
        bindingInfo: any;
        certificateInfo: ISignCertficateInfo;
        pluginDirList: IIOSPluginDir[];
        theme: ITheme;
        i18nInfo: II18NInfo;
        debugInfo?: IDebugInfo;
    };
    type IIOSBuildCloudArgs = IIOSBuildCloudSimpleArgs & {
        projectPath: string;
        inLandun?: boolean;
    };
    type IIOSBuildCloudGenMaterialArgs = IIOSBuildCloudArgs & {
        matrialDistPath: string;
    };
    type IIOSBuildExportOptionPlist = {
        compileBitcode?: boolean;
        destination?: 'export' | 'upload';
        method?: 'app-store' | 'validation' | 'ad-hoc' | 'package' | 'enterprise' | 'development' | 'developer-id' | 'mac-application';
        distributionBundleIdentifier?: string;
        teamID: string;
        provisioningProfiles: {
            key: string;
            value: string;
        };
        signingStyle?: 'manual' | 'automatic';
        signingCertificate?: string;
        thinning?: boolean;
        stripSwiftSymbols?: boolean;
        uploadSymbols?: boolean;
        generateAppStoreInformation?: boolean;
    };
    interface IOSProjectParams {
        sourceDir?: string;
    }
    interface IOSProjectConfig {
        sourceDir: string;
        name: string;
        isWorkspace: boolean;
    }
    type IOSScriptPhase = ({
        script: string;
    } | {
        path: string;
    }) & {
        name: string;
        shell_path?: string;
        input_files?: string[];
        output_files?: string[];
        input_file_lists?: string[];
        output_file_lists?: string[];
        show_env_vars_in_log?: boolean;
        dependency_file?: string;
        execution_position?: 'before_compile' | 'after_compile' | 'any';
    };
    interface IIOSAppInfo {
        sdk: string;
        appPath: string;
    }
    type Prompt = any;
    type CommandFunction<Args = Object> = (argv: string[], ctx: IAppProjectConfig, args: Args) => Promise<void> | void;
    type OptionValue = string | boolean | number;
    type CommandOption<T = (ctx: IAppProjectConfig) => OptionValue> = {
        name: string;
        description?: string;
        parse?: (val: string) => any;
        default?: OptionValue | T;
    };
    type DetachedCommandFunction<Args = Object> = (argv: string[], args: Args) => Promise<void> | void;
    type Command<IsDetached extends boolean = false> = {
        name: string;
        description?: string;
        detached?: IsDetached;
        examples?: Array<{
            desc: string;
            cmd: string;
        }>;
        pkg?: {
            name: string;
            version: string;
        };
        func: IsDetached extends true ? DetachedCommandFunction : CommandFunction;
        options?: Array<CommandOption<IsDetached extends true ? () => OptionValue : (ctx: IAppProjectConfig) => OptionValue>>;
    };
    type DetachedCommand = Command<true>;
    interface IAppProjectConfig {
        project: ProjectConfig;
    }
    type AndroidProject = NonNullable<IAppProjectConfig['project']['android']>;
    interface PlatformConfig<ProjectConfig, ProjectParams> {
        npmPackageName?: string;
        projectConfig: (projectRoot: string, projectParams: ProjectParams | void) => ProjectConfig | void;
    }
    type AndroidPlatformConfig = PlatformConfig<AndroidProjectConfig, AndroidProjectParams>;
    type IOSPlatformConfig = PlatformConfig<IOSProjectConfig, IOSProjectParams>;
    type ProjectConfig = {
        android?: Exclude<ReturnType<AndroidPlatformConfig['projectConfig']>, void>;
        ios?: Exclude<ReturnType<IOSPlatformConfig['projectConfig']>, void>;
        [key: string]: any;
    };
    interface IOSDevice {
        availability?: string;
        state?: string;
        isAvailable?: boolean;
        name: string;
        udid: string;
        version?: string;
        availabilityError?: string;
        type?: IDeviceType;
        booted?: boolean;
    }
    interface AndroidDevice {
        name: string;
        type?: IDeviceType;
        attach?: boolean;
    }
    interface IBuildPluginIOSFrameworkArgs {
        projectPath: string;
        pluginId: string;
        buildShellPath: string;
    }
}
