// @ts-nocheck
/*
 * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License"),
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * @file
 * @kit AbilityKit
 */
import UIAbilityContext from './application/UIAbilityContext';
import Want from './@ohos.app.ability.Want';
/**
 * This module provides the capability of app recovery.
 * You can use this capability to save state and restart the application
 * which let end user continue their workflow when app error occurs.
 * This api support restart the app when js crash or app freeze occurs currently.
 *
 * @namespace appRecovery
 * @syscap SystemCapability.Ability.AbilityRuntime.Core
 * @since 9
 */
/**
 * This module provides the capability of app recovery.
 * You can use this capability to save state and restart the application
 * which let end user continue their workflow when app error occurs.
 * This api support restart the app when js crash or app freeze occurs currently.
 *
 * @namespace appRecovery
 * @syscap SystemCapability.Ability.AbilityRuntime.Core
 * @atomicservice
 * @since 11
 */
declare namespace appRecovery {
    /**
     * The flag that determines when to restart you app.
     *
     * @enum { number }
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @since 9
     */
    /**
     * The flag that determines when to restart you app.
     *
     * @enum { number }
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @atomicservice
     * @since 11
     */
    enum RestartFlag {
        /**
         * No restart restrictions.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @since 9
         */
        /**
         * No restart restrictions.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @atomicservice
         * @since 11
         */
        ALWAYS_RESTART = 0,
        /**
         * Restart if current app process encounter uncaught js/ts/ets exception.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @since 9
         */
        /**
         * Restart if current app process encounter uncaught js/ts/ets exception.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @atomicservice
         * @since 11
         */
        RESTART_WHEN_JS_CRASH = 0x0001,
        /**
         * Restart if the main thread of current app process block more than 6 seconds.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @since 9
         */
        /**
         * Restart if the main thread of current app process block more than 6 seconds.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @atomicservice
         * @since 11
         */
        RESTART_WHEN_APP_FREEZE = 0x0002,
        /**
         * Do not restart in any scenario.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @since 9
         */
        /**
         * Do not restart in any scenario.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @atomicservice
         * @since 11
         */
        NO_RESTART = 0xFFFF
    }
    /**
     * The flag that determines when to save ability state.
     * When start saving ability state, the { ohos.app.ability.UiAbility.onSaveState } will be called and
     * the page stack of current ability will be saved automatically.
     *
     * @enum { number }
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @since 9
     */
    /**
     * The flag that determines when to save ability state.
     * When start saving ability state, the { ohos.app.ability.UiAbility.onSaveState } will be called and
     * the page stack of current ability will be saved automatically.
     *
     * @enum { number }
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @atomicservice
     * @since 11
     */
    enum SaveOccasionFlag {
        /**
         * Saving ability state when an error occurs.
         * The error in current situation has the same semantic with { errorManager } defines
         * which means the state that the application cannot continue to work but allows developer to handle.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @since 9
         */
        /**
         * Saving ability state when an error occurs.
         * The error in current situation has the same semantic with { errorManager } defines
         * which means the state that the application cannot continue to work but allows developer to handle.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @atomicservice
         * @since 11
         */
        SAVE_WHEN_ERROR = 0x0001,
        /**
         * Saving ability state when ability is in background.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @since 9
         */
        /**
         * Saving ability state when ability is in background.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @atomicservice
         * @since 11
         */
        SAVE_WHEN_BACKGROUND = 0x0002
    }
    /**
     * The flag that determines how to save the ability state.
     *
     * @enum { number }
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @since 9
     */
    /**
     * The flag that determines how to save the ability state.
     *
     * @enum { number }
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @atomicservice
     * @since 11
     */
    enum SaveModeFlag {
        /**
         * Save state to file immediately.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @since 9
         */
        /**
         * Save state to file immediately.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @atomicservice
         * @since 11
         */
        SAVE_WITH_FILE = 0x0001,
        /**
         * Keep state in memory and flush to file when error occurs or { restartApp } is invoked.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @since 9
         */
        /**
         * Keep state in memory and flush to file when error occurs or { restartApp } is invoked.
         *
         * @syscap SystemCapability.Ability.AbilityRuntime.Core
         * @atomicservice
         * @since 11
         */
        SAVE_WITH_SHARED_MEMORY = 0x0002
    }
    /**
     * Enable appRecovery function.
     *
     * @param { RestartFlag } [restart] - The flag that determines the restart cases of your app, default value is { ALWAYS_RESTART }.
     * @param { SaveOccasionFlag } [saveOccasion] - The flag that determines when to save ability state, default value is { SAVE_WHEN_ERROR }.
     * @param { SaveModeFlag } [saveMode] - The flag that determines how to save the ability state, default value is { SAVE_WITH_FILE }.
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @StageModelOnly
     * @since 9
     */
    /**
     * Enable appRecovery function.
     *
     * @param { RestartFlag } [restart] - The flag that determines the restart cases of your app, default value is { ALWAYS_RESTART }.
     * @param { SaveOccasionFlag } [saveOccasion] - The flag that determines when to save ability state, default value is { SAVE_WHEN_ERROR }.
     * @param { SaveModeFlag } [saveMode] - The flag that determines how to save the ability state, default value is { SAVE_WITH_FILE }.
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @StageModelOnly
     * @atomicservice
     * @since 11
     */
    function enableAppRecovery(restart?: RestartFlag, saveOccasion?: SaveOccasionFlag, saveMode?: SaveModeFlag): void;
    /**
     * Restart current process and launch the first ability(the entry ability in most cases) of current process.
     * The previous saved state will be filled in the { want.wantParams } of { UIAbility.onCreate } interface.
     * and the { param } of { UIAbility.onCreate } will be set to APP_RECOVERY.
     *
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @StageModelOnly
     * @since 9
     */
    /**
     * Restart current process and launch the first ability(the entry ability in most cases) of current process.
     * The previous saved state will be filled in the { want.wantParams } of { UIAbility.onCreate } interface.
     * and the { param } of { UIAbility.onCreate } will be set to APP_RECOVERY.
     *
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @StageModelOnly
     * @atomicservice
     * @since 11
     */
    function restartApp(): void;
    /**
     * Set the want that will be used when app restart initiated by appRecovery.
     *
     * @param { Want } want - that defines the ability you want to start
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @StageModelOnly
     * @since 10
     */
    /**
     * Set the want that will be used when app restart initiated by appRecovery.
     *
     * @param { Want } want - that defines the ability you want to start
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @StageModelOnly
     * @atomicservice
     * @since 11
     */
    function setRestartWant(want: Want): void;
    /**
     * Actively save application state.
     * The ability framework will call { UIAbility.onSaveState } of first launched ability and
     * persist state as { saveOccasion } flag from { enableAppRecovery } interface.
     *
     * @returns { boolean } true if save data successfully, otherwise false.
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @StageModelOnly
     * @since 9
     */
    /**
     * Actively save application state.
     * The ability framework will call { UIAbility.onSaveState } of first launched ability and
     * persist state as { saveOccasion } flag from { enableAppRecovery } interface.
     *
     * @returns { boolean } true if save data successfully, otherwise false.
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @StageModelOnly
     * @atomicservice
     * @since 11
     */
    function saveAppState(): boolean;
    /**
     * Save the ability state according to the context.
     *
     * @param { UIAbilityContext } [context] - context indicates the ability context you want to save state.
     * If context is not specified, the onSaveState will be invoked on all the recoverable abilities in current process.
     * @returns { boolean } true if save data successfully, otherwise false.
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @StageModelOnly
     * @since 10
     */
    /**
     * Save the ability state according to the context.
     *
     * @param { UIAbilityContext } [context] - context indicates the ability context you want to save state.
     * If context is not specified, the onSaveState will be invoked on all the recoverable abilities in current process.
     * @returns { boolean } true if save data successfully, otherwise false.
     * @syscap SystemCapability.Ability.AbilityRuntime.Core
     * @StageModelOnly
     * @atomicservice
     * @since 11
     */
    function saveAppState(context?: UIAbilityContext): boolean;
}
export default appRecovery;
