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

package com.margelo.nitro.videodrm

import androidx.annotation.Keep
import com.facebook.jni.HybridData
import com.facebook.proguard.annotations.DoNotStrip
import com.margelo.nitro.core.*

/**
 * A Kotlin class representing the PluginManager HybridObject.
 * Implement this abstract class to create Kotlin-based instances of PluginManager.
 */
@DoNotStrip
@Keep
@Suppress(
  "KotlinJniMissingFunction", "unused",
  "RedundantSuppression", "RedundantUnitReturnType", "SimpleRedundantLet",
  "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
)
abstract class HybridPluginManagerSpec: HybridObject() {
  @DoNotStrip
  private var mHybridData: HybridData = initHybrid()

  init {
    super.updateNative(mHybridData)
  }

  override fun updateNative(hybridData: HybridData) {
    mHybridData = hybridData
    super.updateNative(hybridData)
  }

  // Properties
  @get:DoNotStrip
  @get:Keep
  abstract val isEnabled: Boolean

  // Methods
  @DoNotStrip
  @Keep
  abstract fun enable(): Unit
  
  @DoNotStrip
  @Keep
  abstract fun disable(): Unit

  private external fun initHybrid(): HybridData

  companion object {
    private const val TAG = "HybridPluginManagerSpec"
  }
}
