@katanaperps/katana-perps-sdk 0.0.0-placeholder
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nvmrc +1 -0
- package/LICENSE +21 -0
- package/README.md +90 -0
- package/dist/abis/ERC20.json +288 -0
- package/dist/abis/EarningsEscrow.json +468 -0
- package/dist/abis/Exchange_v1.json +3644 -0
- package/dist/abis/IOFT.json +447 -0
- package/dist/bridge/config.d.ts +262 -0
- package/dist/bridge/config.d.ts.map +1 -0
- package/dist/bridge/config.js +221 -0
- package/dist/bridge/deposit.d.ts +107 -0
- package/dist/bridge/deposit.d.ts.map +1 -0
- package/dist/bridge/deposit.js +284 -0
- package/dist/bridge/index.d.ts +5 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +7 -0
- package/dist/bridge/utils.d.ts +140 -0
- package/dist/bridge/utils.d.ts.map +1 -0
- package/dist/bridge/utils.js +66 -0
- package/dist/bridge/withdraw.d.ts +42 -0
- package/dist/bridge/withdraw.d.ts.map +1 -0
- package/dist/bridge/withdraw.js +86 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +6 -0
- package/dist/client/orderBook/index.d.ts +2 -0
- package/dist/client/orderBook/index.d.ts.map +1 -0
- package/dist/client/orderBook/index.js +4 -0
- package/dist/client/orderBook/realTime.d.ts +180 -0
- package/dist/client/orderBook/realTime.d.ts.map +1 -0
- package/dist/client/orderBook/realTime.js +344 -0
- package/dist/client/orderBook/utils.d.ts +15 -0
- package/dist/client/orderBook/utils.d.ts.map +1 -0
- package/dist/client/orderBook/utils.js +77 -0
- package/dist/client/rest/authenticated.d.ts +1199 -0
- package/dist/client/rest/authenticated.d.ts.map +1 -0
- package/dist/client/rest/authenticated.js +1311 -0
- package/dist/client/rest/index.d.ts +3 -0
- package/dist/client/rest/index.d.ts.map +1 -0
- package/dist/client/rest/index.js +5 -0
- package/dist/client/rest/public.d.ts +436 -0
- package/dist/client/rest/public.d.ts.map +1 -0
- package/dist/client/rest/public.js +502 -0
- package/dist/client/webSocket/guards.d.ts +15 -0
- package/dist/client/webSocket/guards.d.ts.map +1 -0
- package/dist/client/webSocket/guards.js +37 -0
- package/dist/client/webSocket/index.d.ts +632 -0
- package/dist/client/webSocket/index.d.ts.map +1 -0
- package/dist/client/webSocket/index.js +1048 -0
- package/dist/client/webSocket/transform.d.ts +3 -0
- package/dist/client/webSocket/transform.d.ts.map +1 -0
- package/dist/client/webSocket/transform.js +244 -0
- package/dist/constants.d.ts +34 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +38 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/orderbook/apiConversions.d.ts +8 -0
- package/dist/orderbook/apiConversions.d.ts.map +1 -0
- package/dist/orderbook/apiConversions.js +100 -0
- package/dist/orderbook/demo.d.ts +2 -0
- package/dist/orderbook/demo.d.ts.map +1 -0
- package/dist/orderbook/demo.js +68 -0
- package/dist/orderbook/index.d.ts +3 -0
- package/dist/orderbook/index.d.ts.map +1 -0
- package/dist/orderbook/index.js +5 -0
- package/dist/orderbook/quantities.d.ts +112 -0
- package/dist/orderbook/quantities.d.ts.map +1 -0
- package/dist/orderbook/quantities.js +257 -0
- package/dist/orderbook/utils.d.ts +8 -0
- package/dist/orderbook/utils.d.ts.map +1 -0
- package/dist/orderbook/utils.js +28 -0
- package/dist/pipmath.d.ts +21 -0
- package/dist/pipmath.d.ts.map +1 -0
- package/dist/pipmath.js +110 -0
- package/dist/signatures.d.ts +37 -0
- package/dist/signatures.d.ts.map +1 -0
- package/dist/signatures.js +450 -0
- package/dist/tests/orderbook/quantities/calculateInitialMarginFractionWithOverride.test.d.ts +2 -0
- package/dist/tests/orderbook/quantities/calculateInitialMarginFractionWithOverride.test.d.ts.map +1 -0
- package/dist/tests/orderbook/quantities/calculateInitialMarginFractionWithOverride.test.js +49 -0
- package/dist/tests/orderbook/quantities/calculateMaximumInitialMarginFractionOverride.test.d.ts +2 -0
- package/dist/tests/orderbook/quantities/calculateMaximumInitialMarginFractionOverride.test.d.ts.map +1 -0
- package/dist/tests/orderbook/quantities/calculateMaximumInitialMarginFractionOverride.test.js +122 -0
- package/dist/tests/orderbook/quantities/determineMaximumReduceOnlyQuantityAvailableAtPriceLevel.test.d.ts +2 -0
- package/dist/tests/orderbook/quantities/determineMaximumReduceOnlyQuantityAvailableAtPriceLevel.test.d.ts.map +1 -0
- package/dist/tests/orderbook/quantities/determineMaximumReduceOnlyQuantityAvailableAtPriceLevel.test.js +138 -0
- package/dist/tests/orderbook/quantities.test.d.ts +2 -0
- package/dist/tests/orderbook/quantities.test.d.ts.map +1 -0
- package/dist/tests/orderbook/quantities.test.js +310 -0
- package/dist/tests/testHelpers.d.ts +2 -0
- package/dist/tests/testHelpers.d.ts.map +1 -0
- package/dist/tests/testHelpers.js +16 -0
- package/dist/tests/utils/deriveBaseURL.test.d.ts +2 -0
- package/dist/tests/utils/deriveBaseURL.test.d.ts.map +1 -0
- package/dist/tests/utils/deriveBaseURL.test.js +46 -0
- package/dist/typechain-types/ERC20.d.ts +170 -0
- package/dist/typechain-types/ERC20.d.ts.map +1 -0
- package/dist/typechain-types/ERC20.js +2 -0
- package/dist/typechain-types/EarningsEscrow.d.ts +210 -0
- package/dist/typechain-types/EarningsEscrow.d.ts.map +1 -0
- package/dist/typechain-types/EarningsEscrow.js +2 -0
- package/dist/typechain-types/ExchangeLayerZeroAdapter.d.ts +253 -0
- package/dist/typechain-types/ExchangeLayerZeroAdapter.d.ts.map +1 -0
- package/dist/typechain-types/ExchangeLayerZeroAdapter.js +2 -0
- package/dist/typechain-types/ExchangeLayerZeroAdapter_v2.d.ts +338 -0
- package/dist/typechain-types/ExchangeLayerZeroAdapter_v2.d.ts.map +1 -0
- package/dist/typechain-types/ExchangeLayerZeroAdapter_v2.js +2 -0
- package/dist/typechain-types/ExchangeLayerZeroAdapter_v3.d.ts +413 -0
- package/dist/typechain-types/ExchangeLayerZeroAdapter_v3.d.ts.map +1 -0
- package/dist/typechain-types/ExchangeLayerZeroAdapter_v3.js +2 -0
- package/dist/typechain-types/Exchange_v1.d.ts +2172 -0
- package/dist/typechain-types/Exchange_v1.d.ts.map +1 -0
- package/dist/typechain-types/Exchange_v1.js +2 -0
- package/dist/typechain-types/Exchange_v2.d.ts +2148 -0
- package/dist/typechain-types/Exchange_v2.d.ts.map +1 -0
- package/dist/typechain-types/Exchange_v2.js +2 -0
- package/dist/typechain-types/FixedIncomeVaultProviderStateAggregator_v1.d.ts +148 -0
- package/dist/typechain-types/FixedIncomeVaultProviderStateAggregator_v1.d.ts.map +1 -0
- package/dist/typechain-types/FixedIncomeVaultProviderStateAggregator_v1.js +2 -0
- package/dist/typechain-types/FixedIncomeVaultProvider_v1.d.ts +1204 -0
- package/dist/typechain-types/FixedIncomeVaultProvider_v1.d.ts.map +1 -0
- package/dist/typechain-types/FixedIncomeVaultProvider_v1.js +2 -0
- package/dist/typechain-types/IOFT.d.ts +247 -0
- package/dist/typechain-types/IOFT.d.ts.map +1 -0
- package/dist/typechain-types/IOFT.js +2 -0
- package/dist/typechain-types/IRewardVault.d.ts +649 -0
- package/dist/typechain-types/IRewardVault.d.ts.map +1 -0
- package/dist/typechain-types/IRewardVault.js +2 -0
- package/dist/typechain-types/KumaOFTAdapterUSDC.d.ts +638 -0
- package/dist/typechain-types/KumaOFTAdapterUSDC.d.ts.map +1 -0
- package/dist/typechain-types/KumaOFTAdapterUSDC.js +2 -0
- package/dist/typechain-types/KumaOFTUSDC.d.ts +756 -0
- package/dist/typechain-types/KumaOFTUSDC.d.ts.map +1 -0
- package/dist/typechain-types/KumaOFTUSDC.js +2 -0
- package/dist/typechain-types/KumaStargateForwarder_v1.d.ts +252 -0
- package/dist/typechain-types/KumaStargateForwarder_v1.d.ts.map +1 -0
- package/dist/typechain-types/KumaStargateForwarder_v1.js +2 -0
- package/dist/typechain-types/KumaStargateForwarder_v2.d.ts +252 -0
- package/dist/typechain-types/KumaStargateForwarder_v2.d.ts.map +1 -0
- package/dist/typechain-types/KumaStargateForwarder_v2.js +2 -0
- package/dist/typechain-types/ProfitShareVaultProvider_v1.d.ts +1095 -0
- package/dist/typechain-types/ProfitShareVaultProvider_v1.d.ts.map +1 -0
- package/dist/typechain-types/ProfitShareVaultProvider_v1.js +2 -0
- package/dist/typechain-types/StargatePoolUSDC.d.ts +956 -0
- package/dist/typechain-types/StargatePoolUSDC.d.ts.map +1 -0
- package/dist/typechain-types/StargatePoolUSDC.js +2 -0
- package/dist/typechain-types/common.d.ts +51 -0
- package/dist/typechain-types/common.d.ts.map +1 -0
- package/dist/typechain-types/common.js +2 -0
- package/dist/typechain-types/factories/ERC20__factory.d.ts +226 -0
- package/dist/typechain-types/factories/ERC20__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/ERC20__factory.js +305 -0
- package/dist/typechain-types/factories/EarningsEscrow__factory.d.ts +370 -0
- package/dist/typechain-types/factories/EarningsEscrow__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/EarningsEscrow__factory.js +485 -0
- package/dist/typechain-types/factories/ExchangeLayerZeroAdapter__factory.d.ts +359 -0
- package/dist/typechain-types/factories/ExchangeLayerZeroAdapter__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/ExchangeLayerZeroAdapter__factory.js +471 -0
- package/dist/typechain-types/factories/ExchangeLayerZeroAdapter_v2__factory.d.ts +419 -0
- package/dist/typechain-types/factories/ExchangeLayerZeroAdapter_v2__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/ExchangeLayerZeroAdapter_v2__factory.js +545 -0
- package/dist/typechain-types/factories/ExchangeLayerZeroAdapter_v3__factory.d.ts +546 -0
- package/dist/typechain-types/factories/ExchangeLayerZeroAdapter_v3__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/ExchangeLayerZeroAdapter_v3__factory.js +710 -0
- package/dist/typechain-types/factories/Exchange_v1__factory.d.ts +2852 -0
- package/dist/typechain-types/factories/Exchange_v1__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/Exchange_v1__factory.js +3661 -0
- package/dist/typechain-types/factories/Exchange_v2__factory.d.ts +2832 -0
- package/dist/typechain-types/factories/Exchange_v2__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/Exchange_v2__factory.js +3636 -0
- package/dist/typechain-types/factories/FixedIncomeVaultProviderStateAggregator_v1__factory.d.ts +180 -0
- package/dist/typechain-types/factories/FixedIncomeVaultProviderStateAggregator_v1__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/FixedIncomeVaultProviderStateAggregator_v1__factory.js +246 -0
- package/dist/typechain-types/factories/FixedIncomeVaultProvider_v1__factory.d.ts +2092 -0
- package/dist/typechain-types/factories/FixedIncomeVaultProvider_v1__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/FixedIncomeVaultProvider_v1__factory.js +2702 -0
- package/dist/typechain-types/factories/IOFT__factory.d.ts +352 -0
- package/dist/typechain-types/factories/IOFT__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/IOFT__factory.js +464 -0
- package/dist/typechain-types/factories/IRewardVault__factory.d.ts +1019 -0
- package/dist/typechain-types/factories/IRewardVault__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/IRewardVault__factory.js +1311 -0
- package/dist/typechain-types/factories/KumaOFTAdapterUSDC__factory.d.ts +996 -0
- package/dist/typechain-types/factories/KumaOFTAdapterUSDC__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/KumaOFTAdapterUSDC__factory.js +1306 -0
- package/dist/typechain-types/factories/KumaOFTUSDC__factory.d.ts +1234 -0
- package/dist/typechain-types/factories/KumaOFTUSDC__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/KumaOFTUSDC__factory.js +1619 -0
- package/dist/typechain-types/factories/KumaStargateForwarder_v1__factory.d.ts +354 -0
- package/dist/typechain-types/factories/KumaStargateForwarder_v1__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/KumaStargateForwarder_v1__factory.js +464 -0
- package/dist/typechain-types/factories/KumaStargateForwarder_v2__factory.d.ts +370 -0
- package/dist/typechain-types/factories/KumaStargateForwarder_v2__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/KumaStargateForwarder_v2__factory.js +486 -0
- package/dist/typechain-types/factories/ProfitShareVaultProvider_v1__factory.d.ts +1914 -0
- package/dist/typechain-types/factories/ProfitShareVaultProvider_v1__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/ProfitShareVaultProvider_v1__factory.js +2475 -0
- package/dist/typechain-types/factories/StargatePoolUSDC__factory.d.ts +1557 -0
- package/dist/typechain-types/factories/StargatePoolUSDC__factory.d.ts.map +1 -0
- package/dist/typechain-types/factories/StargatePoolUSDC__factory.js +2019 -0
- package/dist/typechain-types/factories/index.d.ts +5 -0
- package/dist/typechain-types/factories/index.d.ts.map +1 -0
- package/dist/typechain-types/factories/index.js +13 -0
- package/dist/typechain-types/index.d.ts +10 -0
- package/dist/typechain-types/index.d.ts.map +1 -0
- package/dist/typechain-types/index.js +15 -0
- package/dist/types/delegatedKeys.d.ts +44 -0
- package/dist/types/delegatedKeys.d.ts.map +1 -0
- package/dist/types/delegatedKeys.js +2 -0
- package/dist/types/enums/index.d.ts +4 -0
- package/dist/types/enums/index.d.ts.map +1 -0
- package/dist/types/enums/index.js +6 -0
- package/dist/types/enums/request.d.ts +980 -0
- package/dist/types/enums/request.d.ts.map +1 -0
- package/dist/types/enums/request.js +906 -0
- package/dist/types/enums/response.d.ts +329 -0
- package/dist/types/enums/response.d.ts.map +1 -0
- package/dist/types/enums/response.js +296 -0
- package/dist/types/enums/signature.d.ts +118 -0
- package/dist/types/enums/signature.d.ts.map +1 -0
- package/dist/types/enums/signature.js +131 -0
- package/dist/types/errors.d.ts +5 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +2 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/orderBook.d.ts +72 -0
- package/dist/types/orderBook.d.ts.map +1 -0
- package/dist/types/orderBook.js +2 -0
- package/dist/types/rest/common/common.d.ts +118 -0
- package/dist/types/rest/common/common.d.ts.map +1 -0
- package/dist/types/rest/common/common.js +2 -0
- package/dist/types/rest/common/guards.d.ts +8 -0
- package/dist/types/rest/common/guards.d.ts.map +1 -0
- package/dist/types/rest/common/guards.js +14 -0
- package/dist/types/rest/endpoints/AssociateWallet.d.ts +40 -0
- package/dist/types/rest/endpoints/AssociateWallet.d.ts.map +1 -0
- package/dist/types/rest/endpoints/AssociateWallet.js +2 -0
- package/dist/types/rest/endpoints/CancelOrders.d.ts +134 -0
- package/dist/types/rest/endpoints/CancelOrders.d.ts.map +1 -0
- package/dist/types/rest/endpoints/CancelOrders.js +2 -0
- package/dist/types/rest/endpoints/CreateOrder.d.ts +401 -0
- package/dist/types/rest/endpoints/CreateOrder.d.ts.map +1 -0
- package/dist/types/rest/endpoints/CreateOrder.js +2 -0
- package/dist/types/rest/endpoints/GetAuthenticationToken.d.ts +39 -0
- package/dist/types/rest/endpoints/GetAuthenticationToken.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetAuthenticationToken.js +2 -0
- package/dist/types/rest/endpoints/GetCandles.d.ts +115 -0
- package/dist/types/rest/endpoints/GetCandles.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetCandles.js +2 -0
- package/dist/types/rest/endpoints/GetDeposits.d.ts +109 -0
- package/dist/types/rest/endpoints/GetDeposits.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetDeposits.js +2 -0
- package/dist/types/rest/endpoints/GetExchange.d.ts +78 -0
- package/dist/types/rest/endpoints/GetExchange.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetExchange.js +9 -0
- package/dist/types/rest/endpoints/GetFills.d.ts +178 -0
- package/dist/types/rest/endpoints/GetFills.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetFills.js +2 -0
- package/dist/types/rest/endpoints/GetFundingPayments.d.ts +52 -0
- package/dist/types/rest/endpoints/GetFundingPayments.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetFundingPayments.js +2 -0
- package/dist/types/rest/endpoints/GetFundingRates.d.ts +34 -0
- package/dist/types/rest/endpoints/GetFundingRates.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetFundingRates.js +2 -0
- package/dist/types/rest/endpoints/GetGasFees.d.ts +23 -0
- package/dist/types/rest/endpoints/GetGasFees.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetGasFees.js +2 -0
- package/dist/types/rest/endpoints/GetHistoricalPnL.d.ts +39 -0
- package/dist/types/rest/endpoints/GetHistoricalPnL.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetHistoricalPnL.js +2 -0
- package/dist/types/rest/endpoints/GetInitialMarginFractionOverride.d.ts +31 -0
- package/dist/types/rest/endpoints/GetInitialMarginFractionOverride.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetInitialMarginFractionOverride.js +2 -0
- package/dist/types/rest/endpoints/GetLiquidations.d.ts +52 -0
- package/dist/types/rest/endpoints/GetLiquidations.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetLiquidations.js +2 -0
- package/dist/types/rest/endpoints/GetMarketMakerRewardsEpochs.d.ts +534 -0
- package/dist/types/rest/endpoints/GetMarketMakerRewardsEpochs.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetMarketMakerRewardsEpochs.js +2 -0
- package/dist/types/rest/endpoints/GetMarkets.d.ts +161 -0
- package/dist/types/rest/endpoints/GetMarkets.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetMarkets.js +2 -0
- package/dist/types/rest/endpoints/GetOrderBook.d.ts +176 -0
- package/dist/types/rest/endpoints/GetOrderBook.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetOrderBook.js +2 -0
- package/dist/types/rest/endpoints/GetOrders.d.ts +188 -0
- package/dist/types/rest/endpoints/GetOrders.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetOrders.js +2 -0
- package/dist/types/rest/endpoints/GetPing.d.ts +8 -0
- package/dist/types/rest/endpoints/GetPing.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetPing.js +2 -0
- package/dist/types/rest/endpoints/GetPositions.d.ts +104 -0
- package/dist/types/rest/endpoints/GetPositions.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetPositions.js +2 -0
- package/dist/types/rest/endpoints/GetTickers.d.ts +129 -0
- package/dist/types/rest/endpoints/GetTickers.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetTickers.js +2 -0
- package/dist/types/rest/endpoints/GetTime.d.ts +14 -0
- package/dist/types/rest/endpoints/GetTime.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetTime.js +2 -0
- package/dist/types/rest/endpoints/GetTrades.d.ts +62 -0
- package/dist/types/rest/endpoints/GetTrades.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetTrades.js +2 -0
- package/dist/types/rest/endpoints/GetWallets.d.ts +121 -0
- package/dist/types/rest/endpoints/GetWallets.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetWallets.js +2 -0
- package/dist/types/rest/endpoints/GetWithdrawals.d.ts +98 -0
- package/dist/types/rest/endpoints/GetWithdrawals.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetWithdrawals.js +2 -0
- package/dist/types/rest/endpoints/GetWithdrawalsFromManagedAccount.d.ts +98 -0
- package/dist/types/rest/endpoints/GetWithdrawalsFromManagedAccount.d.ts.map +1 -0
- package/dist/types/rest/endpoints/GetWithdrawalsFromManagedAccount.js +2 -0
- package/dist/types/rest/endpoints/Payouts.d.ts +199 -0
- package/dist/types/rest/endpoints/Payouts.d.ts.map +1 -0
- package/dist/types/rest/endpoints/Payouts.js +2 -0
- package/dist/types/rest/endpoints/SetInitialMarginFractionOverride.d.ts +83 -0
- package/dist/types/rest/endpoints/SetInitialMarginFractionOverride.d.ts.map +1 -0
- package/dist/types/rest/endpoints/SetInitialMarginFractionOverride.js +2 -0
- package/dist/types/rest/endpoints/WithdrawFunds.d.ts +144 -0
- package/dist/types/rest/endpoints/WithdrawFunds.d.ts.map +1 -0
- package/dist/types/rest/endpoints/WithdrawFunds.js +2 -0
- package/dist/types/rest/endpoints/WithdrawFundsFromManagedAccountByQuantity.d.ts +161 -0
- package/dist/types/rest/endpoints/WithdrawFundsFromManagedAccountByQuantity.d.ts.map +1 -0
- package/dist/types/rest/endpoints/WithdrawFundsFromManagedAccountByQuantity.js +2 -0
- package/dist/types/rest/endpoints/WithdrawFundsFromManagedAccountByShares.d.ts +160 -0
- package/dist/types/rest/endpoints/WithdrawFundsFromManagedAccountByShares.d.ts.map +1 -0
- package/dist/types/rest/endpoints/WithdrawFundsFromManagedAccountByShares.js +2 -0
- package/dist/types/rest/endpoints/index.d.ts +33 -0
- package/dist/types/rest/endpoints/index.d.ts.map +1 -0
- package/dist/types/rest/endpoints/index.js +35 -0
- package/dist/types/rest/endpoints/internal.d.ts +329 -0
- package/dist/types/rest/endpoints/internal.d.ts.map +1 -0
- package/dist/types/rest/endpoints/internal.js +14 -0
- package/dist/types/rest/index.d.ts +4 -0
- package/dist/types/rest/index.d.ts.map +1 -0
- package/dist/types/rest/index.js +6 -0
- package/dist/types/swaps.d.ts +11 -0
- package/dist/types/swaps.d.ts.map +1 -0
- package/dist/types/swaps.js +2 -0
- package/dist/types/utils.d.ts +67 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/dist/types/utils.js +3 -0
- package/dist/types/webSocket/base.d.ts +83 -0
- package/dist/types/webSocket/base.d.ts.map +1 -0
- package/dist/types/webSocket/base.js +2 -0
- package/dist/types/webSocket/constants.d.ts +41 -0
- package/dist/types/webSocket/constants.d.ts.map +1 -0
- package/dist/types/webSocket/constants.js +54 -0
- package/dist/types/webSocket/index.d.ts +6 -0
- package/dist/types/webSocket/index.d.ts.map +1 -0
- package/dist/types/webSocket/index.js +8 -0
- package/dist/types/webSocket/options.d.ts +276 -0
- package/dist/types/webSocket/options.d.ts.map +1 -0
- package/dist/types/webSocket/options.js +2 -0
- package/dist/types/webSocket/request/index.d.ts +3 -0
- package/dist/types/webSocket/request/index.d.ts.map +1 -0
- package/dist/types/webSocket/request/index.js +5 -0
- package/dist/types/webSocket/request/request.d.ts +137 -0
- package/dist/types/webSocket/request/request.d.ts.map +1 -0
- package/dist/types/webSocket/request/request.js +2 -0
- package/dist/types/webSocket/request/subscriptions.d.ts +498 -0
- package/dist/types/webSocket/request/subscriptions.d.ts.map +1 -0
- package/dist/types/webSocket/request/subscriptions.js +2 -0
- package/dist/types/webSocket/response/candles.d.ts +138 -0
- package/dist/types/webSocket/response/candles.d.ts.map +1 -0
- package/dist/types/webSocket/response/candles.js +2 -0
- package/dist/types/webSocket/response/deposits.d.ts +80 -0
- package/dist/types/webSocket/response/deposits.d.ts.map +1 -0
- package/dist/types/webSocket/response/deposits.js +2 -0
- package/dist/types/webSocket/response/fundingPayments.d.ts +78 -0
- package/dist/types/webSocket/response/fundingPayments.d.ts.map +1 -0
- package/dist/types/webSocket/response/fundingPayments.js +2 -0
- package/dist/types/webSocket/response/index.d.ts +13 -0
- package/dist/types/webSocket/response/index.d.ts.map +1 -0
- package/dist/types/webSocket/response/index.js +15 -0
- package/dist/types/webSocket/response/liquidations.d.ts +78 -0
- package/dist/types/webSocket/response/liquidations.d.ts.map +1 -0
- package/dist/types/webSocket/response/liquidations.js +2 -0
- package/dist/types/webSocket/response/orderbook.d.ts +214 -0
- package/dist/types/webSocket/response/orderbook.d.ts.map +1 -0
- package/dist/types/webSocket/response/orderbook.js +2 -0
- package/dist/types/webSocket/response/orders.d.ts +355 -0
- package/dist/types/webSocket/response/orders.d.ts.map +1 -0
- package/dist/types/webSocket/response/orders.js +2 -0
- package/dist/types/webSocket/response/ordersFill.d.ts +138 -0
- package/dist/types/webSocket/response/ordersFill.d.ts.map +1 -0
- package/dist/types/webSocket/response/ordersFill.js +2 -0
- package/dist/types/webSocket/response/positions.d.ts +120 -0
- package/dist/types/webSocket/response/positions.d.ts.map +1 -0
- package/dist/types/webSocket/response/positions.js +2 -0
- package/dist/types/webSocket/response/tickers.d.ts +131 -0
- package/dist/types/webSocket/response/tickers.d.ts.map +1 -0
- package/dist/types/webSocket/response/tickers.js +2 -0
- package/dist/types/webSocket/response/trades.d.ts +90 -0
- package/dist/types/webSocket/response/trades.d.ts.map +1 -0
- package/dist/types/webSocket/response/trades.js +2 -0
- package/dist/types/webSocket/response/webclient/base.d.ts +24 -0
- package/dist/types/webSocket/response/webclient/base.d.ts.map +1 -0
- package/dist/types/webSocket/response/webclient/base.js +2 -0
- package/dist/types/webSocket/response/webclient/events/exchangeStatus.d.ts +31 -0
- package/dist/types/webSocket/response/webclient/events/exchangeStatus.d.ts.map +1 -0
- package/dist/types/webSocket/response/webclient/events/exchangeStatus.js +2 -0
- package/dist/types/webSocket/response/webclient/events/index.d.ts +4 -0
- package/dist/types/webSocket/response/webclient/events/index.d.ts.map +1 -0
- package/dist/types/webSocket/response/webclient/events/index.js +6 -0
- package/dist/types/webSocket/response/webclient/events/reloadBanners.d.ts +17 -0
- package/dist/types/webSocket/response/webclient/events/reloadBanners.d.ts.map +1 -0
- package/dist/types/webSocket/response/webclient/events/reloadBanners.js +2 -0
- package/dist/types/webSocket/response/webclient/events/transactionSettled.d.ts +76 -0
- package/dist/types/webSocket/response/webclient/events/transactionSettled.d.ts.map +1 -0
- package/dist/types/webSocket/response/webclient/events/transactionSettled.js +2 -0
- package/dist/types/webSocket/response/webclient/index.d.ts +3 -0
- package/dist/types/webSocket/response/webclient/index.d.ts.map +1 -0
- package/dist/types/webSocket/response/webclient/index.js +5 -0
- package/dist/types/webSocket/response/webclient/webclient.d.ts +13 -0
- package/dist/types/webSocket/response/webclient/webclient.d.ts.map +1 -0
- package/dist/types/webSocket/response/webclient/webclient.js +2 -0
- package/dist/types/webSocket/response/withdrawals.d.ts +83 -0
- package/dist/types/webSocket/response/withdrawals.d.ts.map +1 -0
- package/dist/types/webSocket/response/withdrawals.js +2 -0
- package/dist/utils.d.ts +63 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +136 -0
- package/package.json +200 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const chai = tslib_1.__importStar(require("chai"));
|
|
5
|
+
const _pipmath_1 = require("#pipmath");
|
|
6
|
+
const orderbook = tslib_1.__importStar(require("#orderbook/index"));
|
|
7
|
+
const { expect } = chai;
|
|
8
|
+
function makeAPosition(marketSymbol, quantity) {
|
|
9
|
+
// All empty values are not used by the function under test
|
|
10
|
+
return {
|
|
11
|
+
market: marketSymbol,
|
|
12
|
+
quantity: (0, _pipmath_1.pipToDecimal)((0, _pipmath_1.decimalToPip)(quantity)),
|
|
13
|
+
maximumQuantity: '',
|
|
14
|
+
entryPrice: '',
|
|
15
|
+
exitPrice: '',
|
|
16
|
+
markPrice: '',
|
|
17
|
+
indexPrice: '1',
|
|
18
|
+
liquidationPrice: '',
|
|
19
|
+
value: '',
|
|
20
|
+
realizedPnL: '',
|
|
21
|
+
unrealizedPnL: '',
|
|
22
|
+
marginRequirement: '',
|
|
23
|
+
leverage: '',
|
|
24
|
+
totalFunding: '',
|
|
25
|
+
totalOpen: '',
|
|
26
|
+
totalClose: '',
|
|
27
|
+
adlQuintile: 0,
|
|
28
|
+
openedByFillId: '',
|
|
29
|
+
lastFillId: '',
|
|
30
|
+
time: 0,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function makeAStandingOrder(args) {
|
|
34
|
+
return {
|
|
35
|
+
market: args.marketSymbol,
|
|
36
|
+
side: args.side,
|
|
37
|
+
originalQuantity: (0, _pipmath_1.pipToDecimal)((0, _pipmath_1.decimalToPip)(args.quantity)),
|
|
38
|
+
executedQuantity: (0, _pipmath_1.pipToDecimal)(BigInt(0)),
|
|
39
|
+
price: (0, _pipmath_1.pipToDecimal)((0, _pipmath_1.decimalToPip)(args.price)),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
describe('orderbook/quantities', () => {
|
|
43
|
+
describe('determineMaximumReduceOnlyQuantityAvailableAtPriceLevel', () => {
|
|
44
|
+
const fooMarketSymbol = 'FOO-USD';
|
|
45
|
+
const makeOrder = (side, price, marketSymbol = fooMarketSymbol) => makeAStandingOrder({
|
|
46
|
+
marketSymbol,
|
|
47
|
+
side,
|
|
48
|
+
quantity: '1',
|
|
49
|
+
price,
|
|
50
|
+
});
|
|
51
|
+
it('should succeed for a long position and sell orders', () => {
|
|
52
|
+
const runScenario = (limitPrice, expectedQtyAvailable) => expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
|
|
53
|
+
limitPrice: (0, _pipmath_1.decimalToPip)(limitPrice),
|
|
54
|
+
position: makeAPosition(fooMarketSymbol, '3'),
|
|
55
|
+
orderSide: 'sell',
|
|
56
|
+
walletsStandingOrders: [
|
|
57
|
+
makeOrder('sell', '10'),
|
|
58
|
+
makeOrder('sell', '11'),
|
|
59
|
+
makeOrder('sell', '12'),
|
|
60
|
+
],
|
|
61
|
+
})).to.eql((0, _pipmath_1.decimalToPip)(expectedQtyAvailable));
|
|
62
|
+
runScenario('9', '3');
|
|
63
|
+
runScenario('10', '2');
|
|
64
|
+
runScenario('11', '1');
|
|
65
|
+
runScenario('12', '0');
|
|
66
|
+
runScenario('13', '0');
|
|
67
|
+
});
|
|
68
|
+
it('should succeed for a short position and buy orders', () => {
|
|
69
|
+
const runScenario = (limitPrice, expectedQtyAvailable) => expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
|
|
70
|
+
limitPrice: (0, _pipmath_1.decimalToPip)(limitPrice),
|
|
71
|
+
position: makeAPosition(fooMarketSymbol, '-3'),
|
|
72
|
+
orderSide: 'buy',
|
|
73
|
+
walletsStandingOrders: [
|
|
74
|
+
makeOrder('buy', '10'),
|
|
75
|
+
makeOrder('buy', '9'),
|
|
76
|
+
makeOrder('buy', '8'),
|
|
77
|
+
],
|
|
78
|
+
})).to.eql((0, _pipmath_1.decimalToPip)(expectedQtyAvailable));
|
|
79
|
+
runScenario('11', '3');
|
|
80
|
+
runScenario('10', '2');
|
|
81
|
+
runScenario('9', '1');
|
|
82
|
+
runScenario('8', '0');
|
|
83
|
+
runScenario('7', '0');
|
|
84
|
+
});
|
|
85
|
+
it('should ignore orders in other markets or on the other side of the book (long position)', () => {
|
|
86
|
+
expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
|
|
87
|
+
limitPrice: (0, _pipmath_1.decimalToPip)('1'),
|
|
88
|
+
position: makeAPosition(fooMarketSymbol, '3'),
|
|
89
|
+
orderSide: 'sell',
|
|
90
|
+
walletsStandingOrders: [
|
|
91
|
+
makeOrder('buy', '1'), // Wrong side
|
|
92
|
+
makeOrder('sell', '1', 'BAR-USD'), // Wrong market
|
|
93
|
+
],
|
|
94
|
+
})).to.eql((0, _pipmath_1.decimalToPip)('3'));
|
|
95
|
+
});
|
|
96
|
+
it('should ignore orders in other markets or on the other side of the book (short position)', () => {
|
|
97
|
+
expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
|
|
98
|
+
limitPrice: (0, _pipmath_1.decimalToPip)('1'),
|
|
99
|
+
position: makeAPosition(fooMarketSymbol, '-3'),
|
|
100
|
+
orderSide: 'buy',
|
|
101
|
+
walletsStandingOrders: [
|
|
102
|
+
makeOrder('sell', '1'), // Wrong side
|
|
103
|
+
makeOrder('buy', '1', 'BAR-USD'), // Wrong market
|
|
104
|
+
],
|
|
105
|
+
})).to.eql((0, _pipmath_1.decimalToPip)('3'));
|
|
106
|
+
});
|
|
107
|
+
it('should return zero for a long position and a buy order', () => {
|
|
108
|
+
expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
|
|
109
|
+
limitPrice: (0, _pipmath_1.decimalToPip)('123'),
|
|
110
|
+
position: makeAPosition(fooMarketSymbol, '123'),
|
|
111
|
+
orderSide: 'buy',
|
|
112
|
+
walletsStandingOrders: [],
|
|
113
|
+
})).to.eql(BigInt(0));
|
|
114
|
+
});
|
|
115
|
+
it('should return zero for a short position and a sell order', () => {
|
|
116
|
+
expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
|
|
117
|
+
limitPrice: (0, _pipmath_1.decimalToPip)('123'),
|
|
118
|
+
position: makeAPosition(fooMarketSymbol, '-123'),
|
|
119
|
+
orderSide: 'sell',
|
|
120
|
+
walletsStandingOrders: [],
|
|
121
|
+
})).to.eql(BigInt(0));
|
|
122
|
+
});
|
|
123
|
+
it('should return zero for a closed position', () => {
|
|
124
|
+
expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
|
|
125
|
+
limitPrice: (0, _pipmath_1.decimalToPip)('123'),
|
|
126
|
+
position: makeAPosition(fooMarketSymbol, '0'),
|
|
127
|
+
orderSide: 'buy',
|
|
128
|
+
walletsStandingOrders: [],
|
|
129
|
+
})).to.eql(BigInt(0));
|
|
130
|
+
expect(orderbook.determineMaximumReduceOnlyQuantityAvailableAtPriceLevel({
|
|
131
|
+
limitPrice: (0, _pipmath_1.decimalToPip)('123'),
|
|
132
|
+
position: makeAPosition(fooMarketSymbol, '0'),
|
|
133
|
+
orderSide: 'sell',
|
|
134
|
+
walletsStandingOrders: [],
|
|
135
|
+
})).to.eql(BigInt(0));
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quantities.test.d.ts","sourceRoot":"","sources":["../../../src/tests/orderbook/quantities.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const _pipmath_1 = require("#pipmath");
|
|
5
|
+
const orderbook = tslib_1.__importStar(require("#orderbook/index"));
|
|
6
|
+
const testHelpers = tslib_1.__importStar(require("#tests/testHelpers"));
|
|
7
|
+
const request_1 = require("#types/enums/request");
|
|
8
|
+
describe('orderbook/quantities', () => {
|
|
9
|
+
describe('calculateGrossFillQuantities', () => {
|
|
10
|
+
const runScenario = (args) => {
|
|
11
|
+
const takerQuantities = orderbook.calculateGrossFillQuantities(args.makerSideOrders, {
|
|
12
|
+
side: args.takerOrder.side,
|
|
13
|
+
quantity: (0, _pipmath_1.decimalToPip)(args.takerOrder.quantity),
|
|
14
|
+
isQuantityInQuote: args.takerOrder.isQuantityInQuote,
|
|
15
|
+
limitPrice: args.takerOrder.limitPrice ?
|
|
16
|
+
(0, _pipmath_1.decimalToPip)(args.takerOrder.limitPrice)
|
|
17
|
+
: undefined,
|
|
18
|
+
});
|
|
19
|
+
testHelpers.assertBigintsEqual(takerQuantities.baseQuantity, (0, _pipmath_1.decimalToPip)(args.expectedBaseFillQuantity));
|
|
20
|
+
testHelpers.assertBigintsEqual(takerQuantities.quoteQuantity, (0, _pipmath_1.decimalToPip)(args.expectedQuoteFillQuantity));
|
|
21
|
+
};
|
|
22
|
+
it('should succeed', () => {
|
|
23
|
+
const sellSideMakerOrders = [
|
|
24
|
+
{ price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') }, // 1 quote
|
|
25
|
+
{ price: (0, _pipmath_1.decimalToPip)('2'), size: (0, _pipmath_1.decimalToPip)('10') }, // 20 quote
|
|
26
|
+
{ price: (0, _pipmath_1.decimalToPip)('3'), size: (0, _pipmath_1.decimalToPip)('100') }, // 300 quote
|
|
27
|
+
];
|
|
28
|
+
runScenario({
|
|
29
|
+
makerSideOrders: sellSideMakerOrders,
|
|
30
|
+
takerOrder: {
|
|
31
|
+
side: request_1.OrderSide.buy,
|
|
32
|
+
quantity: '0.5',
|
|
33
|
+
isQuantityInQuote: false,
|
|
34
|
+
},
|
|
35
|
+
expectedBaseFillQuantity: '0.5',
|
|
36
|
+
expectedQuoteFillQuantity: '0.5',
|
|
37
|
+
});
|
|
38
|
+
runScenario({
|
|
39
|
+
makerSideOrders: sellSideMakerOrders,
|
|
40
|
+
takerOrder: {
|
|
41
|
+
side: request_1.OrderSide.buy,
|
|
42
|
+
quantity: '1',
|
|
43
|
+
isQuantityInQuote: false,
|
|
44
|
+
},
|
|
45
|
+
expectedBaseFillQuantity: '1',
|
|
46
|
+
expectedQuoteFillQuantity: '1',
|
|
47
|
+
});
|
|
48
|
+
runScenario({
|
|
49
|
+
makerSideOrders: sellSideMakerOrders,
|
|
50
|
+
takerOrder: {
|
|
51
|
+
side: request_1.OrderSide.buy,
|
|
52
|
+
quantity: '6',
|
|
53
|
+
isQuantityInQuote: false,
|
|
54
|
+
},
|
|
55
|
+
expectedBaseFillQuantity: '6',
|
|
56
|
+
expectedQuoteFillQuantity: '11',
|
|
57
|
+
});
|
|
58
|
+
runScenario({
|
|
59
|
+
makerSideOrders: sellSideMakerOrders,
|
|
60
|
+
takerOrder: {
|
|
61
|
+
side: request_1.OrderSide.buy,
|
|
62
|
+
quantity: '11',
|
|
63
|
+
isQuantityInQuote: false,
|
|
64
|
+
},
|
|
65
|
+
expectedBaseFillQuantity: '11',
|
|
66
|
+
expectedQuoteFillQuantity: '21',
|
|
67
|
+
});
|
|
68
|
+
runScenario({
|
|
69
|
+
makerSideOrders: sellSideMakerOrders,
|
|
70
|
+
takerOrder: {
|
|
71
|
+
side: request_1.OrderSide.buy,
|
|
72
|
+
quantity: '61',
|
|
73
|
+
isQuantityInQuote: false,
|
|
74
|
+
},
|
|
75
|
+
expectedBaseFillQuantity: '61',
|
|
76
|
+
expectedQuoteFillQuantity: '171',
|
|
77
|
+
});
|
|
78
|
+
runScenario({
|
|
79
|
+
makerSideOrders: sellSideMakerOrders,
|
|
80
|
+
takerOrder: {
|
|
81
|
+
side: request_1.OrderSide.buy,
|
|
82
|
+
quantity: '200', // More than available liquidity
|
|
83
|
+
isQuantityInQuote: false,
|
|
84
|
+
},
|
|
85
|
+
expectedBaseFillQuantity: '111',
|
|
86
|
+
expectedQuoteFillQuantity: '321',
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
it('should succeed for a taker quantity specified in quote', () => {
|
|
90
|
+
const sellSideMakerOrders = [
|
|
91
|
+
{ price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') }, // 1 quote
|
|
92
|
+
{ price: (0, _pipmath_1.decimalToPip)('2'), size: (0, _pipmath_1.decimalToPip)('10') }, // 20 quote
|
|
93
|
+
{ price: (0, _pipmath_1.decimalToPip)('3'), size: (0, _pipmath_1.decimalToPip)('100') }, // 300 quote
|
|
94
|
+
];
|
|
95
|
+
runScenario({
|
|
96
|
+
makerSideOrders: sellSideMakerOrders,
|
|
97
|
+
takerOrder: {
|
|
98
|
+
side: request_1.OrderSide.buy,
|
|
99
|
+
quantity: '0.5',
|
|
100
|
+
isQuantityInQuote: true,
|
|
101
|
+
},
|
|
102
|
+
expectedBaseFillQuantity: '0.5',
|
|
103
|
+
expectedQuoteFillQuantity: '0.5',
|
|
104
|
+
});
|
|
105
|
+
runScenario({
|
|
106
|
+
makerSideOrders: sellSideMakerOrders,
|
|
107
|
+
takerOrder: {
|
|
108
|
+
side: request_1.OrderSide.buy,
|
|
109
|
+
quantity: '1',
|
|
110
|
+
isQuantityInQuote: true,
|
|
111
|
+
},
|
|
112
|
+
expectedBaseFillQuantity: '1',
|
|
113
|
+
expectedQuoteFillQuantity: '1',
|
|
114
|
+
});
|
|
115
|
+
runScenario({
|
|
116
|
+
makerSideOrders: sellSideMakerOrders,
|
|
117
|
+
takerOrder: {
|
|
118
|
+
side: request_1.OrderSide.buy,
|
|
119
|
+
quantity: '11',
|
|
120
|
+
isQuantityInQuote: true,
|
|
121
|
+
},
|
|
122
|
+
expectedBaseFillQuantity: '6',
|
|
123
|
+
expectedQuoteFillQuantity: '11',
|
|
124
|
+
});
|
|
125
|
+
runScenario({
|
|
126
|
+
makerSideOrders: sellSideMakerOrders,
|
|
127
|
+
takerOrder: {
|
|
128
|
+
side: request_1.OrderSide.buy,
|
|
129
|
+
quantity: '21',
|
|
130
|
+
isQuantityInQuote: true,
|
|
131
|
+
},
|
|
132
|
+
expectedBaseFillQuantity: '11',
|
|
133
|
+
expectedQuoteFillQuantity: '21',
|
|
134
|
+
});
|
|
135
|
+
runScenario({
|
|
136
|
+
makerSideOrders: sellSideMakerOrders,
|
|
137
|
+
takerOrder: {
|
|
138
|
+
side: request_1.OrderSide.buy,
|
|
139
|
+
quantity: '171',
|
|
140
|
+
isQuantityInQuote: true,
|
|
141
|
+
},
|
|
142
|
+
expectedBaseFillQuantity: '61',
|
|
143
|
+
expectedQuoteFillQuantity: '171',
|
|
144
|
+
});
|
|
145
|
+
runScenario({
|
|
146
|
+
makerSideOrders: sellSideMakerOrders,
|
|
147
|
+
takerOrder: {
|
|
148
|
+
side: request_1.OrderSide.buy,
|
|
149
|
+
quantity: '1000', // More than available liquidity
|
|
150
|
+
isQuantityInQuote: true,
|
|
151
|
+
},
|
|
152
|
+
expectedBaseFillQuantity: '111',
|
|
153
|
+
expectedQuoteFillQuantity: '321',
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
it('should support multiple orders per price level', () => {
|
|
157
|
+
const sellSideMakerOrders = [
|
|
158
|
+
{ price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') },
|
|
159
|
+
{ price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') },
|
|
160
|
+
{ price: (0, _pipmath_1.decimalToPip)('2'), size: (0, _pipmath_1.decimalToPip)('1') },
|
|
161
|
+
];
|
|
162
|
+
runScenario({
|
|
163
|
+
makerSideOrders: sellSideMakerOrders,
|
|
164
|
+
takerOrder: {
|
|
165
|
+
side: request_1.OrderSide.buy,
|
|
166
|
+
quantity: '1.5',
|
|
167
|
+
isQuantityInQuote: false,
|
|
168
|
+
},
|
|
169
|
+
expectedBaseFillQuantity: '1.5',
|
|
170
|
+
expectedQuoteFillQuantity: '1.5',
|
|
171
|
+
});
|
|
172
|
+
runScenario({
|
|
173
|
+
makerSideOrders: sellSideMakerOrders,
|
|
174
|
+
takerOrder: {
|
|
175
|
+
side: request_1.OrderSide.buy,
|
|
176
|
+
quantity: '1.5',
|
|
177
|
+
isQuantityInQuote: true,
|
|
178
|
+
},
|
|
179
|
+
expectedBaseFillQuantity: '1.5',
|
|
180
|
+
expectedQuoteFillQuantity: '1.5',
|
|
181
|
+
});
|
|
182
|
+
runScenario({
|
|
183
|
+
makerSideOrders: sellSideMakerOrders,
|
|
184
|
+
takerOrder: {
|
|
185
|
+
side: request_1.OrderSide.buy,
|
|
186
|
+
quantity: '3',
|
|
187
|
+
isQuantityInQuote: false,
|
|
188
|
+
},
|
|
189
|
+
expectedBaseFillQuantity: '3',
|
|
190
|
+
expectedQuoteFillQuantity: '4',
|
|
191
|
+
});
|
|
192
|
+
runScenario({
|
|
193
|
+
makerSideOrders: sellSideMakerOrders,
|
|
194
|
+
takerOrder: {
|
|
195
|
+
side: request_1.OrderSide.buy,
|
|
196
|
+
quantity: '4',
|
|
197
|
+
isQuantityInQuote: true,
|
|
198
|
+
},
|
|
199
|
+
expectedBaseFillQuantity: '3',
|
|
200
|
+
expectedQuoteFillQuantity: '4',
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
it('should limit by price (buy)', () => {
|
|
204
|
+
const sellSideMakerOrders = [
|
|
205
|
+
{ price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') }, // 1 quote
|
|
206
|
+
{ price: (0, _pipmath_1.decimalToPip)('2'), size: (0, _pipmath_1.decimalToPip)('1') }, // 2 quote
|
|
207
|
+
{ price: (0, _pipmath_1.decimalToPip)('3'), size: (0, _pipmath_1.decimalToPip)('1') }, // 3 quote
|
|
208
|
+
];
|
|
209
|
+
runScenario({
|
|
210
|
+
makerSideOrders: sellSideMakerOrders,
|
|
211
|
+
takerOrder: {
|
|
212
|
+
side: request_1.OrderSide.buy,
|
|
213
|
+
quantity: '1000', // More than available liquidity
|
|
214
|
+
isQuantityInQuote: false,
|
|
215
|
+
limitPrice: '2',
|
|
216
|
+
},
|
|
217
|
+
expectedBaseFillQuantity: '2',
|
|
218
|
+
expectedQuoteFillQuantity: '3',
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
it('should limit by price (sell)', () => {
|
|
222
|
+
const buySideMakerOrders = [
|
|
223
|
+
{ price: (0, _pipmath_1.decimalToPip)('3'), size: (0, _pipmath_1.decimalToPip)('1') }, // 3 quote
|
|
224
|
+
{ price: (0, _pipmath_1.decimalToPip)('2'), size: (0, _pipmath_1.decimalToPip)('1') }, // 2 quote
|
|
225
|
+
{ price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') }, // 1 quote
|
|
226
|
+
];
|
|
227
|
+
runScenario({
|
|
228
|
+
makerSideOrders: buySideMakerOrders,
|
|
229
|
+
takerOrder: {
|
|
230
|
+
side: request_1.OrderSide.sell,
|
|
231
|
+
quantity: '1000', // More than available liquidity
|
|
232
|
+
isQuantityInQuote: false,
|
|
233
|
+
limitPrice: '2',
|
|
234
|
+
},
|
|
235
|
+
expectedBaseFillQuantity: '2',
|
|
236
|
+
expectedQuoteFillQuantity: '5',
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
it('should return zero if the limit price does not cross the spread (buy)', () => {
|
|
240
|
+
const sellSideMakerOrders = [
|
|
241
|
+
{ price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') },
|
|
242
|
+
];
|
|
243
|
+
runScenario({
|
|
244
|
+
makerSideOrders: sellSideMakerOrders,
|
|
245
|
+
takerOrder: {
|
|
246
|
+
side: request_1.OrderSide.buy,
|
|
247
|
+
quantity: '1',
|
|
248
|
+
isQuantityInQuote: false,
|
|
249
|
+
limitPrice: '0.5',
|
|
250
|
+
},
|
|
251
|
+
expectedBaseFillQuantity: '0',
|
|
252
|
+
expectedQuoteFillQuantity: '0',
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
it('should return zero if the limit price does not cross the spread (sell)', () => {
|
|
256
|
+
const buySideMakerOrders = [
|
|
257
|
+
{ price: (0, _pipmath_1.decimalToPip)('1'), size: (0, _pipmath_1.decimalToPip)('1') },
|
|
258
|
+
];
|
|
259
|
+
runScenario({
|
|
260
|
+
makerSideOrders: buySideMakerOrders,
|
|
261
|
+
takerOrder: {
|
|
262
|
+
side: request_1.OrderSide.sell,
|
|
263
|
+
quantity: '1',
|
|
264
|
+
isQuantityInQuote: false,
|
|
265
|
+
limitPrice: '2',
|
|
266
|
+
},
|
|
267
|
+
expectedBaseFillQuantity: '0',
|
|
268
|
+
expectedQuoteFillQuantity: '0',
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
it('should support double-pip precision', () => {
|
|
272
|
+
const makerSideOrders = [
|
|
273
|
+
{ price: (0, _pipmath_1.decimalToPip)('3'), size: (0, _pipmath_1.decimalToPip)('1') },
|
|
274
|
+
];
|
|
275
|
+
const takerQuantities = orderbook.calculateGrossFillQuantities(makerSideOrders, {
|
|
276
|
+
side: request_1.OrderSide.buy,
|
|
277
|
+
quantity: (0, _pipmath_1.decimalToPip)('1'),
|
|
278
|
+
isQuantityInQuote: false,
|
|
279
|
+
}, false);
|
|
280
|
+
testHelpers.assertBigintsEqual(takerQuantities.baseQuantity, (0, _pipmath_1.decimalToPip)('1'));
|
|
281
|
+
testHelpers.assertBigintsEqual(takerQuantities.quoteQuantity, (0, _pipmath_1.decimalToPip)('3'));
|
|
282
|
+
const takerQuantities2p = orderbook.calculateGrossFillQuantities(makerSideOrders, {
|
|
283
|
+
side: request_1.OrderSide.buy,
|
|
284
|
+
quantity: (0, _pipmath_1.decimalToPip)('1'),
|
|
285
|
+
isQuantityInQuote: false,
|
|
286
|
+
}, true);
|
|
287
|
+
testHelpers.assertBigintsEqual(takerQuantities2p.baseQuantity, BigInt(10000000000000000));
|
|
288
|
+
testHelpers.assertBigintsEqual(takerQuantities2p.quoteQuantity, BigInt(30000000000000000));
|
|
289
|
+
});
|
|
290
|
+
it('should support double-pip precision (taker quantity specified in quote)', () => {
|
|
291
|
+
const makerSideOrders = [
|
|
292
|
+
{ price: (0, _pipmath_1.decimalToPip)('3'), size: (0, _pipmath_1.decimalToPip)('1') },
|
|
293
|
+
];
|
|
294
|
+
const takerQuantities = orderbook.calculateGrossFillQuantities(makerSideOrders, {
|
|
295
|
+
side: request_1.OrderSide.buy,
|
|
296
|
+
quantity: (0, _pipmath_1.decimalToPip)('1'), // 1/3 of the available quote
|
|
297
|
+
isQuantityInQuote: true,
|
|
298
|
+
}, false);
|
|
299
|
+
testHelpers.assertBigintsEqual(takerQuantities.baseQuantity, (0, _pipmath_1.decimalToPip)('0.33333333'));
|
|
300
|
+
testHelpers.assertBigintsEqual(takerQuantities.quoteQuantity, (0, _pipmath_1.decimalToPip)('1'));
|
|
301
|
+
const takerQuantities2p = orderbook.calculateGrossFillQuantities(makerSideOrders, {
|
|
302
|
+
side: request_1.OrderSide.buy,
|
|
303
|
+
quantity: (0, _pipmath_1.decimalToPip)('1'), // 1/3 of the available quote
|
|
304
|
+
isQuantityInQuote: true,
|
|
305
|
+
}, true);
|
|
306
|
+
testHelpers.assertBigintsEqual(takerQuantities2p.baseQuantity, BigInt(3333333333333333));
|
|
307
|
+
testHelpers.assertBigintsEqual(takerQuantities2p.quoteQuantity, BigInt(10000000000000000));
|
|
308
|
+
});
|
|
309
|
+
});
|
|
310
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testHelpers.d.ts","sourceRoot":"","sources":["../../src/tests/testHelpers.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,MAC1B,OAAO,KACP,OAAO,uBAET,IAWF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertBigintsEqual = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const chai = tslib_1.__importStar(require("chai"));
|
|
6
|
+
const { expect } = chai;
|
|
7
|
+
const assertBigintsEqual = (a, b, message = '') => {
|
|
8
|
+
if (typeof a !== 'bigint') {
|
|
9
|
+
throw new Error(`First argument: Expected bigint, got ${String(a)}`);
|
|
10
|
+
}
|
|
11
|
+
if (typeof b !== 'bigint') {
|
|
12
|
+
throw new Error(`Second argument: Expected bigint, got ${String(b)}`);
|
|
13
|
+
}
|
|
14
|
+
expect(a.toString()).to.eql(b.toString(), `${message}Expected ${b.toString()}, got ${a.toString()}`);
|
|
15
|
+
};
|
|
16
|
+
exports.assertBigintsEqual = assertBigintsEqual;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deriveBaseURL.test.d.ts","sourceRoot":"","sources":["../../../src/tests/utils/deriveBaseURL.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const chai = tslib_1.__importStar(require("chai"));
|
|
5
|
+
const _constants_1 = require("#constants");
|
|
6
|
+
const _utils_1 = require("#utils");
|
|
7
|
+
const { expect } = chai;
|
|
8
|
+
describe('deriveBaseURL', () => {
|
|
9
|
+
it('should return the overrideBaseURL if provided', () => {
|
|
10
|
+
const overrideBaseURL = 'https://example.com/api';
|
|
11
|
+
const baseURL = (0, _utils_1.deriveBaseURL)({ overrideBaseURL, api: 'rest' });
|
|
12
|
+
expect(baseURL).to.equal(overrideBaseURL);
|
|
13
|
+
});
|
|
14
|
+
it('should return the baseRestApiURL if provided', () => {
|
|
15
|
+
const baseRestApiURL = 'https://api.example.com';
|
|
16
|
+
const baseURL = (0, _utils_1.deriveBaseURL)({ baseRestApiURL, api: 'rest' });
|
|
17
|
+
expect(baseURL).to.equal(baseRestApiURL);
|
|
18
|
+
});
|
|
19
|
+
it('should return the baseWebSocketURL if provided for rest API', () => {
|
|
20
|
+
const baseWebSocketURL = 'wss://websocket-test.example.com/';
|
|
21
|
+
const baseURL = (0, _utils_1.deriveBaseURL)({ baseWebSocketURL, api: 'rest' });
|
|
22
|
+
expect(baseURL).to.equal('https://api-test.example.com/');
|
|
23
|
+
});
|
|
24
|
+
it('should return the baseWebSocketURL if provided for websocket API', () => {
|
|
25
|
+
const baseWebSocketURL = 'wss://websocket.example.com';
|
|
26
|
+
const baseURL = (0, _utils_1.deriveBaseURL)({ baseWebSocketURL, api: 'websocket' });
|
|
27
|
+
expect(baseURL).to.equal(baseWebSocketURL);
|
|
28
|
+
});
|
|
29
|
+
it('should return the baseRestApiURL if provided for websocket API', () => {
|
|
30
|
+
const baseRestApiURL = 'https://api.example.com/';
|
|
31
|
+
const baseURL = (0, _utils_1.deriveBaseURL)({ baseRestApiURL, api: 'websocket' });
|
|
32
|
+
expect(baseURL).to.equal('wss://websocket.example.com/');
|
|
33
|
+
});
|
|
34
|
+
it('should return the production URL if no options are provided', () => {
|
|
35
|
+
const baseURL = (0, _utils_1.deriveBaseURL)({ api: 'rest' });
|
|
36
|
+
expect(baseURL).to.equal(_constants_1.URLS.production.v1.rest);
|
|
37
|
+
});
|
|
38
|
+
it('should return the sandbox URL if sandbox option is true', () => {
|
|
39
|
+
const baseURL = (0, _utils_1.deriveBaseURL)({ sandbox: true, api: 'rest' });
|
|
40
|
+
expect(baseURL).to.equal(_constants_1.URLS.sandbox.v1.rest);
|
|
41
|
+
});
|
|
42
|
+
it('should throw an error if baseURL cannot be derived', () => {
|
|
43
|
+
// @ts-expect-error - testing failure
|
|
44
|
+
expect(() => (0, _utils_1.deriveBaseURL)({ api: 'invalid' })).to.throw(/Invalid configuration/);
|
|
45
|
+
});
|
|
46
|
+
});
|