/*
 * Copyright (c) 2024-2026 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.
 */

sequenceable background_task_state_info..OHOS.BackgroundTaskMgr.BackgroundTaskStateInfo;
sequenceable continuous_task_callback_info..OHOS.BackgroundTaskMgr.ContinuousTaskCallbackInfo;
sequenceable continuous_task_info..OHOS.BackgroundTaskMgr.ContinuousTaskInfo;
sequenceable continuous_task_param..OHOS.BackgroundTaskMgr.ContinuousTaskParam;
sequenceable continuous_task_param..OHOS.BackgroundTaskMgr.ContinuousTaskParamForInner;
sequenceable continuous_task_request..OHOS.BackgroundTaskMgr.ContinuousTaskRequest;
sequenceable delay_suspend_info..OHOS.BackgroundTaskMgr.DelaySuspendInfo;
sequenceable efficiency_resource_info..OHOS.BackgroundTaskMgr.EfficiencyResourceInfo;
sequenceable resource_callback_info..OHOS.BackgroundTaskMgr.ResourceCallbackInfo;
sequenceable OHOS.IRemoteObject;
sequenceable transient_task_app_info..OHOS.BackgroundTaskMgr.TransientTaskAppInfo;

interface OHOS.BackgroundTaskMgr.IBackgroundTaskSubscriber;
interface OHOS.BackgroundTaskMgr.IExpiredCallback;
interface OHOS.BackgroundTaskMgr.IBackgroundTaskMgr {
    void RequestSuspendDelay([in] String reason, [in] IExpiredCallback expiredCallback, [out] DelaySuspendInfo delayInfo);
    void CancelSuspendDelay([in] int requestId);
    void GetRemainingDelayTime([in] int requestId, [out] int delayTime);
    void GetAllTransientTasks([out] int remainingQuota, [out] sharedptr<DelaySuspendInfo>[] list);
    void StartBackgroundRunning([in] ContinuousTaskParam taskParam, [out] int notificationId, [out] int continuousTaskId);
    void UpdateBackgroundRunning([in] ContinuousTaskParam taskParam, [out] int notificationId, [out] int continuousTaskId);
    void StopBackgroundRunning([in] String abilityName, [in] IRemoteObject abilityToken, [in] int abilityId, [in] int continuousTaskId);
    void GetAllContinuousTasks([out] ContinuousTaskInfo[] list);
    void GetAllContinuousTasks([out] sharedptr<ContinuousTaskInfo>[] list, [in] boolean includeSuspended);
    void SubscribeBackgroundTask([in] IBackgroundTaskSubscriber subscriber, [in] unsigned int flag);
    void UnsubscribeBackgroundTask([in] IBackgroundTaskSubscriber subscriber, [in] unsigned int flag);
    void GetTransientTaskApps([out] TransientTaskAppInfo[] list);
    void GetContinuousTaskApps([out] ContinuousTaskCallbackInfo[] list);
    void ApplyEfficiencyResources([in] EfficiencyResourceInfo resourceInfo);
    void ResetAllEfficiencyResources();
    void GetAllEfficiencyResources([out] EfficiencyResourceInfo[] list);
    void GetEfficiencyResourcesInfos([out] ResourceCallbackInfo[] appList, [out] ResourceCallbackInfo[] procList);
    void StopContinuousTask([in] int uid, [in] int pid, [in] unsigned int taskType, [in] String key);
    void SuspendContinuousTask([in] int uid, [in] int pid, [in] int reason, [in] String key, [in] boolean isStandby);
    void ActiveContinuousTask([in] int uid, [in] int pid, [in] String key, [in] boolean isStandby);
    void RequestBackgroundRunningForInner([in] ContinuousTaskParamForInner taskParam);
    void RequestGetContinuousTasksByUidForInner([in] int uid, [out] ContinuousTaskInfo[] list);
    void PauseTransientTaskTimeForInner([in] int uid);
    void StartTransientTaskTimeForInner([in] int uid);
    void AVSessionNotifyUpdateNotification([in] int uid, [in] int pid, [in] boolean isPublish);
    void SetBgTaskConfig([in] String configData, [in] int sourceType);
    [oneway] void SuspendContinuousAudioTask([in] int uid);
    void IsModeSupported([in] ContinuousTaskParam taskParam);
    void SetSupportedTaskKeepingProcesses([in] Set<String> processSet);
    [oneway] void SetMaliciousAppConfig([in] Set<String> maliciousAppSet);
    void RequestAuthFromUser([in] ContinuousTaskParam taskParam, [in] IExpiredCallback expiredCallback, [out] int notificationId);
    void CheckSpecialScenarioAuth([in] int appIndex, [out] unsigned int authResult, [in] int apiVersion);
    void CheckTaskAuthResult([in] String bundleName, [in] int userId, [in] int appIndex);
    void EnableContinuousTaskRequest([in] int uid, [in] boolean isEnable);
    void SetBackgroundTaskState([in] BackgroundTaskStateInfo taskParam);
    void GetBackgroundTaskState([in] BackgroundTaskStateInfo taskParam, [out] unsigned int authResult);
    void GetAllContinuousTasksBySystem([out] sharedptr<ContinuousTaskInfo>[] list);
    [oneway] void SetSpecialExemptedProcess([in] Set<String> bundleNameSet);
    void GetAllContinuousTaskApps([out] ContinuousTaskCallbackInfo[] list);
    [oneway] void SendNotificationByDeteTask([in] Set<String> taskKeys);
    void RemoveAuthRecord([in] ContinuousTaskParam taskParam);
}