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

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

  /**
   * Create a new instance of `TradeQuotesResponse`.
   */
  public init(linkedAccounts: [LinkedAccountStatusRef], tradeQuotes: [TradeQuote]) {
    self.init(
      { () -> bridge.std__vector_LinkedAccountStatusRef_ in
        var __vector = bridge.create_std__vector_LinkedAccountStatusRef_(linkedAccounts.count)
        for __item in linkedAccounts {
          __vector.push_back(__item)
        }
        return __vector
      }(),
      { () -> bridge.std__vector_TradeQuote_ in
        var __vector = bridge.create_std__vector_TradeQuote_(tradeQuotes.count)
        for __item in tradeQuotes {
          __vector.push_back(__item)
        }
        return __vector
      }())
  }

  public var linkedAccounts: [LinkedAccountStatusRef] {
    @inline(__always)
    get {
      return self.__linkedAccounts.map({ __item in __item })
    }
    @inline(__always)
    set {
      self.__linkedAccounts = { () -> bridge.std__vector_LinkedAccountStatusRef_ in
        var __vector = bridge.create_std__vector_LinkedAccountStatusRef_(newValue.count)
        for __item in newValue {
          __vector.push_back(__item)
        }
        return __vector
      }()
    }
  }

  public var tradeQuotes: [TradeQuote] {
    @inline(__always)
    get {
      return self.__tradeQuotes.map({ __item in __item })
    }
    @inline(__always)
    set {
      self.__tradeQuotes = { () -> bridge.std__vector_TradeQuote_ in
        var __vector = bridge.create_std__vector_TradeQuote_(newValue.count)
        for __item in newValue {
          __vector.push_back(__item)
        }
        return __vector
      }()
    }
  }
}
