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

import NitroModules

// TODO: Use empty enums once Swift supports exporting them as namespaces
//       See: https://github.com/swiftlang/swift/pull/83616
public final class MLXReactNativeAutolinking {
  public typealias bridge = margelo.nitro.mlxreactnative.bridge.swift

  public static func createLLM() -> bridge.std__shared_ptr_HybridLLMSpec_ {
    let hybridObject = HybridLLM()
    return { () -> bridge.std__shared_ptr_HybridLLMSpec_ in
      let __cxxWrapped = hybridObject.getCxxWrapper()
      return __cxxWrapped.getCxxPart()
    }()
  }
  
  public static func isLLMRecyclable() -> Bool {
    return HybridLLM.self is any RecyclableView.Type
  }
  
  public static func createModelManager() -> bridge.std__shared_ptr_HybridModelManagerSpec_ {
    let hybridObject = HybridModelManager()
    return { () -> bridge.std__shared_ptr_HybridModelManagerSpec_ in
      let __cxxWrapped = hybridObject.getCxxWrapper()
      return __cxxWrapped.getCxxPart()
    }()
  }
  
  public static func isModelManagerRecyclable() -> Bool {
    return HybridModelManager.self is any RecyclableView.Type
  }
  
  public static func createTTS() -> bridge.std__shared_ptr_HybridTTSSpec_ {
    let hybridObject = HybridTTS()
    return { () -> bridge.std__shared_ptr_HybridTTSSpec_ in
      let __cxxWrapped = hybridObject.getCxxWrapper()
      return __cxxWrapped.getCxxPart()
    }()
  }
  
  public static func isTTSRecyclable() -> Bool {
    return HybridTTS.self is any RecyclableView.Type
  }
  
  public static func createSTT() -> bridge.std__shared_ptr_HybridSTTSpec_ {
    let hybridObject = HybridSTT()
    return { () -> bridge.std__shared_ptr_HybridSTTSpec_ in
      let __cxxWrapped = hybridObject.getCxxWrapper()
      return __cxxWrapped.getCxxPart()
    }()
  }
  
  public static func isSTTRecyclable() -> Bool {
    return HybridSTT.self is any RecyclableView.Type
  }
  
  public static func createEmbeddings() -> bridge.std__shared_ptr_HybridEmbeddingsSpec_ {
    let hybridObject = HybridEmbeddings()
    return { () -> bridge.std__shared_ptr_HybridEmbeddingsSpec_ in
      let __cxxWrapped = hybridObject.getCxxWrapper()
      return __cxxWrapped.getCxxPart()
    }()
  }
  
  public static func isEmbeddingsRecyclable() -> Bool {
    return HybridEmbeddings.self is any RecyclableView.Type
  }
}
