"""BleakGATTDescriptorESPHome."""
from __future__ import annotations

from aioesphomeapi.model import BluetoothGATTDescriptor
from bleak.backends.descriptor import BleakGATTDescriptor


class BleakGATTDescriptorESPHome(BleakGATTDescriptor):
    """GATT Descriptor implementation for ESPHome backend."""

    obj: BluetoothGATTDescriptor

    def __init__(
        self,
        obj: BluetoothGATTDescriptor,
        characteristic_uuid: str,
        characteristic_handle: int,
    ) -> None:
        """Init a BleakGATTDescriptorESPHome."""
        super().__init__(obj)
        self.__characteristic_uuid: str = characteristic_uuid
        self.__characteristic_handle: int = characteristic_handle

    @property
    def characteristic_handle(self) -> int:
        """Handle for the characteristic that this descriptor belongs to."""
        return self.__characteristic_handle

    @property
    def characteristic_uuid(self) -> str:
        """UUID for the characteristic that this descriptor belongs to."""
        return self.__characteristic_uuid

    @property
    def uuid(self) -> str:
        """UUID for this descriptor."""
        return self.obj.uuid

    @property
    def handle(self) -> int:
        """Integer handle for this descriptor."""
        return self.obj.handle