@drift-labs/sdk 0.2.0-master.26 → 0.2.0-master.27

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 (143) hide show
  1. package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +1 -0
  2. package/lib/accounts/pollingClearingHouseAccountSubscriber.js +3 -0
  3. package/lib/accounts/types.d.ts +1 -0
  4. package/lib/accounts/webSocketClearingHouseAccountSubscriber.d.ts +1 -0
  5. package/lib/accounts/webSocketClearingHouseAccountSubscriber.js +3 -0
  6. package/lib/admin.d.ts +5 -2
  7. package/lib/admin.js +30 -4
  8. package/lib/clearingHouse.d.ts +2 -0
  9. package/lib/clearingHouse.js +14 -1
  10. package/lib/clearingHouseUser.d.ts +11 -9
  11. package/lib/clearingHouseUser.js +182 -106
  12. package/lib/config.js +1 -1
  13. package/lib/dlob/DLOB.d.ts +73 -0
  14. package/lib/dlob/DLOB.js +557 -0
  15. package/lib/dlob/DLOBNode.d.ts +52 -0
  16. package/lib/dlob/DLOBNode.js +82 -0
  17. package/lib/dlob/NodeList.d.ts +26 -0
  18. package/lib/dlob/NodeList.js +138 -0
  19. package/lib/idl/clearing_house.json +122 -202
  20. package/lib/index.d.ts +5 -0
  21. package/lib/index.js +5 -0
  22. package/lib/math/market.d.ts +1 -1
  23. package/lib/math/market.js +1 -1
  24. package/lib/math/orders.d.ts +3 -3
  25. package/lib/math/orders.js +31 -16
  26. package/lib/math/spotBalance.d.ts +3 -0
  27. package/lib/math/spotBalance.js +18 -1
  28. package/lib/math/spotPosition.d.ts +5 -1
  29. package/lib/math/spotPosition.js +16 -1
  30. package/lib/types.d.ts +24 -23
  31. package/lib/types.js +9 -3
  32. package/lib/userMap/userMap.d.ts +25 -0
  33. package/lib/userMap/userMap.js +73 -0
  34. package/lib/userMap/userStatsMap.d.ts +19 -0
  35. package/lib/userMap/userStatsMap.js +68 -0
  36. package/package.json +6 -3
  37. package/src/accounts/pollingClearingHouseAccountSubscriber.ts +4 -0
  38. package/src/accounts/types.ts +1 -0
  39. package/src/accounts/webSocketClearingHouseAccountSubscriber.ts +6 -0
  40. package/src/addresses/marketAddresses.js +26 -0
  41. package/src/admin.ts +50 -8
  42. package/src/assert/assert.js +1 -1
  43. package/src/clearingHouse.ts +23 -1
  44. package/src/clearingHouseUser.ts +364 -165
  45. package/src/config.ts +1 -1
  46. package/src/constants/banks.js +42 -0
  47. package/src/constants/{perpMarkets.js → markets.js} +11 -11
  48. package/src/dlob/DLOB.ts +884 -0
  49. package/src/dlob/DLOBNode.ts +163 -0
  50. package/src/dlob/NodeList.ts +185 -0
  51. package/src/events/eventList.js +23 -66
  52. package/src/events/txEventCache.js +19 -22
  53. package/src/examples/makeTradeExample.js +157 -0
  54. package/src/factory/bigNum.js +180 -183
  55. package/src/factory/oracleClient.js +9 -9
  56. package/src/idl/clearing_house.json +122 -202
  57. package/src/index.ts +5 -0
  58. package/src/math/auction.js +10 -10
  59. package/src/math/conversion.js +3 -4
  60. package/src/math/funding.js +175 -223
  61. package/src/math/market.ts +1 -1
  62. package/src/math/orders.ts +29 -21
  63. package/src/math/repeg.js +40 -40
  64. package/src/math/spotBalance.ts +26 -0
  65. package/src/math/spotPosition.ts +42 -1
  66. package/src/math/trade.js +74 -81
  67. package/src/math/utils.js +7 -8
  68. package/src/math/utils.js.map +1 -0
  69. package/src/oracles/oracleClientCache.js +9 -10
  70. package/src/oracles/pythClient.js +17 -52
  71. package/src/oracles/quoteAssetOracleClient.js +13 -44
  72. package/src/oracles/switchboardClient.js +37 -69
  73. package/src/oracles/types.js +1 -1
  74. package/src/token/index.js +4 -4
  75. package/src/tx/types.js +1 -1
  76. package/src/tx/utils.js +6 -7
  77. package/src/types.ts +25 -23
  78. package/src/userMap/userMap.ts +100 -0
  79. package/src/userMap/userStatsMap.ts +110 -0
  80. package/src/userName.js +5 -5
  81. package/src/util/computeUnits.js +11 -46
  82. package/src/util/getTokenAddress.js +9 -0
  83. package/src/util/promiseTimeout.js +5 -5
  84. package/src/util/tps.js +12 -46
  85. package/src/wallet.js +18 -55
  86. package/tests/bn/test.ts +2 -3
  87. package/tests/dlob/helpers.ts +322 -0
  88. package/tests/dlob/test.ts +2865 -0
  89. package/my-script/.env +0 -7
  90. package/my-script/getUserStats.ts +0 -106
  91. package/my-script/multiConnections.ts +0 -119
  92. package/my-script/test-regex.ts +0 -11
  93. package/my-script/utils.ts +0 -52
  94. package/src/accounts/bulkAccountLoader.js +0 -249
  95. package/src/accounts/bulkUserStatsSubscription.js +0 -75
  96. package/src/accounts/bulkUserSubscription.js +0 -75
  97. package/src/accounts/fetch.js +0 -92
  98. package/src/accounts/pollingClearingHouseAccountSubscriber.js +0 -465
  99. package/src/accounts/pollingOracleSubscriber.js +0 -156
  100. package/src/accounts/pollingTokenAccountSubscriber.js +0 -141
  101. package/src/accounts/pollingUserAccountSubscriber.js +0 -208
  102. package/src/accounts/pollingUserStatsAccountSubscriber.js +0 -208
  103. package/src/accounts/types.js +0 -28
  104. package/src/accounts/utils.js +0 -7
  105. package/src/accounts/webSocketAccountSubscriber.js +0 -138
  106. package/src/accounts/webSocketClearingHouseAccountSubscriber.js +0 -433
  107. package/src/accounts/webSocketUserAccountSubscriber.js +0 -113
  108. package/src/accounts/webSocketUserStatsAccountSubsriber.js +0 -113
  109. package/src/addresses/pda.js +0 -186
  110. package/src/admin.js +0 -1284
  111. package/src/clearingHouse.js +0 -3433
  112. package/src/clearingHouseConfig.js +0 -2
  113. package/src/clearingHouseUser.js +0 -874
  114. package/src/clearingHouseUserConfig.js +0 -2
  115. package/src/clearingHouseUserStats.js +0 -115
  116. package/src/clearingHouseUserStatsConfig.js +0 -2
  117. package/src/config.js +0 -80
  118. package/src/constants/numericConstants.js +0 -48
  119. package/src/constants/spotMarkets.js +0 -51
  120. package/src/events/eventSubscriber.js +0 -202
  121. package/src/events/fetchLogs.js +0 -117
  122. package/src/events/pollingLogProvider.js +0 -113
  123. package/src/events/sort.js +0 -41
  124. package/src/events/types.js +0 -25
  125. package/src/events/webSocketLogProvider.js +0 -76
  126. package/src/index.js +0 -75
  127. package/src/math/amm.js +0 -422
  128. package/src/math/insurance.js +0 -27
  129. package/src/math/margin.js +0 -77
  130. package/src/math/market.js +0 -105
  131. package/src/math/oracles.js +0 -56
  132. package/src/math/orders.js +0 -153
  133. package/src/math/position.js +0 -172
  134. package/src/math/spotBalance.js +0 -176
  135. package/src/math/spotMarket.js +0 -8
  136. package/src/math/spotPosition.js +0 -8
  137. package/src/orderParams.js +0 -28
  138. package/src/serum/serumSubscriber.js +0 -102
  139. package/src/serum/types.js +0 -2
  140. package/src/slot/SlotSubscriber.js +0 -86
  141. package/src/tokenFaucet.js +0 -323
  142. package/src/tx/retryTxSender.js +0 -280
  143. package/src/types.js +0 -216
package/src/admin.ts CHANGED
@@ -274,6 +274,19 @@ export class Admin extends ClearingHouse {
274
274
  });
275
275
  }
276
276
 
277
+ public async updateConcentrationScale(
278
+ marketIndex: BN,
279
+ concentrationScale: BN
280
+ ): Promise<TransactionSignature> {
281
+ return await this.program.rpc.updateConcentrationScale(concentrationScale, {
282
+ accounts: {
283
+ state: await this.getStatePublicKey(),
284
+ admin: this.wallet.publicKey,
285
+ market: await getMarketPublicKey(this.program.programId, marketIndex),
286
+ },
287
+ });
288
+ }
289
+
277
290
  public async moveAmmToPrice(
278
291
  perpMarketIndex: BN,
279
292
  targetPrice: BN
@@ -654,14 +667,31 @@ export class Admin extends ClearingHouse {
654
667
  public async updateSpotMarketIfFactor(
655
668
  marketIndex: BN,
656
669
  userIfFactor: BN,
657
- totalIfFactor: BN,
658
- liquidationIfFactor: BN
670
+ totalIfFactor: BN
659
671
  ): Promise<TransactionSignature> {
660
672
  return await this.program.rpc.updateSpotMarketIfFactor(
661
673
  marketIndex,
662
674
  userIfFactor,
663
675
  totalIfFactor,
664
- liquidationIfFactor,
676
+ {
677
+ accounts: {
678
+ admin: this.wallet.publicKey,
679
+ state: await this.getStatePublicKey(),
680
+ spotMarket: await getSpotMarketPublicKey(
681
+ this.program.programId,
682
+ marketIndex
683
+ ),
684
+ },
685
+ }
686
+ );
687
+ }
688
+
689
+ public async updateSpotMarketRevenueSettlePeriod(
690
+ marketIndex: BN,
691
+ revenueSettlePeriod: BN
692
+ ): Promise<TransactionSignature> {
693
+ return await this.program.rpc.updateSpotMarketRevenueSettlePeriod(
694
+ revenueSettlePeriod,
665
695
  {
666
696
  accounts: {
667
697
  admin: this.wallet.publicKey,
@@ -830,13 +860,25 @@ export class Admin extends ClearingHouse {
830
860
  });
831
861
  }
832
862
 
833
- public async updateAuctionDuration(
834
- minDuration: BN | number,
835
- maxDuration: BN | number
863
+ public async updatePerpAuctionDuration(
864
+ minDuration: BN | number
836
865
  ): Promise<TransactionSignature> {
837
- return await this.program.rpc.updateAuctionDuration(
866
+ return await this.program.rpc.updatePerpAuctionDuration(
838
867
  typeof minDuration === 'number' ? minDuration : minDuration.toNumber(),
839
- typeof maxDuration === 'number' ? maxDuration : maxDuration.toNumber(),
868
+ {
869
+ accounts: {
870
+ admin: this.wallet.publicKey,
871
+ state: await this.getStatePublicKey(),
872
+ },
873
+ }
874
+ );
875
+ }
876
+
877
+ public async updateSpotAuctionDuration(
878
+ defaultAuctionDuration: number
879
+ ): Promise<TransactionSignature> {
880
+ return await this.program.rpc.updateSpotAuctionDuration(
881
+ defaultAuctionDuration,
840
882
  {
841
883
  accounts: {
842
884
  admin: this.wallet.publicKey,
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- exports.__esModule = true;
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.assert = void 0;
4
4
  function assert(condition, error) {
5
5
  if (!condition) {
@@ -305,6 +305,12 @@ export class ClearingHouse {
305
305
  return this.accountSubscriber.getSpotMarketAccountAndSlot(marketIndex).data;
306
306
  }
307
307
 
308
+ public getSpotMarketAccounts(): SpotMarketAccount[] {
309
+ return this.accountSubscriber
310
+ .getSpotMarketAccountsAndSlots()
311
+ .map((value) => value.data);
312
+ }
313
+
308
314
  public getQuoteSpotMarketAccount(): SpotMarketAccount {
309
315
  return this.accountSubscriber.getSpotMarketAccountAndSlot(
310
316
  QUOTE_SPOT_MARKET_INDEX
@@ -472,6 +478,22 @@ export class ClearingHouse {
472
478
  });
473
479
  }
474
480
 
481
+ public async updateUserCustomMarginRatio(
482
+ marginRatio: number,
483
+ userId = 0
484
+ ): Promise<TransactionSignature> {
485
+ return await this.program.rpc.updateUserCustomMarginRatio(
486
+ userId,
487
+ marginRatio,
488
+ {
489
+ accounts: {
490
+ user: await this.getUserAccountPublicKey(),
491
+ authority: this.wallet.publicKey,
492
+ },
493
+ }
494
+ );
495
+ }
496
+
475
497
  public getUser(userId?: number): ClearingHouseUser {
476
498
  userId = userId ?? this.activeUserId;
477
499
  if (!this.users.has(userId)) {
@@ -595,7 +617,7 @@ export class ClearingHouse {
595
617
  perpMarketAccountMap.set(params.readablePerpMarketIndex.toNumber(), {
596
618
  pubkey: marketAccount.pubkey,
597
619
  isSigner: false,
598
- isWritable: true,
620
+ isWritable: false,
599
621
  });
600
622
  oracleAccountMap.set(marketAccount.amm.oracle.toString(), {
601
623
  pubkey: marketAccount.amm.oracle,