/// <reference types="@nativescript/objc-node-api" />
/// <reference path="./Runtime.d.ts" />
/// <reference path="./UIKit.d.ts" />

declare const HMCharacteristicTypeRemainingDuration: string;

declare const HMCharacteristicKeyPath: string;

declare const HMSignificantEventSunset: string;

declare const HMErrorDomain: string;

declare const HMServiceTypeWiFiRouter: string;

declare const HMServiceTypeHeaterCooler: string;

declare const HMServiceTypeVentilationFan: string;

declare const HMServiceTypeBattery: string;

declare const HMServiceTypeLockMechanism: string;

declare const HMServiceTypeGarageDoorOpener: string;

declare const HMServiceTypeFan: string;

declare const HMServiceTypeFaucet: string;

declare const HMServiceTypeValve: string;

declare const HMServiceTypeIrrigationSystem: string;

declare const HMServiceTypeMicrophone: string;

declare const HMServiceTypeWindowCovering: string;

declare const HMServiceTypeTemperatureSensor: string;

declare const HMServiceTypeSmokeSensor: string;

declare const HMServiceTypeStatelessProgrammableSwitch: string;

declare const HMServiceTypeStatefulProgrammableSwitch: string;

declare const HMServiceTypeMotionSensor: string;

declare const HMServiceTypeLightSensor: string;

declare const HMServiceTypeLeakSensor: string;

declare const HMServiceTypeHumiditySensor: string;

declare const HMServiceTypeSwitch: string;

declare const HMCharacteristicMetadataUnitsSeconds: string;

declare const HMCharacteristicMetadataUnitsArcDegree: string;

declare const HMCharacteristicMetadataFormatUInt32: string;

declare const HMCharacteristicMetadataFormatUInt8: string;

declare const HMCharacteristicMetadataFormatString: string;

declare const HMCharacteristicMetadataFormatFloat: string;

declare const HMCharacteristicMetadataFormatInt: string;

declare const HMCharacteristicTypeRouterStatus: string;

declare const HMCharacteristicTypeCurrentVisibilityState: string;

declare const HMCharacteristicTypeNightVision: string;

declare const HMCharacteristicTypeVolume: string;

declare const HMCharacteristicTypeColorTemperature: string;

declare const HMCharacteristicTypeDehumidifierThreshold: string;

declare const HMCharacteristicTypeTargetFanState: string;

declare const HMCharacteristicTypeCurrentHumidifierDehumidifierState: string;

declare const HMCharacteristicTypeTargetHeaterCoolerState: string;

declare const HMCharacteristicTypeCurrentFanState: string;

declare const HMCharacteristicTypeLockPhysicalControls: string;

declare const HMCharacteristicTypeChargingState: string;

declare const HMCharacteristicTypeStatusLowBattery: string;

declare const HMCharacteristicTypeSmokeDetected: string;

declare const HMCharacteristicTypeHardwareVersion: string;

declare const HMServiceTypeOutlet: string;

declare const HMCharacteristicTypeFirmwareVersion: string;

declare const HMCharacteristicTypeSaturation: string;

declare const HMCharacteristicTypeRotationSpeed: string;

declare const HMCharacteristicTypeRotationDirection: string;

declare const HMCharacteristicTypeName: string;

declare const HMCharacteristicTypeModel: string;

declare const HMCharacteristicTypeHue: string;

declare const HMCharacteristicTypeCurrentRelativeHumidity: string;

declare const HMCharacteristicTypeCoolingThreshold: string;

declare const HMCharacteristicTypeVolumeSelector: string;

declare const HMCharacteristicTypeVolumeControlType: string;

declare const HMCharacteristicTypeValveType: string;

declare const HMCharacteristicTypeSetDuration: string;

declare const HMCharacteristicTypeProgramMode: string;

declare const HMCharacteristicTypeNitrogenDioxideDensity: string;

declare const HMCharacteristicTypeOzoneDensity: string;

declare const HMCharacteristicTypeFilterLifeLevel: string;

declare const HMCharacteristicTypeCurrentSlatState: string;

declare const HMCharacteristicTypeDigitalZoom: string;

declare const HMCharacteristicTypeSelectedStreamConfiguration: string;

declare const HMCharacteristicTypeSupportedRTPConfiguration: string;

declare const HMCharacteristicTypeSupportedVideoStreamConfiguration: string;

declare const HMCharacteristicTypeStreamingStatus: string;

declare const HMCharacteristicTypeTargetPosition: string;

declare const HMCharacteristicTypeStatusTampered: string;

declare const HMCharacteristicTypeStatusJammed: string;

declare const HMCharacteristicTypeStatusFault: string;

declare const HMCharacteristicTypeOutputState: string;

declare const HMCharacteristicTypeOccupancyDetected: string;

declare const HMCharacteristicTypeLeakDetected: string;

declare const HMCharacteristicTypeCurrentVerticalTilt: string;

declare const HMCharacteristicTypeCurrentSecuritySystemState: string;

declare const HMCharacteristicTypeCarbonDioxideDetected: string;

declare const HMCharacteristicTypeAirQuality: string;

declare const HMCharacteristicTypeAirParticulateDensity: string;

declare const HMCharacteristicTypeLockManagementControlPoint: string;

declare const HMCharacteristicTypeLockMechanismLastKnownAction: string;

declare const HMCharacteristicTypeAdminOnlyAccess: string;

declare const HMCharacteristicPropertyRequiresAuthorizationData: string;

declare const HMActionSetTypeUserDefined: string;

declare const HMActionSetTypeSleep: string;

declare const HMAccessoryCategoryTypeTelevisionSetTopBox: string;

declare const HMAccessoryCategoryTypeTelevision: string;

declare const HMAccessoryCategoryTypeShowerHead: string;

declare const HMAccessoryCategoryTypeSprinkler: string;

declare const HMAccessoryCategoryTypeAirConditioner: string;

declare const HMAccessoryCategoryTypeWindowCovering: string;

declare const HMAccessoryCategoryTypeThermostat: string;

declare const HMAccessoryCategoryTypeSensor: string;

declare const HMAccessoryCategoryTypeRangeExtender: string;

declare const HMAccessoryCategoryTypeGarageDoorOpener: string;

declare const HMAccessoryCategoryTypeDoorLock: string;

declare const HMAccessoryCategoryTypeDoor: string;

declare const HMAccessoryCategoryTypeSecuritySystem: string;

declare const HMAccessoryCategoryTypeOther: string;

declare const HMCharacteristicTypeCarbonMonoxidePeakLevel: string;

declare const HMCharacteristicTypeSulphurDioxideDensity: string;

declare const HMCharacteristicTypeLockManagementAutoSecureTimeout: string;

declare const HMCharacteristicTypeHumidifierThreshold: string;

declare const HMCharacteristicTypePictureMode: string;

declare const HMAccessoryCategoryTypeVideoDoorbell: string;

declare const HMCharacteristicTypeCurrentDoorState: string;

declare const HMServiceTypeOccupancySensor: string;

declare const HMCharacteristicTypeRemoteKey: string;

declare const HMCharacteristicTypeImageRotation: string;

declare const HMAccessoryCategoryTypeAudioReceiver: string;

declare const HMCharacteristicTypePM2_5Density: string;

declare const HMCharacteristicTypeMotionDetected: string;

declare const HMCharacteristicMetadataFormatData: string;

declare const HMCharacteristicMetadataUnitsPercentage: string;

declare const HMCharacteristicTypeSerialNumber: string;

declare const HMCharacteristicTypeTargetAirPurifierState: string;

declare const HMServiceTypeSpeaker: string;

declare const HMCharacteristicTypeCarbonDioxideLevel: string;

declare const HMAccessoryCategoryTypeAirPort: string;

declare const HMCharacteristicTypeTargetVisibilityState: string;

declare const HMCharacteristicTypeSwingMode: string;

declare const HMCharacteristicTypeInUse: string;

declare const HMCharacteristicTypeTargetTilt: string;

declare const HMCharacteristicTypeTargetDoorState: string;

declare const HMServiceTypeSecuritySystem: string;

declare const HMCharacteristicTypeAirParticulateSize: string;

declare const HMCharacteristicTypeTargetMediaState: string;

declare const HMServiceTypeFilterMaintenance: string;

declare const HMServiceTypeTelevision: string;

declare const HMCharacteristicTypeTemperatureUnits: string;

declare const HMCharacteristicTypeClosedCaptions: string;

declare const HMCharacteristicTypePowerState: string;

declare const HMCharacteristicTypeFilterChangeIndication: string;

declare const HMCharacteristicTypeTargetHumidifierDehumidifierState: string;

declare const HMCharacteristicTypeManufacturer: string;

declare const HMAccessoryCategoryTypeFaucet: string;

declare const HMCharacteristicTypeConfiguredName: string;

declare const HMCharacteristicMetadataUnitsLux: string;

declare const HMCharacteristicTypeCurrentHorizontalTilt: string;

declare const HMCharacteristicMetadataUnitsMicrogramsPerCubicMeter: string;

declare const HMCharacteristicTypeSoftwareVersion: string;

declare const HMServiceTypeCameraControl: string;

declare const HMCharacteristicMetadataUnitsPartsPerMillion: string;

declare const HMCharacteristicTypeSecuritySystemAlarmType: string;

declare const HMActionSetTypeHomeArrival: string;

declare const HMServiceTypeCarbonMonoxideSensor: string;

declare const HMCharacteristicTypeCarbonMonoxideDetected: string;

declare const HMCharacteristicTypeTargetHeatingCooling: string;

declare const HMCharacteristicPropertyReadable: string;

declare const HMServiceTypeHumidifierDehumidifier: string;

declare const HMCharacteristicMetadataFormatDictionary: string;

declare const HMCharacteristicTypeTargetRelativeHumidity: string;

declare const HMServiceTypeDoorbell: string;

declare const HMAccessoryCategoryTypeBridge: string;

declare const HMAccessoryCategoryTypeSpeaker: string;

declare const HMServiceTypeWindow: string;

declare const HMAccessoryCategoryTypeWiFiRouter: string;

declare const HMCharacteristicTypeTargetHorizontalTilt: string;

declare const HMUserFailedAccessoriesKey: string;

declare const HMCharacteristicTypeHoldPosition: string;

declare const HMCharacteristicTypeIdentifier: string;

declare const HMActionSetTypeTriggerOwned: string;

declare const HMCharacteristicMetadataUnitsCelsius: string;

declare const HMServiceTypeInputSource: string;

declare const HMCharacteristicTypeLogs: string;

declare const HMCharacteristicTypeCurrentHeaterCoolerState: string;

declare const HMServiceTypeLabel: string;

declare const HMCharacteristicTypeVersion: string;

declare const HMCharacteristicMetadataFormatUInt64: string;

declare const HMAccessoryCategoryTypeAirDehumidifier: string;

declare const HMCharacteristicTypeWaterLevel: string;

declare const HMCharacteristicTypeSlatType: string;

declare const HMAccessoryCategoryTypeFan: string;

declare const HMCharacteristicTypeCurrentHeatingCooling: string;

declare const HMAccessoryCategoryTypeOutlet: string;

declare const HMCharacteristicTypeContactState: string;

declare const HMServiceTypeSlats: string;

declare const HMServiceTypeWiFiSatellite: string;

declare const HMCharacteristicTypeIdentify: string;

declare const HMCharacteristicMetadataFormatBool: string;

declare const HMCharacteristicTypeHeatingThreshold: string;

declare const HMCharacteristicTypeCurrentPosition: string;

declare const HMCharacteristicMetadataUnitsFahrenheit: string;

declare const HMCharacteristicTypeCurrentTemperature: string;

declare const HMCharacteristicTypeCurrentTilt: string;

declare const HMServiceTypeLightbulb: string;

declare const HMSignificantEventSunrise: string;

declare const HMCharacteristicTypeStatusActive: string;

declare const HMAccessoryCategoryTypeTelevisionStreamingStick: string;

declare const HMCharacteristicTypeImageMirroring: string;

declare const HMCharacteristicTypeLabelIndex: string;

declare const HMServiceTypeAirPurifier: string;

declare const HMCharacteristicTypeInputEvent: string;

declare const HMCharacteristicMetadataFormatUInt16: string;

declare const HMAccessoryCategoryTypeLightbulb: string;

declare const HMServiceTypeContactSensor: string;

declare const HMCharacteristicTypeTargetVerticalTilt: string;

declare const HMCharacteristicTypeTargetLockMechanismState: string;

declare const HMCharacteristicTypeCarbonMonoxideLevel: string;

declare const HMServiceTypeDoor: string;

declare const HMActionSetTypeHomeDeparture: string;

declare const HMCharacteristicTypeFilterResetChangeIndication: string;

declare const HMAccessoryCategoryTypeSwitch: string;

declare const HMCharacteristicTypeCurrentLockMechanismState: string;

declare const HMCharacteristicTypeObstructionDetected: string;

declare const HMCharacteristicTypeInputSourceType: string;

declare const HMServiceTypeThermostat: string;

declare const HMCharacteristicTypeOpticalZoom: string;

declare const HMCharacteristicPropertySupportsEventNotification: string;

declare const HMAccessoryCategoryTypeProgrammableSwitch: string;

declare const HMCharacteristicTypeCurrentLightLevel: string;

declare const HMCharacteristicTypeSupportedAudioStreamConfiguration: string;

declare const HMAccessoryCategoryTypeAirHumidifier: string;

declare const HMServiceTypeLockManagement: string;

declare const HMCharacteristicTypePositionState: string;

declare const HMAccessoryCategoryTypeAirHeater: string;

declare const HMCharacteristicMetadataFormatTLV8: string;

declare const HMCharacteristicTypePM10Density: string;

declare const HMServiceTypeCameraRTPStreamManagement: string;

declare const HMCharacteristicTypeInputDeviceType: string;

declare const HMActionSetTypeWakeUp: string;

declare const HMCharacteristicTypeBatteryLevel: string;

declare const HMCharacteristicMetadataFormatArray: string;

declare const HMAccessoryCategoryTypeIPCamera: string;

declare const HMServiceTypeAirQualitySensor: string;

declare const HMCharacteristicTypeTargetSecuritySystemState: string;

declare const HMPresenceKeyPath: string;

declare const HMCharacteristicTypeActive: string;

declare const HMCharacteristicValueKeyPath: string;

declare const HMCharacteristicPropertyWritable: string;

declare const HMCharacteristicTypeIsConfigured: string;

declare const HMCharacteristicTypeBrightness: string;

declare const HMCharacteristicTypeCurrentMediaState: string;

declare const HMCharacteristicTypeWANStatusList: string;

declare const HMAccessoryCategoryTypeWindow: string;

declare const HMServiceTypeCarbonDioxideSensor: string;

declare const HMCharacteristicTypeOutletInUse: string;

declare const HMCharacteristicTypeActiveIdentifier: string;

declare const HMCharacteristicTypeCarbonDioxidePeakLevel: string;

declare const HMCharacteristicTypeTargetTemperature: string;

declare const HMCharacteristicTypeLabelNamespace: string;

declare const HMCharacteristicTypeSetupStreamEndpoint: string;

declare const HMCharacteristicTypeMute: string;

declare const HMCharacteristicPropertyHidden: string;

declare const HMCharacteristicTypePowerModeSelection: string;

declare const HMCharacteristicTypeCurrentAirPurifierState: string;

declare const HMAccessoryCategoryTypeAirPurifier: string;

declare const HMCharacteristicTypeAudioFeedback: string;

declare const HMServiceTypeAccessoryInformation: string;

declare const HMCharacteristicTypeVolatileOrganicCompoundDensity: string;

declare const HMCharacteristicTypeWiFiSatelliteStatus: string;

declare const HMCharacteristicValueCurrentHumidifierDehumidifierState: {
  Inactive: 0,
  Idle: 1,
  Humidifying: 2,
  Dehumidifying: 3,
};

declare const HMCameraAudioStreamSetting: {
  Muted: 1,
  IncomingAudioAllowed: 2,
  BidirectionalAudioAllowed: 3,
};

declare const HMCameraStreamState: {
  Starting: 1,
  Streaming: 2,
  Stopping: 3,
  NotStreaming: 4,
};

declare const HMErrorCode: {
  UnexpectedError: -1,
  AlreadyExists: 1,
  NotFound: 2,
  InvalidParameter: 3,
  AccessoryNotReachable: 4,
  ReadOnlyCharacteristic: 5,
  WriteOnlyCharacteristic: 6,
  NotificationNotSupported: 7,
  OperationTimedOut: 8,
  AccessoryPoweredOff: 9,
  AccessDenied: 10,
  ObjectAssociatedToAnotherHome: 11,
  ObjectNotAssociatedToAnyHome: 12,
  ObjectAlreadyAssociatedToHome: 13,
  AccessoryIsBusy: 14,
  OperationInProgress: 15,
  AccessoryOutOfResources: 16,
  InsufficientPrivileges: 17,
  AccessoryPairingFailed: 18,
  InvalidDataFormatSpecified: 19,
  NilParameter: 20,
  UnconfiguredParameter: 21,
  InvalidClass: 22,
  OperationCancelled: 23,
  RoomForHomeCannotBeInZone: 24,
  NoActionsInActionSet: 25,
  NoRegisteredActionSets: 26,
  MissingParameter: 27,
  FireDateInPast: 28,
  RoomForHomeCannotBeUpdated: 29,
  ActionInAnotherActionSet: 30,
  ObjectWithSimilarNameExistsInHome: 31,
  HomeWithSimilarNameExists: 32,
  RenameWithSimilarName: 33,
  CannotRemoveNonBridgeAccessory: 34,
  NameContainsProhibitedCharacters: 35,
  NameDoesNotStartWithValidCharacters: 36,
  UserIDNotEmailAddress: 37,
  UserDeclinedAddingUser: 38,
  UserDeclinedRemovingUser: 39,
  UserDeclinedInvite: 40,
  UserManagementFailed: 41,
  RecurrenceTooSmall: 42,
  InvalidValueType: 43,
  ValueLowerThanMinimum: 44,
  ValueHigherThanMaximum: 45,
  StringLongerThanMaximum: 46,
  HomeAccessNotAuthorized: 47,
  OperationNotSupported: 48,
  MaximumObjectLimitReached: 49,
  AccessorySentInvalidResponse: 50,
  StringShorterThanMinimum: 51,
  GenericError: 52,
  SecurityFailure: 53,
  CommunicationFailure: 54,
  MessageAuthenticationFailed: 55,
  InvalidMessageSize: 56,
  AccessoryDiscoveryFailed: 57,
  ClientRequestError: 58,
  AccessoryResponseError: 59,
  NameDoesNotEndWithValidCharacters: 60,
  AccessoryIsBlocked: 61,
  InvalidAssociatedServiceType: 62,
  ActionSetExecutionFailed: 63,
  ActionSetExecutionPartialSuccess: 64,
  ActionSetExecutionInProgress: 65,
  AccessoryOutOfCompliance: 66,
  DataResetFailure: 67,
  NotificationAlreadyEnabled: 68,
  RecurrenceMustBeOnSpecifiedBoundaries: 69,
  DateMustBeOnSpecifiedBoundaries: 70,
  CannotActivateTriggerTooFarInFuture: 71,
  RecurrenceTooLarge: 72,
  ReadWritePartialSuccess: 73,
  ReadWriteFailure: 74,
  NotSignedIntoiCloud: 75,
  KeychainSyncNotEnabled: 76,
  CloudDataSyncInProgress: 77,
  NetworkUnavailable: 78,
  AddAccessoryFailed: 79,
  MissingEntitlement: 80,
  CannotUnblockNonBridgeAccessory: 81,
  DeviceLocked: 82,
  CannotRemoveBuiltinActionSet: 83,
  LocationForHomeDisabled: 84,
  NotAuthorizedForLocationServices: 85,
  ReferToUserManual: 86,
  InvalidOrMissingAuthorizationData: 87,
  BridgedAccessoryNotReachable: 88,
  NotAuthorizedForMicrophoneAccess: 89,
  IncompatibleNetwork: 90,
  NoHomeHub: 91,
  NoCompatibleHomeHub: 92,
  IncompatibleAccessory: 93,
  IncompatibleHomeHub: 92,
  ObjectWithSimilarNameExists: 95,
  OwnershipFailure: 96,
  MaximumAccessoriesOfTypeInHome: 97,
  WiFiCredentialGenerationFailed: 98,
  EnterpriseNetworkNotSupported: 99,
  TimedOutWaitingForAccessory: 100,
  AccessoryCommunicationFailure: 101,
  FailedToJoinNetwork: 102,
  AccessoryIsSuspended: 103,
  PartialCommunicationFailure: 104,
  HomeUpgradeRequired: 105,
};

declare const HMCharacteristicValueCurrentVisibilityState: {
  Shown: 0,
  Hidden: 1,
  Connected: 2,
  AlwaysShown: 3,
};

declare const HMCharacteristicValueTargetVisibilityState: {
  Show: 0,
  Hide: 1,
};

declare const HMCharacteristicValueConfigurationState: {
  Not: 0,
  HMCharacteristicValueConfigurationStateConfigured: 1,
};

declare const HMCharacteristicValueTargetHumidifierDehumidifierState: {
  Automatic: 0,
  Humidify: 1,
  Dehumidify: 2,
};

declare const HMCharacteristicValueActivationState: {
  Inactive: 0,
  Active: 1,
};

declare const HMCharacteristicValueBatteryStatus: {
  Normal: 0,
  Low: 1,
};

declare const HMCharacteristicValueInputEvent: {
  Single: 0,
  Double: 1,
  Long: 2,
};

declare const HMCharacteristicValueCurrentHeatingCooling: {
  Off: 0,
  Heat: 1,
  Cool: 2,
};

declare const HMCharacteristicValueVolumeControlType: {
  None: 0,
  Relative: 1,
  RelativeWithCurrent: 2,
  Absolute: 3,
};

declare const HMCharacteristicValueTargetAirPurifierState: {
  Manual: 0,
  Automatic: 1,
};

declare const HMCharacteristicValueSecuritySystemAlarmType: {
  NoAlarm: 0,
  Unknown: 1,
};

declare const HMCharacteristicValueOccupancyStatus: {
  Not: 0,
  HMCharacteristicValueOccupancyStatusOccupied: 1,
};

declare const HMCharacteristicValueCarbonDioxideDetectionStatus: {
  Not: 0,
  HMCharacteristicValueCarbonDioxideDetectionStatusDetected: 1,
};

declare const HMCharacteristicValueCarbonMonoxideDetectionStatus: {
  Not: 0,
  HMCharacteristicValueCarbonMonoxideDetectionStatusDetected: 1,
};

declare const HMCharacteristicValueStatusFault: {
  No: 0,
  General: 1,
};

declare const HMCharacteristicValuePowerModeSelection: {
  Show: 0,
  Hide: 1,
};

declare const HMCharacteristicValueAirQuality: {
  Unknown: 0,
  Excellent: 1,
  Good: 2,
  Fair: 3,
  Inferior: 4,
  Poor: 5,
};

declare const HMHomeHubState: {
  NotAvailable: 0,
  Connected: 1,
  Disconnected: 2,
};

declare const HMCharacteristicValueTemperatureUnit: {
  Celsius: 0,
  Fahrenheit: 1,
};

declare const HMCharacteristicValueRouterStatus: {
  HMCharacteristicValueRouterStatusReady: 0,
  Not: 1,
};

declare const HMPresenceEventUserType: {
  CurrentUser: 1,
  HomeUsers: 2,
  CustomUsers: 3,
};

declare const HMCharacteristicValueJammedStatus: {
  None: 0,
  Jammed: 1,
};

declare const HMCharacteristicValueTargetFanState: {
  Manual: 0,
  Automatic: 1,
};

declare const HMCharacteristicValueCurrentFanState: {
  Inactive: 0,
  Idle: 1,
  Active: 2,
};

declare const HMCharacteristicValueTamperedStatus: {
  None: 0,
  Tampered: 1,
};

declare const HMCharacteristicValueInputSourceType: {
  Other: 0,
  HomeScreen: 1,
  Tuner: 2,
  HDMI: 3,
  CompositeVideo: 4,
  SVideo: 5,
  ComponentVideo: 6,
  DVI: 7,
  AirPlay: 8,
  USB: 9,
  Application: 10,
};

declare const HMCharacteristicValueLockPhysicalControlsState: {
  Not: 0,
  HMCharacteristicValueLockPhysicalControlsStateLocked: 1,
};

declare const HMCharacteristicValueLabelNamespace: {
  Dot: 0,
  Numeral: 1,
};

declare const HMHomeManagerAuthorizationStatus: {
  Determined: 1,
  Restricted: 2,
  Authorized: 4,
};

declare const HMCharacteristicValueVolumeSelector: {
  Increment: 0,
  Decrement: 1,
};

declare const HMCharacteristicValuePictureMode: {
  Standard: 0,
  Movie: 1,
  Sport: 2,
  Game: 3,
  Photo: 4,
  Vivid: 5,
  Dark: 6,
  Bright: 7,
  Computer: 8,
  Night: 9,
  Calibrated: 10,
  Custom1: 11,
  Custom2: 12,
  Custom3: 13,
};

declare const HMCharacteristicValueValveType: {
  GenericValve: 0,
  Irrigation: 1,
  ShowerHead: 2,
  WaterFaucet: 3,
};

declare const HMCharacteristicValueCurrentMediaState: {
  Playing: 0,
  Paused: 1,
  Stopped: 2,
  Unknown: 3,
  Loading: 4,
  Interrupted: 5,
};

declare const HMCharacteristicValueChargingState: {
  None: 0,
  InProgress: 1,
  NotChargeable: 2,
};

declare const HMCharacteristicValueTargetSecuritySystemState: {
  StayArm: 0,
  AwayArm: 1,
  NightArm: 2,
  Disarm: 3,
};

declare const HMCharacteristicValueCurrentSlatState: {
  Stationary: 0,
  Jammed: 1,
  Oscillating: 2,
};

declare const HMCharacteristicValueHeatingCooling: {
  Off: 0,
  Heat: 1,
  Cool: 2,
  Auto: 3,
};

declare const HMCharacteristicValueWiFiSatelliteStatus: {
  Unknown: 0,
  Connected: 1,
  NotConnected: 2,
};

declare const HMPresenceEventType: {
  EveryEntry: 1,
  EveryExit: 2,
  FirstEntry: 3,
  LastExit: 4,
  AtHome: 3,
  NotAtHome: 4,
};

declare const HMCharacteristicValueCurrentHeaterCoolerState: {
  Inactive: 0,
  Idle: 1,
  Heating: 2,
  Cooling: 3,
};

declare const HMCharacteristicValueTargetMediaState: {
  Play: 0,
  Pause: 1,
  Stop: 2,
};

declare const HMEventTriggerActivationState: {
  Disabled: 0,
  DisabledNoHomeHub: 1,
  DisabledNoCompatibleHomeHub: 2,
  DisabledNoLocationServicesAuthorization: 3,
  Enabled: 4,
};

declare const HMCharacteristicValueClosedCaptions: {
  Disabled: 0,
  Enabled: 1,
};

declare const HMCharacteristicValueSlatType: {
  Horizontal: 0,
  Vertical: 1,
};

declare const HMCharacteristicValueAirParticulateSize: {
  Size2_5: 0,
  Size10: 1,
};

declare const HMCharacteristicValueRotationDirection: {
  HMCharacteristicValueRotationDirectionClockwise: 0,
  Counter: 1,
};

declare const HMCharacteristicValueTargetLockMechanismState: {
  Unsecured: 0,
  Secured: 1,
};

declare const HMCharacteristicValueSmokeDetectionStatus: {
  None: 0,
  Detected: 1,
};

declare const HMCharacteristicValueFilterChange: {
  Not: 0,
  HMCharacteristicValueFilterChangeNeeded: 1,
};

declare const HMCharacteristicValueUsageState: {
  Not: 0,
  HMCharacteristicValueUsageStateInUse: 1,
};

declare const HMCharacteristicValueLockMechanismState: {
  Unsecured: 0,
  Secured: 1,
  Jammed: 2,
  Unknown: 3,
};

declare const HMCharacteristicValueCurrentAirPurifierState: {
  Inactive: 0,
  Idle: 1,
  Active: 2,
};

declare const HMCharacteristicValueLockMechanismLastKnownAction: {
  SecuredUsingPhysicalMovementInterior: 0,
  UnsecuredUsingPhysicalMovementInterior: 1,
  SecuredUsingPhysicalMovementExterior: 2,
  UnsecuredUsingPhysicalMovementExterior: 3,
  SecuredWithKeypad: 4,
  UnsecuredWithKeypad: 5,
  SecuredRemotely: 6,
  UnsecuredRemotely: 7,
  SecuredWithAutomaticSecureTimeout: 8,
  SecuredUsingPhysicalMovement: 9,
  UnsecuredUsingPhysicalMovement: 10,
};

declare const HMCharacteristicValueLeakStatus: {
  None: 0,
  Detected: 1,
};

declare const HMCharacteristicValueTargetHeaterCoolerState: {
  Automatic: 0,
  Heat: 1,
  Cool: 2,
};

declare const HMCharacteristicValueTargetDoorState: {
  Open: 0,
  Closed: 1,
};

declare const HMCharacteristicValuePositionState: {
  Closing: 0,
  Opening: 1,
  Stopped: 2,
};

declare const HMCharacteristicValueDoorState: {
  Open: 0,
  Closed: 1,
  Opening: 2,
  Closing: 3,
  Stopped: 4,
};

declare const HMCharacteristicValueSwingMode: {
  Disabled: 0,
  Enabled: 1,
};

declare const HMCharacteristicValueRemoteKey: {
  Rewind: 0,
  FastForward: 1,
  NextTrack: 2,
  PreviousTrack: 3,
  ArrowUp: 4,
  ArrowDown: 5,
  ArrowLeft: 6,
  ArrowRight: 7,
  Select: 8,
  Back: 9,
  Exit: 10,
  PlayPause: 11,
  Play: 12,
  Pause: 13,
  Menu: 14,
  Info: 15,
  Home: 16,
};

declare const HMCharacteristicValueProgramMode: {
  NotScheduled: 0,
  Scheduled: 1,
  ScheduleOverriddenToManual: 2,
};

declare const HMCharacteristicValueInputDeviceType: {
  Other: 0,
  TV: 1,
  Recording: 2,
  Tuner: 3,
  Playback: 4,
  AudioSystem: 5,
  None: 6,
};

declare const HMCharacteristicValueContactState: {
  Detected: 0,
  None: 1,
};

declare const HMCharacteristicValueCurrentSecuritySystemState: {
  StayArm: 0,
  AwayArm: 1,
  NightArm: 2,
  Disarmed: 3,
  Triggered: 4,
};

declare interface HMCameraStreamControlDelegate extends NSObjectProtocol {
  cameraStreamControlDidStartStream?(cameraStreamControl: HMCameraStreamControl): void;

  cameraStreamControlDidStopStreamWithError?(cameraStreamControl: HMCameraStreamControl, error: NSError | null): void;
}

declare class HMCameraStreamControlDelegate extends NativeObject implements HMCameraStreamControlDelegate {
}

declare interface HMNetworkConfigurationProfileDelegate extends NSObjectProtocol {
  profileDidUpdateNetworkAccessMode?(profile: HMNetworkConfigurationProfile): void;
}

declare class HMNetworkConfigurationProfileDelegate extends NativeObject implements HMNetworkConfigurationProfileDelegate {
}

declare interface HMAccessoryDelegate extends NSObjectProtocol {
  accessoryDidUpdateName?(accessory: HMAccessory): void;

  accessoryDidUpdateNameForService?(accessory: HMAccessory, service: HMService): void;

  accessoryDidUpdateAssociatedServiceTypeForService?(accessory: HMAccessory, service: HMService): void;

  accessoryDidUpdateServices?(accessory: HMAccessory): void;

  accessoryDidAddProfile?(accessory: HMAccessory, profile: HMAccessoryProfile): void;

  accessoryDidRemoveProfile?(accessory: HMAccessory, profile: HMAccessoryProfile): void;

  accessoryDidUpdateReachability?(accessory: HMAccessory): void;

  accessoryServiceDidUpdateValueForCharacteristic?(accessory: HMAccessory, service: HMService, characteristic: HMCharacteristic): void;

  accessoryDidUpdateFirmwareVersion?(accessory: HMAccessory, firmwareVersion: string): void;
}

declare class HMAccessoryDelegate extends NativeObject implements HMAccessoryDelegate {
}

declare interface HMHomeDelegate extends NSObjectProtocol {
  homeDidUpdateName?(home: HMHome): void;

  homeDidUpdateAccessControlForCurrentUser?(home: HMHome): void;

  homeDidAddAccessory?(home: HMHome, accessory: HMAccessory): void;

  homeDidRemoveAccessory?(home: HMHome, accessory: HMAccessory): void;

  homeDidAddUser?(home: HMHome, user: HMUser): void;

  homeDidRemoveUser?(home: HMHome, user: HMUser): void;

  homeDidUpdateRoomForAccessory?(home: HMHome, room: HMRoom, accessory: HMAccessory): void;

  homeDidAddRoom?(home: HMHome, room: HMRoom): void;

  homeDidRemoveRoom?(home: HMHome, room: HMRoom): void;

  homeDidUpdateNameForRoom?(home: HMHome, room: HMRoom): void;

  homeDidAddZone?(home: HMHome, zone: HMZone): void;

  homeDidRemoveZone?(home: HMHome, zone: HMZone): void;

  homeDidUpdateNameForZone?(home: HMHome, zone: HMZone): void;

  homeDidAddRoomToZone?(home: HMHome, room: HMRoom, zone: HMZone): void;

  homeDidRemoveRoomFromZone?(home: HMHome, room: HMRoom, zone: HMZone): void;

  homeDidAddServiceGroup?(home: HMHome, group: HMServiceGroup): void;

  homeDidRemoveServiceGroup?(home: HMHome, group: HMServiceGroup): void;

  homeDidUpdateNameForServiceGroup?(home: HMHome, group: HMServiceGroup): void;

  homeDidAddServiceToServiceGroup?(home: HMHome, service: HMService, group: HMServiceGroup): void;

  homeDidRemoveServiceFromServiceGroup?(home: HMHome, service: HMService, group: HMServiceGroup): void;

  homeDidAddActionSet?(home: HMHome, actionSet: HMActionSet): void;

  homeDidRemoveActionSet?(home: HMHome, actionSet: HMActionSet): void;

  homeDidUpdateNameForActionSet?(home: HMHome, actionSet: HMActionSet): void;

  homeDidUpdateActionsForActionSet?(home: HMHome, actionSet: HMActionSet): void;

  homeDidAddTrigger?(home: HMHome, trigger: HMTrigger): void;

  homeDidRemoveTrigger?(home: HMHome, trigger: HMTrigger): void;

  homeDidUpdateNameForTrigger?(home: HMHome, trigger: HMTrigger): void;

  homeDidUpdateTrigger?(home: HMHome, trigger: HMTrigger): void;

  homeDidUnblockAccessory?(home: HMHome, accessory: HMAccessory): void;

  homeDidEncounterErrorForAccessory?(home: HMHome, error: NSError, accessory: HMAccessory): void;

  homeDidUpdateHomeHubState?(home: HMHome, homeHubState: interop.Enum<typeof HMHomeHubState>): void;

  homeDidUpdateSupportedFeatures?(home: HMHome): void;
}

declare class HMHomeDelegate extends NativeObject implements HMHomeDelegate {
}

declare interface HMHomeManagerDelegate extends NSObjectProtocol {
  homeManagerDidUpdateAuthorizationStatus?(manager: HMHomeManager, status: interop.Enum<typeof HMHomeManagerAuthorizationStatus>): void;

  homeManagerDidUpdateHomes?(manager: HMHomeManager): void;

  homeManagerDidUpdatePrimaryHome?(manager: HMHomeManager): void;

  homeManagerDidAddHome?(manager: HMHomeManager, home: HMHome): void;

  homeManagerDidRemoveHome?(manager: HMHomeManager, home: HMHome): void;

  homeManagerDidReceiveAddAccessoryRequest?(manager: HMHomeManager, request: HMAddAccessoryRequest): void;
}

declare class HMHomeManagerDelegate extends NativeObject implements HMHomeManagerDelegate {
}

declare interface HMAccessoryBrowserDelegate extends NSObjectProtocol {
  accessoryBrowserDidFindNewAccessory?(browser: HMAccessoryBrowser, accessory: HMAccessory): void;

  accessoryBrowserDidRemoveNewAccessory?(browser: HMAccessoryBrowser, accessory: HMAccessory): void;
}

declare class HMAccessoryBrowserDelegate extends NativeObject implements HMAccessoryBrowserDelegate {
}

declare interface HMCameraSnapshotControlDelegate extends NSObjectProtocol {
  cameraSnapshotControlDidTakeSnapshotError?(cameraSnapshotControl: HMCameraSnapshotControl, snapshot: HMCameraSnapshot | null, error: NSError | null): void;

  cameraSnapshotControlDidUpdateMostRecentSnapshot?(cameraSnapshotControl: HMCameraSnapshotControl): void;
}

declare class HMCameraSnapshotControlDelegate extends NativeObject implements HMCameraSnapshotControlDelegate {
}

declare class HMAccessoryCategory extends NSObject {
  readonly categoryType: string;

  readonly localizedDescription: string;
}

declare class HMCharacteristicThresholdRangeEvent extends HMEvent implements NSCopying, NSMutableCopying {
  initWithCharacteristicThresholdRange(characteristic: HMCharacteristic, thresholdRange: HMNumberRange): this;

  readonly characteristic: HMCharacteristic;

  readonly thresholdRange: HMNumberRange;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  mutableCopyWithZone(zone: interop.PointerConvertible): interop.Object;
}

declare class HMPresenceEvent extends HMEvent implements NSCopying, NSMutableCopying {
  initWithPresenceEventTypePresenceUserType(presenceEventType: interop.Enum<typeof HMPresenceEventType>, presenceUserType: interop.Enum<typeof HMPresenceEventUserType>): this;

  readonly presenceEventType: interop.Enum<typeof HMPresenceEventType>;

  readonly presenceUserType: interop.Enum<typeof HMPresenceEventUserType>;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  mutableCopyWithZone(zone: interop.PointerConvertible): interop.Object;
}

declare class HMSignificantTimeEvent extends HMTimeEvent implements NSCopying, NSMutableCopying {
  initWithSignificantEventOffset(significantEvent: string, offset: NSDateComponents | null): this;

  readonly significantEvent: string;

  readonly offset: NSDateComponents;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  mutableCopyWithZone(zone: interop.PointerConvertible): interop.Object;
}

declare class HMNetworkConfigurationProfile extends HMAccessoryProfile {
  delegate: HMNetworkConfigurationProfileDelegate | null;

  readonly networkAccessRestricted: boolean;

  setDelegate(delegate: HMNetworkConfigurationProfileDelegate | null): void;

  isNetworkAccessRestricted(): boolean;
}

declare class HMAccessorySetupResult extends NSObject implements NSCopying {
  readonly homeUniqueIdentifier: NSUUID;

  readonly accessoryUniqueIdentifiers: NSArray;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;
}

declare class HMAccessorySetupRequest extends NSObject implements NSCopying {
  init(): this;

  payload: HMAccessorySetupPayload;

  homeUniqueIdentifier: NSUUID;

  suggestedRoomUniqueIdentifier: NSUUID;

  suggestedAccessoryName: string;

  matterPayload: MTRSetupPayload;

  setPayload(payload: HMAccessorySetupPayload | null): void;

  setHomeUniqueIdentifier(homeUniqueIdentifier: NSUUID | null): void;

  setSuggestedRoomUniqueIdentifier(suggestedRoomUniqueIdentifier: NSUUID | null): void;

  setSuggestedAccessoryName(suggestedAccessoryName: string | null): void;

  setMatterPayload(matterPayload: MTRSetupPayload | null): void;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;
}

declare class HMAccessorySetupPayload extends NSObject {
  initWithURL(setupPayloadURL: NSURL | null): this;

  initWithURLOwnershipToken(setupPayloadURL: NSURL, ownershipToken: HMAccessoryOwnershipToken | null): this;
}

declare class HMAccessorySetupManager extends NSObject {
  init(): this;

  performAccessorySetupUsingRequestCompletionHandler(request: HMAccessorySetupRequest, completion: (p1: HMAccessorySetupResult, p2: NSError) => void | null): void;
}

declare class HMCameraSnapshot extends HMCameraSource {
  readonly captureDate: NSDate;

  init(): this;
}

declare class HMCameraProfile extends HMAccessoryProfile {
  readonly streamControl: HMCameraStreamControl;

  readonly snapshotControl: HMCameraSnapshotControl;

  readonly settingsControl: HMCameraSettingsControl;

  readonly speakerControl: HMCameraAudioControl;

  readonly microphoneControl: HMCameraAudioControl;
}

declare class HMCameraView extends UIView {
  init(): this;

  cameraSource: HMCameraSource;

  setCameraSource(cameraSource: HMCameraSource | null): void;
}

// @ts-ignore ClassDecl.tsIgnore
declare class HMMutablePresenceEvent extends HMPresenceEvent {
  // @ts-ignore MemberDecl.tsIgnore
  presenceEventType: interop.Enum<typeof HMPresenceEventType>;

  // @ts-ignore MemberDecl.tsIgnore
  presenceUserType: interop.Enum<typeof HMPresenceEventUserType>;

  setPresenceEventType(presenceEventType: interop.Enum<typeof HMPresenceEventType>): void;

  setPresenceUserType(presenceUserType: interop.Enum<typeof HMPresenceEventUserType>): void;
}

declare class HMNumberRange extends NSObject {
  static numberRangeWithMinValueMaxValue<This extends abstract new (...args: any) => any>(this: This, minValue: NSNumber, maxValue: NSNumber): InstanceType<This>;

  static numberRangeWithMinValue<This extends abstract new (...args: any) => any>(this: This, minValue: NSNumber): InstanceType<This>;

  static numberRangeWithMaxValue<This extends abstract new (...args: any) => any>(this: This, maxValue: NSNumber): InstanceType<This>;

  readonly minValue: NSNumber;

  readonly maxValue: NSNumber;
}

// @ts-ignore ClassDecl.tsIgnore
declare class HMMutableCharacteristicThresholdRangeEvent extends HMCharacteristicThresholdRangeEvent {
  // @ts-ignore MemberDecl.tsIgnore
  characteristic: HMCharacteristic;

  // @ts-ignore MemberDecl.tsIgnore
  thresholdRange: HMNumberRange;

  setCharacteristic(characteristic: HMCharacteristic): void;

  setThresholdRange(thresholdRange: HMNumberRange): void;
}

// @ts-ignore ClassDecl.tsIgnore
declare class HMMutableCharacteristicEvent<TriggerValueType = interop.Object> extends HMCharacteristicEvent {
  // @ts-ignore MemberDecl.tsIgnore
  characteristic: HMCharacteristic;

  // @ts-ignore MemberDecl.tsIgnore
  triggerValue: TriggerValueType;

  setCharacteristic(characteristic: HMCharacteristic): void;

  setTriggerValue(triggerValue: TriggerValueType | null): void;
}

declare class HMEvent extends NSObject {
  init(): this;

  static new<This extends abstract new (...args: any) => any>(this: This): InstanceType<This>;

  readonly uniqueIdentifier: NSUUID;

  static isSupportedForHome(home: HMHome): boolean;
}

declare class HMService extends NSObject {
  readonly accessory: HMAccessory | null;

  readonly serviceType: string;

  readonly localizedDescription: string;

  readonly name: string;

  readonly associatedServiceType: string;

  readonly characteristics: NSArray;

  readonly uniqueIdentifier: NSUUID;

  readonly userInteractive: boolean;

  readonly primaryService: boolean;

  readonly linkedServices: NSArray | null;

  readonly matterEndpointID: NSNumber;

  updateNameCompletionHandler(name: string, completion: (p1: NSError) => void | null): void;

  updateAssociatedServiceTypeCompletionHandler(serviceType: string | null, completion: (p1: NSError) => void | null): void;

  init(): this;

  isUserInteractive(): boolean;

  isPrimaryService(): boolean;
}

declare class HMRoom extends NSObject {
  readonly name: string;

  readonly accessories: NSArray;

  readonly uniqueIdentifier: NSUUID;

  updateNameCompletionHandler(name: string, completion: (p1: NSError) => void | null): void;
}

declare class HMHomeManager extends NSObject {
  init(): this;

  delegate: HMHomeManagerDelegate;

  readonly authorizationStatus: interop.Enum<typeof HMHomeManagerAuthorizationStatus>;

  readonly primaryHome: HMHome;

  readonly homes: NSArray;

  updatePrimaryHomeCompletionHandler(home: HMHome, completion: (p1: NSError) => void | null): void;

  addHomeWithNameCompletionHandler(homeName: string, completion: (p1: HMHome, p2: NSError) => void | null): void;

  removeHomeCompletionHandler(home: HMHome, completion: (p1: NSError) => void | null): void;

  setDelegate(delegate: HMHomeManagerDelegate | null): void;

  findVendorAccessoryWithHAPPublicKeyCompletionHandler(hapPublicKey: NSData, completion: (p1: HMAccessory, p2: NSError) => void | null): void;
}

declare class HMHomeAccessControl extends HMAccessControl {
  readonly administrator: boolean;

  isAdministrator(): boolean;
}

declare class HMAccessControl extends NSObject {
}

declare class HMCharacteristicMetadata extends NSObject {
  init(): this;

  readonly minimumValue: NSNumber;

  readonly maximumValue: NSNumber;

  readonly stepValue: NSNumber;

  readonly maxLength: NSNumber;

  readonly format: string;

  readonly units: string;

  readonly manufacturerDescription: string;

  readonly validValues: NSArray;
}

declare class HMCharacteristic extends NSObject {
  readonly characteristicType: string;

  readonly localizedDescription: string;

  readonly service: HMService | null;

  readonly properties: NSArray;

  readonly metadata: HMCharacteristicMetadata;

  readonly value: interop.Object;

  readonly notificationEnabled: boolean;

  readonly uniqueIdentifier: NSUUID;

  writeValueCompletionHandler(value: interop.Object | null, completion: (p1: NSError) => void | null): void;

  readValueWithCompletionHandler(completion: (p1: NSError) => void | null): void;

  enableNotificationCompletionHandler(enable: boolean, completion: (p1: NSError) => void | null): void;

  updateAuthorizationDataCompletionHandler(data: NSData | null, completion: (p1: NSError) => void | null): void;

  init(): this;

  isNotificationEnabled(): boolean;
}

declare class HMActionSet extends NSObject {
  readonly name: string;

  readonly actions: NSSet;

  readonly executing: boolean;

  readonly actionSetType: string;

  readonly uniqueIdentifier: NSUUID;

  readonly lastExecutionDate: NSDate;

  updateNameCompletionHandler(name: string, completion: (p1: NSError) => void): void;

  addActionCompletionHandler(action: HMAction, completion: (p1: NSError) => void): void;

  removeActionCompletionHandler(action: HMAction, completion: (p1: NSError) => void): void;

  isExecuting(): boolean;
}

declare class HMAccessoryBrowser extends NSObject {
  init(): this;

  delegate: HMAccessoryBrowserDelegate;

  readonly discoveredAccessories: NSArray;

  startSearchingForNewAccessories(): void;

  stopSearchingForNewAccessories(): void;

  setDelegate(delegate: HMAccessoryBrowserDelegate | null): void;
}

declare class HMAccessory extends NSObject {
  readonly home: HMHome;

  readonly name: string;

  readonly identifier: NSUUID;

  readonly uniqueIdentifier: NSUUID;

  delegate: HMAccessoryDelegate;

  readonly reachable: boolean;

  readonly bridged: boolean;

  readonly identifiersForBridgedAccessories: NSArray;

  readonly uniqueIdentifiersForBridgedAccessories: NSArray;

  readonly bridgedAccessories: NSArray;

  readonly category: HMAccessoryCategory;

  readonly room: HMRoom | null;

  readonly services: NSArray;

  readonly profiles: NSArray;

  readonly blocked: boolean;

  readonly model: string;

  readonly manufacturer: string;

  readonly firmwareVersion: string;

  readonly supportsIdentify: boolean;

  readonly matterNodeID: NSNumber;

  updateNameCompletionHandler(name: string, completion: (p1: NSError) => void | null): void;

  identifyWithCompletionHandler(completion: (p1: NSError) => void | null): void;

  init(): this;

  setDelegate(delegate: HMAccessoryDelegate | null): void;

  isReachable(): boolean;

  isBridged(): boolean;

  isBlocked(): boolean;

  readonly cameraProfiles: NSArray;

  readonly vendorAccessory: boolean;

  isVendorAccessory(): boolean;

  readonly HAPInstanceID: NSNumber;
}

declare class HMServiceGroup extends NSObject {
  readonly name: string;

  readonly services: NSArray;

  readonly uniqueIdentifier: NSUUID;

  updateNameCompletionHandler(name: string, completion: (p1: NSError) => void | null): void;

  addServiceCompletionHandler(service: HMService, completion: (p1: NSError) => void | null): void;

  removeServiceCompletionHandler(service: HMService, completion: (p1: NSError) => void | null): void;
}

declare class HMCameraStreamControl extends HMCameraControl {
  delegate: HMCameraStreamControlDelegate | null;

  readonly streamState: interop.Enum<typeof HMCameraStreamState>;

  readonly cameraStream: HMCameraStream;

  startStream(): void;

  stopStream(): void;

  init(): this;

  setDelegate(delegate: HMCameraStreamControlDelegate | null): void;
}

declare class HMDurationEvent extends HMTimeEvent implements NSCopying, NSMutableCopying {
  initWithDuration(duration: number): this;

  readonly duration: number;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  mutableCopyWithZone(zone: interop.PointerConvertible): interop.Object;
}

declare class HMCharacteristicWriteAction<TargetValueType = interop.Object> extends HMAction {
  initWithCharacteristicTargetValue(characteristic: HMCharacteristic, targetValue: TargetValueType): this;

  readonly characteristic: HMCharacteristic;

  readonly targetValue: TargetValueType;

  updateTargetValueCompletionHandler(targetValue: TargetValueType, completion: (p1: NSError) => void | null): void;
}

declare class HMCameraSettingsControl extends HMCameraControl {
  readonly nightVision: HMCharacteristic;

  readonly currentHorizontalTilt: HMCharacteristic;

  readonly targetHorizontalTilt: HMCharacteristic;

  readonly currentVerticalTilt: HMCharacteristic;

  readonly targetVerticalTilt: HMCharacteristic;

  readonly opticalZoom: HMCharacteristic;

  readonly digitalZoom: HMCharacteristic;

  readonly imageRotation: HMCharacteristic;

  readonly imageMirroring: HMCharacteristic;
}

declare class HMAccessoryProfile extends NSObject {
  readonly uniqueIdentifier: NSUUID;

  readonly services: NSArray;

  readonly accessory: HMAccessory | null;
}

declare class HMCameraStream extends HMCameraSource {
  readonly audioStreamSetting: interop.Enum<typeof HMCameraAudioStreamSetting>;

  setAudioStreamSetting(audioStreamSetting: interop.Enum<typeof HMCameraAudioStreamSetting>): void;

  updateAudioStreamSettingCompletionHandler(audioStreamSetting: interop.Enum<typeof HMCameraAudioStreamSetting>, completion: (p1: NSError) => void | null): void;

  init(): this;
}

declare class HMCameraAudioControl extends HMCameraControl {
  readonly mute: HMCharacteristic;

  readonly volume: HMCharacteristic;
}

// @ts-ignore ClassDecl.tsIgnore
declare class HMMutableLocationEvent extends HMLocationEvent {
  // @ts-ignore MemberDecl.tsIgnore
  region: CLRegion;

  setRegion(region: CLRegion | null): void;
}

declare class HMEventTrigger extends HMTrigger {
  initWithNameEventsPredicate(name: string, events: NSArray<interop.Object> | Array<interop.Object>, predicate: NSPredicate | null): this;

  initWithNameEventsEndEventsRecurrencesPredicate(name: string, events: NSArray<interop.Object> | Array<interop.Object>, endEvents: NSArray<interop.Object> | Array<interop.Object> | null, recurrences: NSArray<interop.Object> | Array<interop.Object> | null, predicate: NSPredicate | null): this;

  readonly events: NSArray;

  readonly endEvents: NSArray;

  readonly predicate: NSPredicate;

  readonly recurrences: NSArray;

  readonly executeOnce: boolean;

  readonly triggerActivationState: interop.Enum<typeof HMEventTriggerActivationState>;

  addEventCompletionHandler(event: HMEvent, completion: (p1: NSError) => void | null): void;

  removeEventCompletionHandler(event: HMEvent, completion: (p1: NSError) => void | null): void;

  updateEventsCompletionHandler(events: NSArray<interop.Object> | Array<interop.Object>, completion: (p1: NSError) => void | null): void;

  updateEndEventsCompletionHandler(endEvents: NSArray<interop.Object> | Array<interop.Object>, completion: (p1: NSError) => void | null): void;

  updatePredicateCompletionHandler(predicate: NSPredicate | null, completion: (p1: NSError) => void | null): void;

  updateRecurrencesCompletionHandler(recurrences: NSArray<interop.Object> | Array<interop.Object> | null, completion: (p1: NSError) => void | null): void;

  updateExecuteOnceCompletionHandler(executeOnce: boolean, completion: (p1: NSError) => void | null): void;

  static predicateForEvaluatingTriggerOccurringBeforeSignificantEventApplyingOffset(significantEvent: string, offset: NSDateComponents | null): NSPredicate;

  static predicateForEvaluatingTriggerOccurringBeforeSignificantEvent(significantEvent: HMSignificantTimeEvent): NSPredicate;

  static predicateForEvaluatingTriggerOccurringAfterSignificantEventApplyingOffset(significantEvent: string, offset: NSDateComponents | null): NSPredicate;

  static predicateForEvaluatingTriggerOccurringAfterSignificantEvent(significantEvent: HMSignificantTimeEvent): NSPredicate;

  static predicateForEvaluatingTriggerOccurringBetweenSignificantEventSecondSignificantEvent(firstSignificantEvent: HMSignificantTimeEvent, secondSignificantEvent: HMSignificantTimeEvent): NSPredicate;

  static predicateForEvaluatingTriggerOccurringBeforeDateWithComponents(dateComponents: NSDateComponents): NSPredicate;

  static predicateForEvaluatingTriggerOccurringOnDateWithComponents(dateComponents: NSDateComponents): NSPredicate;

  static predicateForEvaluatingTriggerOccurringAfterDateWithComponents(dateComponents: NSDateComponents): NSPredicate;

  static predicateForEvaluatingTriggerOccurringBetweenDateWithComponentsSecondDateWithComponents(firstDateComponents: NSDateComponents, secondDateWithComponents: NSDateComponents): NSPredicate;

  static predicateForEvaluatingTriggerWithCharacteristicRelatedByToValue(characteristic: HMCharacteristic, operatorType: interop.Enum<typeof NSPredicateOperatorType>, value: interop.Object): NSPredicate;

  static predicateForEvaluatingTriggerWithPresence(presenceEvent: HMPresenceEvent): NSPredicate;
}

// @ts-ignore ClassDecl.tsIgnore
declare class HMMutableCalendarEvent extends HMCalendarEvent {
  // @ts-ignore MemberDecl.tsIgnore
  fireDateComponents: NSDateComponents;

  setFireDateComponents(fireDateComponents: NSDateComponents): void;
}

declare class HMCharacteristicEvent<TriggerValueType = interop.Object> extends HMEvent implements NSCopying, NSMutableCopying {
  initWithCharacteristicTriggerValue(characteristic: HMCharacteristic, triggerValue: TriggerValueType | null): this;

  readonly characteristic: HMCharacteristic;

  readonly triggerValue: TriggerValueType;

  updateTriggerValueCompletionHandler(triggerValue: TriggerValueType | null, completion: (p1: NSError) => void | null): void;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  mutableCopyWithZone(zone: interop.PointerConvertible): interop.Object;
}

declare class HMUser extends NSObject {
  readonly name: string;

  readonly uniqueIdentifier: NSUUID;
}

declare class HMAction extends NSObject {
  init(): this;

  static new<This extends abstract new (...args: any) => any>(this: This): InstanceType<This>;

  readonly uniqueIdentifier: NSUUID;
}

declare class HMTrigger extends NSObject {
  readonly name: string;

  readonly enabled: boolean;

  readonly actionSets: NSArray;

  readonly lastFireDate: NSDate;

  readonly uniqueIdentifier: NSUUID;

  updateNameCompletionHandler(name: string, completion: (p1: NSError) => void | null): void;

  addActionSetCompletionHandler(actionSet: HMActionSet, completion: (p1: NSError) => void | null): void;

  removeActionSetCompletionHandler(actionSet: HMActionSet, completion: (p1: NSError) => void | null): void;

  enableCompletionHandler(enable: boolean, completion: (p1: NSError) => void | null): void;

  isEnabled(): boolean;
}

declare class HMTimeEvent extends HMEvent {
}

declare class HMAccessoryOwnershipToken extends NSObject {
  initWithData(data: NSData): this;
}

// @ts-ignore ClassDecl.tsIgnore
declare class HMMutableSignificantTimeEvent extends HMSignificantTimeEvent {
  // @ts-ignore MemberDecl.tsIgnore
  significantEvent: string;

  // @ts-ignore MemberDecl.tsIgnore
  offset: NSDateComponents;

  setSignificantEvent(significantEvent: string): void;

  setOffset(offset: NSDateComponents): void;
}

declare class HMCameraControl extends NSObject {
  init(): this;
}

declare class HMLocationEvent extends HMEvent implements NSCopying, NSMutableCopying {
  initWithRegion(region: CLRegion): this;

  readonly region: CLRegion;

  updateRegionCompletionHandler(region: CLRegion, completion: (p1: NSError) => void | null): void;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  mutableCopyWithZone(zone: interop.PointerConvertible): interop.Object;
}

declare class HMCameraSource extends NSObject {
  readonly aspectRatio: number;

  init(): this;
}

// @ts-ignore ClassDecl.tsIgnore
declare class HMMutableDurationEvent extends HMDurationEvent {
  // @ts-ignore MemberDecl.tsIgnore
  duration: number;

  setDuration(duration: number): void;
}

declare class HMHome extends NSObject {
  delegate: HMHomeDelegate;

  readonly name: string;

  readonly primary: boolean;

  readonly homeHubState: interop.Enum<typeof HMHomeHubState>;

  readonly uniqueIdentifier: NSUUID;

  updateNameCompletionHandler(name: string, completion: (p1: NSError) => void | null): void;

  setDelegate(delegate: HMHomeDelegate | null): void;

  isPrimary(): boolean;

  readonly accessories: NSArray;

  addAccessoryCompletionHandler(accessory: HMAccessory, completion: (p1: NSError) => void | null): void;

  removeAccessoryCompletionHandler(accessory: HMAccessory, completion: (p1: NSError) => void | null): void;

  assignAccessoryToRoomCompletionHandler(accessory: HMAccessory, room: HMRoom, completion: (p1: NSError) => void | null): void;

  servicesWithTypes(serviceTypes: NSArray<interop.Object> | Array<interop.Object>): NSArray;

  unblockAccessoryCompletionHandler(accessory: HMAccessory, completion: (p1: NSError) => void | null): void;

  addAndSetupAccessoriesWithCompletionHandler(completion: (p1: NSError) => void | null): void;

  addAndSetupAccessoriesWithPayloadCompletionHandler(payload: HMAccessorySetupPayload, completion: (p1: NSArray<interop.Object> | Array<interop.Object>, p2: NSError) => void | null): void;

  readonly supportsAddingNetworkRouter: boolean;

  readonly currentUser: HMUser;

  readonly users: NSArray;

  manageUsersWithCompletionHandler(completion: (p1: NSError) => void | null): void;

  addUserWithCompletionHandler(completion: (p1: HMUser, p2: NSError) => void | null): void;

  removeUserCompletionHandler(user: HMUser, completion: (p1: NSError) => void | null): void;

  homeAccessControlForUser(user: HMUser): HMHomeAccessControl;

  readonly rooms: NSArray;

  addRoomWithNameCompletionHandler(roomName: string, completion: (p1: HMRoom, p2: NSError) => void | null): void;

  removeRoomCompletionHandler(room: HMRoom, completion: (p1: NSError) => void | null): void;

  roomForEntireHome(): HMRoom;

  readonly zones: NSArray;

  addZoneWithNameCompletionHandler(zoneName: string, completion: (p1: HMZone, p2: NSError) => void | null): void;

  removeZoneCompletionHandler(zone: HMZone, completion: (p1: NSError) => void | null): void;

  readonly serviceGroups: NSArray;

  addServiceGroupWithNameCompletionHandler(serviceGroupName: string, completion: (p1: HMServiceGroup, p2: NSError) => void | null): void;

  removeServiceGroupCompletionHandler(group: HMServiceGroup, completion: (p1: NSError) => void | null): void;

  readonly actionSets: NSArray;

  addActionSetWithNameCompletionHandler(actionSetName: string, completion: (p1: HMActionSet, p2: NSError) => void | null): void;

  removeActionSetCompletionHandler(actionSet: HMActionSet, completion: (p1: NSError) => void | null): void;

  executeActionSetCompletionHandler(actionSet: HMActionSet, completion: (p1: NSError) => void | null): void;

  builtinActionSetOfType(actionSetType: string): HMActionSet;

  readonly triggers: NSArray;

  addTriggerCompletionHandler(trigger: HMTrigger, completion: (p1: NSError) => void | null): void;

  removeTriggerCompletionHandler(trigger: HMTrigger, completion: (p1: NSError) => void | null): void;

  readonly matterControllerID: string;

  readonly matterControllerXPCConnectBlock: () => NSXPCConnection;

  readonly matterStartupParametersXPCConnectBlock: () => NSXPCConnection;
}

declare class HMAddAccessoryRequest extends NSObject {
  readonly home: HMHome;

  readonly accessoryName: string;

  readonly accessoryCategory: HMAccessoryCategory;

  readonly requiresSetupPayloadURL: boolean;

  readonly requiresOwnershipToken: boolean;

  payloadWithOwnershipToken(ownershipToken: HMAccessoryOwnershipToken): HMAccessorySetupPayload;

  payloadWithURLOwnershipToken(setupPayloadURL: NSURL, ownershipToken: HMAccessoryOwnershipToken): HMAccessorySetupPayload;

  init(): this;
}

declare class HMCalendarEvent extends HMTimeEvent implements NSCopying, NSMutableCopying {
  initWithFireDateComponents(fireDateComponents: NSDateComponents): this;

  readonly fireDateComponents: NSDateComponents;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  mutableCopyWithZone(zone: interop.PointerConvertible): interop.Object;
}

declare class HMCameraSnapshotControl extends HMCameraControl {
  delegate: HMCameraSnapshotControlDelegate | null;

  readonly mostRecentSnapshot: HMCameraSnapshot;

  takeSnapshot(): void;

  init(): this;

  setDelegate(delegate: HMCameraSnapshotControlDelegate | null): void;
}

declare class HMTimerTrigger extends HMTrigger {
  initWithNameFireDateRecurrence(name: string, fireDate: NSDate, recurrence: NSDateComponents | null): this;

  initWithNameFireDateTimeZoneRecurrenceRecurrenceCalendar(name: string, fireDate: NSDate, timeZone: NSTimeZone | null, recurrence: NSDateComponents | null, recurrenceCalendar: NSCalendar | null): this;

  readonly fireDate: NSDate;

  readonly timeZone: NSTimeZone;

  readonly recurrence: NSDateComponents;

  readonly recurrenceCalendar: NSCalendar;

  updateFireDateCompletionHandler(fireDate: NSDate, completion: (p1: NSError) => void | null): void;

  updateTimeZoneCompletionHandler(timeZone: NSTimeZone | null, completion: (p1: NSError) => void | null): void;

  updateRecurrenceCompletionHandler(recurrence: NSDateComponents | null, completion: (p1: NSError) => void | null): void;
}

declare class HMZone extends NSObject {
  readonly name: string;

  readonly rooms: NSArray;

  readonly uniqueIdentifier: NSUUID;

  updateNameCompletionHandler(name: string, completion: (p1: NSError) => void | null): void;

  addRoomCompletionHandler(room: HMRoom, completion: (p1: NSError) => void | null): void;

  removeRoomCompletionHandler(room: HMRoom, completion: (p1: NSError) => void | null): void;
}

