diff --git a/CryptoExchange.Net.UnitTests/SharedApiClientTests.cs b/CryptoExchange.Net.UnitTests/SharedApiClientTests.cs new file mode 100644 index 00000000..30fb4aab --- /dev/null +++ b/CryptoExchange.Net.UnitTests/SharedApiClientTests.cs @@ -0,0 +1,170 @@ +using CryptoExchange.Net.SharedApis; +using NUnit.Framework; + +namespace CryptoExchange.Net.UnitTests +{ + [TestFixture] + internal class SharedApiClientTests + { + [Test] + public void GetCapability_ShouldUseCapabilityTradingModes() + { + var sharedApi = new TestSharedApi( + [TradingMode.Spot, TradingMode.PerpetualLinear], + [TradingMode.Spot]); + var client = new TestSharedApiClient(sharedApi); + + Assert.Multiple(() => + { + Assert.That(client.GetCapability(TradingMode.Spot), Is.SameAs(sharedApi)); + Assert.That(client.GetCapability(TradingMode.PerpetualLinear), Is.Null); + Assert.That(client.GetCapabilities(TradingMode.Spot), Has.Count.EqualTo(1)); + Assert.That(client.GetCapabilities(TradingMode.PerpetualLinear), Is.Empty); + }); + } + + [Test] + public void CapabilityTradingModes_ShouldDefaultToSharedApiTradingModes() + { + var sharedApi = new TestSharedApi( + [TradingMode.Spot, TradingMode.PerpetualLinear], + null); + var client = new TestSharedApiClient(sharedApi); + + Assert.Multiple(() => + { + Assert.That(client.GetCapability(TradingMode.Spot), Is.SameAs(sharedApi)); + Assert.That(client.GetCapability(TradingMode.PerpetualLinear), Is.SameAs(sharedApi)); + }); + } + + [Test] + public void CapabilityTradingModes_ShouldIntersectApiApplicableAndOverrideModes() + { + var sharedApi = new TestSharedApi( + [TradingMode.Spot, TradingMode.PerpetualLinear, TradingMode.DeliveryLinear], + [TradingMode.Spot, TradingMode.PerpetualLinear], + [TradingMode.PerpetualLinear, TradingMode.DeliveryLinear]); + + Assert.That( + sharedApi.CapabilityOptions.SupportedTradingModes, + Is.EqualTo(new[] { TradingMode.PerpetualLinear })); + } + + [Test] + public void CapabilityOptions_ShouldApplyIntrinsicTradingModes() + { + var apiModes = new[] + { + TradingMode.Spot, + TradingMode.PerpetualLinear, + TradingMode.DeliveryLinear, + TradingMode.PerpetualInverse, + TradingMode.DeliveryInverse + }; + var spotOptions = new PlaceSpotOrderOptions("TestExchange"); + var futuresOptions = new GetPositionsOptions("TestExchange", false); + var perpetualOptions = new GetFundingRateHistoryOptions( + "TestExchange", + true, + true, + true, + 100, + false); + var unrestrictedOptions = new GetTickerOptions("TestExchange"); + + _ = new TestOptionsHost(apiModes, spotOptions); + _ = new TestOptionsHost(apiModes, futuresOptions); + _ = new TestOptionsHost(apiModes, perpetualOptions); + _ = new TestOptionsHost(apiModes, unrestrictedOptions); + + Assert.Multiple(() => + { + Assert.That(spotOptions.SupportedTradingModes, Is.EqualTo(new[] { TradingMode.Spot })); + Assert.That(futuresOptions.SupportedTradingModes, Is.EqualTo(new[] + { + TradingMode.PerpetualLinear, + TradingMode.DeliveryLinear, + TradingMode.PerpetualInverse, + TradingMode.DeliveryInverse + })); + Assert.That(perpetualOptions.SupportedTradingModes, Is.EqualTo(new[] + { + TradingMode.PerpetualLinear, + TradingMode.PerpetualInverse + })); + Assert.That(unrestrictedOptions.SupportedTradingModes, Is.EqualTo(apiModes)); + }); + } + + private interface ITestCapability : ISharedApiCapability + { + } + + private sealed class TestCapabilityOptions : CapabilityOptions + { + public override string Description => "Test capability"; + + public TestCapabilityOptions(TradingMode[]? applicableTradingModes) + : base("TestExchange", false, "TestOperation", [], applicableTradingModes) + { + } + } + + private sealed class TestSharedApi : SharedApiBase, ITestCapability + { + public TestCapabilityOptions CapabilityOptions { get; } + + public TestSharedApi(TradingMode[] apiTradingModes, TradingMode[]? capabilityTradingModes) + : this(apiTradingModes, capabilityTradingModes, null) + { + } + + public TestSharedApi( + TradingMode[] apiTradingModes, + TradingMode[]? capabilityTradingModes, + TradingMode[]? applicableTradingModes) + : base( + SharedTransport.Rest, + "TestExchange", + apiTradingModes, + () => false, + (baseAsset, quoteAsset, tradingMode, deliverDate) => $"{baseAsset}{quoteAsset}") + { + var options = new TestCapabilityOptions(applicableTradingModes) + { + SupportedTradingModeOverrides = capabilityTradingModes + }; + + SetCapabilities(options); + CapabilityOptions = options; + } + + public override SharedClientInfo Discover() => new(); + } + + private sealed class TestOptionsHost : SharedApiBase + { + public TestOptionsHost(TradingMode[] apiTradingModes, CapabilityOptions capabilityOptions) + : base( + SharedTransport.Rest, + "TestExchange", + apiTradingModes, + () => false, + (baseAsset, quoteAsset, tradingMode, deliverDate) => $"{baseAsset}{quoteAsset}") + { + SetCapabilities(capabilityOptions); + } + + public override SharedClientInfo Discover() => new(); + } + + private sealed class TestSharedApiClient : SharedApiClientBase + { + public TestSharedApiClient(params ISharedApiCapability[] sharedApis) + : base([SharedTransport.Rest, SharedTransport.Socket], sharedApis) + { + } + } + } +} diff --git a/CryptoExchange.Net.UnitTests/SharedParametersTests.cs b/CryptoExchange.Net.UnitTests/SharedParametersTests.cs index 864fcf0e..4890857e 100644 --- a/CryptoExchange.Net.UnitTests/SharedParametersTests.cs +++ b/CryptoExchange.Net.UnitTests/SharedParametersTests.cs @@ -91,6 +91,66 @@ namespace CryptoExchange.Net.UnitTests string.Join(Environment.NewLine, failures)); } + [Test] + public void RequiredExchangeParameter_ShouldAcceptNameOrAnyAlias() + { + const string exchange = "TestExchange"; + var options = new GetTickerOptions(exchange) + { + ExchangeParameterRules = + [ + ExchangeParameterRule.Required( + "Parameter", + "Test parameter", + 1, + "Alias1", + "Alias2") + ] + }; + + var missingResult = options.ValidateRequest(null, null, [TradingMode.Spot]); + var nameResult = options.ValidateRequest( + new ExchangeParameters(new ExchangeParameter(exchange, "Parameter", 1)), + null, + [TradingMode.Spot]); + var firstAliasResult = options.ValidateRequest( + new ExchangeParameters(new ExchangeParameter(exchange, "Alias1", 1)), + null, + [TradingMode.Spot]); + var secondAliasResult = options.ValidateRequest( + new ExchangeParameters(new ExchangeParameter(exchange, "Alias2", 1)), + null, + [TradingMode.Spot]); + + Assert.Multiple(() => + { + Assert.That(missingResult, Is.Not.Null); + Assert.That(nameResult, Is.Null); + Assert.That(firstAliasResult, Is.Null); + Assert.That(secondAliasResult, Is.Null); + }); + } + + [Test] + public void RequiredExchangeParameterWithoutAliases_ShouldBeRequired() + { + const string exchange = "TestExchange"; + var options = new GetTickerOptions(exchange) + { + ExchangeParameterRules = + [ + ExchangeParameterRule.Required( + "Parameter", + "Test parameter", + 1) + ] + }; + + var result = options.ValidateRequest(null, null, [TradingMode.Spot]); + + Assert.That(result, Is.Not.Null); + } + private static Type? GetGenericOptionsType(Type optionsType) { for (var type = optionsType; type != null; type = type.BaseType) diff --git a/CryptoExchange.Net/SharedApis/CapabilityReferences/SharedCapabilityResolution.cs b/CryptoExchange.Net/SharedApis/CapabilityReferences/SharedCapabilityResolution.cs new file mode 100644 index 00000000..5ac99b05 --- /dev/null +++ b/CryptoExchange.Net/SharedApis/CapabilityReferences/SharedCapabilityResolution.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CryptoExchange.Net.SharedApis +{ + /// + /// Capability lookup result + /// + /// Capability type + public class SharedCapabilityResolution + where T : ISharedApiCapability + { + /// + /// The capability + /// + public T Capability { get; } + /// + /// The capability options + /// + public CapabilityOptions Options { get; } + + internal SharedCapabilityResolution( + T capability, + CapabilityOptions options) + { + Capability = capability; + Options = options; + } + } +} diff --git a/CryptoExchange.Net/SharedApis/CapabilityReferences/SharedRestCapability.cs b/CryptoExchange.Net/SharedApis/CapabilityReferences/SharedRestCapability.cs index 542f41cb..3d20275b 100644 --- a/CryptoExchange.Net/SharedApis/CapabilityReferences/SharedRestCapability.cs +++ b/CryptoExchange.Net/SharedApis/CapabilityReferences/SharedRestCapability.cs @@ -8,6 +8,7 @@ namespace CryptoExchange.Net.SharedApis /// References for a capability available through REST. /// public sealed class SharedRestCapability + : SharedCapabilityReference where TCapability : ISharedApiCapability where TRest : TCapability, ISharedRest { diff --git a/CryptoExchange.Net/SharedApis/Legacy/Options/ClosePositionOptions.cs b/CryptoExchange.Net/SharedApis/Legacy/Options/ClosePositionOptions.cs index 92e7d8da..c7ce6864 100644 --- a/CryptoExchange.Net/SharedApis/Legacy/Options/ClosePositionOptions.cs +++ b/CryptoExchange.Net/SharedApis/Legacy/Options/ClosePositionOptions.cs @@ -23,12 +23,6 @@ namespace CryptoExchange.Net.SharedApis /// public override Type CapabilityType => typeof(IFuturesOrderRestClient); - /// - public virtual RequestParameterRuleOverride[] ParameterRuleOverrides - { - set => SetRequestParameters(value); - } - private static readonly RequestParameterDescription[] _defaultParameterRules = new[] { RequestParameterRule.Required(x => x.Symbol, "The symbol of the position to close", new SharedSymbol(TradingMode.PerpetualLinear, "ETH", "USDT")), @@ -41,7 +35,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public ClosePositionOptions(string exchange, bool authenticated) : base(exchange, nameof(IFuturesOrderRestClient.ClosePositionAsync), true, _defaultParameterRules) + public ClosePositionOptions(string exchange, bool authenticated) : base(exchange, nameof(IFuturesOrderRestClient.ClosePositionAsync), true, _defaultParameterRules, SharedTradingModeSets.Futures) { } diff --git a/CryptoExchange.Net/SharedApis/Options/CapabilityOptions.cs b/CryptoExchange.Net/SharedApis/Options/CapabilityOptions.cs index 014247ec..13053ebd 100644 --- a/CryptoExchange.Net/SharedApis/Options/CapabilityOptions.cs +++ b/CryptoExchange.Net/SharedApis/Options/CapabilityOptions.cs @@ -27,6 +27,7 @@ namespace CryptoExchange.Net.SharedApis public ExchangeParameterDescription[] ExchangeParameterRules { get; set; } = []; private readonly RequestParameterDescription[] _defaultParameterRules; + private readonly TradingMode[]? _applicableTradingModes; /// @@ -84,6 +85,26 @@ namespace CryptoExchange.Net.SharedApis /// public bool Supported { get; set; } = true; /// + /// Trading modes supported by this capability on the containing Shared API. + /// + public TradingMode[] SupportedTradingModes { get; private set; } = []; + /// + /// Implementation-specific overrides for the default request parameter rules. + /// + public RequestParameterRuleOverride[] ParameterRuleOverrides + { + init + { + RequestParameterRules = CombineParameters(_defaultParameterRules, value); + } + } + /// + /// Optional implementation-specific restriction of the trading modes supported by this capability. + /// The final supported modes are the intersection of this value, the modes applicable to the capability, + /// and the modes supported by the containing Shared API. + /// + public TradingMode[]? SupportedTradingModeOverrides { private get; init; } + /// /// Description of the endpoint /// public abstract string Description { get; } @@ -99,7 +120,8 @@ namespace CryptoExchange.Net.SharedApis string exchange, string operationName, bool needAuthentication, - IEnumerable defaultParameterRules) + IEnumerable defaultParameterRules, + IEnumerable? applicableTradingModes = null) { Exchange = exchange; OperationName = operationName; @@ -112,15 +134,19 @@ namespace CryptoExchange.Net.SharedApis RequestParameterRules = CombineParameters( _defaultParameterRules, Array.Empty()); + + _applicableTradingModes = applicableTradingModes?.Distinct().ToArray(); } - /// - /// Set request parameter overrides for this instance - /// - /// The parameter overrides - protected void SetRequestParameters(IEnumerable overrides) + internal void InitializeSupportedTradingModes(TradingMode[] apiSupportedTradingModes) { - RequestParameterRules = CombineParameters(_defaultParameterRules, overrides); + IEnumerable supportedModes = apiSupportedTradingModes; + if (_applicableTradingModes != null) + supportedModes = supportedModes.Intersect(_applicableTradingModes); + if (SupportedTradingModeOverrides != null) + supportedModes = supportedModes.Intersect(SupportedTradingModeOverrides); + + SupportedTradingModes = supportedModes.Distinct().ToArray(); } private RequestParameterDescription[] CombineParameters( @@ -167,8 +193,9 @@ namespace CryptoExchange.Net.SharedApis foreach (var param in RequiredExchangeParameters) { - if (ExchangeParameters.HasValue(exchangeParameters, Exchange, param.Name, param.ValueType) != true - && param.Aliases.Any(x => ExchangeParameters.HasValue(exchangeParameters, Exchange, x, param.ValueType) != true)) + var hasValue = ExchangeParameters.HasValue(exchangeParameters, Exchange, param.Name, param.ValueType) + || param.Aliases.Any(x => ExchangeParameters.HasValue(exchangeParameters, Exchange, x, param.ValueType)); + if (!hasValue) { if (param.Aliases.Length == 0) return ArgumentError.Invalid(param.Name, $"Exchange parameter `{param.Name}` for exchange `{Exchange}` should be provided. Example: {param.ExampleValue}"); @@ -234,17 +261,16 @@ namespace CryptoExchange.Net.SharedApis /// public override Type CapabilityType => typeof(TCapability); - /// - public virtual RequestParameterRuleOverride[] ParameterRuleOverrides - { - set => SetRequestParameters(value); - } - /// /// ctor /// - public CapabilityOptions(string exchange, bool needsAuthentication, string requestName, IEnumerable defaultParameterRules) - : base(exchange, requestName, needsAuthentication, defaultParameterRules) + public CapabilityOptions( + string exchange, + bool needsAuthentication, + string requestName, + IEnumerable defaultParameterRules, + IEnumerable? applicableTradingModes = null) + : base(exchange, requestName, needsAuthentication, defaultParameterRules, applicableTradingModes) { } @@ -307,7 +333,10 @@ namespace CryptoExchange.Net.SharedApis } - return ValidateRequest(request.ExchangeParameters, request.TradingMode, client.SupportedTradingModes); + return ValidateRequest( + request.ExchangeParameters, + request.TradingMode, + SupportedTradingModes); } } } diff --git a/CryptoExchange.Net/SharedApis/Options/EndpointOptions.cs b/CryptoExchange.Net/SharedApis/Options/EndpointOptions.cs index 2ae6d450..bf5897ce 100644 --- a/CryptoExchange.Net/SharedApis/Options/EndpointOptions.cs +++ b/CryptoExchange.Net/SharedApis/Options/EndpointOptions.cs @@ -31,8 +31,9 @@ namespace CryptoExchange.Net.SharedApis string exchange, string operationName, bool needsAuthentication, - IEnumerable defaultParameterRules) - : base(exchange, operationName, needsAuthentication, defaultParameterRules) + IEnumerable defaultParameterRules, + IEnumerable? applicableTradingModes = null) + : base(exchange, operationName, needsAuthentication, defaultParameterRules, applicableTradingModes) { } } diff --git a/CryptoExchange.Net/SharedApis/Options/PaginatedCapabilityOptions.cs b/CryptoExchange.Net/SharedApis/Options/PaginatedCapabilityOptions.cs index 892521b6..9c8d4596 100644 --- a/CryptoExchange.Net/SharedApis/Options/PaginatedCapabilityOptions.cs +++ b/CryptoExchange.Net/SharedApis/Options/PaginatedCapabilityOptions.cs @@ -52,7 +52,8 @@ namespace CryptoExchange.Net.SharedApis int maxLimit, bool needsAuthentication, string requestName, - IEnumerable defaultParameterRules) : base(exchange, needsAuthentication, requestName, defaultParameterRules) + IEnumerable defaultParameterRules, + IEnumerable? applicableTradingModes = null) : base(exchange, needsAuthentication, requestName, defaultParameterRules, applicableTradingModes) { SupportsAscending = supportsAscending; SupportsDescending = supportsDescending; diff --git a/CryptoExchange.Net/SharedApis/Options/SharedTradingModeSets.cs b/CryptoExchange.Net/SharedApis/Options/SharedTradingModeSets.cs new file mode 100644 index 00000000..4447bbc7 --- /dev/null +++ b/CryptoExchange.Net/SharedApis/Options/SharedTradingModeSets.cs @@ -0,0 +1,24 @@ +namespace CryptoExchange.Net.SharedApis +{ + internal static class SharedTradingModeSets + { + internal static TradingMode[] Spot { get; } = + [ + TradingMode.Spot + ]; + + internal static TradingMode[] Futures { get; } = + [ + TradingMode.PerpetualLinear, + TradingMode.DeliveryLinear, + TradingMode.PerpetualInverse, + TradingMode.DeliveryInverse + ]; + + internal static TradingMode[] Perpetual { get; } = + [ + TradingMode.PerpetualLinear, + TradingMode.PerpetualInverse + ]; + } +} diff --git a/CryptoExchange.Net/SharedApis/SharedApiBase.cs b/CryptoExchange.Net/SharedApis/SharedApiBase.cs index 059a65ff..d3ca516d 100644 --- a/CryptoExchange.Net/SharedApis/SharedApiBase.cs +++ b/CryptoExchange.Net/SharedApis/SharedApiBase.cs @@ -48,6 +48,9 @@ namespace CryptoExchange.Net.SharedApis /// protected void SetCapabilities(params CapabilityOptions[] capabilities) { + foreach (var capability in capabilities) + capability.InitializeSupportedTradingModes(SupportedTradingModes); + _capabilities = Array.AsReadOnly(capabilities); } diff --git a/CryptoExchange.Net/SharedApis/SharedApiClientBase.cs b/CryptoExchange.Net/SharedApis/SharedApiClientBase.cs index 0c327d50..6c3e101c 100644 --- a/CryptoExchange.Net/SharedApis/SharedApiClientBase.cs +++ b/CryptoExchange.Net/SharedApis/SharedApiClientBase.cs @@ -10,6 +10,11 @@ namespace CryptoExchange.Net.SharedApis /// public interface ISharedApiClientBase { + /// + /// Shared API's available on this client + /// + IReadOnlyList SharedApis { get; } + /// /// Get all capabilities matching the provided capability type. /// Example: @@ -18,7 +23,7 @@ namespace CryptoExchange.Net.SharedApis /// The capability type /// Filter by supported trading mode /// Filter by transport method - IReadOnlyList GetCapabilities(TradingMode? tradingMode = null, SharedTransport? transport = null) + IReadOnlyList> GetCapabilities(TradingMode? tradingMode = null, SharedTransport? transport = null) where T : ISharedApiCapability; /// @@ -30,7 +35,7 @@ namespace CryptoExchange.Net.SharedApis /// The capability type /// The transport method /// The requested capability type or null if not found - T? GetCapability(SharedTransport? transport = null) + SharedCapabilityResolution? GetCapability(SharedTransport? transport = null) where T : ISharedApiCapability; /// @@ -42,7 +47,7 @@ namespace CryptoExchange.Net.SharedApis /// The trading mode /// The transport method /// The requested capability type or null if not found - T? GetCapability(TradingMode tradingMode, SharedTransport? transport = null) + SharedCapabilityResolution? GetCapability(TradingMode tradingMode, SharedTransport? transport = null) where T : ISharedApiCapability; /// @@ -54,7 +59,7 @@ namespace CryptoExchange.Net.SharedApis /// The capability type /// The capability reference /// The requested capability type or null if not found - T? GetCapability(SharedCapabilityReference capability) + SharedCapabilityResolution? GetCapability(SharedCapabilityReference capability) where T : ISharedApiCapability; /// @@ -67,7 +72,7 @@ namespace CryptoExchange.Net.SharedApis /// The capability reference /// The trading mode /// The requested capability type or null if not found - T? GetCapability(SharedCapabilityReference capability, TradingMode tradingMode) + SharedCapabilityResolution? GetCapability(SharedCapabilityReference capability, TradingMode tradingMode) where T : ISharedApiCapability; } @@ -76,79 +81,125 @@ namespace CryptoExchange.Net.SharedApis /// public abstract class SharedApiClientBase : ISharedApiClientBase { - private readonly ISharedApiCapability[] _sharedApis; + private readonly ISharedApi[] _sharedApis; private readonly SharedTransport[] _preferredTransports; + /// + public IReadOnlyList SharedApis => _sharedApis; + /// /// ctor /// - public SharedApiClientBase(SharedTransport[] transportPref, params ISharedApiCapability[] allCapabilities) + public SharedApiClientBase( + IEnumerable transportPreference, + params ISharedApi[] sharedApis) { - _preferredTransports = transportPref; - _sharedApis = allCapabilities.ToArray(); + _preferredTransports = transportPreference.Distinct().ToArray(); + _sharedApis = sharedApis.Distinct().ToArray(); } /// - public IReadOnlyList GetCapabilities(TradingMode? tradingMode = null, SharedTransport? transport = null) - where T : ISharedApiCapability - { - return _sharedApis - .OfType() - .Where(x => - (tradingMode == null || x.SupportedTradingModes.Contains(tradingMode.Value)) - && (transport == null || x.Transport == transport) - ) - .ToArray(); - } - - /// - public T? GetCapability(SharedTransport? transport = null) + public SharedCapabilityResolution? GetCapability(SharedTransport? transport = null) where T : ISharedApiCapability { return GetCapabilityCore(null, transport); } /// - public T? GetCapability(TradingMode tradingMode, SharedTransport? transport = null) + public SharedCapabilityResolution? GetCapability(TradingMode tradingMode, SharedTransport? transport = null) where T : ISharedApiCapability { return GetCapabilityCore(tradingMode, transport); } /// - public T? GetCapability(SharedCapabilityReference capability) + public SharedCapabilityResolution? GetCapability(SharedCapabilityReference capability) where T : ISharedApiCapability { return GetCapabilityCore(null, null); } /// - public T? GetCapability(SharedCapabilityReference capability, TradingMode tradingMode) + public SharedCapabilityResolution? GetCapability(SharedCapabilityReference capability, TradingMode tradingMode) where T : ISharedApiCapability { return GetCapabilityCore(tradingMode, null); } - private T? GetCapabilityCore(TradingMode? tradingMode, SharedTransport? selectedTransport = null) - where T : ISharedApiCapability + /// + public IReadOnlyList> GetCapabilities( + TradingMode? tradingMode = null, + SharedTransport? transport = null) + where T : ISharedApiCapability { - var implementations = _sharedApis - .OfType() - .Where(x => tradingMode == null - || x.SupportedTradingModes.Contains(tradingMode.Value)) - .ToArray(); + var result = new List>(); - foreach (var transport in selectedTransport != null ? new[] { selectedTransport! } : _preferredTransports) + foreach (var sharedApi in _sharedApis) { - var matching = implementations - .Where(x => x.Transport == transport) - .ToArray(); + if (sharedApi is not T capability) + continue; - if (matching.Length > 0) - return matching[0]; + if (transport != null && sharedApi.Transport != transport) + continue; + + var options = GetMatchingOptions(sharedApi, tradingMode); + if (options == null) + continue; + + result.Add(new SharedCapabilityResolution( + capability, + options)); } - return default; + // Preserve Shared API registration order within each transport. + return result + .OrderBy(x => GetTransportPriority(x.Capability.Transport)) + .ToArray(); + } + + private SharedCapabilityResolution? GetCapabilityCore( + TradingMode? tradingMode, + SharedTransport? selectedTransport = null) + where T : ISharedApiCapability + { + return GetCapabilities(tradingMode, selectedTransport) + .FirstOrDefault(); + } + + private static CapabilityOptions? GetMatchingOptions( + ISharedApi sharedApi, + TradingMode? tradingMode) + where T : ISharedApiCapability + { + var requestedType = typeof(T); + + return sharedApi.Capabilities + .Where(options => + options.Supported + && IsCapabilityTypeMatch( + requestedType, + options.CapabilityType) + && (tradingMode == null + || options.SupportedTradingModes.Contains( + tradingMode.Value))) + // Prefer options declared for the exact requested interface. + .OrderByDescending(options => + options.CapabilityType == requestedType) + .FirstOrDefault(); + } + + private static bool IsCapabilityTypeMatch( + Type requestedType, + Type optionsCapabilityType) + { + return optionsCapabilityType.IsAssignableFrom(requestedType) + || requestedType.IsAssignableFrom(optionsCapabilityType); + } + + private int GetTransportPriority(SharedTransport transport) + { + var index = Array.IndexOf(_preferredTransports, transport); + return index == -1 ? int.MaxValue : index; } } } diff --git a/CryptoExchange.Net/SharedApis/V2/Balances/GetBalances/GetBalancesOptions.cs b/CryptoExchange.Net/SharedApis/V2/Balances/GetBalances/GetBalancesOptions.cs index 41770029..6b868438 100644 --- a/CryptoExchange.Net/SharedApis/V2/Balances/GetBalances/GetBalancesOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Balances/GetBalances/GetBalancesOptions.cs @@ -35,7 +35,7 @@ namespace CryptoExchange.Net.SharedApis /// public override Error? ValidateRequest( GetBalancesRequest request, - IGetBalancesRest client) + IGetBalances client) { var error = base.ValidateRequest(request, client); if (error != null) diff --git a/CryptoExchange.Net/SharedApis/V2/Funding/GetFundingInfo/GetFundingInfoOptions.cs b/CryptoExchange.Net/SharedApis/V2/Funding/GetFundingInfo/GetFundingInfoOptions.cs index 6791fa20..9aa826bb 100644 --- a/CryptoExchange.Net/SharedApis/V2/Funding/GetFundingInfo/GetFundingInfoOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Funding/GetFundingInfo/GetFundingInfoOptions.cs @@ -21,7 +21,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetFundingInfoOptions(string exchange, bool supportsAscending, bool supportsDescending, bool timeFilterSupported, int maxLimit, bool needsAuthentication) - : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IGetFundingInfoRest.GetFundingInfoAsync), _defaultParameterRules) + : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IGetFundingInfoRest.GetFundingInfoAsync), _defaultParameterRules, SharedTradingModeSets.Perpetual) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Funding/GetFundingRateHistory/GetFundingRateHistoryOptions.cs b/CryptoExchange.Net/SharedApis/V2/Funding/GetFundingRateHistory/GetFundingRateHistoryOptions.cs index 7b8ccfc8..83b67964 100644 --- a/CryptoExchange.Net/SharedApis/V2/Funding/GetFundingRateHistory/GetFundingRateHistoryOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Funding/GetFundingRateHistory/GetFundingRateHistoryOptions.cs @@ -25,7 +25,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetFundingRateHistoryOptions(string exchange, bool supportsAscending, bool supportsDescending, bool timeFilterSupported, int maxLimit, bool needsAuthentication) - : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IGetFundingRateHistoryRest.GetFundingRateHistoryAsync), _defaultParameterRules) + : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IGetFundingRateHistoryRest.GetFundingRateHistoryAsync), _defaultParameterRules, SharedTradingModeSets.Perpetual) { } diff --git a/CryptoExchange.Net/SharedApis/V2/Funding/GetUserFundingHistory/GetUserFundingHistoryOptions.cs b/CryptoExchange.Net/SharedApis/V2/Funding/GetUserFundingHistory/GetUserFundingHistoryOptions.cs index a9934174..685fbfce 100644 --- a/CryptoExchange.Net/SharedApis/V2/Funding/GetUserFundingHistory/GetUserFundingHistoryOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Funding/GetUserFundingHistory/GetUserFundingHistoryOptions.cs @@ -25,7 +25,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetUserFundingHistoryOptions(string exchange, bool supportsAscending, bool supportsDescending, bool timeFilterSupported, int maxLimit, bool needsAuthentication) - : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IGetUserFundingHistoryRest.GetUserFundingHistoryAsync), _defaultParameterRules) + : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IGetUserFundingHistoryRest.GetUserFundingHistoryAsync), _defaultParameterRules, SharedTradingModeSets.Perpetual) { } diff --git a/CryptoExchange.Net/SharedApis/V2/IndexPrice/GetAllIndexPrices/GetAllIndexPricesOptions.cs b/CryptoExchange.Net/SharedApis/V2/IndexPrice/GetAllIndexPrices/GetAllIndexPricesOptions.cs index f0a632e0..0dd75a36 100644 --- a/CryptoExchange.Net/SharedApis/V2/IndexPrice/GetAllIndexPrices/GetAllIndexPricesOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/IndexPrice/GetAllIndexPrices/GetAllIndexPricesOptions.cs @@ -20,7 +20,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetAllIndexPricesOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetAllIndexPricesRest.GetAllIndexPricesAsync), _defaultParameterRules) + public GetAllIndexPricesOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetAllIndexPricesRest.GetAllIndexPricesAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/IndexPrice/GetIndexPrice/GetIndexPriceOptions.cs b/CryptoExchange.Net/SharedApis/V2/IndexPrice/GetIndexPrice/GetIndexPriceOptions.cs index 5f603eeb..f56546be 100644 --- a/CryptoExchange.Net/SharedApis/V2/IndexPrice/GetIndexPrice/GetIndexPriceOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/IndexPrice/GetIndexPrice/GetIndexPriceOptions.cs @@ -20,7 +20,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetIndexPriceOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetIndexPriceRest.GetIndexPriceAsync), _defaultParameterRules) + public GetIndexPriceOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetIndexPriceRest.GetIndexPriceAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/IndexPrice/SubscribeIndexPrice/SubscribeIndexPriceOptions.cs b/CryptoExchange.Net/SharedApis/V2/IndexPrice/SubscribeIndexPrice/SubscribeIndexPriceOptions.cs index 899b583f..f3c28940 100644 --- a/CryptoExchange.Net/SharedApis/V2/IndexPrice/SubscribeIndexPrice/SubscribeIndexPriceOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/IndexPrice/SubscribeIndexPrice/SubscribeIndexPriceOptions.cs @@ -14,15 +14,15 @@ namespace CryptoExchange.Net.SharedApis private static readonly RequestParameterDescription[] _defaultParameterRules = new[] { - RequestParameterRule.Optional(x => x.Symbol, "The symbol to subscribe to", new SharedSymbol(TradingMode.Spot, "ETH", "USDT")), - RequestParameterRule.Optional(x => x.Symbols, "The symbols to subscribe to", new[] { new SharedSymbol(TradingMode.Spot, "ETH", "USDT") }), + RequestParameterRule.Optional(x => x.Symbol, "The symbol to subscribe to", new SharedSymbol(TradingMode.PerpetualLinear, "ETH", "USDT")), + RequestParameterRule.Optional(x => x.Symbols, "The symbols to subscribe to", new[] { new SharedSymbol(TradingMode.PerpetualLinear, "ETH", "USDT") }), }; /// /// ctor /// public SubscribeIndexPriceOptions(string exchange, bool needsAuthentication) - : base(exchange, needsAuthentication, nameof(ISubscribeIndexPriceSocket.SubscribeToIndexPriceUpdatesAsync), _defaultParameterRules) + : base(exchange, needsAuthentication, nameof(ISubscribeIndexPriceSocket.SubscribeToIndexPriceUpdatesAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Klines/Futures/GetIndexPriceKlines/GetIndexPriceKlinesOptions.cs b/CryptoExchange.Net/SharedApis/V2/Klines/Futures/GetIndexPriceKlines/GetIndexPriceKlinesOptions.cs index 54a8b768..558466bd 100644 --- a/CryptoExchange.Net/SharedApis/V2/Klines/Futures/GetIndexPriceKlines/GetIndexPriceKlinesOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Klines/Futures/GetIndexPriceKlines/GetIndexPriceKlinesOptions.cs @@ -36,7 +36,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetIndexPriceKlinesOptions(string exchange, bool supportsAscending, bool supportsDescending, bool timeFilterSupported, int maxLimit, bool needsAuthentication) - : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IGetIndexPriceKlinesRest.GetIndexPriceKlinesAsync), _defaultParameterRules) + : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IGetIndexPriceKlinesRest.GetIndexPriceKlinesAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { SupportIntervals = new[] { @@ -61,7 +61,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetIndexPriceKlinesOptions(string exchange, bool supportsAscending, bool supportsDescending, bool timeFilterSupported, int maxLimit, bool needsAuthentication, params SharedKlineInterval[] intervals) - : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IIndexPriceKlineRestClient.GetIndexPriceKlinesAsync), _defaultParameterRules) + : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IIndexPriceKlineRestClient.GetIndexPriceKlinesAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { SupportIntervals = intervals; } diff --git a/CryptoExchange.Net/SharedApis/V2/Klines/Futures/GetMarkPriceKlines/GetMarkPriceKlinesOptions.cs b/CryptoExchange.Net/SharedApis/V2/Klines/Futures/GetMarkPriceKlines/GetMarkPriceKlinesOptions.cs index e6db70b0..3cb46f7a 100644 --- a/CryptoExchange.Net/SharedApis/V2/Klines/Futures/GetMarkPriceKlines/GetMarkPriceKlinesOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Klines/Futures/GetMarkPriceKlines/GetMarkPriceKlinesOptions.cs @@ -36,7 +36,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetMarkPriceKlinesOptions(string exchange, bool supportsAscending, bool supportsDescending, bool timeFilterSupported, int maxLimit, bool needsAuthentication) - : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IGetMarkPriceKlinesRest.GetMarkPriceKlinesAsync), _defaultParameterRules) + : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IGetMarkPriceKlinesRest.GetMarkPriceKlinesAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { SupportIntervals = new[] { @@ -61,7 +61,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetMarkPriceKlinesOptions(string exchange, bool supportsAscending, bool supportsDescending, bool timeFilterSupported, int maxLimit, bool needsAuthentication, params SharedKlineInterval[] intervals) - : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IGetMarkPriceKlinesRest.GetMarkPriceKlinesAsync), _defaultParameterRules) + : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, needsAuthentication, nameof(IGetMarkPriceKlinesRest.GetMarkPriceKlinesAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { SupportIntervals = intervals; } diff --git a/CryptoExchange.Net/SharedApis/V2/Leverage/GetLeverage/GetLeverageOptions.cs b/CryptoExchange.Net/SharedApis/V2/Leverage/GetLeverage/GetLeverageOptions.cs index e0ffc5e2..fd7b5a0d 100644 --- a/CryptoExchange.Net/SharedApis/V2/Leverage/GetLeverage/GetLeverageOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Leverage/GetLeverage/GetLeverageOptions.cs @@ -22,7 +22,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetLeverageOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetLeverageRest.GetLeverageAsync), _defaultParameterRules) + public GetLeverageOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetLeverageRest.GetLeverageAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Leverage/GetLeverageTiers/GetLeverageTiersOptions.cs b/CryptoExchange.Net/SharedApis/V2/Leverage/GetLeverageTiers/GetLeverageTiersOptions.cs index 1c106709..908be90b 100644 --- a/CryptoExchange.Net/SharedApis/V2/Leverage/GetLeverageTiers/GetLeverageTiersOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Leverage/GetLeverageTiers/GetLeverageTiersOptions.cs @@ -20,7 +20,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetLeverageTiersOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetLeverageTiersRest.GetLeverageTiersAsync), _defaultParameterRules) + public GetLeverageTiersOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetLeverageTiersRest.GetLeverageTiersAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Leverage/SetLeverage/SetLeverageOptions.cs b/CryptoExchange.Net/SharedApis/V2/Leverage/SetLeverage/SetLeverageOptions.cs index f571f75f..1560cfa6 100644 --- a/CryptoExchange.Net/SharedApis/V2/Leverage/SetLeverage/SetLeverageOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Leverage/SetLeverage/SetLeverageOptions.cs @@ -19,7 +19,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public SetLeverageOptions(string exchange) : base(exchange, true, nameof(ISetLeverageRest.SetLeverageAsync), _defaultParameterRules) + public SetLeverageOptions(string exchange) : base(exchange, true, nameof(ISetLeverageRest.SetLeverageAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/MarkPrice/GetAllMarkPrices/GetAllMarkPricesOptions.cs b/CryptoExchange.Net/SharedApis/V2/MarkPrice/GetAllMarkPrices/GetAllMarkPricesOptions.cs index 1a73a388..0bb588ec 100644 --- a/CryptoExchange.Net/SharedApis/V2/MarkPrice/GetAllMarkPrices/GetAllMarkPricesOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/MarkPrice/GetAllMarkPrices/GetAllMarkPricesOptions.cs @@ -20,7 +20,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetAllMarkPricesOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetAllMarkPricesRest.GetAllMarkPricesAsync), _defaultParameterRules) + public GetAllMarkPricesOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetAllMarkPricesRest.GetAllMarkPricesAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/MarkPrice/GetMarkPrice/GetMarkPriceOptions.cs b/CryptoExchange.Net/SharedApis/V2/MarkPrice/GetMarkPrice/GetMarkPriceOptions.cs index 675a1bf0..3929131c 100644 --- a/CryptoExchange.Net/SharedApis/V2/MarkPrice/GetMarkPrice/GetMarkPriceOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/MarkPrice/GetMarkPrice/GetMarkPriceOptions.cs @@ -20,7 +20,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetMarkPriceOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetMarkPriceRest.GetMarkPriceAsync), _defaultParameterRules) + public GetMarkPriceOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetMarkPriceRest.GetMarkPriceAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/MarkPrice/SubscribeMarkPrice/SubscribeMarkPriceOptions.cs b/CryptoExchange.Net/SharedApis/V2/MarkPrice/SubscribeMarkPrice/SubscribeMarkPriceOptions.cs index 05510a3e..fe6cd5dc 100644 --- a/CryptoExchange.Net/SharedApis/V2/MarkPrice/SubscribeMarkPrice/SubscribeMarkPriceOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/MarkPrice/SubscribeMarkPrice/SubscribeMarkPriceOptions.cs @@ -14,15 +14,15 @@ namespace CryptoExchange.Net.SharedApis private static readonly RequestParameterDescription[] _defaultParameterRules = new[] { - RequestParameterRule.Optional(x => x.Symbol, "The symbol to subscribe to", new SharedSymbol(TradingMode.Spot, "ETH", "USDT")), - RequestParameterRule.Optional(x => x.Symbols, "The symbols to subscribe to", new[] { new SharedSymbol(TradingMode.Spot, "ETH", "USDT") }), + RequestParameterRule.Optional(x => x.Symbol, "The symbol to subscribe to", new SharedSymbol(TradingMode.PerpetualLinear, "ETH", "USDT")), + RequestParameterRule.Optional(x => x.Symbols, "The symbols to subscribe to", new[] { new SharedSymbol(TradingMode.PerpetualLinear, "ETH", "USDT") }), }; /// /// ctor /// public SubscribeMarkPriceOptions(string exchange, bool needsAuthentication) - : base(exchange, needsAuthentication, nameof(ISubscribeMarkPriceSocket.SubscribeToMarkPriceUpdatesAsync), _defaultParameterRules) + : base(exchange, needsAuthentication, nameof(ISubscribeMarkPriceSocket.SubscribeToMarkPriceUpdatesAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/OpenInterest/GetOpenInterestOptions.cs b/CryptoExchange.Net/SharedApis/V2/OpenInterest/GetOpenInterestOptions.cs index c664ccc4..a46a9bf9 100644 --- a/CryptoExchange.Net/SharedApis/V2/OpenInterest/GetOpenInterestOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/OpenInterest/GetOpenInterestOptions.cs @@ -20,7 +20,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetOpenInterestOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetOpenInterestRest.GetOpenInterestAsync), _defaultParameterRules) + public GetOpenInterestOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetOpenInterestRest.GetOpenInterestAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/OrderBooks/GetOrderBook/GetOrderBookOptions.cs b/CryptoExchange.Net/SharedApis/V2/OrderBooks/GetOrderBook/GetOrderBookOptions.cs index f142b195..730b3219 100644 --- a/CryptoExchange.Net/SharedApis/V2/OrderBooks/GetOrderBook/GetOrderBookOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/OrderBooks/GetOrderBook/GetOrderBookOptions.cs @@ -53,7 +53,7 @@ namespace CryptoExchange.Net.SharedApis } /// - public override Error? ValidateRequest(GetOrderBookRequest request, IGetOrderBookRest client) + public override Error? ValidateRequest(GetOrderBookRequest request, IGetOrderBook client) { var error = base.ValidateRequest(request, client); if (error != null) diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelAllFuturesOrders/CancelAllFuturesOrdersOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelAllFuturesOrders/CancelAllFuturesOrdersOptions.cs index 732f3cfa..c176c955 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelAllFuturesOrders/CancelAllFuturesOrdersOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelAllFuturesOrders/CancelAllFuturesOrdersOptions.cs @@ -18,7 +18,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public CancelAllFuturesOrdersOptions(string exchange) : base(exchange, true, nameof(ICancelAllFuturesOrders.CancelAllFuturesOrdersAsync), _defaultParameterRules) + public CancelAllFuturesOrdersOptions(string exchange) : base(exchange, true, nameof(ICancelAllFuturesOrders.CancelAllFuturesOrdersAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelAllFuturesSymbolOrders/CancelAllFuturesSymbolOrdersOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelAllFuturesSymbolOrders/CancelAllFuturesSymbolOrdersOptions.cs index f5a748b1..73655d5e 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelAllFuturesSymbolOrders/CancelAllFuturesSymbolOrdersOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelAllFuturesSymbolOrders/CancelAllFuturesSymbolOrdersOptions.cs @@ -20,7 +20,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public CancelAllFuturesSymbolOrdersOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICancelAllFuturesSymbolOrders.CancelAllFuturesSymbolOrdersAsync), _defaultParameterRules) + public CancelAllFuturesSymbolOrdersOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICancelAllFuturesSymbolOrders.CancelAllFuturesSymbolOrdersAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelFuturesOrder/CancelFuturesOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelFuturesOrder/CancelFuturesOrderOptions.cs index 7b08e28c..d6c616c0 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelFuturesOrder/CancelFuturesOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelFuturesOrder/CancelFuturesOrderOptions.cs @@ -21,7 +21,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public CancelFuturesOrderOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICancelFuturesOrder.CancelFuturesOrderAsync), _defaultParameterRules) + public CancelFuturesOrderOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICancelFuturesOrder.CancelFuturesOrderAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelFuturesOrderByClientOrderId/CancelFuturesOrderByClientOrderIdOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelFuturesOrderByClientOrderId/CancelFuturesOrderByClientOrderIdOptions.cs index 274fd4fe..f8d81628 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelFuturesOrderByClientOrderId/CancelFuturesOrderByClientOrderIdOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/CancelFuturesOrderByClientOrderId/CancelFuturesOrderByClientOrderIdOptions.cs @@ -17,7 +17,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public CancelFuturesOrderByClientOrderIdOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICancelFuturesOrderByClientOrderId.CancelFuturesOrderByClientOrderIdAsync), _defaultParameterRules) + public CancelFuturesOrderByClientOrderIdOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICancelFuturesOrderByClientOrderId.CancelFuturesOrderByClientOrderIdAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/EditFuturesOrder/EditFuturesOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/EditFuturesOrder/EditFuturesOrderOptions.cs index 82dad820..9b1290ec 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/EditFuturesOrder/EditFuturesOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/EditFuturesOrder/EditFuturesOrderOptions.cs @@ -24,7 +24,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public EditFuturesOrderOptions(string exchange) : base(exchange, true, nameof(IEditFuturesOrder.EditFuturesOrderAsync), _defaultParameterRules) + public EditFuturesOrderOptions(string exchange) : base(exchange, true, nameof(IEditFuturesOrder.EditFuturesOrderAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/EditFuturesOrderByClientOrderId/EditFuturesOrderByClientOrderIdOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/EditFuturesOrderByClientOrderId/EditFuturesOrderByClientOrderIdOptions.cs index 5a2c1fb0..10e1c14a 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/EditFuturesOrderByClientOrderId/EditFuturesOrderByClientOrderIdOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/EditFuturesOrderByClientOrderId/EditFuturesOrderByClientOrderIdOptions.cs @@ -19,7 +19,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public EditFuturesOrderByClientOrderIdOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IEditFuturesOrderByClientOrderId.EditFuturesOrderByClientOrderIdAsync), _defaultParameterRules) + public EditFuturesOrderByClientOrderIdOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IEditFuturesOrderByClientOrderId.EditFuturesOrderByClientOrderIdAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetClosedFuturesOrders/GetFuturesClosedOrdersOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetClosedFuturesOrders/GetFuturesClosedOrdersOptions.cs index 563a7148..16342ec3 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetClosedFuturesOrders/GetFuturesClosedOrdersOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetClosedFuturesOrders/GetFuturesClosedOrdersOptions.cs @@ -25,7 +25,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetFuturesClosedOrdersOptions(string exchange, bool supportsAscending, bool supportsDescending, bool timeFilterSupported, int maxLimit) - : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, true, nameof(IGetClosedFuturesOrdersRest.GetClosedFuturesOrdersAsync), _defaultParameterRules) + : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, true, nameof(IGetClosedFuturesOrdersRest.GetClosedFuturesOrdersAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetFuturesOrder/GetFuturesOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetFuturesOrder/GetFuturesOrderOptions.cs index 0bde62b9..30f151bb 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetFuturesOrder/GetFuturesOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetFuturesOrder/GetFuturesOrderOptions.cs @@ -21,7 +21,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetFuturesOrderOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetFuturesOrder.GetFuturesOrderAsync), _defaultParameterRules) + public GetFuturesOrderOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetFuturesOrder.GetFuturesOrderAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetFuturesOrderByClientOrderId/GetFuturesOrderByClientOrderIdOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetFuturesOrderByClientOrderId/GetFuturesOrderByClientOrderIdOptions.cs index 6654a1ec..b2bbbce9 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetFuturesOrderByClientOrderId/GetFuturesOrderByClientOrderIdOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetFuturesOrderByClientOrderId/GetFuturesOrderByClientOrderIdOptions.cs @@ -21,7 +21,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetFuturesOrderByClientOrderIdOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetFuturesOrderByClientOrderId.GetFuturesOrderByClientOrderIdAsync), _defaultParameterRules) + public GetFuturesOrderByClientOrderIdOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetFuturesOrderByClientOrderId.GetFuturesOrderByClientOrderIdAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetOpenFuturesOrders/GetOpenFuturesOrdersOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetOpenFuturesOrders/GetOpenFuturesOrdersOptions.cs index 493e132e..7b6e5f4d 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetOpenFuturesOrders/GetOpenFuturesOrdersOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/GetOpenFuturesOrders/GetOpenFuturesOrdersOptions.cs @@ -21,7 +21,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetOpenFuturesOrdersOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetOpenFuturesOrders.GetOpenFuturesOrdersAsync), _defaultParameterRules) + public GetOpenFuturesOrdersOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetOpenFuturesOrders.GetOpenFuturesOrdersAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/PlaceFuturesOrder/PlaceFuturesOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/PlaceFuturesOrder/PlaceFuturesOrderOptions.cs index a19d75cd..1a5b7979 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/PlaceFuturesOrder/PlaceFuturesOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/PlaceFuturesOrder/PlaceFuturesOrderOptions.cs @@ -37,7 +37,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public PlaceFuturesOrderOptions(string exchange, bool supportsTpSl) : base(exchange, true, nameof(IPlaceFuturesOrder.PlaceFuturesOrderAsync), _defaultParameterRules) + public PlaceFuturesOrderOptions(string exchange, bool supportsTpSl) : base(exchange, true, nameof(IPlaceFuturesOrder.PlaceFuturesOrderAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { SupportsTpSl = supportsTpSl; } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/PlaceMultipleFuturesOrders/PlaceMultipleFuturesOrdersOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/PlaceMultipleFuturesOrders/PlaceMultipleFuturesOrdersOptions.cs index 2b977eec..9db92c5c 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/PlaceMultipleFuturesOrders/PlaceMultipleFuturesOrdersOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/PlaceMultipleFuturesOrders/PlaceMultipleFuturesOrdersOptions.cs @@ -23,7 +23,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public PlaceMultipleFuturesOrdersOptions(string exchange) - : base(exchange, true, nameof(IPlaceMultipleFuturesOrders.PlaceMultipleFuturesOrdersAsync), _defaultParameterRules) + : base(exchange, true, nameof(IPlaceMultipleFuturesOrders.PlaceMultipleFuturesOrdersAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/SubscribeFuturesOrder/SubscribeFuturesOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/SubscribeFuturesOrder/SubscribeFuturesOrderOptions.cs index 2b580490..c51c0b88 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Futures/SubscribeFuturesOrder/SubscribeFuturesOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Futures/SubscribeFuturesOrder/SubscribeFuturesOrderOptions.cs @@ -20,7 +20,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public SubscribeFuturesOrderOptions(string exchange, bool needsAuthentication) : base(exchange, needsAuthentication, nameof(ISubscribeFuturesOrdersSocket.SubscribeToFuturesOrderUpdatesAsync), _defaultParameterRules) + public SubscribeFuturesOrderOptions(string exchange, bool needsAuthentication) : base(exchange, needsAuthentication, nameof(ISubscribeFuturesOrdersSocket.SubscribeToFuturesOrderUpdatesAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelAllSpotOrders/CancelAllSpotOrdersOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelAllSpotOrders/CancelAllSpotOrdersOptions.cs index 7c1eac2d..16f32643 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelAllSpotOrders/CancelAllSpotOrdersOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelAllSpotOrders/CancelAllSpotOrdersOptions.cs @@ -18,7 +18,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public CancelAllSpotOrdersOptions(string exchange) : base(exchange, true, nameof(ICancelAllSpotOrders.CancelAllSpotOrdersAsync), _defaultParameterRules) + public CancelAllSpotOrdersOptions(string exchange) : base(exchange, true, nameof(ICancelAllSpotOrders.CancelAllSpotOrdersAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelAllSpotSymbolOrders/CancelAllSpotSymbolOrdersOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelAllSpotSymbolOrders/CancelAllSpotSymbolOrdersOptions.cs index 7320686c..6c0a3389 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelAllSpotSymbolOrders/CancelAllSpotSymbolOrdersOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelAllSpotSymbolOrders/CancelAllSpotSymbolOrdersOptions.cs @@ -21,7 +21,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public CancelAllSpotSymbolOrdersOptions(string exchange, bool authenticated) - : base(exchange, authenticated, nameof(ICancelAllSpotSymbolOrders.CancelAllSpotSymbolOrdersAsync), _defaultParameterRules) + : base(exchange, authenticated, nameof(ICancelAllSpotSymbolOrders.CancelAllSpotSymbolOrdersAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelSpotOrder/CancelSpotOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelSpotOrder/CancelSpotOrderOptions.cs index 2218c122..ee1ff849 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelSpotOrder/CancelSpotOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelSpotOrder/CancelSpotOrderOptions.cs @@ -23,7 +23,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public CancelSpotOrderOptions(string exchange, bool authenticated) - : base(exchange, authenticated, nameof(ICancelSpotOrder.CancelSpotOrderAsync), _defaultParameterRules) + : base(exchange, authenticated, nameof(ICancelSpotOrder.CancelSpotOrderAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelSpotOrderByClientOrderId/CancelSpotOrderByClientOrderIdOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelSpotOrderByClientOrderId/CancelSpotOrderByClientOrderIdOptions.cs index 01ebba5f..1bd3e93e 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelSpotOrderByClientOrderId/CancelSpotOrderByClientOrderIdOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/CancelSpotOrderByClientOrderId/CancelSpotOrderByClientOrderIdOptions.cs @@ -23,7 +23,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public CancelSpotOrderByClientOrderIdOptions(string exchange, bool authenticated) - : base(exchange, authenticated, nameof(ICancelSpotOrderByClientOrderIdRest.CancelSpotOrderByClientOrderIdAsync), _defaultParameterRules) + : base(exchange, authenticated, nameof(ICancelSpotOrderByClientOrderIdRest.CancelSpotOrderByClientOrderIdAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/EditSpotOrder/EditSpotOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/EditSpotOrder/EditSpotOrderOptions.cs index 42c5943c..b66492cb 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/EditSpotOrder/EditSpotOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/EditSpotOrder/EditSpotOrderOptions.cs @@ -24,7 +24,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public EditSpotOrderOptions(string exchange) - : base(exchange, true, nameof(IEditSpotOrder.EditSpotOrderAsync), _defaultParameterRules) + : base(exchange, true, nameof(IEditSpotOrder.EditSpotOrderAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/EditSpotOrderByClientOrderId/EditSpotOrderByClientOrderIdOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/EditSpotOrderByClientOrderId/EditSpotOrderByClientOrderIdOptions.cs index 7e253d34..59f3ed98 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/EditSpotOrderByClientOrderId/EditSpotOrderByClientOrderIdOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/EditSpotOrderByClientOrderId/EditSpotOrderByClientOrderIdOptions.cs @@ -10,7 +10,7 @@ namespace CryptoExchange.Net.SharedApis private static readonly RequestParameterDescription[] _defaultParameterRules = new[] { - RequestParameterRule.Required(x => x.Symbol, "The symbol of the order to edit", new SharedSymbol(TradingMode.PerpetualLinear, "ETH", "USDT")), + RequestParameterRule.Required(x => x.Symbol, "The symbol of the order to edit", new SharedSymbol(TradingMode.Spot, "ETH", "USDT")), RequestParameterRule.Required(x => x.OrderId, "The client order id of the order to edit", "123"), RequestParameterRule.Optional(x => x.Quantity, "The new order quantity", SharedQuantity.Base(1)), RequestParameterRule.Optional(x => x.Price, "The new order price", 0.1m), @@ -19,7 +19,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public EditSpotOrderByClientOrderIdOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IEditSpotOrderByClientOrderId.EditSpotOrderByClientOrderIdAsync), _defaultParameterRules) + public EditSpotOrderByClientOrderIdOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IEditSpotOrderByClientOrderId.EditSpotOrderByClientOrderIdAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetClosedSpotOrders/GetSpotClosedOrdersOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetClosedSpotOrders/GetSpotClosedOrdersOptions.cs index 0ec83600..ee3fdd13 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetClosedSpotOrders/GetSpotClosedOrdersOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetClosedSpotOrders/GetSpotClosedOrdersOptions.cs @@ -25,7 +25,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetSpotClosedOrdersOptions(string exchange, bool supportsAscending, bool supportsDescending, bool timeFilterSupported, int maxLimit) - : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, true, nameof(IGetClosedSpotOrdersRest.GetClosedSpotOrdersAsync), _defaultParameterRules) + : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, true, nameof(IGetClosedSpotOrdersRest.GetClosedSpotOrdersAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetOpenSpotOrders/GetOpenSpotOrdersOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetOpenSpotOrders/GetOpenSpotOrdersOptions.cs index 12e5aa36..0e8952ae 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetOpenSpotOrders/GetOpenSpotOrdersOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetOpenSpotOrders/GetOpenSpotOrdersOptions.cs @@ -21,7 +21,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetOpenSpotOrdersOptions(string exchange, bool authenticated) - : base(exchange, authenticated, nameof(IGetOpenSpotOrders.GetOpenSpotOrdersAsync), _defaultParameterRules) + : base(exchange, authenticated, nameof(IGetOpenSpotOrders.GetOpenSpotOrdersAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetSpotOrder/GetSpotOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetSpotOrder/GetSpotOrderOptions.cs index cc97e58c..c1f851b8 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetSpotOrder/GetSpotOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetSpotOrder/GetSpotOrderOptions.cs @@ -23,7 +23,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetSpotOrderOptions(string exchange, bool authenticated) - : base(exchange, authenticated, nameof(IGetSpotOrder.GetSpotOrderAsync), _defaultParameterRules) + : base(exchange, authenticated, nameof(IGetSpotOrder.GetSpotOrderAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetSpotOrderByClientOrderId/GetSpotOrderByClientOrderIdOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetSpotOrderByClientOrderId/GetSpotOrderByClientOrderIdOptions.cs index 0d09d2fa..7f482701 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetSpotOrderByClientOrderId/GetSpotOrderByClientOrderIdOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/GetSpotOrderByClientOrderId/GetSpotOrderByClientOrderIdOptions.cs @@ -23,7 +23,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetSpotOrderByClientOrderIdOptions(string exchange, bool authenticated) - : base(exchange, authenticated, nameof(IGetSpotOrderByClientOrderIdRest.GetSpotOrderByClientOrderIdAsync), _defaultParameterRules) + : base(exchange, authenticated, nameof(IGetSpotOrderByClientOrderIdRest.GetSpotOrderByClientOrderIdAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/PlaceMultipleSpotOrders/PlaceMultipleSpotOrdersOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/PlaceMultipleSpotOrders/PlaceMultipleSpotOrdersOptions.cs index a9a6d7cc..3eae71bb 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/PlaceMultipleSpotOrders/PlaceMultipleSpotOrdersOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/PlaceMultipleSpotOrders/PlaceMultipleSpotOrdersOptions.cs @@ -23,7 +23,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public PlaceMultipleSpotOrdersOptions(string exchange) - : base(exchange, true, nameof(IPlaceMultipleSpotOrders.PlaceMultipleSpotOrdersAsync), _defaultParameterRules) + : base(exchange, true, nameof(IPlaceMultipleSpotOrders.PlaceMultipleSpotOrdersAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/PlaceSpotOrder/PlaceSpotOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/PlaceSpotOrder/PlaceSpotOrderOptions.cs index 3201c16c..4a1c9421 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/PlaceSpotOrder/PlaceSpotOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/PlaceSpotOrder/PlaceSpotOrderOptions.cs @@ -29,7 +29,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public PlaceSpotOrderOptions(string exchange) - : base(exchange, true, nameof(IPlaceSpotOrder.PlaceSpotOrderAsync), _defaultParameterRules) + : base(exchange, true, nameof(IPlaceSpotOrder.PlaceSpotOrderAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } diff --git a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/SubscribeSpotOrder/SubscribeSpotOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/SubscribeSpotOrder/SubscribeSpotOrderOptions.cs index 72a3009f..1ce6e0d8 100644 --- a/CryptoExchange.Net/SharedApis/V2/Orders/Spot/SubscribeSpotOrder/SubscribeSpotOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Orders/Spot/SubscribeSpotOrder/SubscribeSpotOrderOptions.cs @@ -18,7 +18,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public SubscribeSpotOrderOptions(string exchange, bool needsAuthentication) - : base(exchange, needsAuthentication, nameof(ISubscribeSpotOrdersSocket.SubscribeToSpotOrderUpdatesAsync), _defaultParameterRules) + : base(exchange, needsAuthentication, nameof(ISubscribeSpotOrdersSocket.SubscribeToSpotOrderUpdatesAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/PositionMode/GetPositionMode/GetPositionModeOptions.cs b/CryptoExchange.Net/SharedApis/V2/PositionMode/GetPositionMode/GetPositionModeOptions.cs index 706bfd44..3fc1c103 100644 --- a/CryptoExchange.Net/SharedApis/V2/PositionMode/GetPositionMode/GetPositionModeOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/PositionMode/GetPositionMode/GetPositionModeOptions.cs @@ -17,7 +17,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetPositionModeOptions(string exchange) : base(exchange, true, nameof(IGetPositionMode.GetPositionModeAsync), _defaultParameterRules) + public GetPositionModeOptions(string exchange) : base(exchange, true, nameof(IGetPositionMode.GetPositionModeAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/PositionMode/SetPositionMode/SetPositionModeOptions.cs b/CryptoExchange.Net/SharedApis/V2/PositionMode/SetPositionMode/SetPositionModeOptions.cs index 15ed7c5c..4c2899be 100644 --- a/CryptoExchange.Net/SharedApis/V2/PositionMode/SetPositionMode/SetPositionModeOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/PositionMode/SetPositionMode/SetPositionModeOptions.cs @@ -18,7 +18,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public SetPositionModeOptions(string exchange) : base(exchange, true, nameof(ISetPositionMode.SetPositionModeAsync), _defaultParameterRules) + public SetPositionModeOptions(string exchange) : base(exchange, true, nameof(ISetPositionMode.SetPositionModeAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Positions/ClosePosition/CloseFullPositionOptions.cs b/CryptoExchange.Net/SharedApis/V2/Positions/ClosePosition/CloseFullPositionOptions.cs index 900d94ee..8c2428f3 100644 --- a/CryptoExchange.Net/SharedApis/V2/Positions/ClosePosition/CloseFullPositionOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Positions/ClosePosition/CloseFullPositionOptions.cs @@ -24,7 +24,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public CloseFullPositionOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICloseFullPosition.CloseFullPositionAsync), _defaultParameterRules) + public CloseFullPositionOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICloseFullPosition.CloseFullPositionAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Positions/GetPositionHistory/GetPositionHistoryOptions.cs b/CryptoExchange.Net/SharedApis/V2/Positions/GetPositionHistory/GetPositionHistoryOptions.cs index b79249a9..afd50285 100644 --- a/CryptoExchange.Net/SharedApis/V2/Positions/GetPositionHistory/GetPositionHistoryOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Positions/GetPositionHistory/GetPositionHistoryOptions.cs @@ -26,7 +26,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetPositionHistoryOptions(string exchange, bool supportsAscending, bool supportsDescending, bool timeFilterSupported, int maxLimit) - : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, true, nameof(IGetPositionHistoryRest.GetPositionHistoryAsync), _defaultParameterRules) + : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, true, nameof(IGetPositionHistoryRest.GetPositionHistoryAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } diff --git a/CryptoExchange.Net/SharedApis/V2/Positions/GetPositions/GetPositionsOptions.cs b/CryptoExchange.Net/SharedApis/V2/Positions/GetPositions/GetPositionsOptions.cs index 947d96e1..165f94a1 100644 --- a/CryptoExchange.Net/SharedApis/V2/Positions/GetPositions/GetPositionsOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Positions/GetPositions/GetPositionsOptions.cs @@ -21,7 +21,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetPositionsOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetPositions.GetPositionsAsync), _defaultParameterRules) + public GetPositionsOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetPositions.GetPositionsAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Positions/SubscribePositions/SubscribePositionOptions.cs b/CryptoExchange.Net/SharedApis/V2/Positions/SubscribePositions/SubscribePositionOptions.cs index fe66a255..cac8061f 100644 --- a/CryptoExchange.Net/SharedApis/V2/Positions/SubscribePositions/SubscribePositionOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Positions/SubscribePositions/SubscribePositionOptions.cs @@ -20,7 +20,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public SubscribePositionOptions(string exchange, bool needsAuthentication) : base(exchange, needsAuthentication, nameof(ISubscribePositionsSocket.SubscribeToPositionUpdatesAsync), _defaultParameterRules) + public SubscribePositionOptions(string exchange, bool needsAuthentication) : base(exchange, needsAuthentication, nameof(ISubscribePositionsSocket.SubscribeToPositionUpdatesAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/Symbols/GetFuturesSymbols/GetFuturesSymbolsOptions.cs b/CryptoExchange.Net/SharedApis/V2/Symbols/GetFuturesSymbols/GetFuturesSymbolsOptions.cs index d3219e40..91a39a55 100644 --- a/CryptoExchange.Net/SharedApis/V2/Symbols/GetFuturesSymbols/GetFuturesSymbolsOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Symbols/GetFuturesSymbols/GetFuturesSymbolsOptions.cs @@ -25,7 +25,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetFuturesSymbolsOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetFuturesSymbols.GetFuturesSymbolsAsync), _defaultParameterRules) + public GetFuturesSymbolsOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetFuturesSymbols.GetFuturesSymbolsAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } diff --git a/CryptoExchange.Net/SharedApis/V2/Symbols/GetSpotSymbols/GetSpotSymbolsOptions.cs b/CryptoExchange.Net/SharedApis/V2/Symbols/GetSpotSymbols/GetSpotSymbolsOptions.cs index 1cc7ca58..0273a780 100644 --- a/CryptoExchange.Net/SharedApis/V2/Symbols/GetSpotSymbols/GetSpotSymbolsOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/Symbols/GetSpotSymbols/GetSpotSymbolsOptions.cs @@ -25,7 +25,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetSpotSymbolsOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetSpotSymbols.GetSpotSymbolsAsync), _defaultParameterRules) + public GetSpotSymbolsOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetSpotSymbols.GetSpotSymbolsAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } diff --git a/CryptoExchange.Net/SharedApis/V2/TpSl/CancelFuturesTpSl/CancelFuturesTpSlOptions.cs b/CryptoExchange.Net/SharedApis/V2/TpSl/CancelFuturesTpSl/CancelFuturesTpSlOptions.cs index 1740c2dc..b1d4bc29 100644 --- a/CryptoExchange.Net/SharedApis/V2/TpSl/CancelFuturesTpSl/CancelFuturesTpSlOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/TpSl/CancelFuturesTpSl/CancelFuturesTpSlOptions.cs @@ -25,7 +25,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public CancelFuturesTpSlOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICancelFuturesTpSl.CancelFuturesTpSlAsync), _defaultParameterRules) + public CancelFuturesTpSlOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICancelFuturesTpSl.CancelFuturesTpSlAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/TpSl/SetFuturesTpSl/SetFuturesTpSlOptions.cs b/CryptoExchange.Net/SharedApis/V2/TpSl/SetFuturesTpSl/SetFuturesTpSlOptions.cs index 8879885a..0bb3991d 100644 --- a/CryptoExchange.Net/SharedApis/V2/TpSl/SetFuturesTpSl/SetFuturesTpSlOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/TpSl/SetFuturesTpSl/SetFuturesTpSlOptions.cs @@ -26,7 +26,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public SetFuturesTpSlOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ISetFuturesTpSl.SetFuturesTpSlAsync), _defaultParameterRules) + public SetFuturesTpSlOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ISetFuturesTpSl.SetFuturesTpSlAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Futures/CancelFuturesTriggerOrder/CancelFuturesTriggerOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Futures/CancelFuturesTriggerOrder/CancelFuturesTriggerOrderOptions.cs index 903ab69a..5becc0a9 100644 --- a/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Futures/CancelFuturesTriggerOrder/CancelFuturesTriggerOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Futures/CancelFuturesTriggerOrder/CancelFuturesTriggerOrderOptions.cs @@ -21,7 +21,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public CancelFuturesTriggerOrderOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICancelFuturesTriggerOrder.CancelFuturesTriggerOrderAsync), _defaultParameterRules) + public CancelFuturesTriggerOrderOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICancelFuturesTriggerOrder.CancelFuturesTriggerOrderAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Futures/GetFuturesTriggerOrder/GetFuturesTriggerOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Futures/GetFuturesTriggerOrder/GetFuturesTriggerOrderOptions.cs index 69d95010..72be664a 100644 --- a/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Futures/GetFuturesTriggerOrder/GetFuturesTriggerOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Futures/GetFuturesTriggerOrder/GetFuturesTriggerOrderOptions.cs @@ -21,7 +21,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetFuturesTriggerOrderOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetFuturesTriggerOrder.GetFuturesTriggerOrderAsync), _defaultParameterRules) + public GetFuturesTriggerOrderOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetFuturesTriggerOrder.GetFuturesTriggerOrderAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Futures/PlaceFuturesTriggerOrder/PlaceFuturesTriggerOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Futures/PlaceFuturesTriggerOrder/PlaceFuturesTriggerOrderOptions.cs index aaebb8c5..e6677cc1 100644 --- a/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Futures/PlaceFuturesTriggerOrder/PlaceFuturesTriggerOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Futures/PlaceFuturesTriggerOrder/PlaceFuturesTriggerOrderOptions.cs @@ -36,7 +36,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public PlaceFuturesTriggerOrderOptions(string exchange, bool holdsFunds) : base(exchange, true, nameof(IPlaceFuturesTriggerOrder.PlaceFuturesTriggerOrderAsync), _defaultParameterRules) + public PlaceFuturesTriggerOrderOptions(string exchange, bool holdsFunds) : base(exchange, true, nameof(IPlaceFuturesTriggerOrder.PlaceFuturesTriggerOrderAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { HoldsFunds = holdsFunds; } diff --git a/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Spot/CancelSpotTriggerOrder/CancelSpotTriggerOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Spot/CancelSpotTriggerOrder/CancelSpotTriggerOrderOptions.cs index d0129aca..5df888b4 100644 --- a/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Spot/CancelSpotTriggerOrder/CancelSpotTriggerOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Spot/CancelSpotTriggerOrder/CancelSpotTriggerOrderOptions.cs @@ -22,7 +22,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public CancelSpotTriggerOrderOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICancelSpotTriggerOrder.CancelSpotTriggerOrderAsync), _defaultParameterRules) + public CancelSpotTriggerOrderOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(ICancelSpotTriggerOrder.CancelSpotTriggerOrderAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } diff --git a/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Spot/GetSpotTriggerOrder/GetSpotTriggerOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Spot/GetSpotTriggerOrder/GetSpotTriggerOrderOptions.cs index 6cd055bb..4501a1eb 100644 --- a/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Spot/GetSpotTriggerOrder/GetSpotTriggerOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Spot/GetSpotTriggerOrder/GetSpotTriggerOrderOptions.cs @@ -22,12 +22,12 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetSpotTriggerOrderOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetSpotTriggerOrder.GetSpotTriggerOrderAsync), _defaultParameterRules) + public GetSpotTriggerOrderOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetSpotTriggerOrder.GetSpotTriggerOrderAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } /// - public override Error? ValidateRequest(GetOrderRequest request, IGetSpotTriggerOrderRest client) + public override Error? ValidateRequest(GetOrderRequest request, IGetSpotTriggerOrder client) { var error = base.ValidateRequest(request, client); if (error != null) diff --git a/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Spot/PlaceSpotTriggerOrder/PlaceSpotTriggerOrderOptions.cs b/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Spot/PlaceSpotTriggerOrder/PlaceSpotTriggerOrderOptions.cs index 3b6294bb..e1b09f82 100644 --- a/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Spot/PlaceSpotTriggerOrder/PlaceSpotTriggerOrderOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/TriggerOrders/Spot/PlaceSpotTriggerOrder/PlaceSpotTriggerOrderOptions.cs @@ -30,7 +30,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public PlaceSpotTriggerOrderOptions(string exchange, bool holdsFunds) : base(exchange, true, nameof(IPlaceSpotTriggerOrder.PlaceSpotTriggerOrderAsync), _defaultParameterRules) + public PlaceSpotTriggerOrderOptions(string exchange, bool holdsFunds) : base(exchange, true, nameof(IPlaceSpotTriggerOrder.PlaceSpotTriggerOrderAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { HoldsFunds = holdsFunds; } diff --git a/CryptoExchange.Net/SharedApis/V2/UserTrades/Futures/GetFuturesOrderTrades/GetFuturesOrderTradesOptions.cs b/CryptoExchange.Net/SharedApis/V2/UserTrades/Futures/GetFuturesOrderTrades/GetFuturesOrderTradesOptions.cs index 8be2c95f..a25db47b 100644 --- a/CryptoExchange.Net/SharedApis/V2/UserTrades/Futures/GetFuturesOrderTrades/GetFuturesOrderTradesOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/UserTrades/Futures/GetFuturesOrderTrades/GetFuturesOrderTradesOptions.cs @@ -21,7 +21,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetFuturesOrderTradesOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetFuturesOrderTrades.GetFuturesOrderTradesAsync), _defaultParameterRules) + public GetFuturesOrderTradesOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetFuturesOrderTrades.GetFuturesOrderTradesAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } } diff --git a/CryptoExchange.Net/SharedApis/V2/UserTrades/Futures/GetFuturesUserTradeHistory/GetFuturesUserTradeHistoryOptions.cs b/CryptoExchange.Net/SharedApis/V2/UserTrades/Futures/GetFuturesUserTradeHistory/GetFuturesUserTradeHistoryOptions.cs index 9549d6d3..b9191f3a 100644 --- a/CryptoExchange.Net/SharedApis/V2/UserTrades/Futures/GetFuturesUserTradeHistory/GetFuturesUserTradeHistoryOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/UserTrades/Futures/GetFuturesUserTradeHistory/GetFuturesUserTradeHistoryOptions.cs @@ -25,7 +25,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetFuturesUserTradeHistoryOptions(string exchange, bool supportsAscending, bool supportsDescending, bool timeFilterSupported, int maxLimit) - : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, true, nameof(IGetFuturesUserTradeHistoryRest.GetFuturesUserTradeHistoryAsync), _defaultParameterRules) + : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, true, nameof(IGetFuturesUserTradeHistoryRest.GetFuturesUserTradeHistoryAsync), _defaultParameterRules, SharedTradingModeSets.Futures) { } diff --git a/CryptoExchange.Net/SharedApis/V2/UserTrades/Spot/GetSpotOrderTrades/GetSpotOrderTradesOptions.cs b/CryptoExchange.Net/SharedApis/V2/UserTrades/Spot/GetSpotOrderTrades/GetSpotOrderTradesOptions.cs index ed5d5e7d..09a017df 100644 --- a/CryptoExchange.Net/SharedApis/V2/UserTrades/Spot/GetSpotOrderTrades/GetSpotOrderTradesOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/UserTrades/Spot/GetSpotOrderTrades/GetSpotOrderTradesOptions.cs @@ -22,7 +22,7 @@ namespace CryptoExchange.Net.SharedApis /// /// ctor /// - public GetSpotOrderTradesOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetSpotOrderTrades.GetSpotOrderTradesAsync), _defaultParameterRules) + public GetSpotOrderTradesOptions(string exchange, bool authenticated) : base(exchange, authenticated, nameof(IGetSpotOrderTrades.GetSpotOrderTradesAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { } diff --git a/CryptoExchange.Net/SharedApis/V2/UserTrades/Spot/GetSpotUserTradeHistory/GetSpotUserTradeHistoryOptions.cs b/CryptoExchange.Net/SharedApis/V2/UserTrades/Spot/GetSpotUserTradeHistory/GetSpotUserTradeHistoryOptions.cs index 6561db80..3c39a6ae 100644 --- a/CryptoExchange.Net/SharedApis/V2/UserTrades/Spot/GetSpotUserTradeHistory/GetSpotUserTradeHistoryOptions.cs +++ b/CryptoExchange.Net/SharedApis/V2/UserTrades/Spot/GetSpotUserTradeHistory/GetSpotUserTradeHistoryOptions.cs @@ -25,7 +25,7 @@ namespace CryptoExchange.Net.SharedApis /// ctor /// public GetSpotUserTradeHistoryOptions(string exchange, bool supportsAscending, bool supportsDescending, bool timeFilterSupported, int maxLimit) - : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, true, nameof(IGetSpotUserTradeHistoryRest.GetSpotUserTradeHistoryAsync), _defaultParameterRules) + : base(exchange, supportsAscending, supportsDescending, timeFilterSupported, maxLimit, true, nameof(IGetSpotUserTradeHistoryRest.GetSpotUserTradeHistoryAsync), _defaultParameterRules, SharedTradingModeSets.Spot) { }