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