flash-sdk 1.0.79 → 1.0.81

Sign up to get free protection for your applications and to get access to all the features.
@@ -67,7 +67,7 @@ var CustodyAccount = (function () {
67
67
  }
68
68
  ;
69
69
  if (stats.openPositions.gt(constants_1.BN_ZERO)) {
70
- var obj = __assign({ side: side, price: stats.weightedPrice.div(stats.totalQuantity), sizeUsd: stats.sizeUsd, collateralUsd: stats.collateralUsd, unrealizedLossUsd: stats.cumulativeInterestUsd, cumulativeInterestSnapshot: stats.cumulativeInterestSnapshot, lockedAmount: stats.lockedAmount }, types_1.DEFAULT_POSITION);
70
+ var obj = __assign({ side: side, price: stats.averagePrice.div(stats.totalQuantity), sizeUsd: stats.sizeUsd, collateralUsd: stats.collateralUsd, unrealizedLossUsd: stats.cumulativeInterestUsd, cumulativeInterestSnapshot: stats.cumulativeInterestSnapshot, lockedAmount: stats.lockedAmount }, types_1.DEFAULT_POSITION);
71
71
  return new PositionAccount_1.PositionAccount(web3_js_1.PublicKey.default, obj);
72
72
  }
73
73
  else {
@@ -4,17 +4,21 @@ export declare class OraclePrice {
4
4
  price: BN;
5
5
  exponent: BN;
6
6
  confidence: BN;
7
+ timestamp: BN;
7
8
  constructor(parseData: {
8
9
  price: BN;
9
10
  exponent: BN;
10
- confidence?: BN;
11
+ confidence: BN;
12
+ timestamp?: BN;
11
13
  });
12
14
  static from(parseData: {
13
15
  price: BN;
14
16
  exponent: BN;
15
17
  confidence: BN;
18
+ timestamp: BN;
16
19
  }): OraclePrice;
17
20
  cmp(other: OraclePrice): -1 | 0 | 1;
21
+ getDeviationFactor(other: OraclePrice): BN;
18
22
  scale_to_exponent(target_exponent: BN): OraclePrice;
19
23
  getTokenAmount(asset_amount_usd: BN, token_decimals: number): BN;
20
24
  getAssetAmountUsd(token_amount: BN, token_decimals: number): BN;
@@ -30,6 +30,17 @@ var OraclePrice = (function () {
30
30
  ;
31
31
  return lhs.cmp(rhs);
32
32
  };
33
+ OraclePrice.prototype.getDeviationFactor = function (other) {
34
+ if (!this.exponent.eq(other.exponent)) {
35
+ throw "Exponents mistmatch";
36
+ }
37
+ if (this.price.cmp(other.price) == 1) {
38
+ return ((this.price.sub(other.price)).muln(constants_1.BPS_POWER).div(this.price));
39
+ }
40
+ else {
41
+ return ((other.price.sub(this.price)).muln(constants_1.BPS_POWER).div(this.price));
42
+ }
43
+ };
33
44
  OraclePrice.prototype.scale_to_exponent = function (target_exponent) {
34
45
  if (!target_exponent.isNeg()) {
35
46
  throw new Error("Target exponent must be negative");
@@ -41,12 +52,14 @@ var OraclePrice = (function () {
41
52
  if (delta.gt(constants_1.BN_ZERO)) {
42
53
  return new OraclePrice({
43
54
  price: this.price.div(new anchor_1.BN(10).pow(delta)),
55
+ confidence: this.confidence.div(new anchor_1.BN(10).pow(delta)),
44
56
  exponent: target_exponent
45
57
  });
46
58
  }
47
59
  else {
48
60
  return new OraclePrice({
49
- price: this.price.mul(new anchor_1.BN(10).pow(delta.mul(new anchor_1.BN(-1)))),
61
+ price: this.price.mul(new anchor_1.BN(10).pow(delta.neg())),
62
+ confidence: this.confidence.mul(new anchor_1.BN(10).pow(delta.neg())),
50
63
  exponent: target_exponent
51
64
  });
52
65
  }
@@ -4,7 +4,7 @@ import { Program, AnchorProvider, BN } from "@coral-xyz/anchor";
4
4
  import { PublicKey, TransactionInstruction, Commitment, Signer, AddressLookupTableAccount } from "@solana/web3.js";
5
5
  import { PoolAccount } from "./PoolAccount";
6
6
  import { PositionAccount } from "./PositionAccount";
7
- import { AddLiquidityAmountAndFee, AumCalcMode, BorrowRateParams, EntryPriceAndFee, ExitPriceAndFee, Fees, OracleParams, Permissions, PositionSide, PricingParams, RemoveCollateralData, RemoveLiquidityAmountAndFee, Side, SwapAmountAndFees, TokenRatios } from "./types";
7
+ import { AddLiquidityAmountAndFee, AumCalcMode, BorrowRateParams, EntryPriceAndFee, ExitPriceAndFee, Fees, OracleParams, Permissions, PositionSide, PricingParams, RemoveCollateralData, RemoveLiquidityAmountAndFee, Side, SwapAmountAndFees, TokenRatios, MinAndMaxPrice } from "./types";
8
8
  import { OraclePrice } from "./OraclePrice";
9
9
  import { CustodyAccount } from "./CustodyAccount";
10
10
  import { Perpetuals } from "./idl/perpetuals";
@@ -48,7 +48,11 @@ export declare class PerpetualsClient {
48
48
  publicKey: PublicKey;
49
49
  bump: number;
50
50
  };
51
- adjustTokenRatios: (ratios: TokenRatios[]) => TokenRatios[];
51
+ adjustTokenRatios: (ratios: TokenRatios[]) => {
52
+ target: BN;
53
+ min: BN;
54
+ max: BN;
55
+ }[];
52
56
  getPerpetuals: () => Promise<{
53
57
  pool: PublicKey;
54
58
  mint: PublicKey;
@@ -103,39 +107,23 @@ export declare class PerpetualsClient {
103
107
  ratioMult: BN;
104
108
  utilizationMult: BN;
105
109
  swapIn: {
106
- baseRate: BN;
107
- slope1: BN;
108
- constant1: BN;
109
- slope2: BN;
110
- constant2: BN;
111
110
  minFee: BN;
111
+ targetFee: BN;
112
112
  maxFee: BN;
113
113
  };
114
114
  swapOut: {
115
- baseRate: BN;
116
- slope1: BN;
117
- constant1: BN;
118
- slope2: BN;
119
- constant2: BN;
120
115
  minFee: BN;
116
+ targetFee: BN;
121
117
  maxFee: BN;
122
118
  };
123
119
  addLiquidity: {
124
- baseRate: BN;
125
- slope1: BN;
126
- constant1: BN;
127
- slope2: BN;
128
- constant2: BN;
129
120
  minFee: BN;
121
+ targetFee: BN;
130
122
  maxFee: BN;
131
123
  };
132
124
  removeLiquidity: {
133
- baseRate: BN;
134
- slope1: BN;
135
- constant1: BN;
136
- slope2: BN;
137
- constant2: BN;
138
125
  minFee: BN;
126
+ targetFee: BN;
139
127
  maxFee: BN;
140
128
  };
141
129
  openPosition: BN;
@@ -311,39 +299,23 @@ export declare class PerpetualsClient {
311
299
  ratioMult: BN;
312
300
  utilizationMult: BN;
313
301
  swapIn: {
314
- baseRate: BN;
315
- slope1: BN;
316
- constant1: BN;
317
- slope2: BN;
318
- constant2: BN;
319
302
  minFee: BN;
303
+ targetFee: BN;
320
304
  maxFee: BN;
321
305
  };
322
306
  swapOut: {
323
- baseRate: BN;
324
- slope1: BN;
325
- constant1: BN;
326
- slope2: BN;
327
- constant2: BN;
328
307
  minFee: BN;
308
+ targetFee: BN;
329
309
  maxFee: BN;
330
310
  };
331
311
  addLiquidity: {
332
- baseRate: BN;
333
- slope1: BN;
334
- constant1: BN;
335
- slope2: BN;
336
- constant2: BN;
337
312
  minFee: BN;
313
+ targetFee: BN;
338
314
  maxFee: BN;
339
315
  };
340
316
  removeLiquidity: {
341
- baseRate: BN;
342
- slope1: BN;
343
- constant1: BN;
344
- slope2: BN;
345
- constant2: BN;
346
317
  minFee: BN;
318
+ targetFee: BN;
347
319
  maxFee: BN;
348
320
  };
349
321
  openPosition: BN;
@@ -518,39 +490,23 @@ export declare class PerpetualsClient {
518
490
  ratioMult: BN;
519
491
  utilizationMult: BN;
520
492
  swapIn: {
521
- baseRate: BN;
522
- slope1: BN;
523
- constant1: BN;
524
- slope2: BN;
525
- constant2: BN;
526
493
  minFee: BN;
494
+ targetFee: BN;
527
495
  maxFee: BN;
528
496
  };
529
497
  swapOut: {
530
- baseRate: BN;
531
- slope1: BN;
532
- constant1: BN;
533
- slope2: BN;
534
- constant2: BN;
535
498
  minFee: BN;
499
+ targetFee: BN;
536
500
  maxFee: BN;
537
501
  };
538
502
  addLiquidity: {
539
- baseRate: BN;
540
- slope1: BN;
541
- constant1: BN;
542
- slope2: BN;
543
- constant2: BN;
544
503
  minFee: BN;
504
+ targetFee: BN;
545
505
  maxFee: BN;
546
506
  };
547
507
  removeLiquidity: {
548
- baseRate: BN;
549
- slope1: BN;
550
- constant1: BN;
551
- slope2: BN;
552
- constant2: BN;
553
508
  minFee: BN;
509
+ targetFee: BN;
554
510
  maxFee: BN;
555
511
  };
556
512
  openPosition: BN;
@@ -730,39 +686,23 @@ export declare class PerpetualsClient {
730
686
  ratioMult: BN;
731
687
  utilizationMult: BN;
732
688
  swapIn: {
733
- baseRate: BN;
734
- slope1: BN;
735
- constant1: BN;
736
- slope2: BN;
737
- constant2: BN;
738
689
  minFee: BN;
690
+ targetFee: BN;
739
691
  maxFee: BN;
740
692
  };
741
693
  swapOut: {
742
- baseRate: BN;
743
- slope1: BN;
744
- constant1: BN;
745
- slope2: BN;
746
- constant2: BN;
747
694
  minFee: BN;
695
+ targetFee: BN;
748
696
  maxFee: BN;
749
697
  };
750
698
  addLiquidity: {
751
- baseRate: BN;
752
- slope1: BN;
753
- constant1: BN;
754
- slope2: BN;
755
- constant2: BN;
756
699
  minFee: BN;
700
+ targetFee: BN;
757
701
  maxFee: BN;
758
702
  };
759
703
  removeLiquidity: {
760
- baseRate: BN;
761
- slope1: BN;
762
- constant1: BN;
763
- slope2: BN;
764
- constant2: BN;
765
704
  minFee: BN;
705
+ targetFee: BN;
766
706
  maxFee: BN;
767
707
  };
768
708
  openPosition: BN;
@@ -937,39 +877,23 @@ export declare class PerpetualsClient {
937
877
  ratioMult: BN;
938
878
  utilizationMult: BN;
939
879
  swapIn: {
940
- baseRate: BN;
941
- slope1: BN;
942
- constant1: BN;
943
- slope2: BN;
944
- constant2: BN;
945
880
  minFee: BN;
881
+ targetFee: BN;
946
882
  maxFee: BN;
947
883
  };
948
884
  swapOut: {
949
- baseRate: BN;
950
- slope1: BN;
951
- constant1: BN;
952
- slope2: BN;
953
- constant2: BN;
954
885
  minFee: BN;
886
+ targetFee: BN;
955
887
  maxFee: BN;
956
888
  };
957
889
  addLiquidity: {
958
- baseRate: BN;
959
- slope1: BN;
960
- constant1: BN;
961
- slope2: BN;
962
- constant2: BN;
963
890
  minFee: BN;
891
+ targetFee: BN;
964
892
  maxFee: BN;
965
893
  };
966
894
  removeLiquidity: {
967
- baseRate: BN;
968
- slope1: BN;
969
- constant1: BN;
970
- slope2: BN;
971
- constant2: BN;
972
895
  minFee: BN;
896
+ targetFee: BN;
973
897
  maxFee: BN;
974
898
  };
975
899
  openPosition: BN;
@@ -1145,39 +1069,23 @@ export declare class PerpetualsClient {
1145
1069
  ratioMult: BN;
1146
1070
  utilizationMult: BN;
1147
1071
  swapIn: {
1148
- baseRate: BN;
1149
- slope1: BN;
1150
- constant1: BN;
1151
- slope2: BN;
1152
- constant2: BN;
1153
1072
  minFee: BN;
1073
+ targetFee: BN;
1154
1074
  maxFee: BN;
1155
1075
  };
1156
1076
  swapOut: {
1157
- baseRate: BN;
1158
- slope1: BN;
1159
- constant1: BN;
1160
- slope2: BN;
1161
- constant2: BN;
1162
1077
  minFee: BN;
1078
+ targetFee: BN;
1163
1079
  maxFee: BN;
1164
1080
  };
1165
1081
  addLiquidity: {
1166
- baseRate: BN;
1167
- slope1: BN;
1168
- constant1: BN;
1169
- slope2: BN;
1170
- constant2: BN;
1171
1082
  minFee: BN;
1083
+ targetFee: BN;
1172
1084
  maxFee: BN;
1173
1085
  };
1174
1086
  removeLiquidity: {
1175
- baseRate: BN;
1176
- slope1: BN;
1177
- constant1: BN;
1178
- slope2: BN;
1179
- constant2: BN;
1180
1087
  minFee: BN;
1088
+ targetFee: BN;
1181
1089
  maxFee: BN;
1182
1090
  };
1183
1091
  openPosition: BN;
@@ -1353,39 +1261,23 @@ export declare class PerpetualsClient {
1353
1261
  ratioMult: BN;
1354
1262
  utilizationMult: BN;
1355
1263
  swapIn: {
1356
- baseRate: BN;
1357
- slope1: BN;
1358
- constant1: BN;
1359
- slope2: BN;
1360
- constant2: BN;
1361
1264
  minFee: BN;
1265
+ targetFee: BN;
1362
1266
  maxFee: BN;
1363
1267
  };
1364
1268
  swapOut: {
1365
- baseRate: BN;
1366
- slope1: BN;
1367
- constant1: BN;
1368
- slope2: BN;
1369
- constant2: BN;
1370
1269
  minFee: BN;
1270
+ targetFee: BN;
1371
1271
  maxFee: BN;
1372
1272
  };
1373
1273
  addLiquidity: {
1374
- baseRate: BN;
1375
- slope1: BN;
1376
- constant1: BN;
1377
- slope2: BN;
1378
- constant2: BN;
1379
1274
  minFee: BN;
1275
+ targetFee: BN;
1380
1276
  maxFee: BN;
1381
1277
  };
1382
1278
  removeLiquidity: {
1383
- baseRate: BN;
1384
- slope1: BN;
1385
- constant1: BN;
1386
- slope2: BN;
1387
- constant2: BN;
1388
1279
  minFee: BN;
1280
+ targetFee: BN;
1389
1281
  maxFee: BN;
1390
1282
  };
1391
1283
  openPosition: BN;
@@ -1560,39 +1452,23 @@ export declare class PerpetualsClient {
1560
1452
  ratioMult: BN;
1561
1453
  utilizationMult: BN;
1562
1454
  swapIn: {
1563
- baseRate: BN;
1564
- slope1: BN;
1565
- constant1: BN;
1566
- slope2: BN;
1567
- constant2: BN;
1568
1455
  minFee: BN;
1456
+ targetFee: BN;
1569
1457
  maxFee: BN;
1570
1458
  };
1571
1459
  swapOut: {
1572
- baseRate: BN;
1573
- slope1: BN;
1574
- constant1: BN;
1575
- slope2: BN;
1576
- constant2: BN;
1577
1460
  minFee: BN;
1461
+ targetFee: BN;
1578
1462
  maxFee: BN;
1579
1463
  };
1580
1464
  addLiquidity: {
1581
- baseRate: BN;
1582
- slope1: BN;
1583
- constant1: BN;
1584
- slope2: BN;
1585
- constant2: BN;
1586
1465
  minFee: BN;
1466
+ targetFee: BN;
1587
1467
  maxFee: BN;
1588
1468
  };
1589
1469
  removeLiquidity: {
1590
- baseRate: BN;
1591
- slope1: BN;
1592
- constant1: BN;
1593
- slope2: BN;
1594
- constant2: BN;
1595
1470
  minFee: BN;
1471
+ targetFee: BN;
1596
1472
  maxFee: BN;
1597
1473
  };
1598
1474
  openPosition: BN;
@@ -1767,39 +1643,23 @@ export declare class PerpetualsClient {
1767
1643
  ratioMult: BN;
1768
1644
  utilizationMult: BN;
1769
1645
  swapIn: {
1770
- baseRate: BN;
1771
- slope1: BN;
1772
- constant1: BN;
1773
- slope2: BN;
1774
- constant2: BN;
1775
1646
  minFee: BN;
1647
+ targetFee: BN;
1776
1648
  maxFee: BN;
1777
1649
  };
1778
1650
  swapOut: {
1779
- baseRate: BN;
1780
- slope1: BN;
1781
- constant1: BN;
1782
- slope2: BN;
1783
- constant2: BN;
1784
1651
  minFee: BN;
1652
+ targetFee: BN;
1785
1653
  maxFee: BN;
1786
1654
  };
1787
1655
  addLiquidity: {
1788
- baseRate: BN;
1789
- slope1: BN;
1790
- constant1: BN;
1791
- slope2: BN;
1792
- constant2: BN;
1793
1656
  minFee: BN;
1657
+ targetFee: BN;
1794
1658
  maxFee: BN;
1795
1659
  };
1796
1660
  removeLiquidity: {
1797
- baseRate: BN;
1798
- slope1: BN;
1799
- constant1: BN;
1800
- slope2: BN;
1801
- constant2: BN;
1802
1661
  minFee: BN;
1662
+ targetFee: BN;
1803
1663
  maxFee: BN;
1804
1664
  };
1805
1665
  openPosition: BN;
@@ -1975,39 +1835,23 @@ export declare class PerpetualsClient {
1975
1835
  ratioMult: BN;
1976
1836
  utilizationMult: BN;
1977
1837
  swapIn: {
1978
- baseRate: BN;
1979
- slope1: BN;
1980
- constant1: BN;
1981
- slope2: BN;
1982
- constant2: BN;
1983
1838
  minFee: BN;
1839
+ targetFee: BN;
1984
1840
  maxFee: BN;
1985
1841
  };
1986
1842
  swapOut: {
1987
- baseRate: BN;
1988
- slope1: BN;
1989
- constant1: BN;
1990
- slope2: BN;
1991
- constant2: BN;
1992
1843
  minFee: BN;
1844
+ targetFee: BN;
1993
1845
  maxFee: BN;
1994
1846
  };
1995
1847
  addLiquidity: {
1996
- baseRate: BN;
1997
- slope1: BN;
1998
- constant1: BN;
1999
- slope2: BN;
2000
- constant2: BN;
2001
1848
  minFee: BN;
1849
+ targetFee: BN;
2002
1850
  maxFee: BN;
2003
1851
  };
2004
1852
  removeLiquidity: {
2005
- baseRate: BN;
2006
- slope1: BN;
2007
- constant1: BN;
2008
- slope2: BN;
2009
- constant2: BN;
2010
1853
  minFee: BN;
1854
+ targetFee: BN;
2011
1855
  maxFee: BN;
2012
1856
  };
2013
1857
  openPosition: BN;
@@ -2182,39 +2026,23 @@ export declare class PerpetualsClient {
2182
2026
  ratioMult: BN;
2183
2027
  utilizationMult: BN;
2184
2028
  swapIn: {
2185
- baseRate: BN;
2186
- slope1: BN;
2187
- constant1: BN;
2188
- slope2: BN;
2189
- constant2: BN;
2190
2029
  minFee: BN;
2030
+ targetFee: BN;
2191
2031
  maxFee: BN;
2192
2032
  };
2193
2033
  swapOut: {
2194
- baseRate: BN;
2195
- slope1: BN;
2196
- constant1: BN;
2197
- slope2: BN;
2198
- constant2: BN;
2199
2034
  minFee: BN;
2035
+ targetFee: BN;
2200
2036
  maxFee: BN;
2201
2037
  };
2202
2038
  addLiquidity: {
2203
- baseRate: BN;
2204
- slope1: BN;
2205
- constant1: BN;
2206
- slope2: BN;
2207
- constant2: BN;
2208
2039
  minFee: BN;
2040
+ targetFee: BN;
2209
2041
  maxFee: BN;
2210
2042
  };
2211
2043
  removeLiquidity: {
2212
- baseRate: BN;
2213
- slope1: BN;
2214
- constant1: BN;
2215
- slope2: BN;
2216
- constant2: BN;
2217
2044
  minFee: BN;
2045
+ targetFee: BN;
2218
2046
  maxFee: BN;
2219
2047
  };
2220
2048
  openPosition: BN;
@@ -2368,12 +2196,18 @@ export declare class PerpetualsClient {
2368
2196
  sizeDeltaAmount: BN;
2369
2197
  } | null, side: Side, marketPrice: OraclePrice, marketEmaPrice: OraclePrice, marketCustodyAccount: CustodyAccount, collateralPrice: OraclePrice, collateralEmaPrice: OraclePrice, collateralCustodyAccount: CustodyAccount) => EntryPriceAndFee;
2370
2198
  getEntryPriceSync: (side: Side, marketPrice: OraclePrice, marketEmaPrice: OraclePrice, marketCustodyAccount: CustodyAccount, collateralPrice: OraclePrice, collateralEmaPrice: OraclePrice, collateralCustodyAccount: CustodyAccount) => BN;
2199
+ getMinAndMaxPriceSync: (price: OraclePrice, emaPrice: OraclePrice, custodyAccount: CustodyAccount) => MinAndMaxPrice;
2200
+ checkIfPriceStale: (price: OraclePrice, emaPrice: OraclePrice, custodyAccount: CustodyAccount) => boolean;
2201
+ getSizeAmountFromLeverageAndCollateral: (collateralAmtWithFee: BN, leverage: string, marketToken: Token, collateralToken: Token, side: Side, marketPrice: OraclePrice, marketEmaPrice: OraclePrice, marketCustodyAccount: CustodyAccount, collateralPrice: OraclePrice, collateralEmaPrice: OraclePrice, collateralCustodyAccount: CustodyAccount) => BN;
2202
+ getCollateralAmountWithFeeFromLeverageAndSize: (sizeAmount: BN, leverage: string, marketToken: Token, collateralToken: Token, side: Side, marketPrice: OraclePrice, marketEmaPrice: OraclePrice, marketCustodyAccount: CustodyAccount, collateralPrice: OraclePrice, collateralEmaPrice: OraclePrice, collateralCustodyAccount: CustodyAccount) => BN;
2371
2203
  getExitPriceAndFeeSync: (positionAccount: PositionAccount | null, delta: {
2372
2204
  collateralDeltaAmount: BN;
2373
2205
  sizeDeltaAmount: BN;
2374
2206
  } | null, side: Side, marketPrice: OraclePrice, marketEmaPrice: OraclePrice, marketCustodyAccount: CustodyAccount, collateralPrice: OraclePrice, collateralEmaPrice: OraclePrice, collateralCustodyAccount: CustodyAccount) => ExitPriceAndFee;
2375
2207
  getExitPriceSync: (side: Side, marketPrice: OraclePrice, marketEmaPrice: OraclePrice, marketCustodyAccount: CustodyAccount, collateralPrice: OraclePrice, collateralEmaPrice: OraclePrice, collateralCustodyAccount: CustodyAccount) => BN;
2376
2208
  getDecreaseSizeCollateralAndFeeSync: (positionAccount: PositionAccount, sizeDeltaAmount: BN, keepLevSame: boolean, side: Side, marketPrice: OraclePrice, marketEmaPrice: OraclePrice, marketCustodyAccount: CustodyAccount, collateralPrice: OraclePrice, collateralEmaPrice: OraclePrice, collateralCustodyAccount: CustodyAccount) => RemoveCollateralData;
2209
+ getCumulativeInterestSync: (custodyAccount: CustodyAccount) => BN;
2210
+ getInterestAmountUsdForPosition: (position: PositionAccount, custodyAccount: CustodyAccount) => BN;
2377
2211
  getLiquidationPriceSync: (positionAccount: PositionAccount | null, delta: {
2378
2212
  collateralDeltaAmount: BN;
2379
2213
  sizeDeltaAmount: BN;