import SwiftUI
import Observation

import MLX
import MLXNN
import MLXOptimizers

@Observable class ApplicationData {
   var logs: String = ""
   var training: Bool = false

   @ObservationIgnored var model: SimpleNetwork!
   @ObservationIgnored var inputTraining: MLXArray!
   @ObservationIgnored var inputTesting: MLXArray!
   @ObservationIgnored var targetTraining: MLXArray!
   @ObservationIgnored var targetTesting: MLXArray!

   static let shared: ApplicationData = ApplicationData()
   private init() {
      model = SimpleNetwork(inputDim: 4, hiddenDim: 16, outputDim: 3)

      if let (inputTraining, inputTesting, targetTraining, targetTesting) = loadIrisDataset() {
         self.inputTraining = inputTraining
         self.inputTesting = inputTesting
         self.targetTraining = targetTraining
         self.targetTesting = targetTesting
      }
   }
}