/*
 * Copyright (c) 2025 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.
 */
package OHOS.SysInstaller;
sequenceable OHOS.SysInstaller.BufferInfoParcel;
import Types;
import ISysInstallerCallback;
option_stub_hooks on;

interface OHOS.SysInstaller.ISysInstaller {
    void SysInstallerInit([in] String taskId, [in] boolean bStreamUpgrade);
    [oneway] void StartUpdatePackageZip([in] String taskId, [in] String pkgPath);
    void StartStreamUpdate();
    void StopStreamUpdate();
    void ProcessStreamData([in] BufferInfoParcel bufferParcel);
    void SetUpdateCallback([in] String taskId, [in] ISysInstallerCallback updateCallback);
    void GetUpdateStatus([in] String taskId);
    void StartUpdateParaZip([in] String taskId, [in] String pkgPath, [in] String location, [in] String cfgDir);
    void StartDeleteParaZip([in] String taskId, [in] String location, [in] String cfgDir);
    void AccDecompressAndVerifyPkg([in] String taskId, [in] String srcPath, [in] String dstPath, [in] unsigned int type);
    void AccDeleteDir([in] String taskId, [in] String dstPath);
    void CancelUpdateVabPackageZip([in] String taskId);
    [oneway] void StartUpdateVabPackageZip([in] String taskId, [in] List<String> pkgPath);
    void StartUpdateSingularPackageZip([in] String taskId, [in] String pkgPath, [in] String type);
    [oneway] void StartVabMerge([in] String taskId);
    void ClearVabMetadataAndCow();
    void VabUpdateActive([in] VabActiveMode mode);
    void GetMetadataResult([in] String action, [out] boolean metadataResult);
    void GetPartitionAvailableSize([in] OrderedMap<String, unsigned long> dtsCowsSize,
        [in] OrderedMap<String, unsigned long> dtsImgsSize, [in] PartitionInfo partitionInfo,
        [out] unsigned long availSize);
    void CreateVabSnapshotCowImg([in] VabCowInfo cowInfo, [out] unsigned long createdSize, [out] boolean isCreated);
    void GetUpdateResult([in] String taskId, [in] String taskType, [in] String resultType, [out] String updateResult);
    void ExitSysInstaller();
    void StartAbSync();
    void SetAiMergeState();
    void SetUpdateVabMode([in] String taskId, [in] UpdateVabMode mode);
    void StartUpdateABPackageZip([in] String taskId, [in] List<String> pkgPath);
    
    void InstallCloudRom([in] String taskId, [in] InstallMode installMode, [in] List<FeatureInfo> featureInfos, [in] RebootStatus rebootStatus);
    void UninstallCloudRom([in] String taskId, [in] List<FeatureInfo> featureInfos, [in] RebootStatus rebootStatus);
    void GetFeatureStatus([in] List<FeatureInfo> featureInfos, [inout] List<FeatureStatus> statusInfos);
    void GetAllFeatureStatus([in] String baseVersion, [inout] List<FeatureStatus> statusInfos);
    void ClearCloudRom([in] String baseVersion, [in] String featureName);
    void UpdateCloudRomVersion([in] String baseVersion);
    void ClearVabPatch();
    void GetPartitionStashSize([in] String taskId, [in] List<String> pkgPaths, [out] unsigned long stashSize);
}