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

import NitroModules

/// Represents an instance of `MarketTradeAsset`, backed by a C++ struct.
public typealias MarketTradeAsset = margelo.nitro.rncandle.MarketTradeAsset

extension MarketTradeAsset {
  private typealias bridge = margelo.nitro.rncandle.bridge.swift

  /**
   * Create a new instance of `MarketTradeAsset`.
   */
  public init(
    assetKind: MarketAssetKind, serviceAccountID: String, serviceAssetID: String, symbol: String,
    amount: Double, serviceTradeID: String, linkedAccountID: String, name: String, color: String,
    logoURL: String, service: Service
  ) {
    self.init(
      assetKind, std.string(serviceAccountID), std.string(serviceAssetID), std.string(symbol),
      amount, std.string(serviceTradeID), std.string(linkedAccountID), std.string(name),
      std.string(color), std.string(logoURL), service)
  }

  public var assetKind: MarketAssetKind {
    @inline(__always)
    get {
      return self.__assetKind
    }
    @inline(__always)
    set {
      self.__assetKind = newValue
    }
  }

  public var serviceAccountID: String {
    @inline(__always)
    get {
      return String(self.__serviceAccountID)
    }
    @inline(__always)
    set {
      self.__serviceAccountID = std.string(newValue)
    }
  }

  public var serviceAssetID: String {
    @inline(__always)
    get {
      return String(self.__serviceAssetID)
    }
    @inline(__always)
    set {
      self.__serviceAssetID = std.string(newValue)
    }
  }

  public var symbol: String {
    @inline(__always)
    get {
      return String(self.__symbol)
    }
    @inline(__always)
    set {
      self.__symbol = std.string(newValue)
    }
  }

  public var amount: Double {
    @inline(__always)
    get {
      return self.__amount
    }
    @inline(__always)
    set {
      self.__amount = newValue
    }
  }

  public var serviceTradeID: String {
    @inline(__always)
    get {
      return String(self.__serviceTradeID)
    }
    @inline(__always)
    set {
      self.__serviceTradeID = std.string(newValue)
    }
  }

  public var linkedAccountID: String {
    @inline(__always)
    get {
      return String(self.__linkedAccountID)
    }
    @inline(__always)
    set {
      self.__linkedAccountID = std.string(newValue)
    }
  }

  public var name: String {
    @inline(__always)
    get {
      return String(self.__name)
    }
    @inline(__always)
    set {
      self.__name = std.string(newValue)
    }
  }

  public var color: String {
    @inline(__always)
    get {
      return String(self.__color)
    }
    @inline(__always)
    set {
      self.__color = std.string(newValue)
    }
  }

  public var logoURL: String {
    @inline(__always)
    get {
      return String(self.__logoURL)
    }
    @inline(__always)
    set {
      self.__logoURL = std.string(newValue)
    }
  }

  public var service: Service {
    @inline(__always)
    get {
      return self.__service
    }
    @inline(__always)
    set {
      self.__service = newValue
    }
  }
}
