/*
 * Copyright (c) 2021-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.
 */
rawdata OHOS.StorageManager.StorageFileRawData;
sequenceable UserdataDirInfo..OHOS.StorageManager.UserdataDirInfo;
sequenceable PartitionParams..OHOS.StorageManager.PartitionParams;
sequenceable PartitionInfo..OHOS.StorageManager.PartitionInfo;
sequenceable PartitionTableInfo..OHOS.StorageManager.PartitionTableInfo;
sequenceable FormatParams..OHOS.StorageManager.FormatParams;
sequenceable BurnParams..OHOS.StorageManager.BurnParams;
import ../storage_manager/IUeceActivationCallback;
sequenceable StatisticInfo..OHOS.StorageManager.NextDqBlk;
sequenceable StatisticInfo..OHOS.StorageManager.DirSpaceInfo;
sequenceable StatisticInfo..OHOS.StorageManager.UidSaInfo;
sequenceable StatisticInfo..OHOS.StorageManager.AllAppVec;
sequenceable StatisticInfo..OHOS.StorageManager.LargeFileInfo;
sequenceable StatisticInfo..OHOS.StorageManager.LargeDirInfo;

interface OHOS.StorageDaemon.IStorageDaemon{
     [ipccode 1] void Shutdown();
     [ipccode 2] void Mount([in] String volId, [in] unsigned int flags);
     [ipccode 3] void UMount([in] String volId);
     [ipccode 4] void Check([in] String volId);
     [ipccode 5] void Format([in] String volId, [in] String fsType);
     [ipccode 6] void Partition([in] String diskId, [in] int type);
     [ipccode 7] void SetVolumeDescription([in] String volId, [in] String description);
     [ipccode 10] void StartUser([in] int userId);
     [ipccode 11] void StopUser([in] int userId);
     [ipccode 8] void PrepareUserDirs([in] int userId, [in] unsigned int flags);
     [ipccode 9] void DestroyUserDirs([in] int userId,[in] unsigned int flags);
     [ipccode 12] void CompleteAddUser([in] int userId);
     // fscrypt api
     [ipccode 13] void InitGlobalKey();
     [ipccode 14] void InitGlobalUserKeys();
     [ipccode 18] void UpdateUserAuth([in] unsigned int userId, [in] unsigned long secureUid,
          [in] unsigned char[] token,[in] unsigned char[] oldSecret,[in] unsigned char[] newSecret);
     [ipccode 19] void UpdateUseAuthWithRecoveryKey([in] unsigned char[] authToken,
          [in] unsigned char[] newSecret, [in] unsigned long secureUid, [in] unsigned int userId,
          [in] List<List<unsigned char>> plainText);
     [ipccode 20] void ActiveUserKey([in] unsigned int userId, [in] unsigned char[] token,
                                     [in] unsigned char[] secret);
     [ipccode 21] void InactiveUserKey([in] unsigned int userId);
     [ipccode 22] void UpdateKeyContext([in] unsigned int userId , [in] boolean needRemoveTmpKey);
     [ipccode 26] void LockUserScreen([in] unsigned int userId);
     [ipccode 27] void UnlockUserScreen([in] unsigned int user, [in] unsigned char[] token,
                                        [in] unsigned char[] secret);
     [ipccode 28] void GetLockScreenStatus([in] unsigned int user, [out] boolean lockScreenStatus);
     [ipccode 33] void GenerateAppkey([in] unsigned int userId, [in] unsigned int hashId, [out] String keyId,
                                      [in] boolean needReSet);
     [ipccode 34] void DeleteAppkey([in] unsigned int userId, [in] String keyId);
     [ipccode 38] void CreateRecoverKey([in] unsigned int userId, [in] unsigned int userType,
                                        [in] unsigned char[] token,[in] unsigned char[] secret);
     [ipccode 39] void SetRecoverKey([in] unsigned char[] key);
     // app file share api
     [ipccode 24] int[] CreateShareFile([in] StorageFileRawData rawData,
                                        [in] unsigned int tokenId, [in] unsigned int flag);
     [oneway, ipccode 25] void DeleteShareFile([in] unsigned int tokenId, [in] StorageFileRawData rawData);
     [ipccode 29] void SetBundleQuota([in] int uid, [in] String bundleDataDirPath,
                                      [in] int limitSizeMb);
     [ipccode 30] void GetOccupiedSpace([in] int idType, [in] int id, [out] long size);
     [ipccode 35] void MountDfsDocs([in] int userId, [in] String relativePath,
          [in] String networkId, [in] String deviceId);
     [ipccode 36] void UMountDfsDocs([in] int userId, [in] String relativePath,
          [in] String networkId, [in] String deviceId);
     [ipccode 37] void GetFileEncryptStatus([in] unsigned int userId, [out] boolean isEncrypted,
                                            [in] boolean needCheckDirMount);
     // media fuse
     [ipccode 40] void MountMediaFuse([in] int userId, [out] FileDescriptor devFd);
     [ipccode 41] void UMountMediaFuse([in] int userId);
     [ipccode 42] void GetUserNeedActiveStatus([in] unsigned int userId, [out] boolean needActive);
     [ipccode 43] void MountFileMgrFuse([in] int userId, [in] String path, [out] FileDescriptor fuseFd);
     [ipccode 44] void UMountFileMgrFuse([in] int userId, [in] String path);
     [ipccode 45] void QueryUsbIsInUse([in] String diskPath, [out] boolean isInUse);
     [ipccode 46] void ResetSecretWithRecoveryKey([in] unsigned int userId, [in] unsigned int rkType,
                                                  [in] unsigned char[] key);
     [ipcincapacity 131071, ipcoutcapacity 131071, ipccode 47] void IsFileOccupied([in] String path, [in] String[] inputList,
                                      [out] String[] outputList, [out] boolean isOccupy);
     [ipccode 49] void MountDisShareFile([in] int userId, [in] OrderedMap<String, String> shareFiles);
     [ipccode 50] void UMountDisShareFile([in] int userId, [in] String networkId);
     [ipccode 51] void TryToFix([in] String volId, [in] unsigned int flags);
     [ipccode 52] void InactiveUserPublicDirKey([in] unsigned int userId);
     [ipccode 53] void QueryOccupiedSpaceForSa([out] UidSaInfo[] vec, [out] long totalSize,
         [in] OrderedMap<int, String> bundleNameAndUid, [in] int type);
     [ipccode 54] void MountUsbFuse([in] String volumeId, [out] String fsUuid, [out] FileDescriptor fuseFd);
     [ipccode 55] void RegisterUeceActivationCallback([in] IUeceActivationCallback ueceCallback);
     [ipccode 56] void UnregisterUeceActivationCallback();
     [ipccode 57] void CreateUserDir([in] String path, [in] unsigned int mode,
                                     [in] unsigned int uid, [in] unsigned int gid);
     [ipccode 59] void SetDirEncryptionPolicy([in] unsigned int userId, [in] String dirPath, [in] unsigned int level);
     [ipccode 60] void UpdateUserPublicDirPolicy([in] unsigned int userId);
     [ipccode 61] void GetDqBlkSpacesByUids([in] int[] uids, [out] NextDqBlk[] dqBlks);
     [ipccode 62] void EraseAllUserEncryptedKeys([in] int[] localIdList);
     [ipccode 63] void GetDirListSpace([in] DirSpaceInfo[] inDirs, [out] DirSpaceInfo[] outDirs);
     [ipccode 64] void SetStopScanFlag([in] boolean stop);
     [ipccode 65] void GetAncoSizeData([out] String outExtraData);
     [ipccode 66] void GetDataSizeByPath([in] String path, [out] long size);
     [ipccode 67] void GetRmgResourceSize([in] String rgmName, [out] unsigned long totalSize);
     [ipccode 68] void ListUserdataDirInfo([out] List<UserdataDirInfo> dirs);
     [ipccode 70] void GetSystemDataSize([out] long otherUidSizeSum);
     [ipccode 71] void GetDirListSpaceByPaths([in] String[] paths, [in] int[] uids,
                                             [out] DirSpaceInfo[] resultDirs, [out] LargeFileInfo[] largeFiles,
                                             [out] LargeDirInfo[] largeDirs);
     
     //disk crypt api
     [ipccode 72] void  Encrypt([in] String volumeId, [in] String pazzword);
     [ipccode 73] void  GetCryptProgressById([in] String volumeId, [out] int progress);
     [ipccode 74] void  GetCryptUuidById([in] String volumeId, [out] String uuid);
     [ipccode 75] void  BindRecoverKeyToPasswd([in] String volumeId,
                                             [in] String pazzword,
                                             [in] String recoverKey);
     [ipccode 76] void  UpdateCryptPasswd([in] String volumeId,
                                        [in] String pazzword,
                                        [in] String newPazzword);
     [ipccode 77] void  ResetCryptPasswd([in] String volumeId,
                                        [in] String recoverKey,
                                        [in] String newPazzword);
     [ipccode 78] void  VerifyCryptPasswd([in] String volumeId, [in] String pazzword);
     [ipccode 79] void  Unlock([in] String volumeId, [in] String pazzword);
     [ipccode 80] void  Decrypt([in] String volumeId, [in] String pazzword);
     [ipccode 81] void  GetOddCapacity([in] String volumeUuid, [out] long totalSize, [out] long freeSize);
     [ipccode 86] void  GetPartitionTable([in] String diskId, [out] PartitionTableInfo partitionTableInfo);
     [ipccode 87] void  CreatePartition([in] String diskId, [in] PartitionParams partitionParams);
     [ipccode 88] void  DeletePartition([in] String diskId, [in] unsigned int partitionNum);
     [ipccode 89] void  FormatPartition([in] String diskId, [in] unsigned int partitionNum, [in] FormatParams formatParams);
     [ipccode 201] void CreateBlockDeviceNode([in] String devPath,
                                              [in] unsigned int mode,
                                              [in] int major,
                                              [in] int minor);
     [ipccode 202] void DestroyBlockDeviceNode([in] String devPath);
     [ipccode 203] void ReadPartitionTable([in] String devPath,
                                           [out] String output,
                                           [out] int maxVolume);
     [ipccode 204] void Mount([in] String devPath,
                              [in] String mountPath,
                              [in] String fsType,
                              [in] unsigned long mountFlags,
                              [in] String mountData);
     [ipccode 205] void Unmount([in] String mountPath,
                                [in] String fsType,
                                [in] boolean force);
     [ipccode 206] void FormatVolume([in] String devPath,
                                     [in] String fsType);
     [ipccode 207] void Check([in] String devPath,
                              [in] String fsType,
                              [in] boolean autoFix);
     [ipccode 208] void Repair([in] String devPath,
                              [in] String fsType);
     [ipccode 209] void SetLabel([in] String devPath,
                                 [in] String fsType,
                                 [in] String label);
     [ipccode 210] void ReadMetadata([in] String devPath,
                                     [out] String uuid,
                                     [out] String type,
                                     [out] String label);
     [ipccode 211] void MountFuseDevice([in] String mountPath,
                                        [out] FileDescriptor fuseFd);
     [ipccode 212] void Partition([in] String diskPath,
                                  [in] String partitionType);
     [ipccode 213] void GetBlockInfoByType([in] String type, [in] String diskId, [out] String blockInfos);
     [ipccode 214] void GetPartitionTableInfo([in] String devPath, [out] String execRet);
     [ipccode 215] void CreatePartition([in] String devPath,
                                        [in] int partitionNum,
                                        [in] long startSector,
                                        [in] long endSector,
                                        [in] String typeCode);
     [ipccode 216] void DeletePartitionInfo([in] String devPath, [in] String diskId, [in] int partitionNum);
     [ipccode 217] void FormatPartition([in] String devPath,
                                        [in] String fsType,
                                        [in] String volumeName,
                                        [in] boolean quickFormat);
     [ipccode 221] void UMountDisShareFile([in] String[] distributeDirs);
     [ipccode 251] void GetCapacity([in] String devPath, [out] long totalSize, [out] long freeSize);
     [ipccode 252] void EjectCD([in] String devPath);
     [ipccode 253] void QueryCDStatus([in] String devPath, [out] int status);
     [ipccode 254] void Erase([in] String devPath);
     [ipccode 255] void Eject([in] String devName);
     [ipccode 256] void CreateIsoImage([in] String devPath,
                                       [in] String filePath,
                                       [in] String fsType,
                                       [in] String mountPath);
     [ipccode 257] void Burn([in] String devPath, [in] String burnOptions, [in] String fsType);
     [ipccode 258] void GetVolumeOpProcess([in] String volumeId, [out] int process);
     [ipccode 259] void VerifyBurnData([in] String devPath, [in] int verType);
}