161847f8eSopenharmony_ci/*
261847f8eSopenharmony_ci * Copyright (C) 2022-2024 Huawei Device Co., Ltd.
361847f8eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
461847f8eSopenharmony_ci * you may not use this file except in compliance with the License.
561847f8eSopenharmony_ci * You may obtain a copy of the License at
661847f8eSopenharmony_ci *
761847f8eSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
861847f8eSopenharmony_ci *
961847f8eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1061847f8eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1161847f8eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1261847f8eSopenharmony_ci * See the License for the specific language governing permissions and
1361847f8eSopenharmony_ci * limitations under the License.
1461847f8eSopenharmony_ci */
1561847f8eSopenharmony_ci
1661847f8eSopenharmony_ci/**
1761847f8eSopenharmony_ci * @file
1861847f8eSopenharmony_ci * @kit CoreFileKit
1961847f8eSopenharmony_ci */
2061847f8eSopenharmony_ci
2161847f8eSopenharmony_ciimport type { AsyncCallback, Callback } from './@ohos.base';
2261847f8eSopenharmony_ciimport type wantConstant from './@ohos.ability.wantConstant';
2361847f8eSopenharmony_ci
2461847f8eSopenharmony_ci/**
2561847f8eSopenharmony_ci * Provides fileshare APIS
2661847f8eSopenharmony_ci *
2761847f8eSopenharmony_ci * @namespace fileShare
2861847f8eSopenharmony_ci * @syscap SystemCapability.FileManagement.AppFileService
2961847f8eSopenharmony_ci * @since 9
3061847f8eSopenharmony_ci */
3161847f8eSopenharmony_cideclare namespace fileShare {
3261847f8eSopenharmony_ci  /**
3361847f8eSopenharmony_ci   * Enumerates the uri operate mode types.
3461847f8eSopenharmony_ci   *
3561847f8eSopenharmony_ci   * @enum { number } OperationMode
3661847f8eSopenharmony_ci   * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
3761847f8eSopenharmony_ci   * @since 11
3861847f8eSopenharmony_ci   */
3961847f8eSopenharmony_ci  export enum OperationMode {
4061847f8eSopenharmony_ci    /**
4161847f8eSopenharmony_ci     * Indicates read permissions.
4261847f8eSopenharmony_ci     *
4361847f8eSopenharmony_ci     * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
4461847f8eSopenharmony_ci     * @since 11
4561847f8eSopenharmony_ci     */
4661847f8eSopenharmony_ci    READ_MODE = 0b1,
4761847f8eSopenharmony_ci
4861847f8eSopenharmony_ci    /**
4961847f8eSopenharmony_ci     * Indicates write permissions.
5061847f8eSopenharmony_ci     *
5161847f8eSopenharmony_ci     * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
5261847f8eSopenharmony_ci     * @since 11
5361847f8eSopenharmony_ci     */
5461847f8eSopenharmony_ci    WRITE_MODE = 0b10,
5561847f8eSopenharmony_ci  }
5661847f8eSopenharmony_ci
5761847f8eSopenharmony_ci  /**
5861847f8eSopenharmony_ci   * Enumerates the error code of the permission policy for the URI operation.
5961847f8eSopenharmony_ci   *
6061847f8eSopenharmony_ci   * @enum { number } PolicyErrorCode
6161847f8eSopenharmony_ci   * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
6261847f8eSopenharmony_ci   * @since 11
6361847f8eSopenharmony_ci   */
6461847f8eSopenharmony_ci  export enum PolicyErrorCode {
6561847f8eSopenharmony_ci    /**
6661847f8eSopenharmony_ci     * Indicates that the policy is not allowed to be persisted.
6761847f8eSopenharmony_ci     *
6861847f8eSopenharmony_ci     * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
6961847f8eSopenharmony_ci     * @since 11
7061847f8eSopenharmony_ci     */
7161847f8eSopenharmony_ci    PERSISTENCE_FORBIDDEN = 1,
7261847f8eSopenharmony_ci
7361847f8eSopenharmony_ci    /**
7461847f8eSopenharmony_ci     * Indicates that the mode of this policy is invalid.
7561847f8eSopenharmony_ci     *
7661847f8eSopenharmony_ci     * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
7761847f8eSopenharmony_ci     * @since 11
7861847f8eSopenharmony_ci     */
7961847f8eSopenharmony_ci    INVALID_MODE = 2,
8061847f8eSopenharmony_ci
8161847f8eSopenharmony_ci    /**
8261847f8eSopenharmony_ci     * Indicates that the path of this policy is invalid.
8361847f8eSopenharmony_ci     *
8461847f8eSopenharmony_ci     * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
8561847f8eSopenharmony_ci     * @since 11
8661847f8eSopenharmony_ci     */
8761847f8eSopenharmony_ci    INVALID_PATH = 3,
8861847f8eSopenharmony_ci
8961847f8eSopenharmony_ci    /**
9061847f8eSopenharmony_ci     * Indicates that the permission is not persistent.
9161847f8eSopenharmony_ci     *
9261847f8eSopenharmony_ci     * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
9361847f8eSopenharmony_ci     * @since 12
9461847f8eSopenharmony_ci     */
9561847f8eSopenharmony_ci    PERMISSION_NOT_PERSISTED = 4,
9661847f8eSopenharmony_ci  }
9761847f8eSopenharmony_ci
9861847f8eSopenharmony_ci  /**
9961847f8eSopenharmony_ci   * Failed policy result on URI.
10061847f8eSopenharmony_ci   *
10161847f8eSopenharmony_ci   * @typedef { object }
10261847f8eSopenharmony_ci   * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
10361847f8eSopenharmony_ci   * @since 11
10461847f8eSopenharmony_ci   */
10561847f8eSopenharmony_ci  export type PolicyErrorResult = {
10661847f8eSopenharmony_ci    /**
10761847f8eSopenharmony_ci     * Indicates the failed uri of the policy information.
10861847f8eSopenharmony_ci     *
10961847f8eSopenharmony_ci     * @type { string }
11061847f8eSopenharmony_ci     * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
11161847f8eSopenharmony_ci     * @since 11
11261847f8eSopenharmony_ci     */
11361847f8eSopenharmony_ci    uri: string;
11461847f8eSopenharmony_ci
11561847f8eSopenharmony_ci    /**
11661847f8eSopenharmony_ci     * Indicates the error code of the failure in the policy information.
11761847f8eSopenharmony_ci     *
11861847f8eSopenharmony_ci     * @type { PolicyErrorCode }
11961847f8eSopenharmony_ci     * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
12061847f8eSopenharmony_ci     * @since 11
12161847f8eSopenharmony_ci     */
12261847f8eSopenharmony_ci    code: PolicyErrorCode;
12361847f8eSopenharmony_ci
12461847f8eSopenharmony_ci    /**
12561847f8eSopenharmony_ci     * Indicates the reason of the failure in the policy information.
12661847f8eSopenharmony_ci     *
12761847f8eSopenharmony_ci     * @type { string }
12861847f8eSopenharmony_ci     * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
12961847f8eSopenharmony_ci     * @since 11
13061847f8eSopenharmony_ci     */
13161847f8eSopenharmony_ci    message: string;
13261847f8eSopenharmony_ci  };
13361847f8eSopenharmony_ci
13461847f8eSopenharmony_ci  /**
13561847f8eSopenharmony_ci   * Policy information to manager permissions on a URI.
13661847f8eSopenharmony_ci   *
13761847f8eSopenharmony_ci   * @interface PolicyInfo
13861847f8eSopenharmony_ci   * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
13961847f8eSopenharmony_ci   * @since 11
14061847f8eSopenharmony_ci   */
14161847f8eSopenharmony_ci  export interface PolicyInfo {
14261847f8eSopenharmony_ci    /**
14361847f8eSopenharmony_ci     * Indicates the uri of the policy information.
14461847f8eSopenharmony_ci     *
14561847f8eSopenharmony_ci     * @type { string }
14661847f8eSopenharmony_ci     * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
14761847f8eSopenharmony_ci     * @since 11
14861847f8eSopenharmony_ci     */
14961847f8eSopenharmony_ci    uri: string;
15061847f8eSopenharmony_ci
15161847f8eSopenharmony_ci    /**
15261847f8eSopenharmony_ci     * Indicates the mode of operation for the URI, example { OperationMode.READ_MODE } or { OperationMode.READ_MODE | OperationMode.WRITE_MODE }
15361847f8eSopenharmony_ci     *
15461847f8eSopenharmony_ci     * @type { number }
15561847f8eSopenharmony_ci     * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
15661847f8eSopenharmony_ci     * @since 11
15761847f8eSopenharmony_ci     */
15861847f8eSopenharmony_ci    operationMode: number;
15961847f8eSopenharmony_ci  }
16061847f8eSopenharmony_ci
16161847f8eSopenharmony_ci  /**
16261847f8eSopenharmony_ci   * Provides grant uri permission for app
16361847f8eSopenharmony_ci   *
16461847f8eSopenharmony_ci   * @permission ohos.permission.WRITE_MEDIA
16561847f8eSopenharmony_ci   * @param { string } uri uri
16661847f8eSopenharmony_ci   * @param { string } bundleName bundleName
16761847f8eSopenharmony_ci   * @param { wantConstant.Flags } flag wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION or wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION
16861847f8eSopenharmony_ci   * @param { AsyncCallback<void> } callback
16961847f8eSopenharmony_ci   * @throws { BusinessError } 201 - Permission verification failed
17061847f8eSopenharmony_ci   * @throws { BusinessError } 202 - The caller is not a system application
17161847f8eSopenharmony_ci   * @throws { BusinessError } 401 - The input parameter is invalid.Possible causes:1.Mandatory parameters are left unspecified;
17261847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.
17361847f8eSopenharmony_ci   * @throws { BusinessError } 143000001 - IPC error
17461847f8eSopenharmony_ci   * @syscap SystemCapability.FileManagement.AppFileService
17561847f8eSopenharmony_ci   * @systemapi
17661847f8eSopenharmony_ci   * @since 9
17761847f8eSopenharmony_ci   */
17861847f8eSopenharmony_ci  function grantUriPermission(
17961847f8eSopenharmony_ci    uri: string,
18061847f8eSopenharmony_ci    bundleName: string,
18161847f8eSopenharmony_ci    flag: wantConstant.Flags,
18261847f8eSopenharmony_ci    callback: AsyncCallback<void>
18361847f8eSopenharmony_ci  ): void;
18461847f8eSopenharmony_ci
18561847f8eSopenharmony_ci  /**
18661847f8eSopenharmony_ci   * Provides grant uri permission for app
18761847f8eSopenharmony_ci   *
18861847f8eSopenharmony_ci   * @permission ohos.permission.WRITE_MEDIA
18961847f8eSopenharmony_ci   * @param { string } uri uri
19061847f8eSopenharmony_ci   * @param { string } bundleName bundleName
19161847f8eSopenharmony_ci   * @param { wantConstant.Flags } flag wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION or wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION
19261847f8eSopenharmony_ci   * @returns { Promise<void> } no callback return Promise otherwise return void
19361847f8eSopenharmony_ci   * @throws { BusinessError } 201 - Permission verification failed
19461847f8eSopenharmony_ci   * @throws { BusinessError } 202 - The caller is not a system application
19561847f8eSopenharmony_ci   * @throws { BusinessError } 401 - The input parameter is invalid.Possible causes:1.Mandatory parameters are left unspecified;
19661847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.
19761847f8eSopenharmony_ci   * @throws { BusinessError } 143000001 - IPC error
19861847f8eSopenharmony_ci   * @syscap SystemCapability.FileManagement.AppFileService
19961847f8eSopenharmony_ci   * @systemapi
20061847f8eSopenharmony_ci   * @since 9
20161847f8eSopenharmony_ci   */
20261847f8eSopenharmony_ci  function grantUriPermission(uri: string, bundleName: string, flag: wantConstant.Flags): Promise<void>;
20361847f8eSopenharmony_ci
20461847f8eSopenharmony_ci  /**
20561847f8eSopenharmony_ci   * Set persistence permissions for the URI
20661847f8eSopenharmony_ci   *
20761847f8eSopenharmony_ci   * @permission ohos.permission.FILE_ACCESS_PERSIST
20861847f8eSopenharmony_ci   * @param { Array<PolicyInfo> } policies - Policy information to grant permission on URIs.
20961847f8eSopenharmony_ci   * @returns { Promise<void> } the promise returned by the function.
21061847f8eSopenharmony_ci   * @throws { BusinessError } 201 - Permission verification failed, usually the result returned by VerifyAccessToken.
21161847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error.Possible causes:1.Mandatory parameters are left unspecified;
21261847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.
21361847f8eSopenharmony_ci   * @throws { BusinessError } 801 - Capability not supported.
21461847f8eSopenharmony_ci   * @throws { BusinessError } 13900001 - Operation not permitted.
21561847f8eSopenharmony_ci   * @throws { BusinessError } 13900042 - Unknown error
21661847f8eSopenharmony_ci   * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
21761847f8eSopenharmony_ci   * @since 11
21861847f8eSopenharmony_ci   */
21961847f8eSopenharmony_ci  function persistPermission(policies: Array<PolicyInfo>): Promise<void>;
22061847f8eSopenharmony_ci
22161847f8eSopenharmony_ci  /**
22261847f8eSopenharmony_ci   * Revoke persistence permissions for the URI
22361847f8eSopenharmony_ci   *
22461847f8eSopenharmony_ci   * @permission ohos.permission.FILE_ACCESS_PERSIST
22561847f8eSopenharmony_ci   * @param { Array<PolicyInfo> } policies - Policy information to grant permission on URIs.
22661847f8eSopenharmony_ci   * @returns { Promise<void> } the promise returned by the function.
22761847f8eSopenharmony_ci   * @throws { BusinessError } 201 - Permission verification failed, usually the result returned by VerifyAccessToken.
22861847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error.Possible causes:1.Mandatory parameters are left unspecified;
22961847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.
23061847f8eSopenharmony_ci   * @throws { BusinessError } 801 - Capability not supported.
23161847f8eSopenharmony_ci   * @throws { BusinessError } 13900001 - Operation not permitted.
23261847f8eSopenharmony_ci   * @throws { BusinessError } 13900042 - Unknown error
23361847f8eSopenharmony_ci   * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
23461847f8eSopenharmony_ci   * @since 11
23561847f8eSopenharmony_ci   */
23661847f8eSopenharmony_ci  function revokePermission(policies: Array<PolicyInfo>): Promise<void>;
23761847f8eSopenharmony_ci
23861847f8eSopenharmony_ci  /**
23961847f8eSopenharmony_ci   * Enable the URI that have been permanently authorized
24061847f8eSopenharmony_ci   *
24161847f8eSopenharmony_ci   * @permission ohos.permission.FILE_ACCESS_PERSIST
24261847f8eSopenharmony_ci   * @param { Array<PolicyInfo> } policies - Policy information to grant permission on URIs.
24361847f8eSopenharmony_ci   * @returns { Promise<void> } the promise returned by the function.
24461847f8eSopenharmony_ci   * @throws { BusinessError } 201 - Permission verification failed, usually the result returned by VerifyAccessToken.
24561847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error.Possible causes:1.Mandatory parameters are left unspecified;
24661847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.
24761847f8eSopenharmony_ci   * @throws { BusinessError } 801 - Capability not supported.
24861847f8eSopenharmony_ci   * @throws { BusinessError } 13900001 - Operation not permitted.
24961847f8eSopenharmony_ci   * @throws { BusinessError } 13900042 - Unknown error
25061847f8eSopenharmony_ci   * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
25161847f8eSopenharmony_ci   * @since 11
25261847f8eSopenharmony_ci   */
25361847f8eSopenharmony_ci  function activatePermission(policies: Array<PolicyInfo>): Promise<void>;
25461847f8eSopenharmony_ci
25561847f8eSopenharmony_ci  /**
25661847f8eSopenharmony_ci   * Stop the authorized URI that has been enabled
25761847f8eSopenharmony_ci   *
25861847f8eSopenharmony_ci   * @permission ohos.permission.FILE_ACCESS_PERSIST
25961847f8eSopenharmony_ci   * @param { Array<PolicyInfo> } policies - Policy information to grant permission on URIs.
26061847f8eSopenharmony_ci   * @returns { Promise<void> } the promise returned by the function.
26161847f8eSopenharmony_ci   * @throws { BusinessError } 201 - Permission verification failed, usually the result returned by VerifyAccessToken.
26261847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error.Possible causes:1.Mandatory parameters are left unspecified;
26361847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.
26461847f8eSopenharmony_ci   * @throws { BusinessError } 801 - Capability not supported.
26561847f8eSopenharmony_ci   * @throws { BusinessError } 13900001 - Operation not permitted.
26661847f8eSopenharmony_ci   * @throws { BusinessError } 13900042 - Unknown error
26761847f8eSopenharmony_ci   * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
26861847f8eSopenharmony_ci   * @since 11
26961847f8eSopenharmony_ci   */
27061847f8eSopenharmony_ci  function deactivatePermission(policies: Array<PolicyInfo>): Promise<void>;
27161847f8eSopenharmony_ci
27261847f8eSopenharmony_ci  /**
27361847f8eSopenharmony_ci   * Check persistent permissions for the URI.
27461847f8eSopenharmony_ci   * 
27561847f8eSopenharmony_ci   * @permission ohos.permission.FILE_ACCESS_PERSIST
27661847f8eSopenharmony_ci   * @param { Array<PolicyInfo> } policies - Policy information to grant permission on URIs.
27761847f8eSopenharmony_ci   * @returns { Promise<Array<boolean>> } Returns the persistent state of uri permissions.
27861847f8eSopenharmony_ci   * @throws { BusinessError } 201 - Permission verification failed, usually the result returned by VerifyAccessToken.
27961847f8eSopenharmony_ci   * @throws { BusinessError } 401 - Parameter error.Possible causes:1.Mandatory parameters are left unspecified;
28061847f8eSopenharmony_ci   * <br>2.Incorrect parameter types.
28161847f8eSopenharmony_ci   * @throws { BusinessError } 801 - Capability not supported.
28261847f8eSopenharmony_ci   * @throws { BusinessError } 13900042 - Unknown error
28361847f8eSopenharmony_ci   * @syscap SystemCapability.FileManagement.AppFileService.FolderAuthorization
28461847f8eSopenharmony_ci   * @since 12
28561847f8eSopenharmony_ci   */
28661847f8eSopenharmony_ci  function checkPersistentPermission(policies: Array<PolicyInfo>): Promise<Array<boolean>>;
28761847f8eSopenharmony_ci}
28861847f8eSopenharmony_ci
28961847f8eSopenharmony_ciexport default fileShare;
290