///
/// TradeQuote.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 `TradeQuote`, backed by a C++ struct.
public typealias TradeQuote = margelo.nitro.rncandle.TradeQuote

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

  /**
   * Create a new instance of `TradeQuote`.
   */
  public init(
    lost: TradeAsset, gained: TradeAsset, counterparty: Counterparty, context: String,
    expirationDateTime: String
  ) {
    self.init(lost, gained, counterparty, std.string(context), std.string(expirationDateTime))
  }

  public var lost: TradeAsset {
    @inline(__always)
    get {
      return self.__lost
    }
    @inline(__always)
    set {
      self.__lost = newValue
    }
  }

  public var gained: TradeAsset {
    @inline(__always)
    get {
      return self.__gained
    }
    @inline(__always)
    set {
      self.__gained = newValue
    }
  }

  public var counterparty: Counterparty {
    @inline(__always)
    get {
      return self.__counterparty
    }
    @inline(__always)
    set {
      self.__counterparty = newValue
    }
  }

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

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