@reflectmoney/stable.ts 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/README.md +178 -7
  2. package/dist/classes/PdaClient.d.ts +112 -0
  3. package/dist/classes/PdaClient.js +112 -0
  4. package/dist/classes/ReflectAdmin.d.ts +87 -2
  5. package/dist/classes/ReflectAdmin.js +84 -1
  6. package/dist/classes/ReflectTokenisedBond.d.ts +57 -0
  7. package/dist/classes/ReflectTokenisedBond.js +56 -0
  8. package/dist/classes/Stablecoin.d.ts +139 -1
  9. package/dist/classes/Stablecoin.js +83 -1
  10. package/dist/stablecoins/LstStablecoin.d.ts +47 -0
  11. package/dist/stablecoins/LstStablecoin.js +46 -0
  12. package/package.json +1 -1
  13. package/dist/classes/Strategy.d.ts +0 -30
  14. package/dist/classes/Strategy.js +0 -196
  15. package/dist/generated/accounts/DriftJlpController.d.ts +0 -114
  16. package/dist/generated/accounts/DriftJlpController.js +0 -169
  17. package/dist/generated/accounts/DriftLstController.d.ts +0 -108
  18. package/dist/generated/accounts/DriftLstController.js +0 -165
  19. package/dist/generated/accounts/DriftUsdcController.d.ts +0 -102
  20. package/dist/generated/accounts/DriftUsdcController.js +0 -158
  21. package/dist/generated/accounts/Main.d.ts +0 -110
  22. package/dist/generated/accounts/Main.js +0 -165
  23. package/dist/generated/accounts/PerpMarket.d.ts +0 -226
  24. package/dist/generated/accounts/PerpMarket.js +0 -307
  25. package/dist/generated/accounts/PrelaunchOracle.d.ts +0 -130
  26. package/dist/generated/accounts/PrelaunchOracle.js +0 -224
  27. package/dist/generated/accounts/PythLazerOracle.d.ts +0 -124
  28. package/dist/generated/accounts/PythLazerOracle.js +0 -210
  29. package/dist/generated/accounts/RebalanceLst.d.ts +0 -111
  30. package/dist/generated/accounts/RebalanceLst.js +0 -175
  31. package/dist/generated/accounts/SpotMarket.d.ts +0 -377
  32. package/dist/generated/accounts/SpotMarket.js +0 -601
  33. package/dist/generated/accounts/User.d.ts +0 -221
  34. package/dist/generated/accounts/User.js +0 -331
  35. package/dist/generated/accounts/UserPermissions.d.ts +0 -106
  36. package/dist/generated/accounts/UserPermissions.js +0 -161
  37. package/dist/generated/accounts/UserStats.d.ts +0 -211
  38. package/dist/generated/accounts/UserStats.js +0 -323
  39. package/dist/generated/accounts/index.d.ts +0 -38
  40. package/dist/generated/accounts/index.js +0 -55
  41. package/dist/generated/errors/index.d.ts +0 -1024
  42. package/dist/generated/errors/index.js +0 -1761
  43. package/dist/generated/index.d.ts +0 -19
  44. package/dist/generated/index.js +0 -36
  45. package/dist/generated/instructions/addLstDrift.d.ts +0 -49
  46. package/dist/generated/instructions/addLstDrift.js +0 -106
  47. package/dist/generated/instructions/addSubAccount.d.ts +0 -54
  48. package/dist/generated/instructions/addSubAccount.js +0 -121
  49. package/dist/generated/instructions/adjustHedgeS2.d.ts +0 -69
  50. package/dist/generated/instructions/adjustHedgeS2.js +0 -157
  51. package/dist/generated/instructions/captureSpreadDrift.d.ts +0 -56
  52. package/dist/generated/instructions/captureSpreadDrift.js +0 -120
  53. package/dist/generated/instructions/createAdminAccount.d.ts +0 -53
  54. package/dist/generated/instructions/createAdminAccount.js +0 -95
  55. package/dist/generated/instructions/createUserStatsAccount.d.ts +0 -54
  56. package/dist/generated/instructions/createUserStatsAccount.js +0 -121
  57. package/dist/generated/instructions/depositDrift.d.ts +0 -73
  58. package/dist/generated/instructions/depositDrift.js +0 -142
  59. package/dist/generated/instructions/freezeProgram.d.ts +0 -54
  60. package/dist/generated/instructions/freezeProgram.js +0 -95
  61. package/dist/generated/instructions/freezeProtocolAction.d.ts +0 -55
  62. package/dist/generated/instructions/freezeProtocolAction.js +0 -96
  63. package/dist/generated/instructions/freezeStrategyAction.d.ts +0 -58
  64. package/dist/generated/instructions/freezeStrategyAction.js +0 -102
  65. package/dist/generated/instructions/index.d.ts +0 -41
  66. package/dist/generated/instructions/index.js +0 -57
  67. package/dist/generated/instructions/initDriftAccountsS1.d.ts +0 -56
  68. package/dist/generated/instructions/initDriftAccountsS1.js +0 -126
  69. package/dist/generated/instructions/initDriftControllerS1.d.ts +0 -60
  70. package/dist/generated/instructions/initDriftControllerS1.js +0 -108
  71. package/dist/generated/instructions/initDriftControllerS2.d.ts +0 -66
  72. package/dist/generated/instructions/initDriftControllerS2.js +0 -125
  73. package/dist/generated/instructions/initDriftControllerS3.d.ts +0 -58
  74. package/dist/generated/instructions/initDriftControllerS3.js +0 -103
  75. package/dist/generated/instructions/initMain.d.ts +0 -43
  76. package/dist/generated/instructions/initMain.js +0 -91
  77. package/dist/generated/instructions/mintDriftS1.d.ts +0 -90
  78. package/dist/generated/instructions/mintDriftS1.js +0 -184
  79. package/dist/generated/instructions/mintDriftS2.d.ts +0 -80
  80. package/dist/generated/instructions/mintDriftS2.js +0 -161
  81. package/dist/generated/instructions/mintDriftS3.d.ts +0 -86
  82. package/dist/generated/instructions/mintDriftS3.js +0 -174
  83. package/dist/generated/instructions/processSwapDeposit.d.ts +0 -79
  84. package/dist/generated/instructions/processSwapDeposit.js +0 -161
  85. package/dist/generated/instructions/processSwapDepositIntrospection.d.ts +0 -79
  86. package/dist/generated/instructions/processSwapDepositIntrospection.js +0 -161
  87. package/dist/generated/instructions/processSwapWithdraw.d.ts +0 -68
  88. package/dist/generated/instructions/processSwapWithdraw.js +0 -157
  89. package/dist/generated/instructions/processSwapWithdrawIntrospection.d.ts +0 -68
  90. package/dist/generated/instructions/processSwapWithdrawIntrospection.js +0 -157
  91. package/dist/generated/instructions/rebalanceJlp.d.ts +0 -81
  92. package/dist/generated/instructions/rebalanceJlp.js +0 -187
  93. package/dist/generated/instructions/redeem2DriftS2.d.ts +0 -80
  94. package/dist/generated/instructions/redeem2DriftS2.js +0 -161
  95. package/dist/generated/instructions/redeemDriftS1.d.ts +0 -91
  96. package/dist/generated/instructions/redeemDriftS1.js +0 -185
  97. package/dist/generated/instructions/redeemDriftS2.d.ts +0 -80
  98. package/dist/generated/instructions/redeemDriftS2.js +0 -161
  99. package/dist/generated/instructions/redeemDriftS3.d.ts +0 -87
  100. package/dist/generated/instructions/redeemDriftS3.js +0 -175
  101. package/dist/generated/instructions/settlePnl.d.ts +0 -55
  102. package/dist/generated/instructions/settlePnl.js +0 -114
  103. package/dist/generated/instructions/settlePnlMulti.d.ts +0 -65
  104. package/dist/generated/instructions/settlePnlMulti.js +0 -117
  105. package/dist/generated/instructions/suspendLstProtocol.d.ts +0 -54
  106. package/dist/generated/instructions/suspendLstProtocol.js +0 -96
  107. package/dist/generated/instructions/suspendLstStrategy.d.ts +0 -56
  108. package/dist/generated/instructions/suspendLstStrategy.js +0 -101
  109. package/dist/generated/instructions/swapOrca.d.ts +0 -78
  110. package/dist/generated/instructions/swapOrca.js +0 -153
  111. package/dist/generated/instructions/swapOrcaTwoHop.d.ts +0 -98
  112. package/dist/generated/instructions/swapOrcaTwoHop.js +0 -200
  113. package/dist/generated/instructions/updateActionRoleProtocol.d.ts +0 -58
  114. package/dist/generated/instructions/updateActionRoleProtocol.js +0 -99
  115. package/dist/generated/instructions/updateActionRoleStrategy.d.ts +0 -61
  116. package/dist/generated/instructions/updateActionRoleStrategy.js +0 -105
  117. package/dist/generated/instructions/updateAttenuation.d.ts +0 -56
  118. package/dist/generated/instructions/updateAttenuation.js +0 -100
  119. package/dist/generated/instructions/updateCap.d.ts +0 -55
  120. package/dist/generated/instructions/updateCap.js +0 -99
  121. package/dist/generated/instructions/updateRebalanceSlippage.d.ts +0 -55
  122. package/dist/generated/instructions/updateRebalanceSlippage.js +0 -99
  123. package/dist/generated/instructions/updateRecipients.d.ts +0 -56
  124. package/dist/generated/instructions/updateRecipients.js +0 -101
  125. package/dist/generated/instructions/updateRoleHolderProtocol.d.ts +0 -61
  126. package/dist/generated/instructions/updateRoleHolderProtocol.js +0 -109
  127. package/dist/generated/instructions/updateRoleHolderStrategy.d.ts +0 -62
  128. package/dist/generated/instructions/updateRoleHolderStrategy.js +0 -110
  129. package/dist/generated/types/AMM.d.ts +0 -102
  130. package/dist/generated/types/AMM.js +0 -127
  131. package/dist/generated/types/AccKey.d.ts +0 -15
  132. package/dist/generated/types/AccKey.js +0 -38
  133. package/dist/generated/types/AccessControl.d.ts +0 -18
  134. package/dist/generated/types/AccessControl.js +0 -43
  135. package/dist/generated/types/AccessMap.d.ts +0 -17
  136. package/dist/generated/types/AccessMap.js +0 -42
  137. package/dist/generated/types/Action.d.ts +0 -36
  138. package/dist/generated/types/Action.js +0 -63
  139. package/dist/generated/types/ActionMapping.d.ts +0 -19
  140. package/dist/generated/types/ActionMapping.js +0 -44
  141. package/dist/generated/types/AssetTier.d.ts +0 -23
  142. package/dist/generated/types/AssetTier.js +0 -50
  143. package/dist/generated/types/Attenuation.d.ts +0 -16
  144. package/dist/generated/types/Attenuation.js +0 -41
  145. package/dist/generated/types/BalanceType.d.ts +0 -20
  146. package/dist/generated/types/BalanceType.js +0 -47
  147. package/dist/generated/types/ContractTier.d.ts +0 -24
  148. package/dist/generated/types/ContractTier.js +0 -51
  149. package/dist/generated/types/ContractType.d.ts +0 -20
  150. package/dist/generated/types/ContractType.js +0 -47
  151. package/dist/generated/types/CorpAction.d.ts +0 -19
  152. package/dist/generated/types/CorpAction.js +0 -46
  153. package/dist/generated/types/CustodyInfo.d.ts +0 -20
  154. package/dist/generated/types/CustodyInfo.js +0 -45
  155. package/dist/generated/types/DirectionCollateral.d.ts +0 -20
  156. package/dist/generated/types/DirectionCollateral.js +0 -47
  157. package/dist/generated/types/DirectionPosition.d.ts +0 -20
  158. package/dist/generated/types/DirectionPosition.js +0 -47
  159. package/dist/generated/types/DriftControllerBase.d.ts +0 -15
  160. package/dist/generated/types/DriftControllerBase.js +0 -38
  161. package/dist/generated/types/DriftJlpControllerFixedAccounts.d.ts +0 -18
  162. package/dist/generated/types/DriftJlpControllerFixedAccounts.js +0 -43
  163. package/dist/generated/types/DriftLstData.d.ts +0 -17
  164. package/dist/generated/types/DriftLstData.js +0 -42
  165. package/dist/generated/types/Ema.d.ts +0 -17
  166. package/dist/generated/types/Ema.js +0 -42
  167. package/dist/generated/types/Externals.d.ts +0 -16
  168. package/dist/generated/types/Externals.js +0 -39
  169. package/dist/generated/types/HistoricalIndexData.d.ts +0 -19
  170. package/dist/generated/types/HistoricalIndexData.js +0 -44
  171. package/dist/generated/types/HistoricalOracleData.d.ts +0 -20
  172. package/dist/generated/types/HistoricalOracleData.js +0 -45
  173. package/dist/generated/types/Holding.d.ts +0 -21
  174. package/dist/generated/types/Holding.js +0 -46
  175. package/dist/generated/types/Holdings.d.ts +0 -17
  176. package/dist/generated/types/Holdings.js +0 -42
  177. package/dist/generated/types/InitControllerS2Args.d.ts +0 -23
  178. package/dist/generated/types/InitControllerS2Args.js +0 -48
  179. package/dist/generated/types/InsuranceClaim.d.ts +0 -19
  180. package/dist/generated/types/InsuranceClaim.js +0 -44
  181. package/dist/generated/types/InsuranceFund.d.ts +0 -24
  182. package/dist/generated/types/InsuranceFund.js +0 -49
  183. package/dist/generated/types/JlpRebalanceSettings.d.ts +0 -15
  184. package/dist/generated/types/JlpRebalanceSettings.js +0 -38
  185. package/dist/generated/types/KillSwitch.d.ts +0 -15
  186. package/dist/generated/types/KillSwitch.js +0 -38
  187. package/dist/generated/types/LevelRoles.d.ts +0 -16
  188. package/dist/generated/types/LevelRoles.js +0 -39
  189. package/dist/generated/types/MarketStatus.d.ts +0 -27
  190. package/dist/generated/types/MarketStatus.js +0 -54
  191. package/dist/generated/types/MarketType.d.ts +0 -20
  192. package/dist/generated/types/MarketType.js +0 -47
  193. package/dist/generated/types/MintJlpArgs.d.ts +0 -15
  194. package/dist/generated/types/MintJlpArgs.js +0 -38
  195. package/dist/generated/types/ModifyOrderParams.d.ts +0 -32
  196. package/dist/generated/types/ModifyOrderParams.js +0 -57
  197. package/dist/generated/types/ModifyOrderPolicy.d.ts +0 -20
  198. package/dist/generated/types/ModifyOrderPolicy.js +0 -47
  199. package/dist/generated/types/Movements.d.ts +0 -19
  200. package/dist/generated/types/Movements.js +0 -44
  201. package/dist/generated/types/OracleGuardRails.d.ts +0 -18
  202. package/dist/generated/types/OracleGuardRails.js +0 -43
  203. package/dist/generated/types/OracleSource.d.ts +0 -34
  204. package/dist/generated/types/OracleSource.js +0 -61
  205. package/dist/generated/types/OracleValidity.d.ts +0 -25
  206. package/dist/generated/types/OracleValidity.js +0 -52
  207. package/dist/generated/types/Order.d.ts +0 -43
  208. package/dist/generated/types/Order.js +0 -68
  209. package/dist/generated/types/OrderDirection.d.ts +0 -20
  210. package/dist/generated/types/OrderDirection.js +0 -47
  211. package/dist/generated/types/OrderParams.d.ts +0 -36
  212. package/dist/generated/types/OrderParams.js +0 -61
  213. package/dist/generated/types/OrderStatus.d.ts +0 -22
  214. package/dist/generated/types/OrderStatus.js +0 -49
  215. package/dist/generated/types/OrderTriggerCondition.d.ts +0 -22
  216. package/dist/generated/types/OrderTriggerCondition.js +0 -49
  217. package/dist/generated/types/OrderType.d.ts +0 -23
  218. package/dist/generated/types/OrderType.js +0 -50
  219. package/dist/generated/types/PermissionLevel.d.ts +0 -45
  220. package/dist/generated/types/PermissionLevel.js +0 -48
  221. package/dist/generated/types/PerpHedge.d.ts +0 -17
  222. package/dist/generated/types/PerpHedge.js +0 -42
  223. package/dist/generated/types/PerpPosition.d.ts +0 -29
  224. package/dist/generated/types/PerpPosition.js +0 -54
  225. package/dist/generated/types/PoolBalance.d.ts +0 -17
  226. package/dist/generated/types/PoolBalance.js +0 -42
  227. package/dist/generated/types/Position.d.ts +0 -20
  228. package/dist/generated/types/Position.js +0 -45
  229. package/dist/generated/types/PositionDirection.d.ts +0 -20
  230. package/dist/generated/types/PositionDirection.js +0 -47
  231. package/dist/generated/types/PositionDrift.d.ts +0 -18
  232. package/dist/generated/types/PositionDrift.js +0 -43
  233. package/dist/generated/types/PostOnlyParam.d.ts +0 -22
  234. package/dist/generated/types/PostOnlyParam.js +0 -49
  235. package/dist/generated/types/Price.d.ts +0 -41
  236. package/dist/generated/types/Price.js +0 -66
  237. package/dist/generated/types/PriceComp.d.ts +0 -19
  238. package/dist/generated/types/PriceComp.js +0 -44
  239. package/dist/generated/types/PriceDivergenceGuardRails.d.ts +0 -16
  240. package/dist/generated/types/PriceDivergenceGuardRails.js +0 -41
  241. package/dist/generated/types/PriceInfo.d.ts +0 -21
  242. package/dist/generated/types/PriceInfo.js +0 -46
  243. package/dist/generated/types/PriceStatus.d.ts +0 -22
  244. package/dist/generated/types/PriceStatus.js +0 -49
  245. package/dist/generated/types/PriceType.d.ts +0 -20
  246. package/dist/generated/types/PriceType.js +0 -47
  247. package/dist/generated/types/ProcessSwapDepositArgs.d.ts +0 -15
  248. package/dist/generated/types/ProcessSwapDepositArgs.js +0 -38
  249. package/dist/generated/types/ProcessSwapDepositIntrospectionArgs.d.ts +0 -15
  250. package/dist/generated/types/ProcessSwapDepositIntrospectionArgs.js +0 -38
  251. package/dist/generated/types/Program.d.ts +0 -19
  252. package/dist/generated/types/Program.js +0 -44
  253. package/dist/generated/types/ProgramStatus.d.ts +0 -20
  254. package/dist/generated/types/ProgramStatus.js +0 -47
  255. package/dist/generated/types/RebalanceConfig.d.ts +0 -15
  256. package/dist/generated/types/RebalanceConfig.js +0 -38
  257. package/dist/generated/types/Recipient.d.ts +0 -17
  258. package/dist/generated/types/Recipient.js +0 -42
  259. package/dist/generated/types/Recipients.d.ts +0 -17
  260. package/dist/generated/types/Recipients.js +0 -42
  261. package/dist/generated/types/RedeemJlpArgs.d.ts +0 -15
  262. package/dist/generated/types/RedeemJlpArgs.js +0 -38
  263. package/dist/generated/types/Role.d.ts +0 -25
  264. package/dist/generated/types/Role.js +0 -52
  265. package/dist/generated/types/ShiftCollateral.d.ts +0 -19
  266. package/dist/generated/types/ShiftCollateral.js +0 -44
  267. package/dist/generated/types/ShiftPosition.d.ts +0 -17
  268. package/dist/generated/types/ShiftPosition.js +0 -42
  269. package/dist/generated/types/ShortHolding.d.ts +0 -17
  270. package/dist/generated/types/ShortHolding.js +0 -42
  271. package/dist/generated/types/SplBase.d.ts +0 -17
  272. package/dist/generated/types/SplBase.js +0 -42
  273. package/dist/generated/types/SplMain.d.ts +0 -22
  274. package/dist/generated/types/SplMain.js +0 -47
  275. package/dist/generated/types/Spls.d.ts +0 -17
  276. package/dist/generated/types/Spls.js +0 -42
  277. package/dist/generated/types/SpotBalanceType.d.ts +0 -20
  278. package/dist/generated/types/SpotBalanceType.js +0 -47
  279. package/dist/generated/types/SpotPosition.d.ts +0 -23
  280. package/dist/generated/types/SpotPosition.js +0 -48
  281. package/dist/generated/types/Status.d.ts +0 -20
  282. package/dist/generated/types/Status.js +0 -47
  283. package/dist/generated/types/Strategy.d.ts +0 -31
  284. package/dist/generated/types/Strategy.js +0 -56
  285. package/dist/generated/types/StrategyRoleEntry.d.ts +0 -17
  286. package/dist/generated/types/StrategyRoleEntry.js +0 -42
  287. package/dist/generated/types/SubAccount.d.ts +0 -17
  288. package/dist/generated/types/SubAccount.js +0 -42
  289. package/dist/generated/types/Update.d.ts +0 -20
  290. package/dist/generated/types/Update.js +0 -47
  291. package/dist/generated/types/UserFees.d.ts +0 -20
  292. package/dist/generated/types/UserFees.js +0 -45
  293. package/dist/generated/types/ValidityGuardRails.d.ts +0 -18
  294. package/dist/generated/types/ValidityGuardRails.js +0 -43
  295. package/dist/generated/types/index.d.ts +0 -83
  296. package/dist/generated/types/index.js +0 -99
  297. package/dist/strategies/JlpStrategy.d.ts +0 -17
  298. package/dist/strategies/JlpStrategy.js +0 -337
  299. package/dist/strategies/LstStrategy.d.ts +0 -19
  300. package/dist/strategies/LstStrategy.js +0 -169
  301. package/dist/strategies/UsdcStrategy.d.ts +0 -12
  302. package/dist/strategies/UsdcStrategy.js +0 -89
  303. package/dist/strategies/index.d.ts +0 -3
  304. 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);