1
0
mirror of https://github.com/JKorf/CryptoExchange.Net.git synced 2026-08-19 20:33:03 +00:00

Shared exchange functionality (#214)

This commit is contained in:
Jan Korf
2024-09-27 09:17:44 +02:00
committed by GitHub
parent 5d3de52da6
commit b8686d60b9
199 changed files with 7219 additions and 277 deletions
@@ -0,0 +1,29 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Fee asset selection type
/// </summary>
public enum SharedFeeAssetType
{
/// <summary>
/// Fee is always in the base asset
/// </summary>
BaseAsset,
/// <summary>
/// Fee is always in the quote asset
/// </summary>
QuoteAsset,
/// <summary>
/// Fee is always in the input asset
/// </summary>
InputAsset,
/// <summary>
/// Fee is always in the output asset
/// </summary>
OutputAsset,
/// <summary>
/// Fee is variable
/// </summary>
Variable
}
}
@@ -0,0 +1,17 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Fee deduction type
/// </summary>
public enum SharedFeeDeductionType
{
/// <summary>
/// The fee is deducted from the output amount. For example buying 1 ETH at 1000 USDT with a 1% fee would cost 1000 USDT and output 0.99 ETH
/// </summary>
DeductFromOutput,
/// <summary>
/// The fee is added to the order cost. For example buying 1 ETH at 1000 USDT with a 1% fee would cost 1010 USDT and output 1 ETH
/// </summary>
AddToCost
}
}
@@ -0,0 +1,33 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Kline interval
/// </summary>
public enum SharedKlineInterval
{
/// <summary>
/// 5 min
/// </summary>
FiveMinutes = 60 * 5,
/// <summary>
/// 15 min
/// </summary>
FifteenMinutes = 60 * 15,
/// <summary>
/// 1 hour
/// </summary>
OneHour = 60 * 60,
/// <summary>
/// 1 day
/// </summary>
OneDay = 60 * 60 * 24,
/// <summary>
/// 1 week
/// </summary>
OneWeek = 60 * 60 * 24 * 7,
/// <summary>
/// 1 month
/// </summary>
OneMonth = 60 * 60 * 24 * 30
}
}
@@ -0,0 +1,17 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Leverage setting mode
/// </summary>
public enum SharedLeverageSettingMode
{
/// <summary>
/// Leverage is configured per side (in hedge mode)
/// </summary>
PerSide,
/// <summary>
/// Leverage is configured for the symbol
/// </summary>
PerSymbol
}
}
@@ -0,0 +1,17 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Margin mode
/// </summary>
public enum SharedMarginMode
{
/// <summary>
/// Cross margin, margin is shared across symbols
/// </summary>
Cross,
/// <summary>
/// Isolated margin, margin is isolated on a symbol
/// </summary>
Isolated
}
}
@@ -0,0 +1,17 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Side of an order
/// </summary>
public enum SharedOrderSide
{
/// <summary>
/// Buy order
/// </summary>
Buy,
/// <summary>
/// Sell order
/// </summary>
Sell
}
}
@@ -0,0 +1,21 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Status of an order
/// </summary>
public enum SharedOrderStatus
{
/// <summary>
/// Order is open waiting to be filled
/// </summary>
Open,
/// <summary>
/// Order has been fully filled
/// </summary>
Filled,
/// <summary>
/// Order has been canceled
/// </summary>
Canceled
}
}
@@ -0,0 +1,25 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Type of an order
/// </summary>
public enum SharedOrderType
{
/// <summary>
/// Limit order, execute at a specific price
/// </summary>
Limit,
/// <summary>
/// Limit maker order, a limit order with the condition that is will never be executed as a maker
/// </summary>
LimitMaker,
/// <summary>
/// Market order, execute at the best price currently available
/// </summary>
Market,
/// <summary>
/// Other order type, used for parsing unsupported order types
/// </summary>
Other
}
}
@@ -0,0 +1,21 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Supported pagination type
/// </summary>
public enum SharedPaginationSupport
{
/// <summary>
/// Pagination is not supported for this exchange request
/// </summary>
NotSupported,
/// <summary>
/// Pagination is in ascending order
/// </summary>
Ascending,
/// <summary>
/// Pagination is in descending order
/// </summary>
Descending
}
}
@@ -0,0 +1,17 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Position mode
/// </summary>
public enum SharedPositionMode
{
/// <summary>
/// Hedge mode, a symbol can have both a long and a short position at the same time
/// </summary>
HedgeMode,
/// <summary>
/// One way mode, a symbol can only have one open position side at a time
/// </summary>
OneWay
}
}
@@ -0,0 +1,17 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Position mode selection type
/// </summary>
public enum SharedPositionModeSelection
{
/// <summary>
/// Position mode is configured per symbol
/// </summary>
PerSymbol,
/// <summary>
/// Position mode is configured for the entire account
/// </summary>
PerAccount
}
}
@@ -0,0 +1,17 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// The side of a position
/// </summary>
public enum SharedPositionSide
{
/// <summary>
/// Long position
/// </summary>
Long,
/// <summary>
/// Short position
/// </summary>
Short
}
}
@@ -0,0 +1,25 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Quote asset order quantity support
/// </summary>
public enum SharedQuantityType
{
/// <summary>
/// Quantity should be in the base asset
/// </summary>
BaseAsset,
/// <summary>
/// Quantity should be in the quote asset
/// </summary>
QuoteAsset,
/// <summary>
/// Quantity is in the number of contracts
/// </summary>
Contracts,
/// <summary>
/// Quantity can be either base or quote quantity
/// </summary>
BaseAndQuoteAsset
}
}
@@ -0,0 +1,17 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// The role of a trade
/// </summary>
public enum SharedRole
{
/// <summary>
/// Maker role, put an order on the order book which has been filled
/// </summary>
Maker,
/// <summary>
/// Taker role, took an order of the order book to fill
/// </summary>
Taker
}
}
@@ -0,0 +1,25 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Type of a symbol
/// </summary>
public enum SharedSymbolType
{
/// <summary>
/// Perpetual linear, contract has no delivery date and is settled in stablecoin
/// </summary>
PerpetualLinear,
/// <summary>
/// Perpetual inverse, contract has no delivery date and is settled in crypto
/// </summary>
PerpetualInverse,
/// <summary>
/// Delivery linear, contract has a specific delivery date and is settled in stablecoin
/// </summary>
DeliveryLinear,
/// <summary>
/// Delivery inverse, contract has a specific delivery date and is settled in crypto
/// </summary>
DeliveryInverse
}
}
@@ -0,0 +1,21 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Time in force for an order
/// </summary>
public enum SharedTimeInForce
{
/// <summary>
/// Order is good until canceled
/// </summary>
GoodTillCanceled,
/// <summary>
/// Order should execute immediately, not executed part is canceled
/// </summary>
ImmediateOrCancel,
/// <summary>
/// Order should execute fully immediately or is fully canceled
/// </summary>
FillOrKill
}
}
@@ -0,0 +1,29 @@
namespace CryptoExchange.Net.SharedApis
{
/// <summary>
/// Trading mode
/// </summary>
public enum TradingMode
{
/// <summary>
/// Spot trading
/// </summary>
Spot,
/// <summary>
/// Perpetual linear futures
/// </summary>
PerpetualLinear,
/// <summary>
/// Delivery linear futures
/// </summary>
DeliveryLinear,
/// <summary>
/// Perpetual inverse futures
/// </summary>
PerpetualInverse,
/// <summary>
/// Delivery inverse futures
/// </summary>
DeliveryInverse
}
}