@drift-labs/sdk 0.1.30-master.0 → 0.1.30-master.3

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.
Files changed (82) hide show
  1. package/lib/accounts/bulkAccountLoader.d.ts +2 -2
  2. package/lib/accounts/bulkAccountLoader.js +21 -24
  3. package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +15 -0
  4. package/lib/accounts/pollingClearingHouseAccountSubscriber.js +50 -23
  5. package/lib/clearingHouse.d.ts +0 -1
  6. package/lib/clearingHouse.js +0 -14
  7. package/lib/constants/accounts.d.ts +15 -0
  8. package/lib/constants/accounts.js +18 -0
  9. package/lib/constants/markets.js +11 -8
  10. package/lib/factory/clearingHouse.d.ts +14 -4
  11. package/lib/factory/clearingHouse.js +23 -6
  12. package/lib/idl/clearing_house.json +2 -33
  13. package/lib/index.d.ts +0 -1
  14. package/lib/index.js +0 -1
  15. package/lib/math/amm.d.ts +20 -0
  16. package/lib/math/amm.js +151 -1
  17. package/lib/util/promiseTimeout.d.ts +1 -0
  18. package/lib/util/promiseTimeout.js +14 -0
  19. package/package.json +1 -1
  20. package/src/accounts/bulkAccountLoader.ts +22 -32
  21. package/src/accounts/pollingClearingHouseAccountSubscriber.ts +73 -30
  22. package/src/clearingHouse.ts +0 -13
  23. package/src/constants/accounts.ts +26 -0
  24. package/src/constants/markets.ts +11 -8
  25. package/src/factory/clearingHouse.ts +47 -7
  26. package/src/idl/clearing_house.json +2 -33
  27. package/src/index.ts +0 -1
  28. package/src/math/amm.ts +212 -1
  29. package/src/util/promiseTimeout.ts +14 -0
  30. package/lib/math/repeg.d.ts +0 -32
  31. package/lib/math/repeg.js +0 -178
  32. package/src/accounts/pollingClearingHouseAccountSubscriber.js +0 -210
  33. package/src/accounts/pollingClearingHouseAccountSubscriber.js.map +0 -1
  34. package/src/accounts/pollingOracleSubscriber.js +0 -65
  35. package/src/accounts/pollingOracleSubscriber.js.map +0 -1
  36. package/src/accounts/pollingTokenAccountSubscriber.js +0 -65
  37. package/src/accounts/pollingTokenAccountSubscriber.js.map +0 -1
  38. package/src/accounts/utils.js +0 -8
  39. package/src/accounts/utils.js.map +0 -1
  40. package/src/accounts/webSocketAccountSubscriber.js +0 -64
  41. package/src/accounts/webSocketAccountSubscriber.js.map +0 -1
  42. package/src/accounts/webSocketClearingHouseAccountSubscriber.js +0 -212
  43. package/src/accounts/webSocketClearingHouseAccountSubscriber.js.map +0 -1
  44. package/src/assert/assert.js +0 -10
  45. package/src/assert/assert.js.map +0 -1
  46. package/src/constants/markets.js +0 -167
  47. package/src/constants/markets.js.map +0 -1
  48. package/src/constants/numericConstants.js +0 -22
  49. package/src/constants/numericConstants.js.map +0 -1
  50. package/src/math/conversion.js +0 -16
  51. package/src/math/conversion.js.map +0 -1
  52. package/src/math/funding.js +0 -223
  53. package/src/math/funding.js.map +0 -1
  54. package/src/math/insuranceFund.js +0 -23
  55. package/src/math/insuranceFund.js.map +0 -1
  56. package/src/math/market.js +0 -30
  57. package/src/math/market.js.map +0 -1
  58. package/src/math/orders.js +0 -73
  59. package/src/math/orders.js.map +0 -1
  60. package/src/math/position.js +0 -121
  61. package/src/math/position.js.map +0 -1
  62. package/src/math/repeg.ts +0 -253
  63. package/src/math/trade.js +0 -182
  64. package/src/math/trade.js.map +0 -1
  65. package/src/math/utils.js +0 -27
  66. package/src/math/utils.js.map +0 -1
  67. package/src/oracles/switchboardClient.js +0 -60
  68. package/src/oracles/switchboardClient.js.map +0 -1
  69. package/src/oracles/types.js +0 -3
  70. package/src/oracles/types.js.map +0 -1
  71. package/src/token/index.js +0 -39
  72. package/src/token/index.js.map +0 -1
  73. package/src/tx/defaultTxSender.js +0 -13
  74. package/src/tx/defaultTxSender.js.map +0 -1
  75. package/src/tx/types.js +0 -3
  76. package/src/tx/types.js.map +0 -1
  77. package/src/tx/utils.js +0 -9
  78. package/src/tx/utils.js.map +0 -1
  79. package/src/util/computeUnits.js +0 -17
  80. package/src/util/computeUnits.js.map +0 -1
  81. package/src/util/tps.js +0 -17
  82. package/src/util/tps.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"webSocketClearingHouseAccountSubscriber.js","sourceRoot":"","sources":["webSocketClearingHouseAccountSubscriber.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assert = void 0;
4
- function assert(condition, error) {
5
- if (!condition) {
6
- throw new Error(error || 'Unspecified AssertionError');
7
- }
8
- }
9
- exports.assert = assert;
10
- //# sourceMappingURL=assert.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"assert.js","sourceRoot":"","sources":["assert.ts"],"names":[],"mappings":";;;AAAA,SAAgB,MAAM,CAAC,SAAkB,EAAE,KAAc;IACxD,IAAI,CAAC,SAAS,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,4BAA4B,CAAC,CAAC;KACvD;AACF,CAAC;AAJD,wBAIC"}
@@ -1,167 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Markets = void 0;
4
- const __1 = require("../");
5
- exports.Markets = [
6
- {
7
- fullName: 'Solana',
8
- category: ['L1', 'Infra'],
9
- symbol: 'SOL-PERP',
10
- baseAssetSymbol: 'SOL',
11
- marketIndex: new __1.BN(0),
12
- devnetPublicKey: 'J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix',
13
- mainnetPublicKey: 'H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG',
14
- launchTs: 1635209696886,
15
- oracleSource: __1.OracleSource.PYTH,
16
- },
17
- {
18
- fullName: 'Bitcoin',
19
- category: ['L1', 'Payment'],
20
- symbol: 'BTC-PERP',
21
- baseAssetSymbol: 'BTC',
22
- marketIndex: new __1.BN(1),
23
- devnetPublicKey: 'HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J',
24
- mainnetPublicKey: 'GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU',
25
- launchTs: 1637691088868,
26
- oracleSource: __1.OracleSource.PYTH,
27
- },
28
- {
29
- fullName: 'Ethereum',
30
- category: ['L1', 'Infra'],
31
- symbol: 'ETH-PERP',
32
- baseAssetSymbol: 'ETH',
33
- marketIndex: new __1.BN(2),
34
- devnetPublicKey: 'EdVCmQ9FSPcVe5YySXDPCRmc8aDQLKJ9xvYBMZPie1Vw',
35
- mainnetPublicKey: 'JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB',
36
- launchTs: 1637691133472,
37
- oracleSource: __1.OracleSource.PYTH,
38
- },
39
- {
40
- fullName: 'Terra',
41
- category: ['L1', 'Infra'],
42
- symbol: 'LUNA-PERP',
43
- baseAssetSymbol: 'LUNA',
44
- marketIndex: new __1.BN(3),
45
- devnetPublicKey: '8PugCXTAHLM9kfLSQWe2njE5pzAgUdpPk3Nx5zSm7BD3',
46
- mainnetPublicKey: '5bmWuR1dgP4avtGYMNKLuxumZTVKGgoN2BCMXWDNL9nY',
47
- launchTs: 1638821738525,
48
- oracleSource: __1.OracleSource.PYTH,
49
- },
50
- {
51
- symbol: 'AVAX-PERP',
52
- category: ['L1', 'Infra'],
53
- baseAssetSymbol: 'AVAX',
54
- marketIndex: new __1.BN(4),
55
- devnetPublicKey: 'FVb5h1VmHPfVb1RfqZckchq18GxRv4iKt8T4eVTQAqdz',
56
- mainnetPublicKey: 'Ax9ujW5B9oqcv59N8m6f1BpTBq2rGeGaBcpKjC5UYsXU',
57
- launchTs: 1639092501080,
58
- oracleSource: __1.OracleSource.PYTH,
59
- },
60
- {
61
- fullName: 'Binance Coin',
62
- symbol: 'BNB-PERP',
63
- category: ['L1', 'Exchange'],
64
- baseAssetSymbol: 'BNB',
65
- marketIndex: new __1.BN(5),
66
- devnetPublicKey: 'GwzBgrXb4PG59zjce24SF2b9JXbLEjJJTBkmytuEZj1b',
67
- mainnetPublicKey: '4CkQJBxhU8EZ2UjhigbtdaPbpTe6mqf811fipYBFbSYN',
68
- launchTs: 1639523193012,
69
- oracleSource: __1.OracleSource.PYTH,
70
- },
71
- {
72
- fullName: 'Polygon',
73
- category: ['L1', 'Infra'],
74
- symbol: 'MATIC-PERP',
75
- baseAssetSymbol: 'MATIC',
76
- marketIndex: new __1.BN(6),
77
- devnetPublicKey: 'FBirwuDFuRAu4iSGc7RGxN5koHB7EJM1wbCmyPuQoGur',
78
- mainnetPublicKey: '7KVswB9vkCgeM3SHP7aGDijvdRAHK8P5wi9JXViCrtYh',
79
- launchTs: 1641488603564,
80
- oracleSource: __1.OracleSource.PYTH,
81
- },
82
- {
83
- fullName: 'Cosmos',
84
- category: ['L1', 'Infra'],
85
- symbol: 'ATOM-PERP',
86
- baseAssetSymbol: 'ATOM',
87
- marketIndex: new __1.BN(7),
88
- devnetPublicKey: '7YAze8qFUMkBnyLVdKT4TFUUFui99EwS5gfRArMcrvFk',
89
- mainnetPublicKey: 'CrCpTerNqtZvqLcKqz1k13oVeXV9WkMD2zA9hBKXrsbN',
90
- launchTs: 1641920238195,
91
- oracleSource: __1.OracleSource.PYTH,
92
- },
93
- {
94
- fullName: 'Polkadot',
95
- symbol: 'DOT-PERP',
96
- baseAssetSymbol: 'DOT',
97
- marketIndex: new __1.BN(8),
98
- devnetPublicKey: '4dqq5VBpN4EwYb7wyywjjfknvMKu7m78j9mKZRXTj462',
99
- mainnetPublicKey: 'EcV1X1gY2yb4KXxjVQtTHTbioum2gvmPnFk4zYAt7zne',
100
- launchTs: 1642629253786,
101
- oracleSource: __1.OracleSource.PYTH,
102
- },
103
- {
104
- fullName: 'Cardano',
105
- category: ['L1', 'Infra'],
106
- symbol: 'ADA-PERP',
107
- baseAssetSymbol: 'ADA',
108
- marketIndex: new __1.BN(9),
109
- devnetPublicKey: '8oGTURNmSQkrBS1AQ5NjB2p8qY34UVmMA9ojrw8vnHus',
110
- mainnetPublicKey: '3pyn4svBbxJ9Wnn3RVeafyLWfzie6yC5eTig2S62v9SC',
111
- launchTs: 1643084413000,
112
- oracleSource: __1.OracleSource.PYTH,
113
- },
114
- {
115
- fullName: 'Algorand',
116
- category: ['L1', 'Infra'],
117
- symbol: 'ALGO-PERP',
118
- baseAssetSymbol: 'ALGO',
119
- marketIndex: new __1.BN(10),
120
- devnetPublicKey: 'c1A946dY5NHuVda77C8XXtXytyR3wK1SCP3eA9VRfC3',
121
- mainnetPublicKey: 'HqFyq1wh1xKvL7KDqqT7NJeSPdAqsDqnmBisUC2XdXAX',
122
- launchTs: 1643686767000,
123
- oracleSource: __1.OracleSource.PYTH,
124
- },
125
- {
126
- fullName: 'FTX Coin',
127
- category: ['L1', 'Exchange'],
128
- symbol: 'FTT-PERP',
129
- baseAssetSymbol: 'FTT',
130
- marketIndex: new __1.BN(11),
131
- devnetPublicKey: '6vivTRs5ZPeeXbjo7dfburfaYDWoXjBtdtuYgQRuGfu',
132
- mainnetPublicKey: '8JPJJkmDScpcNmBRKGZuPuG2GYAveQgP3t5gFuMymwvF',
133
- launchTs: 1644382122000,
134
- oracleSource: __1.OracleSource.PYTH,
135
- },
136
- {
137
- fullName: 'Litecoin',
138
- category: ['L1', 'Payments'],
139
- symbol: 'LTC-PERP',
140
- baseAssetSymbol: 'LTC',
141
- marketIndex: new __1.BN(12),
142
- devnetPublicKey: 'BLArYBCUYhdWiY8PCUTpvFE21iaJq85dvxLk9bYMobcU',
143
- mainnetPublicKey: '8RMnV1eD55iqUFJLMguPkYBkq8DCtx81XcmAja93LvRR',
144
- launchTs: 1645027429000,
145
- oracleSource: __1.OracleSource.PYTH,
146
- },
147
- {
148
- fullName: 'Ripple',
149
- category: ['L1', 'Payments'],
150
- symbol: 'XRP-PERP',
151
- baseAssetSymbol: 'XRP',
152
- marketIndex: new __1.BN(13),
153
- devnetPublicKey: 'WMW5xc3HypXwTnPesyUT49uLsyHwNURsWAEk39onKuk',
154
- mainnetPublicKey: 'WMW5xc3HypXwTnPesyUT49uLsyHwNURsWAEk39onKuk',
155
- launchTs: 1647543166000,
156
- oracleSource: __1.OracleSource.SWITCHBOARD,
157
- },
158
- // {
159
- // symbol: 'mSOL-PERP',
160
- // baseAssetSymbol: 'mSOL',
161
- // marketIndex: new BN(11), //todo
162
- // devnetPythOracle: '9a6RNx3tCu1TSs6TBSfV2XRXEPEZXQ6WB7jRojZRvyeZ',
163
- // mainnetPythOracle: 'E4v1BBgoso9s64TQvmyownAVJbhbEPGyzA3qn4n46qj9',
164
- // launchTs: 1643346125000,
165
- // },
166
- ];
167
- //# sourceMappingURL=markets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markets.js","sourceRoot":"","sources":["markets.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MARGIN_PRECISION = exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.PRICE_TO_QUOTE_PRECISION = exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION = exports.PEG_PRECISION = exports.FUNDING_PAYMENT_PRECISION = exports.MARK_PRICE_PRECISION = exports.QUOTE_PRECISION = exports.MAX_LEVERAGE = exports.BN_MAX = exports.TEN_THOUSAND = exports.TEN = exports.TWO = exports.ONE = exports.ZERO = void 0;
4
- const __1 = require("../");
5
- exports.ZERO = new __1.BN(0);
6
- exports.ONE = new __1.BN(1);
7
- exports.TWO = new __1.BN(2);
8
- exports.TEN = new __1.BN(10);
9
- exports.TEN_THOUSAND = new __1.BN(10000);
10
- exports.BN_MAX = new __1.BN(Number.MAX_SAFE_INTEGER);
11
- exports.MAX_LEVERAGE = new __1.BN(5);
12
- exports.QUOTE_PRECISION = new __1.BN(10 ** 6);
13
- exports.MARK_PRICE_PRECISION = new __1.BN(10 ** 10);
14
- exports.FUNDING_PAYMENT_PRECISION = new __1.BN(10000);
15
- exports.PEG_PRECISION = new __1.BN(1000);
16
- exports.AMM_RESERVE_PRECISION = new __1.BN(10 ** 13);
17
- exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION;
18
- exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.div(exports.QUOTE_PRECISION); // 10^7
19
- exports.PRICE_TO_QUOTE_PRECISION = exports.MARK_PRICE_PRECISION.div(exports.QUOTE_PRECISION);
20
- exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.mul(exports.PEG_PRECISION).div(exports.QUOTE_PRECISION); // 10^10
21
- exports.MARGIN_PRECISION = exports.TEN_THOUSAND;
22
- //# sourceMappingURL=numericConstants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"numericConstants.js","sourceRoot":"","sources":["numericConstants.ts"],"names":[],"mappings":";;;AAAA,2BAAyB;AAEZ,QAAA,IAAI,GAAG,IAAI,MAAE,CAAC,CAAC,CAAC,CAAC;AACjB,QAAA,GAAG,GAAG,IAAI,MAAE,CAAC,CAAC,CAAC,CAAC;AAChB,QAAA,GAAG,GAAG,IAAI,MAAE,CAAC,CAAC,CAAC,CAAC;AAChB,QAAA,GAAG,GAAG,IAAI,MAAE,CAAC,EAAE,CAAC,CAAC;AACjB,QAAA,YAAY,GAAG,IAAI,MAAE,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,MAAM,GAAG,IAAI,MAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEzC,QAAA,YAAY,GAAG,IAAI,MAAE,CAAC,CAAC,CAAC,CAAC;AAEzB,QAAA,eAAe,GAAG,IAAI,MAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAClC,QAAA,oBAAoB,GAAG,IAAI,MAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,QAAA,yBAAyB,GAAG,IAAI,MAAE,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,aAAa,GAAG,IAAI,MAAE,CAAC,IAAI,CAAC,CAAC;AAE7B,QAAA,qBAAqB,GAAG,IAAI,MAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,QAAA,cAAc,GAAG,6BAAqB,CAAC;AACvC,QAAA,4BAA4B,GACxC,6BAAqB,CAAC,GAAG,CAAC,uBAAe,CAAC,CAAC,CAAC,OAAO;AACvC,QAAA,wBAAwB,GACpC,4BAAoB,CAAC,GAAG,CAAC,uBAAe,CAAC,CAAC;AAC9B,QAAA,sCAAsC,GAClD,6BAAqB,CAAC,GAAG,CAAC,qBAAa,CAAC,CAAC,GAAG,CAAC,uBAAe,CAAC,CAAC,CAAC,QAAQ;AAC3D,QAAA,gBAAgB,GAAG,oBAAY,CAAC"}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertBaseAssetAmountToNumber = exports.convertToNumber = void 0;
4
- const numericConstants_1 = require("../constants/numericConstants");
5
- const convertToNumber = (bigNumber, precision = numericConstants_1.MARK_PRICE_PRECISION) => {
6
- if (!bigNumber)
7
- return 0;
8
- return (bigNumber.div(precision).toNumber() +
9
- bigNumber.mod(precision).toNumber() / precision.toNumber());
10
- };
11
- exports.convertToNumber = convertToNumber;
12
- const convertBaseAssetAmountToNumber = (baseAssetAmount) => {
13
- return (0, exports.convertToNumber)(baseAssetAmount, numericConstants_1.MARK_PRICE_PRECISION.mul(numericConstants_1.PEG_PRECISION));
14
- };
15
- exports.convertBaseAssetAmountToNumber = convertBaseAssetAmountToNumber;
16
- //# sourceMappingURL=conversion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversion.js","sourceRoot":"","sources":["conversion.ts"],"names":[],"mappings":";;;AACA,oEAGuC;AAEhC,MAAM,eAAe,GAAG,CAC9B,SAAa,EACb,YAAgB,uCAAoB,EACnC,EAAE;IACH,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,CAAC;IACzB,OAAO,CACN,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;QACnC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,CAC1D,CAAC;AACH,CAAC,CAAC;AATW,QAAA,eAAe,mBAS1B;AAEK,MAAM,8BAA8B,GAAG,CAAC,eAAmB,EAAE,EAAE;IACrE,OAAO,IAAA,uBAAe,EACrB,eAAe,EACf,uCAAoB,CAAC,GAAG,CAAC,gCAAa,CAAC,CACvC,CAAC;AACH,CAAC,CAAC;AALW,QAAA,8BAA8B,kCAKzC"}
@@ -1,223 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateFundingPool = exports.calculateLongShortFundingRateAndLiveTwaps = exports.calculateLongShortFundingRate = exports.calculateEstimatedFundingRate = exports.calculateAllEstimatedFundingRate = void 0;
4
- const anchor_1 = require("@project-serum/anchor");
5
- const numericConstants_1 = require("../constants/numericConstants");
6
- const market_1 = require("./market");
7
- /**
8
- *
9
- * @param market
10
- * @param oraclePriceData
11
- * @param periodAdjustment
12
- * @returns Estimated funding rate. : Precision //TODO-PRECISION
13
- */
14
- async function calculateAllEstimatedFundingRate(market, oraclePriceData, periodAdjustment = new anchor_1.BN(1)) {
15
- // periodAdjustment
16
- // 1: hourly
17
- // 24: daily
18
- // 24 * 365.25: annualized
19
- const secondsInHour = new anchor_1.BN(3600);
20
- const hoursInDay = new anchor_1.BN(24);
21
- if (!market.initialized) {
22
- return [numericConstants_1.ZERO, numericConstants_1.ZERO, numericConstants_1.ZERO, numericConstants_1.ZERO, numericConstants_1.ZERO];
23
- }
24
- const payFreq = new anchor_1.BN(market.amm.fundingPeriod);
25
- // todo: sufficiently differs from blockchain timestamp?
26
- const now = new anchor_1.BN((Date.now() / 1000).toFixed(0));
27
- const timeSinceLastUpdate = now.sub(market.amm.lastFundingRateTs);
28
- // calculate real-time mark twap
29
- const lastMarkTwapWithMantissa = market.amm.lastMarkPriceTwap;
30
- const lastMarkPriceTwapTs = market.amm.lastMarkPriceTwapTs;
31
- const timeSinceLastMarkChange = now.sub(lastMarkPriceTwapTs);
32
- const markTwapTimeSinceLastUpdate = anchor_1.BN.max(secondsInHour, secondsInHour.sub(timeSinceLastMarkChange));
33
- const baseAssetPriceWithMantissa = (0, market_1.calculateMarkPrice)(market);
34
- const markTwapWithMantissa = markTwapTimeSinceLastUpdate
35
- .mul(lastMarkTwapWithMantissa)
36
- .add(timeSinceLastMarkChange.mul(baseAssetPriceWithMantissa))
37
- .div(timeSinceLastMarkChange.add(markTwapTimeSinceLastUpdate));
38
- // calculate real-time (predicted) oracle twap
39
- // note: oracle twap depends on `when the chord is struck` (market is trade)
40
- const lastOracleTwapWithMantissa = market.amm.lastOraclePriceTwap;
41
- const lastOraclePriceTwapTs = market.amm.lastOraclePriceTwapTs;
42
- const timeSinceLastOracleTwapUpdate = now.sub(lastOraclePriceTwapTs);
43
- const oracleTwapTimeSinceLastUpdate = anchor_1.BN.max(secondsInHour, secondsInHour.sub(timeSinceLastOracleTwapUpdate));
44
- const oraclePrice = oraclePriceData.price;
45
- let oracleTwapWithMantissa = lastOracleTwapWithMantissa;
46
- const oracleLiveVsTwap = oraclePrice
47
- .sub(lastOracleTwapWithMantissa)
48
- .abs()
49
- .mul(numericConstants_1.MARK_PRICE_PRECISION)
50
- .mul(new anchor_1.BN(100))
51
- .div(lastOracleTwapWithMantissa);
52
- // verify pyth live input is within 10% of last twap for live update
53
- if (oracleLiveVsTwap.lte(numericConstants_1.MARK_PRICE_PRECISION.mul(new anchor_1.BN(10)))) {
54
- oracleTwapWithMantissa = oracleTwapTimeSinceLastUpdate
55
- .mul(lastOracleTwapWithMantissa)
56
- .add(timeSinceLastMarkChange.mul(oraclePrice))
57
- .div(timeSinceLastOracleTwapUpdate.add(oracleTwapTimeSinceLastUpdate));
58
- }
59
- const twapSpread = lastMarkTwapWithMantissa.sub(lastOracleTwapWithMantissa);
60
- const twapSpreadPct = twapSpread
61
- .mul(numericConstants_1.MARK_PRICE_PRECISION)
62
- .mul(new anchor_1.BN(100))
63
- .div(oracleTwapWithMantissa);
64
- const lowerboundEst = twapSpreadPct
65
- .mul(payFreq)
66
- .mul(anchor_1.BN.min(secondsInHour, timeSinceLastUpdate))
67
- .mul(periodAdjustment)
68
- .div(secondsInHour)
69
- .div(secondsInHour)
70
- .div(hoursInDay);
71
- const interpEst = twapSpreadPct.mul(periodAdjustment).div(hoursInDay);
72
- const interpRateQuote = twapSpreadPct
73
- .mul(periodAdjustment)
74
- .div(hoursInDay)
75
- .div(numericConstants_1.MARK_PRICE_PRECISION.div(numericConstants_1.QUOTE_PRECISION));
76
- let feePoolSize = calculateFundingPool(market);
77
- if (interpRateQuote.lt(new anchor_1.BN(0))) {
78
- feePoolSize = feePoolSize.mul(new anchor_1.BN(-1));
79
- }
80
- let cappedAltEst;
81
- let largerSide;
82
- let smallerSide;
83
- if (market.baseAssetAmountLong.gt(market.baseAssetAmountShort.abs())) {
84
- largerSide = market.baseAssetAmountLong.abs();
85
- smallerSide = market.baseAssetAmountShort.abs();
86
- if (twapSpread.gt(new anchor_1.BN(0))) {
87
- return [
88
- markTwapWithMantissa,
89
- oracleTwapWithMantissa,
90
- lowerboundEst,
91
- interpEst,
92
- interpEst,
93
- ];
94
- }
95
- }
96
- else if (market.baseAssetAmountLong.lt(market.baseAssetAmountShort.abs())) {
97
- largerSide = market.baseAssetAmountShort.abs();
98
- smallerSide = market.baseAssetAmountLong.abs();
99
- if (twapSpread.lt(new anchor_1.BN(0))) {
100
- return [
101
- markTwapWithMantissa,
102
- oracleTwapWithMantissa,
103
- lowerboundEst,
104
- interpEst,
105
- interpEst,
106
- ];
107
- }
108
- }
109
- else {
110
- return [
111
- markTwapWithMantissa,
112
- oracleTwapWithMantissa,
113
- lowerboundEst,
114
- interpEst,
115
- interpEst,
116
- ];
117
- }
118
- if (largerSide.gt(numericConstants_1.ZERO)) {
119
- // funding smaller flow
120
- cappedAltEst = smallerSide.mul(twapSpread).div(hoursInDay);
121
- const feePoolTopOff = feePoolSize
122
- .mul(numericConstants_1.MARK_PRICE_PRECISION.div(numericConstants_1.QUOTE_PRECISION))
123
- .mul(numericConstants_1.AMM_RESERVE_PRECISION);
124
- cappedAltEst = cappedAltEst.add(feePoolTopOff).div(largerSide);
125
- cappedAltEst = cappedAltEst
126
- .mul(numericConstants_1.MARK_PRICE_PRECISION)
127
- .mul(new anchor_1.BN(100))
128
- .div(oracleTwapWithMantissa)
129
- .mul(periodAdjustment);
130
- if (cappedAltEst.abs().gte(interpEst.abs())) {
131
- cappedAltEst = interpEst;
132
- }
133
- }
134
- else {
135
- cappedAltEst = interpEst;
136
- }
137
- return [
138
- markTwapWithMantissa,
139
- oracleTwapWithMantissa,
140
- lowerboundEst,
141
- cappedAltEst,
142
- interpEst,
143
- ];
144
- }
145
- exports.calculateAllEstimatedFundingRate = calculateAllEstimatedFundingRate;
146
- /**
147
- *
148
- * @param market
149
- * @param oraclePriceData
150
- * @param periodAdjustment
151
- * @param estimationMethod
152
- * @returns Estimated funding rate. : Precision //TODO-PRECISION
153
- */
154
- async function calculateEstimatedFundingRate(market, oraclePriceData, periodAdjustment = new anchor_1.BN(1), estimationMethod) {
155
- const [_1, _2, lowerboundEst, cappedAltEst, interpEst] = await calculateAllEstimatedFundingRate(market, oraclePriceData, periodAdjustment);
156
- if (estimationMethod == 'lowerbound') {
157
- //assuming remaining funding period has no gap
158
- return lowerboundEst;
159
- }
160
- else if (estimationMethod == 'capped') {
161
- return cappedAltEst;
162
- }
163
- else {
164
- return interpEst;
165
- }
166
- }
167
- exports.calculateEstimatedFundingRate = calculateEstimatedFundingRate;
168
- /**
169
- *
170
- * @param market
171
- * @param oraclePriceData
172
- * @param periodAdjustment
173
- * @returns Estimated funding rate. : Precision //TODO-PRECISION
174
- */
175
- async function calculateLongShortFundingRate(market, oraclePriceData, periodAdjustment = new anchor_1.BN(1)) {
176
- const [_1, _2, _, cappedAltEst, interpEst] = await calculateAllEstimatedFundingRate(market, oraclePriceData, periodAdjustment);
177
- if (market.baseAssetAmountLong.gt(market.baseAssetAmountShort)) {
178
- return [cappedAltEst, interpEst];
179
- }
180
- else if (market.baseAssetAmountLong.lt(market.baseAssetAmountShort)) {
181
- return [interpEst, cappedAltEst];
182
- }
183
- else {
184
- return [interpEst, interpEst];
185
- }
186
- }
187
- exports.calculateLongShortFundingRate = calculateLongShortFundingRate;
188
- /**
189
- *
190
- * @param market
191
- * @param oraclePriceData
192
- * @param periodAdjustment
193
- * @returns Estimated funding rate. : Precision //TODO-PRECISION
194
- */
195
- async function calculateLongShortFundingRateAndLiveTwaps(market, oraclePriceData, periodAdjustment = new anchor_1.BN(1)) {
196
- const [markTwapLive, oracleTwapLive, _2, cappedAltEst, interpEst] = await calculateAllEstimatedFundingRate(market, oraclePriceData, periodAdjustment);
197
- if (market.baseAssetAmountLong.gt(market.baseAssetAmountShort.abs())) {
198
- return [markTwapLive, oracleTwapLive, cappedAltEst, interpEst];
199
- }
200
- else if (market.baseAssetAmountLong.lt(market.baseAssetAmountShort.abs())) {
201
- return [markTwapLive, oracleTwapLive, interpEst, cappedAltEst];
202
- }
203
- else {
204
- return [markTwapLive, oracleTwapLive, interpEst, interpEst];
205
- }
206
- }
207
- exports.calculateLongShortFundingRateAndLiveTwaps = calculateLongShortFundingRateAndLiveTwaps;
208
- /**
209
- *
210
- * @param market
211
- * @returns Estimated fee pool size
212
- */
213
- function calculateFundingPool(market) {
214
- // todo
215
- const totalFeeLB = market.amm.totalFee.div(new anchor_1.BN(2));
216
- const feePool = anchor_1.BN.max(numericConstants_1.ZERO, market.amm.totalFeeMinusDistributions
217
- .sub(totalFeeLB)
218
- .mul(new anchor_1.BN(2))
219
- .div(new anchor_1.BN(3)));
220
- return feePool;
221
- }
222
- exports.calculateFundingPool = calculateFundingPool;
223
- //# sourceMappingURL=funding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"funding.js","sourceRoot":"","sources":["funding.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateInsuranceFundSize = void 0;
4
- const __1 = require("../");
5
- /**
6
- * In the case of a levered loss, the exchange first pays out undistributed fees and then the insurance fund.
7
- * Thus the de facto size of the insurance fund is the amount in the insurance vault plus the sum of each markets
8
- * undistributed fees.
9
- *
10
- * @param connection
11
- * @param state
12
- * @param marketsAccount
13
- * @returns Precision : QUOTE_ASSET_PRECISION
14
- */
15
- async function calculateInsuranceFundSize(connection, state, marketsAccount) {
16
- const insuranceVaultPublicKey = state.insuranceVault;
17
- const insuranceVaultAmount = new __1.BN((await connection.getTokenAccountBalance(insuranceVaultPublicKey)).value.amount);
18
- return marketsAccount.markets.reduce((insuranceVaultAmount, market) => {
19
- return insuranceVaultAmount.add(market.amm.totalFee.div(new __1.BN(2)));
20
- }, insuranceVaultAmount);
21
- }
22
- exports.calculateInsuranceFundSize = calculateInsuranceFundSize;
23
- //# sourceMappingURL=insuranceFund.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"insuranceFund.js","sourceRoot":"","sources":["insuranceFund.ts"],"names":[],"mappings":";;;AACA,2BAAyB;AAGzB;;;;;;;;;GASG;AACI,KAAK,UAAU,0BAA0B,CAC/C,UAAsB,EACtB,KAAmB,EACnB,cAA8B;IAE9B,MAAM,uBAAuB,GAAG,KAAK,CAAC,cAAc,CAAC;IACrD,MAAM,oBAAoB,GAAG,IAAI,MAAE,CAClC,CACC,MAAM,UAAU,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,CAChE,CAAC,KAAK,CAAC,MAAM,CACd,CAAC;IACF,OAAO,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,oBAAoB,EAAE,MAAM,EAAE,EAAE;QACrE,OAAO,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAC1B,CAAC;AAdD,gEAcC"}
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateOracleMarkSpread = exports.calculateNewMarketAfterTrade = exports.calculateMarkPrice = void 0;
4
- const amm_1 = require("./amm");
5
- /**
6
- * Calculates market mark price
7
- *
8
- * @param market
9
- * @return markPrice : Precision MARK_PRICE_PRECISION
10
- */
11
- function calculateMarkPrice(market) {
12
- return (0, amm_1.calculatePrice)(market.amm.baseAssetReserve, market.amm.quoteAssetReserve, market.amm.pegMultiplier);
13
- }
14
- exports.calculateMarkPrice = calculateMarkPrice;
15
- function calculateNewMarketAfterTrade(baseAssetAmount, direction, market) {
16
- const [newQuoteAssetReserve, newBaseAssetReserve] = (0, amm_1.calculateAmmReservesAfterSwap)(market.amm, 'base', baseAssetAmount.abs(), (0, amm_1.getSwapDirection)('base', direction));
17
- const newAmm = Object.assign({}, market.amm);
18
- const newMarket = Object.assign({}, market);
19
- newMarket.amm = newAmm;
20
- newMarket.amm.quoteAssetReserve = newQuoteAssetReserve;
21
- newMarket.amm.baseAssetReserve = newBaseAssetReserve;
22
- return newMarket;
23
- }
24
- exports.calculateNewMarketAfterTrade = calculateNewMarketAfterTrade;
25
- function calculateOracleMarkSpread(market, oraclePriceData) {
26
- const markPrice = calculateMarkPrice(market);
27
- return oraclePriceData.price.sub(markPrice);
28
- }
29
- exports.calculateOracleMarkSpread = calculateOracleMarkSpread;
30
- //# sourceMappingURL=market.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"market.js","sourceRoot":"","sources":["market.ts"],"names":[],"mappings":";;;AAEA,+BAIe;AAGf;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,MAAc;IAChD,OAAO,IAAA,oBAAc,EACpB,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAC3B,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAC5B,MAAM,CAAC,GAAG,CAAC,aAAa,CACxB,CAAC;AACH,CAAC;AAND,gDAMC;AAED,SAAgB,4BAA4B,CAC3C,eAAmB,EACnB,SAA4B,EAC5B,MAAc;IAEd,MAAM,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,GAChD,IAAA,mCAA6B,EAC5B,MAAM,CAAC,GAAG,EACV,MAAM,EACN,eAAe,CAAC,GAAG,EAAE,EACrB,IAAA,sBAAgB,EAAC,MAAM,EAAE,SAAS,CAAC,CACnC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5C,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,GAAG,CAAC,iBAAiB,GAAG,oBAAoB,CAAC;IACvD,SAAS,CAAC,GAAG,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;IAErD,OAAO,SAAS,CAAC;AAClB,CAAC;AApBD,oEAoBC;AAED,SAAgB,yBAAyB,CACxC,MAAc,EACd,eAAgC;IAEhC,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAND,8DAMC"}
@@ -1,73 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isOrderReduceOnly = exports.isOrderRiskIncreasingInSameDirection = exports.isOrderRiskIncreasing = void 0;
4
- const types_1 = require("../types");
5
- const numericConstants_1 = require("../constants/numericConstants");
6
- function isOrderRiskIncreasing(user, order) {
7
- if ((0, types_1.isVariant)(order.status, 'init')) {
8
- return false;
9
- }
10
- const position = user.getUserPosition(order.marketIndex) ||
11
- user.getEmptyPosition(order.marketIndex);
12
- // if no position exists, it's risk increasing
13
- if (position.baseAssetAmount.eq(numericConstants_1.ZERO)) {
14
- return true;
15
- }
16
- // if position is long and order is long
17
- if (position.baseAssetAmount.gt(numericConstants_1.ZERO) && (0, types_1.isVariant)(order.direction, 'long')) {
18
- return true;
19
- }
20
- // if position is short and order is short
21
- if (position.baseAssetAmount.lt(numericConstants_1.ZERO) &&
22
- (0, types_1.isVariant)(order.direction, 'short')) {
23
- return true;
24
- }
25
- const baseAssetAmountToFill = order.baseAssetAmount.sub(order.baseAssetAmountFilled);
26
- // if order will flip position
27
- if (baseAssetAmountToFill.gt(position.baseAssetAmount.abs().mul(numericConstants_1.TWO))) {
28
- return true;
29
- }
30
- return false;
31
- }
32
- exports.isOrderRiskIncreasing = isOrderRiskIncreasing;
33
- function isOrderRiskIncreasingInSameDirection(user, order) {
34
- if ((0, types_1.isVariant)(order.status, 'init')) {
35
- return false;
36
- }
37
- const position = user.getUserPosition(order.marketIndex) ||
38
- user.getEmptyPosition(order.marketIndex);
39
- // if no position exists, it's risk increasing
40
- if (position.baseAssetAmount.eq(numericConstants_1.ZERO)) {
41
- return true;
42
- }
43
- // if position is long and order is long
44
- if (position.baseAssetAmount.gt(numericConstants_1.ZERO) && (0, types_1.isVariant)(order.direction, 'long')) {
45
- return true;
46
- }
47
- // if position is short and order is short
48
- if (position.baseAssetAmount.lt(numericConstants_1.ZERO) &&
49
- (0, types_1.isVariant)(order.direction, 'short')) {
50
- return true;
51
- }
52
- return false;
53
- }
54
- exports.isOrderRiskIncreasingInSameDirection = isOrderRiskIncreasingInSameDirection;
55
- function isOrderReduceOnly(user, order) {
56
- if ((0, types_1.isVariant)(order.status, 'init')) {
57
- return false;
58
- }
59
- const position = user.getUserPosition(order.marketIndex) ||
60
- user.getEmptyPosition(order.marketIndex);
61
- // if position is long and order is long
62
- if (position.baseAssetAmount.gt(numericConstants_1.ZERO) && (0, types_1.isVariant)(order.direction, 'long')) {
63
- return false;
64
- }
65
- // if position is short and order is short
66
- if (position.baseAssetAmount.lt(numericConstants_1.ZERO) &&
67
- (0, types_1.isVariant)(order.direction, 'short')) {
68
- return false;
69
- }
70
- return order.baseAssetAmount.abs().lte(position.baseAssetAmount.abs());
71
- }
72
- exports.isOrderReduceOnly = isOrderReduceOnly;
73
- //# sourceMappingURL=orders.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"orders.js","sourceRoot":"","sources":["orders.ts"],"names":[],"mappings":"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"}