/*

 * Copyright (C) 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 ConnectivityKit

 */



import type baseProfile from './@ohos.bluetooth.baseProfile';

import type constant from './@ohos.bluetooth.constant';



/**

 * Provides methods to accessing bluetooth MAP(Message Access Profile)-related capabilities.

 *

 * @syscap SystemCapability.Communication.Bluetooth.Core

 * @since 11 dynamic

 */

declare namespace map {

  /**

   * Base interface of profile.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @since 11 dynamic

   */

  type BaseProfile = baseProfile.BaseProfile;



  /**

   * Indicate the phone book access authorization.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @systemapi

   * @since 11 dynamic

   */

  type AccessAuthorization = constant.AccessAuthorization;



  /**

   * create the instance of MAP MSE profile.

   *

   * @returns { MapMseProfile } Returns the instance of map mse profile.

   * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

   *     2. Incorrect parameter types. 3. Parameter verification failed.

   * @throws { BusinessError } 801 - Capability not supported.

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @since 11 dynamic

   */

  function createMapMseProfile(): MapMseProfile;



  /**

   * Manager MAP MSE profile.

   *

   * @syscap SystemCapability.Communication.Bluetooth.Core

   * @since 11 dynamic

   */

  interface MapMseProfile extends BaseProfile {

    /**

     * Disconnect the map connection with the remote device.

     *

     * @permission ohos.permission.ACCESS_BLUETOOTH

     * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

     * @throws { BusinessError } 201 - Permission denied.

     * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

     * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

     *     2. Incorrect parameter types. 3. Parameter verification failed.

     * @throws { BusinessError } 801 - Capability not supported.

     * @throws { BusinessError } 2900001 - Service stopped.

     * @throws { BusinessError } 2900003 - Bluetooth disabled.

     * @throws { BusinessError } 2900004 - Profile not supported.

     * @throws { BusinessError } 2900099 - Operation failed.

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @since 11 dynamic

     */

    disconnect(deviceId: string): void;



    /**

     * Set the message access authorization.

     *

     * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.MANAGE_BLUETOOTH

     * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

     * @param { AccessAuthorization } authorization - Indicates the permission.

     * @returns { Promise<void> } Returns the promise object.

     * @throws { BusinessError } 201 - Permission denied.

     * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

     * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

     *     2. Incorrect parameter types. 3. Parameter verification failed.

     * @throws { BusinessError } 801 - Capability not supported.

     * @throws { BusinessError } 2900001 - Service stopped.

     * @throws { BusinessError } 2900003 - Bluetooth disabled.

     * @throws { BusinessError } 2900004 - Profile not supported.

     * @throws { BusinessError } 2900099 - Operation failed.

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @since 11 dynamic

     */

    setMessageAccessAuthorization(deviceId: string, authorization: AccessAuthorization): Promise<void>;



    /**

     * Get the message access authorization.

     *

     * @permission ohos.permission.ACCESS_BLUETOOTH and ohos.permission.MANAGE_BLUETOOTH

     * @param { string } deviceId - Indicates device ID. For example, "11:22:33:AA:BB:FF".

     * @returns { Promise<AccessAuthorization> } Returns the promise object.

     * @throws { BusinessError } 201 - Permission denied.

     * @throws { BusinessError } 202 - Non-system applications are not allowed to use system APIs.

     * @throws { BusinessError } 401 - Invalid parameter. Possible causes: 1. Mandatory parameters are left unspecified.

     *     2. Incorrect parameter types. 3. Parameter verification failed.

     * @throws { BusinessError } 801 - Capability not supported.

     * @throws { BusinessError } 2900001 - Service stopped.

     * @throws { BusinessError } 2900003 - Bluetooth disabled.

     * @throws { BusinessError } 2900004 - Profile not supported.

     * @throws { BusinessError } 2900099 - Operation failed.

     * @syscap SystemCapability.Communication.Bluetooth.Core

     * @systemapi

     * @since 11 dynamic

     */

    getMessageAccessAuthorization(deviceId: string): Promise<AccessAuthorization>;

  }

}



export default map;