@velocity-exchange/sdk 0.2.0 → 0.2.2
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/CHANGELOG.md +7 -44
- package/lib/browser/adminClient.d.ts +0 -1
- package/lib/browser/bankrun/bankrunConnection.d.ts +2 -1
- package/lib/browser/bankrun/bankrunConnection.js +23 -1
- package/lib/browser/constants/numericConstants.d.ts +2 -1
- package/lib/browser/constants/numericConstants.js +8 -4
- package/lib/browser/constants/spotMarkets.d.ts +0 -1
- package/lib/browser/core/VelocityCore.d.ts +0 -1
- package/lib/browser/core/instructions/deposit.d.ts +0 -1
- package/lib/browser/core/instructions/withdraw.d.ts +0 -1
- package/lib/browser/dlob/DLOB.d.ts +0 -1
- package/lib/browser/dlob/DLOBNode.d.ts +0 -1
- package/lib/browser/dlob/DLOBSubscriber.d.ts +0 -1
- package/lib/browser/dlob/NodeList.d.ts +0 -1
- package/lib/browser/dlob/orderBookLevels.d.ts +0 -1
- package/lib/browser/events/eventList.d.ts +3 -3
- package/lib/browser/events/eventsServerLogProvider.d.ts +1 -1
- package/lib/browser/events/pollingLogProvider.d.ts +1 -1
- package/lib/browser/events/txEventCache.d.ts +3 -3
- package/lib/browser/events/webSocketLogProvider.d.ts +1 -1
- package/lib/browser/factory/bigNum.d.ts +0 -1
- package/lib/browser/index.d.ts +1 -1
- package/lib/browser/indicative-quotes/indicativeQuotesSender.d.ts +0 -1
- package/lib/browser/jupiter/jupiterClient.d.ts +0 -1
- package/lib/browser/marginCalculation.d.ts +0 -1
- package/lib/browser/marinade/index.d.ts +2 -3
- package/lib/browser/marinade/index.js +5 -0
- package/lib/browser/math/amm.d.ts +0 -1
- package/lib/browser/math/auction.d.ts +0 -1
- package/lib/browser/math/conversion.d.ts +0 -1
- package/lib/browser/math/funding.d.ts +0 -1
- package/lib/browser/math/insurance.d.ts +0 -1
- package/lib/browser/math/liquidation.d.ts +0 -1
- package/lib/browser/math/margin.d.ts +0 -1
- package/lib/browser/math/market.d.ts +0 -1
- package/lib/browser/math/oracles.d.ts +0 -1
- package/lib/browser/math/orders.d.ts +0 -1
- package/lib/browser/math/position.d.ts +1 -2
- package/lib/browser/math/repeg.d.ts +0 -1
- package/lib/browser/math/spotBalance.d.ts +0 -1
- package/lib/browser/math/spotMarket.d.ts +0 -1
- package/lib/browser/math/spotPosition.d.ts +0 -1
- package/lib/browser/math/state.d.ts +0 -1
- package/lib/browser/math/superStake.d.ts +0 -1
- package/lib/browser/math/trade.d.ts +2 -3
- package/lib/browser/math/utils.d.ts +0 -1
- package/lib/browser/oracles/oracleClientCache.d.ts +1 -1
- package/lib/browser/oracles/pythClient.d.ts +0 -1
- package/lib/browser/oracles/pythLazerClient.d.ts +0 -1
- package/lib/browser/oracles/strictOraclePrice.d.ts +0 -1
- package/lib/browser/oracles/types.d.ts +0 -1
- package/lib/browser/oracles/utils.d.ts +0 -1
- package/lib/browser/orderParams.d.ts +0 -1
- package/lib/browser/swap/UnifiedSwapClient.d.ts +0 -1
- package/lib/browser/titan/titanClient.d.ts +0 -1
- package/lib/browser/tokenFaucet.d.ts +0 -1
- package/lib/browser/tx/txHandler.d.ts +2 -2
- package/lib/browser/types.d.ts +2 -3
- package/lib/browser/user.d.ts +0 -1
- package/lib/browser/velocityClient.d.ts +1 -2
- package/lib/node/adminClient.d.ts +0 -1
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/bankrun/bankrunConnection.d.ts +2 -1
- package/lib/node/bankrun/bankrunConnection.d.ts.map +1 -1
- package/lib/node/bankrun/bankrunConnection.js +23 -1
- package/lib/node/constants/numericConstants.d.ts +2 -1
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +8 -4
- package/lib/node/constants/spotMarkets.d.ts +0 -1
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.d.ts +0 -1
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/instructions/deposit.d.ts +0 -1
- package/lib/node/core/instructions/deposit.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.d.ts +0 -1
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.d.ts +0 -1
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.d.ts +0 -1
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.d.ts +0 -1
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.d.ts +0 -1
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.d.ts +0 -1
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/factory/bigNum.d.ts +0 -1
- package/lib/node/factory/bigNum.d.ts.map +1 -1
- package/lib/node/index.d.ts +1 -1
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/indicative-quotes/indicativeQuotesSender.d.ts +0 -1
- package/lib/node/indicative-quotes/indicativeQuotesSender.d.ts.map +1 -1
- package/lib/node/jupiter/jupiterClient.d.ts +0 -1
- package/lib/node/jupiter/jupiterClient.d.ts.map +1 -1
- package/lib/node/marginCalculation.d.ts +0 -1
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marinade/index.d.ts +2 -3
- package/lib/node/marinade/index.d.ts.map +1 -1
- package/lib/node/marinade/index.js +5 -0
- package/lib/node/math/amm.d.ts +0 -1
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/auction.d.ts +0 -1
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/conversion.d.ts +0 -1
- package/lib/node/math/conversion.d.ts.map +1 -1
- package/lib/node/math/funding.d.ts +0 -1
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/insurance.d.ts +0 -1
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/liquidation.d.ts +0 -1
- package/lib/node/math/liquidation.d.ts.map +1 -1
- package/lib/node/math/margin.d.ts +0 -1
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/market.d.ts +0 -1
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/oracles.d.ts +0 -1
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/orders.d.ts +0 -1
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/position.d.ts +0 -1
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/repeg.d.ts +0 -1
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/spotBalance.d.ts +0 -1
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotMarket.d.ts +0 -1
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotPosition.d.ts +0 -1
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/state.d.ts +0 -1
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/superStake.d.ts +0 -1
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/trade.d.ts +0 -1
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/utils.d.ts +0 -1
- package/lib/node/math/utils.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.d.ts +0 -1
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.d.ts +0 -1
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/strictOraclePrice.d.ts +0 -1
- package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
- package/lib/node/oracles/types.d.ts +0 -1
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts +0 -1
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/orderParams.d.ts +0 -1
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/swap/UnifiedSwapClient.d.ts +0 -1
- package/lib/node/swap/UnifiedSwapClient.d.ts.map +1 -1
- package/lib/node/titan/titanClient.d.ts +0 -1
- package/lib/node/titan/titanClient.d.ts.map +1 -1
- package/lib/node/tokenFaucet.d.ts +0 -1
- package/lib/node/tokenFaucet.d.ts.map +1 -1
- package/lib/node/types.d.ts +0 -1
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/user.d.ts +0 -1
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/velocityClient.d.ts +0 -1
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/package.json +16 -11
- package/src/bankrun/bankrunConnection.ts +27 -1
- package/src/constants/numericConstants.ts +6 -2
- package/src/index.ts +5 -1
- package/src/marinade/index.ts +11 -2
- package/src/userMap/referrerMap.ts +1 -1
- package/src/userMap/revenueShareEscrowMap.ts +2 -2
- package/tests/VelocityCore/remainingAccounts.test.ts +4 -5
- package/tests/accounts/customizedCadenceBulkAccountLoader.test.ts +19 -11
- package/tests/amm/test.ts +162 -95
- package/tests/decode/userAccountBufferStrings.ts +100 -100
- package/tests/dlob/helpers.ts +156 -172
- package/tests/dlob/test.ts +155 -106
- package/tests/tx/TransactionConfirmationManager.test.ts +9 -2
- package/tests/user/getMarginCalculation.ts +1 -1
- package/tests/user/helpers.ts +3 -4
- package/tests/user/marginCalculations.test.ts +2 -2
- package/tests/user/test.ts +3 -3
- package/tsconfig.browser.json +3 -1
- package/tsconfig.json +20 -2
- package/.yarn/install-state.gz +0 -0
- package/VERSION +0 -1
- package/bun.lock +0 -1907
- package/scripts/updateVersion.js +0 -28
- package/tests/decode/phoenix.ts +0 -71
package/tests/amm/test.ts
CHANGED
|
@@ -844,6 +844,7 @@ describe('AMM Tests', () => {
|
|
|
844
844
|
const myMockPerpMarkets = _.cloneDeep(mockPerpMarkets);
|
|
845
845
|
const mockMarket1 = myMockPerpMarkets[0];
|
|
846
846
|
const mockAmm = mockMarket1.amm;
|
|
847
|
+
const mockMarketStats = mockMarket1.marketStats;
|
|
847
848
|
const now = new BN(new Date().getTime() / 1000); //todo
|
|
848
849
|
|
|
849
850
|
const oraclePriceData = {
|
|
@@ -854,7 +855,12 @@ describe('AMM Tests', () => {
|
|
|
854
855
|
isMMOracleActive: true,
|
|
855
856
|
} as MMOraclePriceData;
|
|
856
857
|
|
|
857
|
-
const reserves = calculateSpreadReserves(
|
|
858
|
+
const reserves = calculateSpreadReserves(
|
|
859
|
+
mockAmm,
|
|
860
|
+
mockMarketStats,
|
|
861
|
+
oraclePriceData,
|
|
862
|
+
now
|
|
863
|
+
);
|
|
858
864
|
assert(reserves[0].baseAssetReserve.eq(new BN('1000000000')));
|
|
859
865
|
assert(reserves[0].quoteAssetReserve.eq(new BN('12000000000')));
|
|
860
866
|
assert(reserves[1].baseAssetReserve.eq(new BN('1000000000')));
|
|
@@ -871,19 +877,19 @@ describe('AMM Tests', () => {
|
|
|
871
877
|
mockAmm.baseSpread = 2500;
|
|
872
878
|
mockAmm.maxSpread = 25000;
|
|
873
879
|
|
|
874
|
-
|
|
880
|
+
mockMarketStats.last24HAvgFundingRate = new BN(7590328523);
|
|
875
881
|
|
|
876
|
-
|
|
882
|
+
mockMarketStats.lastMarkPriceTwap = new BN(
|
|
877
883
|
(oraclePriceData.price.toNumber() / 1e6 - 0.01) * 1e6
|
|
878
884
|
);
|
|
879
|
-
|
|
885
|
+
mockMarketStats.historicalOracleData.lastOraclePriceTwap = new BN(
|
|
880
886
|
(oraclePriceData.price.toNumber() / 1e6 + 0.015) * 1e6
|
|
881
887
|
);
|
|
882
888
|
|
|
883
|
-
|
|
889
|
+
mockMarketStats.historicalOracleData.lastOraclePriceTwap5Min = new BN(
|
|
884
890
|
(oraclePriceData.price.toNumber() / 1e6 + 0.005) * 1e6
|
|
885
891
|
);
|
|
886
|
-
|
|
892
|
+
mockMarketStats.lastMarkPriceTwap5Min = new BN(
|
|
887
893
|
(oraclePriceData.price.toNumber() / 1e6 - 0.005) * 1e6
|
|
888
894
|
);
|
|
889
895
|
|
|
@@ -909,18 +915,27 @@ describe('AMM Tests', () => {
|
|
|
909
915
|
.div(reservePrice);
|
|
910
916
|
|
|
911
917
|
// now = now || new BN(new Date().getTime() / 1000); //todo
|
|
912
|
-
const liveOracleStd = calculateLiveOracleStd(
|
|
918
|
+
const liveOracleStd = calculateLiveOracleStd(
|
|
919
|
+
mockMarketStats,
|
|
920
|
+
oraclePriceData,
|
|
921
|
+
now
|
|
922
|
+
);
|
|
913
923
|
console.log('reservePrice:', reservePrice.toString());
|
|
914
924
|
console.log('targetMarkSpreadPct:', targetMarkSpreadPct.toString());
|
|
915
925
|
console.log('confIntervalPct:', confIntervalPct.toString());
|
|
916
926
|
console.log('liveOracleStd:', liveOracleStd.toString());
|
|
917
927
|
|
|
918
|
-
const tt = calculateSpread(mockAmm, oraclePriceData, now);
|
|
928
|
+
const tt = calculateSpread(mockAmm, mockMarketStats, oraclePriceData, now);
|
|
919
929
|
console.log(tt);
|
|
920
930
|
|
|
921
931
|
console.log('amm.baseAssetReserve:', mockAmm.baseAssetReserve.toString());
|
|
922
932
|
assert(mockAmm.baseAssetReserve.eq(new BN('1000000000')));
|
|
923
|
-
const reserves2 = calculateSpreadReserves(
|
|
933
|
+
const reserves2 = calculateSpreadReserves(
|
|
934
|
+
mockAmm,
|
|
935
|
+
mockMarketStats,
|
|
936
|
+
oraclePriceData,
|
|
937
|
+
now
|
|
938
|
+
);
|
|
924
939
|
console.log(reserves2[0].baseAssetReserve.toString());
|
|
925
940
|
console.log(reserves2[0].quoteAssetReserve.toString());
|
|
926
941
|
|
|
@@ -956,12 +971,12 @@ describe('AMM Tests', () => {
|
|
|
956
971
|
);
|
|
957
972
|
const referencePriceOffset = calculateReferencePriceOffset(
|
|
958
973
|
reservePrice,
|
|
959
|
-
|
|
974
|
+
mockMarketStats.last24HAvgFundingRate,
|
|
960
975
|
liquidityFractionSigned,
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
976
|
+
mockMarketStats.historicalOracleData.lastOraclePriceTwap5Min,
|
|
977
|
+
mockMarketStats.lastMarkPriceTwap5Min,
|
|
978
|
+
mockMarketStats.historicalOracleData.lastOraclePriceTwap,
|
|
979
|
+
mockMarketStats.lastMarkPriceTwap,
|
|
965
980
|
maxOffset
|
|
966
981
|
);
|
|
967
982
|
console.log('referencePriceOffset:', referencePriceOffset.toString());
|
|
@@ -969,7 +984,12 @@ describe('AMM Tests', () => {
|
|
|
969
984
|
assert(referencePriceOffset.eq(new BN(maxOffset)));
|
|
970
985
|
|
|
971
986
|
// mockAmm.curveUpdateIntensity = 100;
|
|
972
|
-
const reserves3 = calculateSpreadReserves(
|
|
987
|
+
const reserves3 = calculateSpreadReserves(
|
|
988
|
+
mockAmm,
|
|
989
|
+
mockMarketStats,
|
|
990
|
+
oraclePriceData,
|
|
991
|
+
now
|
|
992
|
+
);
|
|
973
993
|
console.log(reserves3[0].baseAssetReserve.toString());
|
|
974
994
|
console.log(reserves3[0].quoteAssetReserve.toString());
|
|
975
995
|
|
|
@@ -994,7 +1014,12 @@ describe('AMM Tests', () => {
|
|
|
994
1014
|
assert(p2.eq(new BN(13828180)));
|
|
995
1015
|
|
|
996
1016
|
mockAmm.curveUpdateIntensity = 110;
|
|
997
|
-
const reserves4 = calculateSpreadReserves(
|
|
1017
|
+
const reserves4 = calculateSpreadReserves(
|
|
1018
|
+
mockAmm,
|
|
1019
|
+
mockMarketStats,
|
|
1020
|
+
oraclePriceData,
|
|
1021
|
+
now
|
|
1022
|
+
);
|
|
998
1023
|
|
|
999
1024
|
assert(reserves4[0].baseAssetReserve.eq(new BN('1100068201')));
|
|
1000
1025
|
assert(reserves4[0].quoteAssetReserve.eq(new BN('909034546')));
|
|
@@ -1017,7 +1042,12 @@ describe('AMM Tests', () => {
|
|
|
1017
1042
|
assert(p2RF.eq(new BN(13828180)));
|
|
1018
1043
|
// no ref price offset at 100
|
|
1019
1044
|
mockAmm.curveUpdateIntensity = 100;
|
|
1020
|
-
const reserves5 = calculateSpreadReserves(
|
|
1045
|
+
const reserves5 = calculateSpreadReserves(
|
|
1046
|
+
mockAmm,
|
|
1047
|
+
mockMarketStats,
|
|
1048
|
+
oraclePriceData,
|
|
1049
|
+
now
|
|
1050
|
+
);
|
|
1021
1051
|
|
|
1022
1052
|
assert(reserves5[0].baseAssetReserve.eq(new BN('1100068201')));
|
|
1023
1053
|
assert(reserves5[0].quoteAssetReserve.eq(new BN('909034546')));
|
|
@@ -1045,6 +1075,7 @@ describe('AMM Tests', () => {
|
|
|
1045
1075
|
const myMockPerpMarkets = _.cloneDeep(mockPerpMarkets);
|
|
1046
1076
|
const mockMarket1 = myMockPerpMarkets[0];
|
|
1047
1077
|
const mockAmm = mockMarket1.amm;
|
|
1078
|
+
const mockMarketStats = mockMarket1.marketStats;
|
|
1048
1079
|
const now = new BN(new Date().getTime() / 1000); //todo
|
|
1049
1080
|
|
|
1050
1081
|
const oraclePriceData = {
|
|
@@ -1055,7 +1086,12 @@ describe('AMM Tests', () => {
|
|
|
1055
1086
|
isMMOracleActive: true,
|
|
1056
1087
|
} as MMOraclePriceData;
|
|
1057
1088
|
|
|
1058
|
-
const reserves = calculateSpreadReserves(
|
|
1089
|
+
const reserves = calculateSpreadReserves(
|
|
1090
|
+
mockAmm,
|
|
1091
|
+
mockMarketStats,
|
|
1092
|
+
oraclePriceData,
|
|
1093
|
+
now
|
|
1094
|
+
);
|
|
1059
1095
|
assert(reserves[0].baseAssetReserve.eq(new BN('1000000000')));
|
|
1060
1096
|
assert(reserves[0].quoteAssetReserve.eq(new BN('12000000000')));
|
|
1061
1097
|
assert(reserves[1].baseAssetReserve.eq(new BN('1000000000')));
|
|
@@ -1072,19 +1108,19 @@ describe('AMM Tests', () => {
|
|
|
1072
1108
|
mockAmm.baseSpread = 2500;
|
|
1073
1109
|
mockAmm.maxSpread = 25000;
|
|
1074
1110
|
|
|
1075
|
-
|
|
1111
|
+
mockMarketStats.last24HAvgFundingRate = new BN(-7590328523);
|
|
1076
1112
|
|
|
1077
|
-
|
|
1113
|
+
mockMarketStats.lastMarkPriceTwap = new BN(
|
|
1078
1114
|
(oraclePriceData.price.toNumber() / 1e6 + 0.01) * 1e6
|
|
1079
1115
|
);
|
|
1080
|
-
|
|
1116
|
+
mockMarketStats.historicalOracleData.lastOraclePriceTwap = new BN(
|
|
1081
1117
|
(oraclePriceData.price.toNumber() / 1e6 - 0.015) * 1e6
|
|
1082
1118
|
);
|
|
1083
1119
|
|
|
1084
|
-
|
|
1120
|
+
mockMarketStats.historicalOracleData.lastOraclePriceTwap5Min = new BN(
|
|
1085
1121
|
(oraclePriceData.price.toNumber() / 1e6 + 0.005) * 1e6
|
|
1086
1122
|
);
|
|
1087
|
-
|
|
1123
|
+
mockMarketStats.lastMarkPriceTwap5Min = new BN(
|
|
1088
1124
|
(oraclePriceData.price.toNumber() / 1e6 - 0.005) * 1e6
|
|
1089
1125
|
);
|
|
1090
1126
|
|
|
@@ -1110,19 +1146,28 @@ describe('AMM Tests', () => {
|
|
|
1110
1146
|
.div(reservePrice);
|
|
1111
1147
|
|
|
1112
1148
|
// now = now || new BN(new Date().getTime() / 1000); //todo
|
|
1113
|
-
const liveOracleStd = calculateLiveOracleStd(
|
|
1149
|
+
const liveOracleStd = calculateLiveOracleStd(
|
|
1150
|
+
mockMarketStats,
|
|
1151
|
+
oraclePriceData,
|
|
1152
|
+
now
|
|
1153
|
+
);
|
|
1114
1154
|
console.log('reservePrice:', reservePrice.toString());
|
|
1115
1155
|
console.log('targetMarkSpreadPct:', targetMarkSpreadPct.toString());
|
|
1116
1156
|
console.log('confIntervalPct:', confIntervalPct.toString());
|
|
1117
1157
|
|
|
1118
1158
|
console.log('liveOracleStd:', liveOracleStd.toString());
|
|
1119
1159
|
|
|
1120
|
-
const tt = calculateSpread(mockAmm, oraclePriceData, now);
|
|
1160
|
+
const tt = calculateSpread(mockAmm, mockMarketStats, oraclePriceData, now);
|
|
1121
1161
|
console.log(tt);
|
|
1122
1162
|
|
|
1123
1163
|
console.log('amm.baseAssetReserve:', mockAmm.baseAssetReserve.toString());
|
|
1124
1164
|
assert(mockAmm.baseAssetReserve.eq(new BN('1000000000')));
|
|
1125
|
-
const reserves2 = calculateSpreadReserves(
|
|
1165
|
+
const reserves2 = calculateSpreadReserves(
|
|
1166
|
+
mockAmm,
|
|
1167
|
+
mockMarketStats,
|
|
1168
|
+
oraclePriceData,
|
|
1169
|
+
now
|
|
1170
|
+
);
|
|
1126
1171
|
console.log(reserves2[1].baseAssetReserve.toString());
|
|
1127
1172
|
console.log(reserves2[1].quoteAssetReserve.toString());
|
|
1128
1173
|
|
|
@@ -1158,12 +1203,12 @@ describe('AMM Tests', () => {
|
|
|
1158
1203
|
);
|
|
1159
1204
|
const referencePriceOffset = calculateReferencePriceOffset(
|
|
1160
1205
|
reservePrice,
|
|
1161
|
-
|
|
1206
|
+
mockMarketStats.last24HAvgFundingRate,
|
|
1162
1207
|
liquidityFractionSigned,
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1208
|
+
mockMarketStats.historicalOracleData.lastOraclePriceTwap5Min,
|
|
1209
|
+
mockMarketStats.lastMarkPriceTwap5Min,
|
|
1210
|
+
mockMarketStats.historicalOracleData.lastOraclePriceTwap,
|
|
1211
|
+
mockMarketStats.lastMarkPriceTwap,
|
|
1167
1212
|
maxOffset
|
|
1168
1213
|
);
|
|
1169
1214
|
console.log('referencePriceOffset:', referencePriceOffset.toString());
|
|
@@ -1172,7 +1217,12 @@ describe('AMM Tests', () => {
|
|
|
1172
1217
|
// assert(referencePriceOffset.eq(new BN(maxOffset)));
|
|
1173
1218
|
|
|
1174
1219
|
// mockAmm.curveUpdateIntensity = 100;
|
|
1175
|
-
const reserves3 = calculateSpreadReserves(
|
|
1220
|
+
const reserves3 = calculateSpreadReserves(
|
|
1221
|
+
mockAmm,
|
|
1222
|
+
mockMarketStats,
|
|
1223
|
+
oraclePriceData,
|
|
1224
|
+
now
|
|
1225
|
+
);
|
|
1176
1226
|
console.log(reserves3[0].baseAssetReserve.toString());
|
|
1177
1227
|
console.log(reserves3[0].quoteAssetReserve.toString());
|
|
1178
1228
|
|
|
@@ -1197,7 +1247,12 @@ describe('AMM Tests', () => {
|
|
|
1197
1247
|
assert(p2.eq(new BN(16401163)));
|
|
1198
1248
|
|
|
1199
1249
|
mockAmm.curveUpdateIntensity = 110;
|
|
1200
|
-
const reserves4 = calculateSpreadReserves(
|
|
1250
|
+
const reserves4 = calculateSpreadReserves(
|
|
1251
|
+
mockAmm,
|
|
1252
|
+
mockMarketStats,
|
|
1253
|
+
oraclePriceData,
|
|
1254
|
+
now
|
|
1255
|
+
);
|
|
1201
1256
|
|
|
1202
1257
|
assert(reserves4[0].baseAssetReserve.eq(new BN('999999998')));
|
|
1203
1258
|
assert(reserves4[0].quoteAssetReserve.eq(new BN('1000000000')));
|
|
@@ -1221,7 +1276,12 @@ describe('AMM Tests', () => {
|
|
|
1221
1276
|
|
|
1222
1277
|
// no ref price offset at 100
|
|
1223
1278
|
mockAmm.curveUpdateIntensity = 100;
|
|
1224
|
-
const reserves5 = calculateSpreadReserves(
|
|
1279
|
+
const reserves5 = calculateSpreadReserves(
|
|
1280
|
+
mockAmm,
|
|
1281
|
+
mockMarketStats,
|
|
1282
|
+
oraclePriceData,
|
|
1283
|
+
now
|
|
1284
|
+
);
|
|
1225
1285
|
|
|
1226
1286
|
assert(reserves5[0].baseAssetReserve.eq(new BN('999999998')));
|
|
1227
1287
|
assert(reserves5[0].quoteAssetReserve.eq(new BN('1000000000')));
|
|
@@ -1250,7 +1310,7 @@ describe('AMM Tests', () => {
|
|
|
1250
1310
|
it('live update functions', () => {
|
|
1251
1311
|
const myMockPerpMarkets = _.cloneDeep(mockPerpMarkets);
|
|
1252
1312
|
const mockMarket1 = myMockPerpMarkets[0];
|
|
1253
|
-
const
|
|
1313
|
+
const mockMarketStats = mockMarket1.marketStats;
|
|
1254
1314
|
const now = new BN(new Date().getTime() / 1000); //todo
|
|
1255
1315
|
const slot = 999999999;
|
|
1256
1316
|
|
|
@@ -1261,29 +1321,34 @@ describe('AMM Tests', () => {
|
|
|
1261
1321
|
hasSufficientNumberOfDataPoints: true,
|
|
1262
1322
|
isMMOracleActive: true,
|
|
1263
1323
|
} as MMOraclePriceData;
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
.mul(new BN(999))
|
|
1268
|
-
|
|
1269
|
-
|
|
1324
|
+
mockMarketStats.oracleStd = new BN(0.18 * PRICE_PRECISION.toNumber());
|
|
1325
|
+
mockMarketStats.fundingPeriod = new BN(3600);
|
|
1326
|
+
mockMarketStats.historicalOracleData.lastOraclePriceTwap =
|
|
1327
|
+
oraclePriceData.price.mul(new BN(999)).div(new BN(1000));
|
|
1328
|
+
mockMarketStats.historicalOracleData.lastOraclePriceTwapTs = now.sub(
|
|
1329
|
+
new BN(11)
|
|
1330
|
+
);
|
|
1270
1331
|
|
|
1271
1332
|
const liveOracleTwap = calculateLiveOracleTwap(
|
|
1272
|
-
|
|
1333
|
+
mockMarketStats.historicalOracleData,
|
|
1273
1334
|
oraclePriceData,
|
|
1274
1335
|
now,
|
|
1275
|
-
|
|
1336
|
+
mockMarketStats.fundingPeriod
|
|
1276
1337
|
);
|
|
1277
1338
|
console.log('liveOracleTwap:', liveOracleTwap.toNumber());
|
|
1278
1339
|
assert(liveOracleTwap.eq(new BN(13539488)));
|
|
1279
1340
|
|
|
1280
|
-
const liveOracleStd = calculateLiveOracleStd(
|
|
1341
|
+
const liveOracleStd = calculateLiveOracleStd(
|
|
1342
|
+
mockMarketStats,
|
|
1343
|
+
oraclePriceData,
|
|
1344
|
+
now
|
|
1345
|
+
);
|
|
1281
1346
|
assert(liveOracleStd.eq(new BN(13732450)));
|
|
1282
1347
|
|
|
1283
|
-
|
|
1348
|
+
mockMarketStats.lastOracleConfPct = new BN(150000);
|
|
1284
1349
|
const reservePrice = new BN(13.553 * PRICE_PRECISION.toNumber());
|
|
1285
1350
|
const newConfPct = getNewOracleConfPct(
|
|
1286
|
-
|
|
1351
|
+
mockMarketStats,
|
|
1287
1352
|
oraclePriceData,
|
|
1288
1353
|
reservePrice,
|
|
1289
1354
|
now
|
|
@@ -1291,7 +1356,9 @@ describe('AMM Tests', () => {
|
|
|
1291
1356
|
console.log('newConfPct:', newConfPct.toString());
|
|
1292
1357
|
|
|
1293
1358
|
assert(
|
|
1294
|
-
now
|
|
1359
|
+
now
|
|
1360
|
+
.sub(mockMarketStats.historicalOracleData.lastOraclePriceTwapTs)
|
|
1361
|
+
.gt(ZERO)
|
|
1295
1362
|
);
|
|
1296
1363
|
|
|
1297
1364
|
assert(newConfPct.eq(new BN(135000)));
|
|
@@ -1434,8 +1501,8 @@ describe('AMM Tests', () => {
|
|
|
1434
1501
|
// make it like RNDR
|
|
1435
1502
|
const now = new BN(1688878353);
|
|
1436
1503
|
|
|
1437
|
-
mockMarket1.
|
|
1438
|
-
mockMarket1.
|
|
1504
|
+
mockMarket1.marketStats.fundingPeriod = new BN(3600);
|
|
1505
|
+
mockMarket1.lastFundingRateTs = new BN(1688860817);
|
|
1439
1506
|
|
|
1440
1507
|
const currentMarkPrice = new BN(1.9843 * PRICE_PRECISION.toNumber()); // trading at a premium
|
|
1441
1508
|
const mmOraclePriceData: MMOraclePriceData = {
|
|
@@ -1445,27 +1512,27 @@ describe('AMM Tests', () => {
|
|
|
1445
1512
|
hasSufficientNumberOfDataPoints: true,
|
|
1446
1513
|
isMMOracleActive: true,
|
|
1447
1514
|
};
|
|
1448
|
-
mockMarket1.
|
|
1515
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePrice = new BN(
|
|
1449
1516
|
1.9535 * PRICE_PRECISION.toNumber()
|
|
1450
1517
|
);
|
|
1451
1518
|
|
|
1452
1519
|
// mockMarket1.amm.pegMultiplier = new BN(1.897573 * 1e3);
|
|
1453
1520
|
|
|
1454
|
-
mockMarket1.
|
|
1521
|
+
mockMarket1.marketStats.lastMarkPriceTwap = new BN(
|
|
1455
1522
|
1.945594 * PRICE_PRECISION.toNumber()
|
|
1456
1523
|
);
|
|
1457
|
-
mockMarket1.
|
|
1524
|
+
mockMarket1.marketStats.lastBidPriceTwap = new BN(
|
|
1458
1525
|
1.941629 * PRICE_PRECISION.toNumber()
|
|
1459
1526
|
);
|
|
1460
|
-
mockMarket1.
|
|
1527
|
+
mockMarket1.marketStats.lastAskPriceTwap = new BN(
|
|
1461
1528
|
1.94956 * PRICE_PRECISION.toNumber()
|
|
1462
1529
|
);
|
|
1463
|
-
mockMarket1.
|
|
1530
|
+
mockMarket1.marketStats.lastMarkPriceTwapTs = new BN(1688877729);
|
|
1464
1531
|
|
|
1465
|
-
mockMarket1.
|
|
1532
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePriceTwap = new BN(
|
|
1466
1533
|
1.942449 * PRICE_PRECISION.toNumber()
|
|
1467
1534
|
);
|
|
1468
|
-
mockMarket1.
|
|
1535
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePriceTwapTs = new BN(
|
|
1469
1536
|
1688878333
|
|
1470
1537
|
);
|
|
1471
1538
|
|
|
@@ -1510,8 +1577,8 @@ describe('AMM Tests', () => {
|
|
|
1510
1577
|
// make it like OP
|
|
1511
1578
|
const now = new BN(1688881915);
|
|
1512
1579
|
|
|
1513
|
-
mockMarket1.
|
|
1514
|
-
mockMarket1.
|
|
1580
|
+
mockMarket1.marketStats.fundingPeriod = new BN(3600);
|
|
1581
|
+
mockMarket1.lastFundingRateTs = new BN(1688864415);
|
|
1515
1582
|
|
|
1516
1583
|
const currentMarkPrice = new BN(1.2242 * PRICE_PRECISION.toNumber()); // trading at a premium
|
|
1517
1584
|
const mmOraclePriceData: MMOraclePriceData = {
|
|
@@ -1521,27 +1588,27 @@ describe('AMM Tests', () => {
|
|
|
1521
1588
|
hasSufficientNumberOfDataPoints: true,
|
|
1522
1589
|
isMMOracleActive: true,
|
|
1523
1590
|
};
|
|
1524
|
-
mockMarket1.
|
|
1591
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePrice = new BN(
|
|
1525
1592
|
1.9535 * PRICE_PRECISION.toNumber()
|
|
1526
1593
|
);
|
|
1527
1594
|
|
|
1528
1595
|
// mockMarket1.amm.pegMultiplier = new BN(1.897573 * 1e3);
|
|
1529
1596
|
|
|
1530
|
-
mockMarket1.
|
|
1597
|
+
mockMarket1.marketStats.lastMarkPriceTwap = new BN(
|
|
1531
1598
|
1.218363 * PRICE_PRECISION.toNumber()
|
|
1532
1599
|
);
|
|
1533
|
-
mockMarket1.
|
|
1600
|
+
mockMarket1.marketStats.lastBidPriceTwap = new BN(
|
|
1534
1601
|
1.218363 * PRICE_PRECISION.toNumber()
|
|
1535
1602
|
);
|
|
1536
|
-
mockMarket1.
|
|
1603
|
+
mockMarket1.marketStats.lastAskPriceTwap = new BN(
|
|
1537
1604
|
1.218364 * PRICE_PRECISION.toNumber()
|
|
1538
1605
|
);
|
|
1539
|
-
mockMarket1.
|
|
1606
|
+
mockMarket1.marketStats.lastMarkPriceTwapTs = new BN(1688878815);
|
|
1540
1607
|
|
|
1541
|
-
mockMarket1.
|
|
1608
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePriceTwap = new BN(
|
|
1542
1609
|
1.220964 * PRICE_PRECISION.toNumber()
|
|
1543
1610
|
);
|
|
1544
|
-
mockMarket1.
|
|
1611
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePriceTwapTs = new BN(
|
|
1545
1612
|
1688879991
|
|
1546
1613
|
);
|
|
1547
1614
|
|
|
@@ -1577,13 +1644,13 @@ describe('AMM Tests', () => {
|
|
|
1577
1644
|
|
|
1578
1645
|
console.log(
|
|
1579
1646
|
'markTwapLive:',
|
|
1580
|
-
mockMarket1.
|
|
1647
|
+
mockMarket1.marketStats.lastMarkPriceTwap.toString(),
|
|
1581
1648
|
'->',
|
|
1582
1649
|
markTwapLive.toString()
|
|
1583
1650
|
);
|
|
1584
1651
|
console.log(
|
|
1585
1652
|
'oracTwapLive:',
|
|
1586
|
-
mockMarket1.
|
|
1653
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePriceTwap.toString(),
|
|
1587
1654
|
'->',
|
|
1588
1655
|
oracleTwapLive.toString()
|
|
1589
1656
|
);
|
|
@@ -1602,8 +1669,8 @@ describe('AMM Tests', () => {
|
|
|
1602
1669
|
// make it like OP
|
|
1603
1670
|
const now = new BN(1688881915);
|
|
1604
1671
|
|
|
1605
|
-
mockMarket1.
|
|
1606
|
-
mockMarket1.
|
|
1672
|
+
mockMarket1.marketStats.fundingPeriod = new BN(3600);
|
|
1673
|
+
mockMarket1.lastFundingRateTs = new BN(1688864415);
|
|
1607
1674
|
|
|
1608
1675
|
const currentMarkPrice = new BN(1.2242 * PRICE_PRECISION.toNumber()); // trading at a premium
|
|
1609
1676
|
const mmOraclePriceData: MMOraclePriceData = {
|
|
@@ -1613,27 +1680,27 @@ describe('AMM Tests', () => {
|
|
|
1613
1680
|
hasSufficientNumberOfDataPoints: true,
|
|
1614
1681
|
isMMOracleActive: true,
|
|
1615
1682
|
} as MMOraclePriceData;
|
|
1616
|
-
mockMarket1.
|
|
1683
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePrice = new BN(
|
|
1617
1684
|
1.9535 * PRICE_PRECISION.toNumber()
|
|
1618
1685
|
);
|
|
1619
1686
|
|
|
1620
1687
|
// mockMarket1.amm.pegMultiplier = new BN(1.897573 * 1e3);
|
|
1621
1688
|
|
|
1622
|
-
mockMarket1.
|
|
1689
|
+
mockMarket1.marketStats.lastMarkPriceTwap = new BN(
|
|
1623
1690
|
1.218363 * PRICE_PRECISION.toNumber()
|
|
1624
1691
|
);
|
|
1625
|
-
mockMarket1.
|
|
1692
|
+
mockMarket1.marketStats.lastBidPriceTwap = new BN(
|
|
1626
1693
|
1.218363 * PRICE_PRECISION.toNumber()
|
|
1627
1694
|
);
|
|
1628
|
-
mockMarket1.
|
|
1695
|
+
mockMarket1.marketStats.lastAskPriceTwap = new BN(
|
|
1629
1696
|
1.218364 * PRICE_PRECISION.toNumber()
|
|
1630
1697
|
);
|
|
1631
|
-
mockMarket1.
|
|
1698
|
+
mockMarket1.marketStats.lastMarkPriceTwapTs = new BN(1688878815);
|
|
1632
1699
|
|
|
1633
|
-
mockMarket1.
|
|
1700
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePriceTwap = new BN(
|
|
1634
1701
|
1.820964 * PRICE_PRECISION.toNumber()
|
|
1635
1702
|
);
|
|
1636
|
-
mockMarket1.
|
|
1703
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePriceTwapTs = new BN(
|
|
1637
1704
|
1688879991
|
|
1638
1705
|
);
|
|
1639
1706
|
mockMarket1.contractTier = ContractTier.A;
|
|
@@ -1670,13 +1737,13 @@ describe('AMM Tests', () => {
|
|
|
1670
1737
|
|
|
1671
1738
|
console.log(
|
|
1672
1739
|
'markTwapLive:',
|
|
1673
|
-
mockMarket1.
|
|
1740
|
+
mockMarket1.marketStats.lastMarkPriceTwap.toString(),
|
|
1674
1741
|
'->',
|
|
1675
1742
|
markTwapLive.toString()
|
|
1676
1743
|
);
|
|
1677
1744
|
console.log(
|
|
1678
1745
|
'oracTwapLive:',
|
|
1679
|
-
mockMarket1.
|
|
1746
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePriceTwap.toString(),
|
|
1680
1747
|
'->',
|
|
1681
1748
|
oracleTwapLive.toString()
|
|
1682
1749
|
);
|
|
@@ -1700,13 +1767,13 @@ describe('AMM Tests', () => {
|
|
|
1700
1767
|
|
|
1701
1768
|
console.log(
|
|
1702
1769
|
'markTwapLive:',
|
|
1703
|
-
mockMarket1.
|
|
1770
|
+
mockMarket1.marketStats.lastMarkPriceTwap.toString(),
|
|
1704
1771
|
'->',
|
|
1705
1772
|
markTwapLive.toString()
|
|
1706
1773
|
);
|
|
1707
1774
|
console.log(
|
|
1708
1775
|
'oracTwapLive:',
|
|
1709
|
-
mockMarket1.
|
|
1776
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePriceTwap.toString(),
|
|
1710
1777
|
'->',
|
|
1711
1778
|
oracleTwapLive.toString()
|
|
1712
1779
|
);
|
|
@@ -1730,13 +1797,13 @@ describe('AMM Tests', () => {
|
|
|
1730
1797
|
|
|
1731
1798
|
console.log(
|
|
1732
1799
|
'markTwapLive:',
|
|
1733
|
-
mockMarket1.
|
|
1800
|
+
mockMarket1.marketStats.lastMarkPriceTwap.toString(),
|
|
1734
1801
|
'->',
|
|
1735
1802
|
markTwapLive.toString()
|
|
1736
1803
|
);
|
|
1737
1804
|
console.log(
|
|
1738
1805
|
'oracTwapLive:',
|
|
1739
|
-
mockMarket1.
|
|
1806
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePriceTwap.toString(),
|
|
1740
1807
|
'->',
|
|
1741
1808
|
oracleTwapLive.toString()
|
|
1742
1809
|
);
|
|
@@ -1772,7 +1839,7 @@ describe('AMM Tests', () => {
|
|
|
1772
1839
|
hasSufficientNumberOfDataPoints: true,
|
|
1773
1840
|
isMMOracleActive: true,
|
|
1774
1841
|
} as MMOraclePriceData;
|
|
1775
|
-
mockMarket1.
|
|
1842
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePrice = new BN(
|
|
1776
1843
|
18.5535 * PRICE_PRECISION.toNumber()
|
|
1777
1844
|
);
|
|
1778
1845
|
|
|
@@ -1782,7 +1849,7 @@ describe('AMM Tests', () => {
|
|
|
1782
1849
|
updatedAmm.baseAssetReserve,
|
|
1783
1850
|
updatedAmm.minBaseAssetReserve,
|
|
1784
1851
|
updatedAmm.maxBaseAssetReserve,
|
|
1785
|
-
|
|
1852
|
+
mockMarket1.orderStepSize
|
|
1786
1853
|
);
|
|
1787
1854
|
|
|
1788
1855
|
const generator = getVammL2Generator({
|
|
@@ -1849,7 +1916,7 @@ describe('AMM Tests', () => {
|
|
|
1849
1916
|
hasSufficientNumberOfDataPoints: true,
|
|
1850
1917
|
isMMOracleActive: true,
|
|
1851
1918
|
} as MMOraclePriceData;
|
|
1852
|
-
mockMarket1.
|
|
1919
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePrice = new BN(
|
|
1853
1920
|
18.5535 * PRICE_PRECISION.toNumber()
|
|
1854
1921
|
);
|
|
1855
1922
|
|
|
@@ -1859,7 +1926,7 @@ describe('AMM Tests', () => {
|
|
|
1859
1926
|
updatedAmm.baseAssetReserve,
|
|
1860
1927
|
updatedAmm.minBaseAssetReserve,
|
|
1861
1928
|
updatedAmm.maxBaseAssetReserve,
|
|
1862
|
-
|
|
1929
|
+
mockMarket1.orderStepSize
|
|
1863
1930
|
);
|
|
1864
1931
|
|
|
1865
1932
|
const generator = getVammL2Generator({
|
|
@@ -1925,7 +1992,7 @@ describe('AMM Tests', () => {
|
|
|
1925
1992
|
hasSufficientNumberOfDataPoints: true,
|
|
1926
1993
|
isMMOracleActive: true,
|
|
1927
1994
|
} as MMOraclePriceData;
|
|
1928
|
-
mockMarket1.
|
|
1995
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePrice = new BN(
|
|
1929
1996
|
18.5535 * PRICE_PRECISION.toNumber()
|
|
1930
1997
|
);
|
|
1931
1998
|
|
|
@@ -1935,7 +2002,7 @@ describe('AMM Tests', () => {
|
|
|
1935
2002
|
updatedAmm.baseAssetReserve,
|
|
1936
2003
|
updatedAmm.minBaseAssetReserve,
|
|
1937
2004
|
updatedAmm.maxBaseAssetReserve,
|
|
1938
|
-
|
|
2005
|
+
mockMarket1.orderStepSize
|
|
1939
2006
|
);
|
|
1940
2007
|
|
|
1941
2008
|
assert(!openAsks.eq(openBids));
|
|
@@ -2007,7 +2074,7 @@ describe('AMM Tests', () => {
|
|
|
2007
2074
|
hasSufficientNumberOfDataPoints: true,
|
|
2008
2075
|
isMMOracleActive: true,
|
|
2009
2076
|
} as MMOraclePriceData;
|
|
2010
|
-
mockMarket1.
|
|
2077
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePrice = new BN(
|
|
2011
2078
|
18.5535 * PRICE_PRECISION.toNumber()
|
|
2012
2079
|
);
|
|
2013
2080
|
|
|
@@ -2017,7 +2084,7 @@ describe('AMM Tests', () => {
|
|
|
2017
2084
|
updatedAmm.baseAssetReserve,
|
|
2018
2085
|
updatedAmm.minBaseAssetReserve,
|
|
2019
2086
|
updatedAmm.maxBaseAssetReserve,
|
|
2020
|
-
|
|
2087
|
+
mockMarket1.orderStepSize
|
|
2021
2088
|
);
|
|
2022
2089
|
|
|
2023
2090
|
assert(!openAsks.eq(openBids));
|
|
@@ -2092,7 +2159,7 @@ describe('AMM Tests', () => {
|
|
|
2092
2159
|
hasSufficientNumberOfDataPoints: true,
|
|
2093
2160
|
isMMOracleActive: true,
|
|
2094
2161
|
};
|
|
2095
|
-
mockMarket1.
|
|
2162
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePrice = new BN(
|
|
2096
2163
|
18.5535 * PRICE_PRECISION.toNumber()
|
|
2097
2164
|
);
|
|
2098
2165
|
|
|
@@ -2102,7 +2169,7 @@ describe('AMM Tests', () => {
|
|
|
2102
2169
|
updatedAmm.baseAssetReserve,
|
|
2103
2170
|
updatedAmm.minBaseAssetReserve,
|
|
2104
2171
|
updatedAmm.maxBaseAssetReserve,
|
|
2105
|
-
|
|
2172
|
+
mockMarket1.orderStepSize
|
|
2106
2173
|
);
|
|
2107
2174
|
|
|
2108
2175
|
assert(!openAsks.eq(openBids));
|
|
@@ -2157,7 +2224,7 @@ describe('AMM Tests', () => {
|
|
|
2157
2224
|
const mockMarket1: PerpMarketAccount = myMockPerpMarkets[0];
|
|
2158
2225
|
const cc = 38104569;
|
|
2159
2226
|
mockMarket1.amm.baseAssetReserve = new BN(cc).mul(BASE_PRECISION);
|
|
2160
|
-
mockMarket1.
|
|
2227
|
+
mockMarket1.marketStats.minOrderSize = new BN(5);
|
|
2161
2228
|
mockMarket1.amm.maxBaseAssetReserve = mockMarket1.amm.baseAssetReserve.add(
|
|
2162
2229
|
new BN(9)
|
|
2163
2230
|
);
|
|
@@ -2177,7 +2244,7 @@ describe('AMM Tests', () => {
|
|
|
2177
2244
|
hasSufficientNumberOfDataPoints: true,
|
|
2178
2245
|
isMMOracleActive: true,
|
|
2179
2246
|
} as MMOraclePriceData;
|
|
2180
|
-
mockMarket1.
|
|
2247
|
+
mockMarket1.marketStats.historicalOracleData.lastOraclePrice = new BN(
|
|
2181
2248
|
18.5535 * PRICE_PRECISION.toNumber()
|
|
2182
2249
|
);
|
|
2183
2250
|
|
|
@@ -2187,7 +2254,7 @@ describe('AMM Tests', () => {
|
|
|
2187
2254
|
updatedAmm.baseAssetReserve,
|
|
2188
2255
|
updatedAmm.minBaseAssetReserve,
|
|
2189
2256
|
updatedAmm.maxBaseAssetReserve,
|
|
2190
|
-
|
|
2257
|
+
mockMarket1.orderStepSize
|
|
2191
2258
|
);
|
|
2192
2259
|
|
|
2193
2260
|
const generator = getVammL2Generator({
|