using CryptoExchange.Net.Interfaces;
using CryptoExchange.Net.Objects.Options;
using CryptoExchange.Net.SharedApis;
using System;
namespace CryptoExchange.Net.OrderBook
{
///
public class OrderBookFactory : IOrderBookFactory where TOptions: OrderBookOptions
{
private readonly Func?, ISymbolOrderBook> _symbolCtor;
private readonly Func?, ISymbolOrderBook> _assetsCtor;
///
/// ctor
///
///
///
public OrderBookFactory(Func?, ISymbolOrderBook> symbolCtor, Func?, ISymbolOrderBook> assetsCtor)
{
_symbolCtor = symbolCtor;
_assetsCtor = assetsCtor;
}
///
public ISymbolOrderBook Create(string symbol, Action? options = null) => _symbolCtor(symbol, options);
///
public ISymbolOrderBook Create(string baseAsset, string quoteAsset, Action? options = null) => _assetsCtor(new SharedSymbol(TradingMode.Spot, baseAsset, quoteAsset), options);
///
public ISymbolOrderBook Create(SharedSymbol symbol, Action? options = null) => _assetsCtor(symbol, options);
}
}