///
/// HybridNitroDeviceModuleSpec.swift
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © 2024 Marc Rousavy @ Margelo
///

import Foundation
import NitroModules

/**
 * A Swift protocol representing the NitroDeviceModule HybridObject.
 * Implement this protocol to create Swift-based instances of NitroDeviceModule.
 *
 * When implementing this protocol, make sure to initialize `hybridContext` - example:
 * ```
 * public class HybridNitroDeviceModule : HybridNitroDeviceModuleSpec {
 *   // Initialize HybridContext
 *   var hybridContext = margelo.nitro.HybridContext()
 *
 *   // Return size of the instance to inform JS GC about memory pressure
 *   var memorySize: Int {
 *     return getSizeOf(self)
 *   }
 *
 *   // ...
 * }
 * ```
 */
public protocol HybridNitroDeviceModuleSpec: AnyObject, HybridObjectSpec {
  // Properties
  

  // Methods
  func getDeviceTraits() throws -> DeviceTraits
  func runHaptic(type: HapticTypes) throws -> Void
  func getColorScheme() throws -> ColorScheme
  func getScreenDimensions() throws -> ScreenDimensions
  func getContentSizeCategory() throws -> String
  func getScreenInsets() throws -> ScreenInsets
  func getDisplayScale() throws -> Double
  func getFontScale() throws -> Double
  func getIsRTL() throws -> Bool
  func getScreenOrientation() throws -> ScreenOrientation
  func getPixelRatio() throws -> Double
}
