@reflectmoney/stable.ts 1.0.1 → 1.0.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 (311) hide show
  1. package/README.md +108 -84
  2. package/dist/classes/ReflectKeeper.d.ts +104 -0
  3. package/dist/classes/ReflectKeeper.js +219 -0
  4. package/dist/classes/Stablecoin.d.ts +3 -1
  5. package/dist/classes/Stablecoin.js +2 -1
  6. package/dist/classes/index.d.ts +1 -1
  7. package/dist/classes/index.js +1 -1
  8. package/dist/constants/index.d.ts +1 -0
  9. package/dist/constants/index.js +1 -0
  10. package/dist/constants/lookupTables.d.ts +4 -0
  11. package/dist/constants/lookupTables.js +7 -0
  12. package/dist/stablecoins/LstStablecoin.js +1 -1
  13. package/dist/stablecoins/UsdcPlusStablecoin.d.ts +66 -0
  14. package/dist/stablecoins/UsdcPlusStablecoin.js +197 -0
  15. package/dist/stablecoins/UsdjStablecoin.d.ts +1 -0
  16. package/dist/stablecoins/UsdjStablecoin.js +44 -0
  17. package/dist/stablecoins/index.d.ts +2 -2
  18. package/dist/stablecoins/index.js +2 -2
  19. package/package.json +1 -1
  20. package/dist/classes/Strategy.d.ts +0 -30
  21. package/dist/classes/Strategy.js +0 -196
  22. package/dist/generated/accounts/DriftJlpController.d.ts +0 -114
  23. package/dist/generated/accounts/DriftJlpController.js +0 -169
  24. package/dist/generated/accounts/DriftLstController.d.ts +0 -108
  25. package/dist/generated/accounts/DriftLstController.js +0 -165
  26. package/dist/generated/accounts/DriftUsdcController.d.ts +0 -102
  27. package/dist/generated/accounts/DriftUsdcController.js +0 -158
  28. package/dist/generated/accounts/Main.d.ts +0 -110
  29. package/dist/generated/accounts/Main.js +0 -165
  30. package/dist/generated/accounts/PerpMarket.d.ts +0 -226
  31. package/dist/generated/accounts/PerpMarket.js +0 -307
  32. package/dist/generated/accounts/PrelaunchOracle.d.ts +0 -130
  33. package/dist/generated/accounts/PrelaunchOracle.js +0 -224
  34. package/dist/generated/accounts/PythLazerOracle.d.ts +0 -124
  35. package/dist/generated/accounts/PythLazerOracle.js +0 -210
  36. package/dist/generated/accounts/RebalanceLst.d.ts +0 -111
  37. package/dist/generated/accounts/RebalanceLst.js +0 -175
  38. package/dist/generated/accounts/SpotMarket.d.ts +0 -377
  39. package/dist/generated/accounts/SpotMarket.js +0 -601
  40. package/dist/generated/accounts/User.d.ts +0 -221
  41. package/dist/generated/accounts/User.js +0 -331
  42. package/dist/generated/accounts/UserPermissions.d.ts +0 -106
  43. package/dist/generated/accounts/UserPermissions.js +0 -161
  44. package/dist/generated/accounts/UserStats.d.ts +0 -211
  45. package/dist/generated/accounts/UserStats.js +0 -323
  46. package/dist/generated/accounts/index.d.ts +0 -38
  47. package/dist/generated/accounts/index.js +0 -55
  48. package/dist/generated/errors/index.d.ts +0 -1024
  49. package/dist/generated/errors/index.js +0 -1761
  50. package/dist/generated/index.d.ts +0 -19
  51. package/dist/generated/index.js +0 -36
  52. package/dist/generated/instructions/addLstDrift.d.ts +0 -49
  53. package/dist/generated/instructions/addLstDrift.js +0 -106
  54. package/dist/generated/instructions/addSubAccount.d.ts +0 -54
  55. package/dist/generated/instructions/addSubAccount.js +0 -121
  56. package/dist/generated/instructions/adjustHedgeS2.d.ts +0 -69
  57. package/dist/generated/instructions/adjustHedgeS2.js +0 -157
  58. package/dist/generated/instructions/captureSpreadDrift.d.ts +0 -56
  59. package/dist/generated/instructions/captureSpreadDrift.js +0 -120
  60. package/dist/generated/instructions/createAdminAccount.d.ts +0 -53
  61. package/dist/generated/instructions/createAdminAccount.js +0 -95
  62. package/dist/generated/instructions/createUserStatsAccount.d.ts +0 -54
  63. package/dist/generated/instructions/createUserStatsAccount.js +0 -121
  64. package/dist/generated/instructions/depositDrift.d.ts +0 -73
  65. package/dist/generated/instructions/depositDrift.js +0 -142
  66. package/dist/generated/instructions/freezeProgram.d.ts +0 -54
  67. package/dist/generated/instructions/freezeProgram.js +0 -95
  68. package/dist/generated/instructions/freezeProtocolAction.d.ts +0 -55
  69. package/dist/generated/instructions/freezeProtocolAction.js +0 -96
  70. package/dist/generated/instructions/freezeStrategyAction.d.ts +0 -58
  71. package/dist/generated/instructions/freezeStrategyAction.js +0 -102
  72. package/dist/generated/instructions/index.d.ts +0 -41
  73. package/dist/generated/instructions/index.js +0 -57
  74. package/dist/generated/instructions/initDriftAccountsS1.d.ts +0 -56
  75. package/dist/generated/instructions/initDriftAccountsS1.js +0 -126
  76. package/dist/generated/instructions/initDriftControllerS1.d.ts +0 -60
  77. package/dist/generated/instructions/initDriftControllerS1.js +0 -108
  78. package/dist/generated/instructions/initDriftControllerS2.d.ts +0 -66
  79. package/dist/generated/instructions/initDriftControllerS2.js +0 -125
  80. package/dist/generated/instructions/initDriftControllerS3.d.ts +0 -58
  81. package/dist/generated/instructions/initDriftControllerS3.js +0 -103
  82. package/dist/generated/instructions/initMain.d.ts +0 -43
  83. package/dist/generated/instructions/initMain.js +0 -91
  84. package/dist/generated/instructions/mintDriftS1.d.ts +0 -90
  85. package/dist/generated/instructions/mintDriftS1.js +0 -184
  86. package/dist/generated/instructions/mintDriftS2.d.ts +0 -80
  87. package/dist/generated/instructions/mintDriftS2.js +0 -161
  88. package/dist/generated/instructions/mintDriftS3.d.ts +0 -86
  89. package/dist/generated/instructions/mintDriftS3.js +0 -174
  90. package/dist/generated/instructions/processSwapDeposit.d.ts +0 -79
  91. package/dist/generated/instructions/processSwapDeposit.js +0 -161
  92. package/dist/generated/instructions/processSwapDepositIntrospection.d.ts +0 -79
  93. package/dist/generated/instructions/processSwapDepositIntrospection.js +0 -161
  94. package/dist/generated/instructions/processSwapWithdraw.d.ts +0 -68
  95. package/dist/generated/instructions/processSwapWithdraw.js +0 -157
  96. package/dist/generated/instructions/processSwapWithdrawIntrospection.d.ts +0 -68
  97. package/dist/generated/instructions/processSwapWithdrawIntrospection.js +0 -157
  98. package/dist/generated/instructions/rebalanceJlp.d.ts +0 -81
  99. package/dist/generated/instructions/rebalanceJlp.js +0 -187
  100. package/dist/generated/instructions/redeem2DriftS2.d.ts +0 -80
  101. package/dist/generated/instructions/redeem2DriftS2.js +0 -161
  102. package/dist/generated/instructions/redeemDriftS1.d.ts +0 -91
  103. package/dist/generated/instructions/redeemDriftS1.js +0 -185
  104. package/dist/generated/instructions/redeemDriftS2.d.ts +0 -80
  105. package/dist/generated/instructions/redeemDriftS2.js +0 -161
  106. package/dist/generated/instructions/redeemDriftS3.d.ts +0 -87
  107. package/dist/generated/instructions/redeemDriftS3.js +0 -175
  108. package/dist/generated/instructions/settlePnl.d.ts +0 -55
  109. package/dist/generated/instructions/settlePnl.js +0 -114
  110. package/dist/generated/instructions/settlePnlMulti.d.ts +0 -65
  111. package/dist/generated/instructions/settlePnlMulti.js +0 -117
  112. package/dist/generated/instructions/suspendLstProtocol.d.ts +0 -54
  113. package/dist/generated/instructions/suspendLstProtocol.js +0 -96
  114. package/dist/generated/instructions/suspendLstStrategy.d.ts +0 -56
  115. package/dist/generated/instructions/suspendLstStrategy.js +0 -101
  116. package/dist/generated/instructions/swapOrca.d.ts +0 -78
  117. package/dist/generated/instructions/swapOrca.js +0 -153
  118. package/dist/generated/instructions/swapOrcaTwoHop.d.ts +0 -98
  119. package/dist/generated/instructions/swapOrcaTwoHop.js +0 -200
  120. package/dist/generated/instructions/updateActionRoleProtocol.d.ts +0 -58
  121. package/dist/generated/instructions/updateActionRoleProtocol.js +0 -99
  122. package/dist/generated/instructions/updateActionRoleStrategy.d.ts +0 -61
  123. package/dist/generated/instructions/updateActionRoleStrategy.js +0 -105
  124. package/dist/generated/instructions/updateAttenuation.d.ts +0 -56
  125. package/dist/generated/instructions/updateAttenuation.js +0 -100
  126. package/dist/generated/instructions/updateCap.d.ts +0 -55
  127. package/dist/generated/instructions/updateCap.js +0 -99
  128. package/dist/generated/instructions/updateRebalanceSlippage.d.ts +0 -55
  129. package/dist/generated/instructions/updateRebalanceSlippage.js +0 -99
  130. package/dist/generated/instructions/updateRecipients.d.ts +0 -56
  131. package/dist/generated/instructions/updateRecipients.js +0 -101
  132. package/dist/generated/instructions/updateRoleHolderProtocol.d.ts +0 -61
  133. package/dist/generated/instructions/updateRoleHolderProtocol.js +0 -109
  134. package/dist/generated/instructions/updateRoleHolderStrategy.d.ts +0 -62
  135. package/dist/generated/instructions/updateRoleHolderStrategy.js +0 -110
  136. package/dist/generated/types/AMM.d.ts +0 -102
  137. package/dist/generated/types/AMM.js +0 -127
  138. package/dist/generated/types/AccKey.d.ts +0 -15
  139. package/dist/generated/types/AccKey.js +0 -38
  140. package/dist/generated/types/AccessControl.d.ts +0 -18
  141. package/dist/generated/types/AccessControl.js +0 -43
  142. package/dist/generated/types/AccessMap.d.ts +0 -17
  143. package/dist/generated/types/AccessMap.js +0 -42
  144. package/dist/generated/types/Action.d.ts +0 -36
  145. package/dist/generated/types/Action.js +0 -63
  146. package/dist/generated/types/ActionMapping.d.ts +0 -19
  147. package/dist/generated/types/ActionMapping.js +0 -44
  148. package/dist/generated/types/AssetTier.d.ts +0 -23
  149. package/dist/generated/types/AssetTier.js +0 -50
  150. package/dist/generated/types/Attenuation.d.ts +0 -16
  151. package/dist/generated/types/Attenuation.js +0 -41
  152. package/dist/generated/types/BalanceType.d.ts +0 -20
  153. package/dist/generated/types/BalanceType.js +0 -47
  154. package/dist/generated/types/ContractTier.d.ts +0 -24
  155. package/dist/generated/types/ContractTier.js +0 -51
  156. package/dist/generated/types/ContractType.d.ts +0 -20
  157. package/dist/generated/types/ContractType.js +0 -47
  158. package/dist/generated/types/CorpAction.d.ts +0 -19
  159. package/dist/generated/types/CorpAction.js +0 -46
  160. package/dist/generated/types/CustodyInfo.d.ts +0 -20
  161. package/dist/generated/types/CustodyInfo.js +0 -45
  162. package/dist/generated/types/DirectionCollateral.d.ts +0 -20
  163. package/dist/generated/types/DirectionCollateral.js +0 -47
  164. package/dist/generated/types/DirectionPosition.d.ts +0 -20
  165. package/dist/generated/types/DirectionPosition.js +0 -47
  166. package/dist/generated/types/DriftControllerBase.d.ts +0 -15
  167. package/dist/generated/types/DriftControllerBase.js +0 -38
  168. package/dist/generated/types/DriftJlpControllerFixedAccounts.d.ts +0 -18
  169. package/dist/generated/types/DriftJlpControllerFixedAccounts.js +0 -43
  170. package/dist/generated/types/DriftLstData.d.ts +0 -17
  171. package/dist/generated/types/DriftLstData.js +0 -42
  172. package/dist/generated/types/Ema.d.ts +0 -17
  173. package/dist/generated/types/Ema.js +0 -42
  174. package/dist/generated/types/Externals.d.ts +0 -16
  175. package/dist/generated/types/Externals.js +0 -39
  176. package/dist/generated/types/HistoricalIndexData.d.ts +0 -19
  177. package/dist/generated/types/HistoricalIndexData.js +0 -44
  178. package/dist/generated/types/HistoricalOracleData.d.ts +0 -20
  179. package/dist/generated/types/HistoricalOracleData.js +0 -45
  180. package/dist/generated/types/Holding.d.ts +0 -21
  181. package/dist/generated/types/Holding.js +0 -46
  182. package/dist/generated/types/Holdings.d.ts +0 -17
  183. package/dist/generated/types/Holdings.js +0 -42
  184. package/dist/generated/types/InitControllerS2Args.d.ts +0 -23
  185. package/dist/generated/types/InitControllerS2Args.js +0 -48
  186. package/dist/generated/types/InsuranceClaim.d.ts +0 -19
  187. package/dist/generated/types/InsuranceClaim.js +0 -44
  188. package/dist/generated/types/InsuranceFund.d.ts +0 -24
  189. package/dist/generated/types/InsuranceFund.js +0 -49
  190. package/dist/generated/types/JlpRebalanceSettings.d.ts +0 -15
  191. package/dist/generated/types/JlpRebalanceSettings.js +0 -38
  192. package/dist/generated/types/KillSwitch.d.ts +0 -15
  193. package/dist/generated/types/KillSwitch.js +0 -38
  194. package/dist/generated/types/LevelRoles.d.ts +0 -16
  195. package/dist/generated/types/LevelRoles.js +0 -39
  196. package/dist/generated/types/MarketStatus.d.ts +0 -27
  197. package/dist/generated/types/MarketStatus.js +0 -54
  198. package/dist/generated/types/MarketType.d.ts +0 -20
  199. package/dist/generated/types/MarketType.js +0 -47
  200. package/dist/generated/types/MintJlpArgs.d.ts +0 -15
  201. package/dist/generated/types/MintJlpArgs.js +0 -38
  202. package/dist/generated/types/ModifyOrderParams.d.ts +0 -32
  203. package/dist/generated/types/ModifyOrderParams.js +0 -57
  204. package/dist/generated/types/ModifyOrderPolicy.d.ts +0 -20
  205. package/dist/generated/types/ModifyOrderPolicy.js +0 -47
  206. package/dist/generated/types/Movements.d.ts +0 -19
  207. package/dist/generated/types/Movements.js +0 -44
  208. package/dist/generated/types/OracleGuardRails.d.ts +0 -18
  209. package/dist/generated/types/OracleGuardRails.js +0 -43
  210. package/dist/generated/types/OracleSource.d.ts +0 -34
  211. package/dist/generated/types/OracleSource.js +0 -61
  212. package/dist/generated/types/OracleValidity.d.ts +0 -25
  213. package/dist/generated/types/OracleValidity.js +0 -52
  214. package/dist/generated/types/Order.d.ts +0 -43
  215. package/dist/generated/types/Order.js +0 -68
  216. package/dist/generated/types/OrderDirection.d.ts +0 -20
  217. package/dist/generated/types/OrderDirection.js +0 -47
  218. package/dist/generated/types/OrderParams.d.ts +0 -36
  219. package/dist/generated/types/OrderParams.js +0 -61
  220. package/dist/generated/types/OrderStatus.d.ts +0 -22
  221. package/dist/generated/types/OrderStatus.js +0 -49
  222. package/dist/generated/types/OrderTriggerCondition.d.ts +0 -22
  223. package/dist/generated/types/OrderTriggerCondition.js +0 -49
  224. package/dist/generated/types/OrderType.d.ts +0 -23
  225. package/dist/generated/types/OrderType.js +0 -50
  226. package/dist/generated/types/PermissionLevel.d.ts +0 -45
  227. package/dist/generated/types/PermissionLevel.js +0 -48
  228. package/dist/generated/types/PerpHedge.d.ts +0 -17
  229. package/dist/generated/types/PerpHedge.js +0 -42
  230. package/dist/generated/types/PerpPosition.d.ts +0 -29
  231. package/dist/generated/types/PerpPosition.js +0 -54
  232. package/dist/generated/types/PoolBalance.d.ts +0 -17
  233. package/dist/generated/types/PoolBalance.js +0 -42
  234. package/dist/generated/types/Position.d.ts +0 -20
  235. package/dist/generated/types/Position.js +0 -45
  236. package/dist/generated/types/PositionDirection.d.ts +0 -20
  237. package/dist/generated/types/PositionDirection.js +0 -47
  238. package/dist/generated/types/PositionDrift.d.ts +0 -18
  239. package/dist/generated/types/PositionDrift.js +0 -43
  240. package/dist/generated/types/PostOnlyParam.d.ts +0 -22
  241. package/dist/generated/types/PostOnlyParam.js +0 -49
  242. package/dist/generated/types/Price.d.ts +0 -41
  243. package/dist/generated/types/Price.js +0 -66
  244. package/dist/generated/types/PriceComp.d.ts +0 -19
  245. package/dist/generated/types/PriceComp.js +0 -44
  246. package/dist/generated/types/PriceDivergenceGuardRails.d.ts +0 -16
  247. package/dist/generated/types/PriceDivergenceGuardRails.js +0 -41
  248. package/dist/generated/types/PriceInfo.d.ts +0 -21
  249. package/dist/generated/types/PriceInfo.js +0 -46
  250. package/dist/generated/types/PriceStatus.d.ts +0 -22
  251. package/dist/generated/types/PriceStatus.js +0 -49
  252. package/dist/generated/types/PriceType.d.ts +0 -20
  253. package/dist/generated/types/PriceType.js +0 -47
  254. package/dist/generated/types/ProcessSwapDepositArgs.d.ts +0 -15
  255. package/dist/generated/types/ProcessSwapDepositArgs.js +0 -38
  256. package/dist/generated/types/ProcessSwapDepositIntrospectionArgs.d.ts +0 -15
  257. package/dist/generated/types/ProcessSwapDepositIntrospectionArgs.js +0 -38
  258. package/dist/generated/types/Program.d.ts +0 -19
  259. package/dist/generated/types/Program.js +0 -44
  260. package/dist/generated/types/ProgramStatus.d.ts +0 -20
  261. package/dist/generated/types/ProgramStatus.js +0 -47
  262. package/dist/generated/types/RebalanceConfig.d.ts +0 -15
  263. package/dist/generated/types/RebalanceConfig.js +0 -38
  264. package/dist/generated/types/Recipient.d.ts +0 -17
  265. package/dist/generated/types/Recipient.js +0 -42
  266. package/dist/generated/types/Recipients.d.ts +0 -17
  267. package/dist/generated/types/Recipients.js +0 -42
  268. package/dist/generated/types/RedeemJlpArgs.d.ts +0 -15
  269. package/dist/generated/types/RedeemJlpArgs.js +0 -38
  270. package/dist/generated/types/Role.d.ts +0 -25
  271. package/dist/generated/types/Role.js +0 -52
  272. package/dist/generated/types/ShiftCollateral.d.ts +0 -19
  273. package/dist/generated/types/ShiftCollateral.js +0 -44
  274. package/dist/generated/types/ShiftPosition.d.ts +0 -17
  275. package/dist/generated/types/ShiftPosition.js +0 -42
  276. package/dist/generated/types/ShortHolding.d.ts +0 -17
  277. package/dist/generated/types/ShortHolding.js +0 -42
  278. package/dist/generated/types/SplBase.d.ts +0 -17
  279. package/dist/generated/types/SplBase.js +0 -42
  280. package/dist/generated/types/SplMain.d.ts +0 -22
  281. package/dist/generated/types/SplMain.js +0 -47
  282. package/dist/generated/types/Spls.d.ts +0 -17
  283. package/dist/generated/types/Spls.js +0 -42
  284. package/dist/generated/types/SpotBalanceType.d.ts +0 -20
  285. package/dist/generated/types/SpotBalanceType.js +0 -47
  286. package/dist/generated/types/SpotPosition.d.ts +0 -23
  287. package/dist/generated/types/SpotPosition.js +0 -48
  288. package/dist/generated/types/Status.d.ts +0 -20
  289. package/dist/generated/types/Status.js +0 -47
  290. package/dist/generated/types/Strategy.d.ts +0 -31
  291. package/dist/generated/types/Strategy.js +0 -56
  292. package/dist/generated/types/StrategyRoleEntry.d.ts +0 -17
  293. package/dist/generated/types/StrategyRoleEntry.js +0 -42
  294. package/dist/generated/types/SubAccount.d.ts +0 -17
  295. package/dist/generated/types/SubAccount.js +0 -42
  296. package/dist/generated/types/Update.d.ts +0 -20
  297. package/dist/generated/types/Update.js +0 -47
  298. package/dist/generated/types/UserFees.d.ts +0 -20
  299. package/dist/generated/types/UserFees.js +0 -45
  300. package/dist/generated/types/ValidityGuardRails.d.ts +0 -18
  301. package/dist/generated/types/ValidityGuardRails.js +0 -43
  302. package/dist/generated/types/index.d.ts +0 -83
  303. package/dist/generated/types/index.js +0 -99
  304. package/dist/strategies/JlpStrategy.d.ts +0 -17
  305. package/dist/strategies/JlpStrategy.js +0 -337
  306. package/dist/strategies/LstStrategy.d.ts +0 -19
  307. package/dist/strategies/LstStrategy.js +0 -169
  308. package/dist/strategies/UsdcStrategy.d.ts +0 -12
  309. package/dist/strategies/UsdcStrategy.js +0 -89
  310. package/dist/strategies/index.d.ts +0 -3
  311. package/dist/strategies/index.js +0 -19
@@ -1,337 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.JlpStrategy = void 0;
16
- const Strategy_1 = require("../classes/Strategy");
17
- const PdaClient_1 = require("../classes/PdaClient");
18
- const generated_1 = require("../generated");
19
- const web3_js_1 = require("@solana/web3.js");
20
- const constants_1 = require("../constants");
21
- const spl_token_1 = require("@solana/spl-token");
22
- const sdk_1 = require("@drift-labs/sdk");
23
- const anchor_1 = require("@coral-xyz/anchor");
24
- const perpetuals_1 = require("../idl/perpetuals");
25
- const nodewallet_1 = __importDefault(require("@coral-xyz/anchor/dist/cjs/nodewallet"));
26
- class JlpStrategy extends Strategy_1.Strategy {
27
- constructor(connection, stablecoinMintOverride) {
28
- super(1, "JLP Hedged", connection);
29
- this.perpetuals = new anchor_1.Program(perpetuals_1.IDL, constants_1.JUPITER_PROGRAM_ID, new anchor_1.AnchorProvider(connection, new nodewallet_1.default(web3_js_1.Keypair.generate()), { commitment: "confirmed" }));
30
- this.collateralMints = [constants_1.JLP_MINT];
31
- // Otherwise has to be loaded first.
32
- if (stablecoinMintOverride)
33
- this.stablecoinMint = stablecoinMintOverride;
34
- }
35
- load() {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- const { baseStrategy: { mint } } = yield generated_1.DriftJlpController.fromAccountAddress(this.connection, this.controller);
38
- this.stablecoinMint = mint;
39
- });
40
- }
41
- initialize(signer, driftPerpMarketsHedge, cap, mint, recipientCuts, recipientAddresses, rebalanceSlippageBps) {
42
- return __awaiter(this, void 0, void 0, function* () {
43
- var _a;
44
- const [jlp] = this.collateralMints;
45
- const jlpMarketIndex = (_a = sdk_1.SpotMarkets["mainnet-beta"]
46
- .find(({ mint }) => mint.equals(jlp))) === null || _a === void 0 ? void 0 : _a.marketIndex;
47
- const spotMarketJlp = (0, sdk_1.getSpotMarketPublicKeySync)(constants_1.DRIFT_PROGRAM_ID, jlpMarketIndex);
48
- const ix = (0, generated_1.createInitDriftControllerS2Instruction)({
49
- jlpPool: PdaClient_1.PdaClient.deriveJlpPool(),
50
- jupiterProgram: constants_1.JUPITER_PROGRAM_ID,
51
- admin: signer,
52
- spotMarketJlp,
53
- adminPermissions: PdaClient_1.PdaClient.derivePermissions(signer),
54
- main: PdaClient_1.PdaClient.deriveMain(),
55
- driftJlpController: PdaClient_1.PdaClient.deriveController(this.index),
56
- perpetuals: PdaClient_1.PdaClient.deriveJupiterPerpetuals(),
57
- systemProgram: web3_js_1.SystemProgram.programId,
58
- jlpMint: jlp
59
- }, {
60
- args: {
61
- driftPerpMarketsHedge,
62
- mint,
63
- cap,
64
- jlpMarketIndex,
65
- recipientCuts,
66
- recipientAddresses,
67
- rebalanceSlippageBps
68
- }
69
- }, generated_1.PROGRAM_ID);
70
- return [ix];
71
- });
72
- }
73
- constructAccounts(signer) {
74
- return __awaiter(this, void 0, void 0, function* () {
75
- const [jlp] = this.collateralMints;
76
- const jlpControllerJlpAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(jlp, this.controller, true);
77
- const signerJlpAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(jlp, signer, true);
78
- const signerStableAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(this.stablecoinMint, signer);
79
- const accounts = {
80
- driftJlpSpotVault: yield PdaClient_1.PdaClient.getDriftVaultFromMint(jlp),
81
- driftUsdcSpotVault: yield PdaClient_1.PdaClient.getDriftVaultFromMint(constants_1.USDC_MINT),
82
- driftSigner: (0, sdk_1.getDriftSignerPublicKey)(constants_1.DRIFT_PROGRAM_ID),
83
- driftState: yield (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID),
84
- jlpController: this.controller,
85
- jlpControllerJlpAccount,
86
- jlpMint: jlp,
87
- jlpPool: PdaClient_1.PdaClient.deriveJlpPool(),
88
- jupiterProgram: constants_1.JUPITER_PROGRAM_ID,
89
- reflectDriftAccount: (0, sdk_1.getUserAccountPublicKeySync)(constants_1.DRIFT_PROGRAM_ID, this.controller, 0),
90
- reflectDriftStatsAccount: (0, sdk_1.getUserStatsAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID, this.controller),
91
- signer,
92
- stableMint: this.stablecoinMint,
93
- signerJlpAccount,
94
- signerStableAccount,
95
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
96
- driftProgram: constants_1.DRIFT_PROGRAM_ID
97
- };
98
- return accounts;
99
- });
100
- }
101
- constructRemainingAccounts() {
102
- return __awaiter(this, void 0, void 0, function* () {
103
- const jlpRemainingAccounts = [
104
- // Jupiter Collateral (SOL) Custody
105
- new web3_js_1.PublicKey("7xS2gz2bTp3fwCC7knJvUWTEU9Tycczu6VhJYKgi1wdz"),
106
- new web3_js_1.PublicKey("BUvduFTd2sWFagCunBPLupG8fBTJqweLw9DuhruNFSCm"),
107
- // Jupiter Collateral (WETH) Custody
108
- new web3_js_1.PublicKey("AQCGyheWPLeo6Qp9WpYS9m3Qj479t7R636N9ey1rEjEn"),
109
- new web3_js_1.PublicKey("Bgarxg65CEjN3kosjCW5Du3wEqvV3dpCGDR3a2HRQsYJ"),
110
- // Jupiter Collateral (WBTC) Custody
111
- new web3_js_1.PublicKey("5Pv3gM9JrFFH883SWAhvJC9RPYmo8UNxuFtv5bMMALkm"),
112
- new web3_js_1.PublicKey("FgpXg2J3TzSs7w3WGYYE7aWePdrxBVLCXSxmAKnCZNtZ"),
113
- // Jupiter Collateral (USDC) Custody
114
- new web3_js_1.PublicKey("G18jKKXQwBbrHeiK3C9MRXhkHsLHf7XgCSisykV46EZa"),
115
- new web3_js_1.PublicKey("WzWUoCmtVv7eqAbU3BfKPU3fhLP6CXR8NCJH78UK9VS"),
116
- // Jupiter Collateral (USDT) Custody
117
- new web3_js_1.PublicKey("4vkNeXiYEUizLdrpdPS1eC2mccyM4NUPRtERrk6ZETkk"),
118
- new web3_js_1.PublicKey("Gex24YznvguMad1mBzTQ7a64U1CJy59gvsStQmNnnwAd"),
119
- // Doves Oracles
120
- new web3_js_1.PublicKey("FYq2BWQ1V5P1WFBqr3qB2Kb5yHVvSv7upzKodgQE5zXh"),
121
- new web3_js_1.PublicKey("AFZnHPzy4mvVCffrVwhewHbFc93uTHvDSFrVH7GtfXF1"),
122
- new web3_js_1.PublicKey("hUqAT1KQ7eW1i6Csp9CXYtpPfSAvi835V7wKi5fRfmC"),
123
- new web3_js_1.PublicKey("6Jp2xZUTWdDD2ZyUPRzeMdc6AFQ5K3pFgZxk2EijfjnM"),
124
- new web3_js_1.PublicKey("Fgc93D641F8N2d1xLjQ4jmShuD3GE3BsCXA56KBQbF5u"),
125
- // Pythnet Custody Price (SOL) Account
126
- new web3_js_1.PublicKey("7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE"),
127
- // Pythnet Custody Price (WETH) Account
128
- new web3_js_1.PublicKey("42amVS4KgzR9rA28tkVYqVXjq9Qa8dcZQMbH5EYFX6XC"),
129
- // Pythnet Custody Price (WBTC) Account
130
- new web3_js_1.PublicKey("4cSM2e6rvbGQUFiJbqytoVMi5GgghSMr8LwVrT9VPSPo"),
131
- // Pythnet Custody Price (USDC) Account
132
- new web3_js_1.PublicKey("Dpw1EAVrSB1ibxiDQyTAW6Zip3J4Btk2x4SgApQCeFbX"),
133
- // Pythnet Custody Price (USDT) Account
134
- new web3_js_1.PublicKey("HT2PLQBcG5EiCcNSaMHAjSgd9F98ecpATbk4Sk5oYuM"),
135
- ].map(pubkey => ({
136
- pubkey,
137
- isWritable: true,
138
- isSigner: false
139
- }));
140
- const [jlp] = this.collateralMints;
141
- const { marketIndex: jlpMarketIndex, oracle: jlpOracle } = sdk_1.SpotMarkets["mainnet-beta"]
142
- .find(({ mint }) => mint.equals(jlp));
143
- const jlpSpotMarket = (0, sdk_1.getSpotMarketPublicKeySync)(constants_1.DRIFT_PROGRAM_ID, jlpMarketIndex);
144
- const { marketIndex: usdcMarketIndex, oracle: usdcOracle, } = sdk_1.SpotMarkets["mainnet-beta"]
145
- .find(({ marketIndex }) => marketIndex === 0);
146
- const { driftPerpMarketsHedge } = yield generated_1.DriftJlpController
147
- .fromAccountAddress(this.connection, this.controller);
148
- const remainingOracles = [];
149
- const remainingPerpMarkets = [];
150
- driftPerpMarketsHedge
151
- .forEach(({ marketIndex }) => {
152
- const perpMarket = (0, sdk_1.getPerpMarketPublicKeySync)(constants_1.DRIFT_PROGRAM_ID, marketIndex);
153
- const { oracle } = sdk_1.PerpMarkets["mainnet-beta"]
154
- .find(({ marketIndex: index }) => index === marketIndex);
155
- remainingOracles.push(oracle);
156
- remainingPerpMarkets.push(perpMarket);
157
- });
158
- const usdcSpotMarket = yield (0, sdk_1.getSpotMarketPublicKey)(constants_1.DRIFT_PROGRAM_ID, usdcMarketIndex);
159
- const driftRemainingAccounts = [
160
- ...remainingOracles,
161
- jlpOracle,
162
- usdcOracle,
163
- jlpSpotMarket,
164
- usdcSpotMarket,
165
- ...remainingPerpMarkets
166
- ].map(pubkey => ({
167
- pubkey,
168
- isWritable: true, // should this be writable?
169
- isSigner: false
170
- }));
171
- return [
172
- ...jlpRemainingAccounts,
173
- ...driftRemainingAccounts,
174
- ];
175
- });
176
- }
177
- constructRemainingAccountsForRebalance() {
178
- return __awaiter(this, void 0, void 0, function* () {
179
- const jlpRemainingAccounts = [
180
- // Jupiter Collateral (SOL) Custody
181
- new web3_js_1.PublicKey("7xS2gz2bTp3fwCC7knJvUWTEU9Tycczu6VhJYKgi1wdz"),
182
- // Jupiter Collateral (WETH) Custody
183
- new web3_js_1.PublicKey("AQCGyheWPLeo6Qp9WpYS9m3Qj479t7R636N9ey1rEjEn"),
184
- // Jupiter Collateral (WBTC) Custody
185
- new web3_js_1.PublicKey("5Pv3gM9JrFFH883SWAhvJC9RPYmo8UNxuFtv5bMMALkm"),
186
- // Jupiter Collateral (USDC) Custody
187
- new web3_js_1.PublicKey("G18jKKXQwBbrHeiK3C9MRXhkHsLHf7XgCSisykV46EZa"),
188
- // Jupiter Collateral (USDT) Custody
189
- new web3_js_1.PublicKey("4vkNeXiYEUizLdrpdPS1eC2mccyM4NUPRtERrk6ZETkk"),
190
- // Doves Oracles
191
- new web3_js_1.PublicKey("FYq2BWQ1V5P1WFBqr3qB2Kb5yHVvSv7upzKodgQE5zXh"),
192
- new web3_js_1.PublicKey("AFZnHPzy4mvVCffrVwhewHbFc93uTHvDSFrVH7GtfXF1"),
193
- new web3_js_1.PublicKey("hUqAT1KQ7eW1i6Csp9CXYtpPfSAvi835V7wKi5fRfmC"),
194
- new web3_js_1.PublicKey("6Jp2xZUTWdDD2ZyUPRzeMdc6AFQ5K3pFgZxk2EijfjnM"),
195
- new web3_js_1.PublicKey("Fgc93D641F8N2d1xLjQ4jmShuD3GE3BsCXA56KBQbF5u"),
196
- // Pythnet Custody Price (SOL) Account
197
- new web3_js_1.PublicKey("7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE"),
198
- // Pythnet Custody Price (WETH) Account
199
- new web3_js_1.PublicKey("42amVS4KgzR9rA28tkVYqVXjq9Qa8dcZQMbH5EYFX6XC"),
200
- // Pythnet Custody Price (WBTC) Account
201
- new web3_js_1.PublicKey("4cSM2e6rvbGQUFiJbqytoVMi5GgghSMr8LwVrT9VPSPo"),
202
- // Pythnet Custody Price (USDC) Account
203
- new web3_js_1.PublicKey("Dpw1EAVrSB1ibxiDQyTAW6Zip3J4Btk2x4SgApQCeFbX"),
204
- // Pythnet Custody Price (USDT) Account
205
- new web3_js_1.PublicKey("HT2PLQBcG5EiCcNSaMHAjSgd9F98ecpATbk4Sk5oYuM"),
206
- ].map(pubkey => ({
207
- pubkey,
208
- isWritable: true,
209
- isSigner: false
210
- }));
211
- const [jlp] = this.collateralMints;
212
- const { marketIndex: jlpMarketIndex, oracle: jlpOracle } = sdk_1.SpotMarkets["mainnet-beta"]
213
- .find(({ mint }) => mint.equals(jlp));
214
- const jlpSpotMarket = (0, sdk_1.getSpotMarketPublicKeySync)(constants_1.DRIFT_PROGRAM_ID, jlpMarketIndex);
215
- const { marketIndex: usdcMarketIndex, oracle: usdcOracle, } = sdk_1.SpotMarkets["mainnet-beta"]
216
- .find(({ marketIndex }) => marketIndex === 0);
217
- const { driftPerpMarketsHedge } = yield generated_1.DriftJlpController
218
- .fromAccountAddress(this.connection, this.controller);
219
- const remainingOracles = [];
220
- const remainingPerpMarkets = [];
221
- driftPerpMarketsHedge
222
- .forEach(({ marketIndex }) => {
223
- const perpMarket = (0, sdk_1.getPerpMarketPublicKeySync)(constants_1.DRIFT_PROGRAM_ID, marketIndex);
224
- const { oracle } = sdk_1.PerpMarkets["mainnet-beta"]
225
- .find(({ marketIndex: index }) => index === marketIndex);
226
- remainingOracles.push(oracle);
227
- remainingPerpMarkets.push(perpMarket);
228
- });
229
- const usdcSpotMarket = yield (0, sdk_1.getSpotMarketPublicKey)(constants_1.DRIFT_PROGRAM_ID, usdcMarketIndex);
230
- const driftRemainingAccounts = [
231
- ...remainingOracles,
232
- jlpOracle,
233
- usdcOracle,
234
- jlpSpotMarket,
235
- usdcSpotMarket,
236
- ...remainingPerpMarkets
237
- ].map(pubkey => ({
238
- pubkey,
239
- isWritable: true, // should this be writable?
240
- isSigner: false
241
- }));
242
- return [
243
- ...jlpRemainingAccounts,
244
- ...driftRemainingAccounts,
245
- ];
246
- });
247
- }
248
- mint(signer, amount) {
249
- return __awaiter(this, void 0, void 0, function* () {
250
- const accounts = yield this.constructAccounts(signer);
251
- const tokenAccountInstructions = yield this.initializeTokenAccounts(signer, [this.stablecoinMint, this.collateralMints[0]], signer);
252
- const ix = (0, generated_1.createMintDriftS2Instruction)(Object.assign(Object.assign({}, accounts), { anchorRemainingAccounts: yield this.constructRemainingAccounts() }), {
253
- args: {
254
- amount
255
- }
256
- }, generated_1.PROGRAM_ID);
257
- return [
258
- ...tokenAccountInstructions,
259
- ix
260
- ];
261
- });
262
- }
263
- redeem(signer, amount, minimumReceived) {
264
- return __awaiter(this, void 0, void 0, function* () {
265
- const accounts = yield this.constructAccounts(signer);
266
- const ix = (0, generated_1.createRedeemDriftS2Instruction)(Object.assign(Object.assign({}, accounts), { anchorRemainingAccounts: yield this.constructRemainingAccounts() }), {
267
- args: {
268
- stableAmount: amount,
269
- }
270
- }, generated_1.PROGRAM_ID);
271
- return [ix];
272
- });
273
- }
274
- redeem2(signer, amount, minimumReceived) {
275
- return __awaiter(this, void 0, void 0, function* () {
276
- const accounts = yield this.constructAccounts(signer);
277
- const ix = (0, generated_1.createRedeem2DriftS2Instruction)(Object.assign(Object.assign({}, accounts), { anchorRemainingAccounts: yield this.constructRemainingAccounts() }), {
278
- args: {
279
- stableAmount: amount,
280
- }
281
- }, generated_1.PROGRAM_ID);
282
- return [ix];
283
- });
284
- }
285
- // rebalance() {
286
- // const ix = new TransactionInstruction({
287
- // keys: [],
288
- // data: Buffer.from(""),
289
- // programId: new PublicKey(0)
290
- // });
291
- //
292
- // return [ix];
293
- // }
294
- rebalance(signer) {
295
- return __awaiter(this, void 0, void 0, function* () {
296
- const [jlpMint] = this.collateralMints;
297
- const jlpControllerJlpAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(jlpMint, this.controller, true);
298
- const jlpControllerUsdcAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(constants_1.USDC_MINT, this.controller, true);
299
- const jlpPool = PdaClient_1.PdaClient.deriveJlpPool();
300
- const jlpUsdcCustody = PdaClient_1.PdaClient.deriveCustody(jlpPool, constants_1.USDC_MINT);
301
- const { oracle: { oracleAccount: pythOracle },
302
- // dovesOracle,
303
- tokenAccount: jlpUsdcCustodyTokenAccount, } = yield this.perpetuals
304
- .account
305
- .custody
306
- .fetch(jlpUsdcCustody);
307
- const ix = (0, generated_1.createRebalanceJlpInstruction)({
308
- jlpPool,
309
- driftJlpSpotVault: yield PdaClient_1.PdaClient.getDriftVaultFromMint(jlpMint),
310
- driftProgram: constants_1.DRIFT_PROGRAM_ID,
311
- driftSigner: (0, sdk_1.getDriftSignerPublicKey)(constants_1.DRIFT_PROGRAM_ID),
312
- driftState: yield (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID),
313
- jlpController: this.controller,
314
- jlpControllerJlpAccount,
315
- jlpMint,
316
- driftUsdcSpotVault: yield PdaClient_1.PdaClient.getDriftVaultFromMint(constants_1.USDC_MINT),
317
- signer,
318
- jlpControllerUsdcAccount,
319
- jlpPerpetuals: PdaClient_1.PdaClient.deriveJupiterPerpetuals(),
320
- reflectDriftAccount: (0, sdk_1.getUserAccountPublicKeySync)(constants_1.DRIFT_PROGRAM_ID, this.controller, 0),
321
- jupiterProgram: constants_1.JUPITER_PROGRAM_ID,
322
- jlpEventAuthority: PdaClient_1.PdaClient.deriveEventAuthority(),
323
- jlpTransferAuthority: PdaClient_1.PdaClient.deriveTransferAuthority(),
324
- reflectDriftStatsAccount: (0, sdk_1.getUserStatsAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID, this.controller),
325
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
326
- jlpUsdcCustodyDovesPriceAccount: new web3_js_1.PublicKey("6Jp2xZUTWdDD2ZyUPRzeMdc6AFQ5K3pFgZxk2EijfjnM"),
327
- jlpUsdcCustody,
328
- usdcMint: constants_1.USDC_MINT,
329
- jlpUsdcCustodyPythnetPriceAccount: pythOracle,
330
- jlpUsdcCustodyTokenAccount,
331
- anchorRemainingAccounts: yield this.constructRemainingAccountsForRebalance()
332
- }, generated_1.PROGRAM_ID);
333
- return [ix];
334
- });
335
- }
336
- }
337
- exports.JlpStrategy = JlpStrategy;
@@ -1,19 +0,0 @@
1
- import { Strategy } from "../classes/Strategy";
2
- import { Connection, PublicKey, TransactionInstruction } from "@solana/web3.js";
3
- import { DriftLstData } from "../generated";
4
- import BN from "bn.js";
5
- export declare class LstStrategy extends Strategy {
6
- lstMap: DriftLstData[];
7
- constructor(connection: Connection, stablecoinMintOverride?: PublicKey, collateralMintsOverride?: PublicKey[]);
8
- load(connection: Connection): Promise<void>;
9
- initialize(signer: PublicKey, cap: BN, mint: PublicKey, recipientAddresses: PublicKey[], recipientCuts: number[]): Promise<TransactionInstruction[]>;
10
- constructAccounts<T>(signer: PublicKey, lst: PublicKey): Promise<T>;
11
- constructRemainingAccounts(): Promise<{
12
- pubkey: PublicKey;
13
- isWritable: boolean;
14
- isSigner: boolean;
15
- }[]>;
16
- mint(signer: PublicKey, amount: BN | number, minimumReceived: number | BN, lst: PublicKey): Promise<TransactionInstruction[]>;
17
- redeem(signer: PublicKey, amount: BN | number, minimumReceived: number | BN, lst: PublicKey): Promise<TransactionInstruction[]>;
18
- rebalance(): Promise<TransactionInstruction[]>;
19
- }
@@ -1,169 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.LstStrategy = void 0;
16
- const Strategy_1 = require("../classes/Strategy");
17
- const web3_js_1 = require("@solana/web3.js");
18
- const classes_1 = require("../classes");
19
- const constants_1 = require("../constants");
20
- const generated_1 = require("../generated");
21
- const sdk_1 = require("@drift-labs/sdk");
22
- const spl_token_1 = require("@solana/spl-token");
23
- const nodewallet_1 = __importDefault(require("@coral-xyz/anchor/dist/cjs/nodewallet"));
24
- class LstStrategy extends Strategy_1.Strategy {
25
- constructor(connection, stablecoinMintOverride, collateralMintsOverride) {
26
- super(2, "Single-Sided LST Delta-Neutral", connection);
27
- this.driftClient = new sdk_1.DriftClient({
28
- connection,
29
- env: "mainnet-beta",
30
- wallet: new nodewallet_1.default(web3_js_1.Keypair.generate())
31
- });
32
- // Otherwise has to be loaded first.
33
- if (stablecoinMintOverride)
34
- this.stablecoinMint = stablecoinMintOverride;
35
- if (collateralMintsOverride)
36
- this.collateralMints = collateralMintsOverride;
37
- }
38
- load(connection) {
39
- return __awaiter(this, void 0, void 0, function* () {
40
- const { lsts, baseStrategy: { mint } } = yield generated_1.DriftLstController.fromAccountAddress(connection, this.controller);
41
- this.stablecoinMint = mint;
42
- this.lstMap = lsts;
43
- this.collateralMints = lsts.map(({ marketIndex }) => {
44
- var _a;
45
- return (_a = sdk_1.SpotMarkets["mainnet-beta"]
46
- .find(({ marketIndex: index }) => index === marketIndex)) === null || _a === void 0 ? void 0 : _a.mint;
47
- });
48
- });
49
- }
50
- initialize(signer, cap, mint, recipientAddresses, recipientCuts) {
51
- return __awaiter(this, void 0, void 0, function* () {
52
- const ix = (0, generated_1.createInitDriftControllerS3Instruction)({
53
- admin: signer,
54
- adminPermissions: classes_1.PdaClient.derivePermissions(signer),
55
- main: classes_1.PdaClient.deriveMain(),
56
- systemProgram: web3_js_1.SystemProgram.programId,
57
- driftLstController: this.controller
58
- }, {
59
- mint,
60
- cap,
61
- recipientAddresses,
62
- recipientCuts
63
- }, generated_1.PROGRAM_ID);
64
- return [ix];
65
- });
66
- }
67
- constructAccounts(signer, lst) {
68
- return __awaiter(this, void 0, void 0, function* () {
69
- const { marketIndex: lstMarketIndex } = sdk_1.SpotMarkets["mainnet-beta"]
70
- .find(market => market.mint.equals(lst));
71
- const spotMarketVault = yield (0, sdk_1.getSpotMarketVaultPublicKey)(constants_1.DRIFT_PROGRAM_ID, lstMarketIndex);
72
- const usdcMarketVault = yield (0, sdk_1.getSpotMarketVaultPublicKey)(constants_1.DRIFT_PROGRAM_ID, 0);
73
- const { subAccountId } = this.lstMap.find(({ marketIndex }) => marketIndex == lstMarketIndex);
74
- const userLstAta = (0, spl_token_1.getAssociatedTokenAddressSync)(lst, signer);
75
- const controllerLstAta = (0, spl_token_1.getAssociatedTokenAddressSync)(this.controller, signer, true);
76
- const userReflectAta = (0, spl_token_1.getAssociatedTokenAddressSync)(this.stablecoinMint, signer);
77
- const userAccount = (0, sdk_1.getUserAccountPublicKeySync)(constants_1.DRIFT_PROGRAM_ID, this.controller, subAccountId);
78
- const { referrer } = yield (0, sdk_1.fetchUserStatsAccount)(this.connection, this.driftClient.program, userAccount);
79
- const referrerUserStats = (0, sdk_1.getUserStatsAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID, referrer);
80
- const accounts = {
81
- adminPermissions: null,
82
- drift: constants_1.DRIFT_PROGRAM_ID,
83
- main: classes_1.PdaClient.deriveMain(),
84
- clock: web3_js_1.SYSVAR_CLOCK_PUBKEY,
85
- controllerLstAta,
86
- lstController: this.controller,
87
- driftVault: constants_1.DRIFT_VAULT,
88
- stableMint: this.stablecoinMint,
89
- user: signer,
90
- userStats: (0, sdk_1.getUserStatsAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID, this.controller),
91
- referrerUser: referrer,
92
- state: yield (0, sdk_1.getDriftStateAccountPublicKey)(constants_1.DRIFT_PROGRAM_ID),
93
- referrerUserStats,
94
- spotMarketVault,
95
- systemProgram: web3_js_1.SystemProgram.programId,
96
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
97
- userAccount,
98
- userLstAta,
99
- userReflectAta,
100
- };
101
- return accounts;
102
- });
103
- }
104
- constructRemainingAccounts() {
105
- return __awaiter(this, void 0, void 0, function* () {
106
- const { marketIndex: usdcMarketIndex, oracle: usdcOracle, } = sdk_1.SpotMarkets["mainnet-beta"]
107
- .find(({ marketIndex }) => marketIndex === 0);
108
- const usdcSpotMarket = yield (0, sdk_1.getSpotMarketPublicKey)(constants_1.DRIFT_PROGRAM_ID, usdcMarketIndex);
109
- const { oracle: solanaOracle, } = sdk_1.SpotMarkets["mainnet-beta"]
110
- .find(({ marketIndex }) => marketIndex === 1);
111
- const { marketIndex: solanaPerpMarketIndex } = sdk_1.PerpMarkets["mainnet-beta"]
112
- .find(({ marketIndex }) => marketIndex === 0);
113
- const solanaPerpMarket = yield (0, sdk_1.getPerpMarketPublicKey)(constants_1.DRIFT_PROGRAM_ID, solanaPerpMarketIndex);
114
- const remainingOracles = [];
115
- const remainingSpots = [];
116
- this.lstMap.map(({ marketIndex }) => {
117
- const oracle = sdk_1.SpotMarkets["mainnet-beta"].find(({ marketIndex: m }) => m == marketIndex).oracle;
118
- const spotMarket = (0, sdk_1.getSpotMarketPublicKeySync)(constants_1.DRIFT_PROGRAM_ID, marketIndex);
119
- remainingOracles.push(oracle);
120
- remainingSpots.push(spotMarket);
121
- });
122
- const remainingAccounts = [
123
- ...remainingOracles,
124
- usdcOracle,
125
- solanaOracle,
126
- ...remainingSpots,
127
- usdcSpotMarket,
128
- solanaPerpMarket
129
- ];
130
- return remainingAccounts.map(pubkey => ({
131
- pubkey,
132
- isWritable: false,
133
- isSigner: false
134
- }));
135
- });
136
- }
137
- mint(signer, amount, minimumReceived, lst) {
138
- return __awaiter(this, void 0, void 0, function* () {
139
- const accounts = yield this.constructAccounts(signer, lst);
140
- const ix = (0, generated_1.createMintDriftS3Instruction)(Object.assign(Object.assign({}, accounts), { anchorRemainingAccounts: yield this.constructRemainingAccounts() }), {
141
- lstAmount: amount,
142
- minUsdrAmount: minimumReceived
143
- }, generated_1.PROGRAM_ID);
144
- return [ix];
145
- });
146
- }
147
- redeem(signer, amount, minimumReceived, lst) {
148
- return __awaiter(this, void 0, void 0, function* () {
149
- const accounts = yield this.constructAccounts(signer, lst);
150
- const ix = (0, generated_1.createRedeemDriftS3Instruction)(Object.assign(Object.assign({}, accounts), { anchorRemainingAccounts: yield this.constructRemainingAccounts() }), {
151
- canChill: false,
152
- minLstRedeem: minimumReceived,
153
- rusdBurnAmount: amount
154
- }, generated_1.PROGRAM_ID);
155
- return [ix];
156
- });
157
- }
158
- rebalance() {
159
- return __awaiter(this, void 0, void 0, function* () {
160
- const ix = new web3_js_1.TransactionInstruction({
161
- programId: web3_js_1.Keypair.generate().publicKey,
162
- keys: [],
163
- data: null
164
- });
165
- return [ix];
166
- });
167
- }
168
- }
169
- exports.LstStrategy = LstStrategy;
@@ -1,12 +0,0 @@
1
- import { Strategy } from "../classes/Strategy";
2
- import { Connection, PublicKey, TransactionInstruction } from "@solana/web3.js";
3
- import BN from "bn.js";
4
- export declare class UsdcStrategy extends Strategy {
5
- constructor(connection: Connection, stablecoinMintOverride?: PublicKey);
6
- initialize(signer: PublicKey, mint: PublicKey, cap: BN, recipientAddresses: PublicKey[], recipientCuts: number[]): Promise<TransactionInstruction[]>;
7
- constructAccounts<T>(signer: PublicKey): Promise<T>;
8
- constructRemainingAccounts(): Promise<any[]>;
9
- mint(): Promise<TransactionInstruction[]>;
10
- redeem(): Promise<TransactionInstruction[]>;
11
- rebalance(): Promise<TransactionInstruction[]>;
12
- }
@@ -1,89 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.UsdcStrategy = void 0;
13
- const Strategy_1 = require("../classes/Strategy");
14
- const web3_js_1 = require("@solana/web3.js");
15
- const classes_1 = require("../classes");
16
- const constants_1 = require("../constants");
17
- const generated_1 = require("../generated");
18
- const sdk_1 = require("@drift-labs/sdk");
19
- class UsdcStrategy extends Strategy_1.Strategy {
20
- constructor(connection, stablecoinMintOverride) {
21
- super(0, "USDC Money Market", connection);
22
- this.collateralMints = [constants_1.USDC_MINT];
23
- // Otherwise has to be loaded first.
24
- if (stablecoinMintOverride)
25
- this.stablecoinMint = stablecoinMintOverride;
26
- }
27
- initialize(signer, mint, cap, recipientAddresses, recipientCuts) {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- const ix = (0, generated_1.createInitDriftControllerS1Instruction)(Object.assign({}, (yield this.constructAccounts(signer))), {
30
- mint,
31
- cap,
32
- recipientAddresses,
33
- recipientCuts
34
- }, generated_1.PROGRAM_ID);
35
- return [ix];
36
- });
37
- }
38
- constructAccounts(signer) {
39
- return __awaiter(this, void 0, void 0, function* () {
40
- const spotMarketUsdc = (0, sdk_1.getSpotMarketPublicKeySync)(constants_1.DRIFT_PROGRAM_ID, 0);
41
- const accounts = {
42
- admin: signer,
43
- adminPermissions: classes_1.PdaClient.derivePermissions(signer),
44
- main: classes_1.PdaClient.deriveMain(),
45
- driftUsdcController: this.controller,
46
- systemProgram: web3_js_1.SystemProgram.programId,
47
- spotMarketUsdc
48
- };
49
- return accounts;
50
- });
51
- }
52
- constructRemainingAccounts() {
53
- return __awaiter(this, void 0, void 0, function* () {
54
- return [];
55
- });
56
- }
57
- ;
58
- mint() {
59
- return __awaiter(this, void 0, void 0, function* () {
60
- const ix = new web3_js_1.TransactionInstruction({
61
- programId: web3_js_1.Keypair.generate().publicKey,
62
- data: Buffer.from(""),
63
- keys: []
64
- });
65
- return [ix];
66
- });
67
- }
68
- redeem() {
69
- return __awaiter(this, void 0, void 0, function* () {
70
- const ix = new web3_js_1.TransactionInstruction({
71
- programId: web3_js_1.Keypair.generate().publicKey,
72
- data: Buffer.from(""),
73
- keys: []
74
- });
75
- return [ix];
76
- });
77
- }
78
- rebalance() {
79
- return __awaiter(this, void 0, void 0, function* () {
80
- const ix = new web3_js_1.TransactionInstruction({
81
- programId: web3_js_1.Keypair.generate().publicKey,
82
- data: Buffer.from(""),
83
- keys: []
84
- });
85
- return [ix];
86
- });
87
- }
88
- }
89
- exports.UsdcStrategy = UsdcStrategy;
@@ -1,3 +0,0 @@
1
- export * from "./JlpStrategy";
2
- export * from "./LstStrategy";
3
- export * from "./UsdcStrategy";
@@ -1,19 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./JlpStrategy"), exports);
18
- __exportStar(require("./LstStrategy"), exports);
19
- __exportStar(require("./UsdcStrategy"), exports);