@reflectmoney/stable.ts 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +108 -84
- package/dist/classes/ReflectKeeper.d.ts +104 -0
- package/dist/classes/ReflectKeeper.js +219 -0
- package/dist/classes/Stablecoin.d.ts +3 -1
- package/dist/classes/Stablecoin.js +2 -1
- package/dist/classes/index.d.ts +1 -1
- package/dist/classes/index.js +1 -1
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.js +1 -0
- package/dist/constants/lookupTables.d.ts +4 -0
- package/dist/constants/lookupTables.js +7 -0
- package/dist/stablecoins/LstStablecoin.js +1 -1
- package/dist/stablecoins/UsdcPlusStablecoin.d.ts +66 -0
- package/dist/stablecoins/UsdcPlusStablecoin.js +197 -0
- package/dist/stablecoins/UsdjStablecoin.d.ts +1 -0
- package/dist/stablecoins/UsdjStablecoin.js +44 -0
- package/dist/stablecoins/index.d.ts +2 -2
- package/dist/stablecoins/index.js +2 -2
- package/package.json +1 -1
- package/dist/classes/Strategy.d.ts +0 -30
- package/dist/classes/Strategy.js +0 -196
- package/dist/generated/accounts/DriftJlpController.d.ts +0 -114
- package/dist/generated/accounts/DriftJlpController.js +0 -169
- package/dist/generated/accounts/DriftLstController.d.ts +0 -108
- package/dist/generated/accounts/DriftLstController.js +0 -165
- package/dist/generated/accounts/DriftUsdcController.d.ts +0 -102
- package/dist/generated/accounts/DriftUsdcController.js +0 -158
- package/dist/generated/accounts/Main.d.ts +0 -110
- package/dist/generated/accounts/Main.js +0 -165
- package/dist/generated/accounts/PerpMarket.d.ts +0 -226
- package/dist/generated/accounts/PerpMarket.js +0 -307
- package/dist/generated/accounts/PrelaunchOracle.d.ts +0 -130
- package/dist/generated/accounts/PrelaunchOracle.js +0 -224
- package/dist/generated/accounts/PythLazerOracle.d.ts +0 -124
- package/dist/generated/accounts/PythLazerOracle.js +0 -210
- package/dist/generated/accounts/RebalanceLst.d.ts +0 -111
- package/dist/generated/accounts/RebalanceLst.js +0 -175
- package/dist/generated/accounts/SpotMarket.d.ts +0 -377
- package/dist/generated/accounts/SpotMarket.js +0 -601
- package/dist/generated/accounts/User.d.ts +0 -221
- package/dist/generated/accounts/User.js +0 -331
- package/dist/generated/accounts/UserPermissions.d.ts +0 -106
- package/dist/generated/accounts/UserPermissions.js +0 -161
- package/dist/generated/accounts/UserStats.d.ts +0 -211
- package/dist/generated/accounts/UserStats.js +0 -323
- package/dist/generated/accounts/index.d.ts +0 -38
- package/dist/generated/accounts/index.js +0 -55
- package/dist/generated/errors/index.d.ts +0 -1024
- package/dist/generated/errors/index.js +0 -1761
- package/dist/generated/index.d.ts +0 -19
- package/dist/generated/index.js +0 -36
- package/dist/generated/instructions/addLstDrift.d.ts +0 -49
- package/dist/generated/instructions/addLstDrift.js +0 -106
- package/dist/generated/instructions/addSubAccount.d.ts +0 -54
- package/dist/generated/instructions/addSubAccount.js +0 -121
- package/dist/generated/instructions/adjustHedgeS2.d.ts +0 -69
- package/dist/generated/instructions/adjustHedgeS2.js +0 -157
- package/dist/generated/instructions/captureSpreadDrift.d.ts +0 -56
- package/dist/generated/instructions/captureSpreadDrift.js +0 -120
- package/dist/generated/instructions/createAdminAccount.d.ts +0 -53
- package/dist/generated/instructions/createAdminAccount.js +0 -95
- package/dist/generated/instructions/createUserStatsAccount.d.ts +0 -54
- package/dist/generated/instructions/createUserStatsAccount.js +0 -121
- package/dist/generated/instructions/depositDrift.d.ts +0 -73
- package/dist/generated/instructions/depositDrift.js +0 -142
- package/dist/generated/instructions/freezeProgram.d.ts +0 -54
- package/dist/generated/instructions/freezeProgram.js +0 -95
- package/dist/generated/instructions/freezeProtocolAction.d.ts +0 -55
- package/dist/generated/instructions/freezeProtocolAction.js +0 -96
- package/dist/generated/instructions/freezeStrategyAction.d.ts +0 -58
- package/dist/generated/instructions/freezeStrategyAction.js +0 -102
- package/dist/generated/instructions/index.d.ts +0 -41
- package/dist/generated/instructions/index.js +0 -57
- package/dist/generated/instructions/initDriftAccountsS1.d.ts +0 -56
- package/dist/generated/instructions/initDriftAccountsS1.js +0 -126
- package/dist/generated/instructions/initDriftControllerS1.d.ts +0 -60
- package/dist/generated/instructions/initDriftControllerS1.js +0 -108
- package/dist/generated/instructions/initDriftControllerS2.d.ts +0 -66
- package/dist/generated/instructions/initDriftControllerS2.js +0 -125
- package/dist/generated/instructions/initDriftControllerS3.d.ts +0 -58
- package/dist/generated/instructions/initDriftControllerS3.js +0 -103
- package/dist/generated/instructions/initMain.d.ts +0 -43
- package/dist/generated/instructions/initMain.js +0 -91
- package/dist/generated/instructions/mintDriftS1.d.ts +0 -90
- package/dist/generated/instructions/mintDriftS1.js +0 -184
- package/dist/generated/instructions/mintDriftS2.d.ts +0 -80
- package/dist/generated/instructions/mintDriftS2.js +0 -161
- package/dist/generated/instructions/mintDriftS3.d.ts +0 -86
- package/dist/generated/instructions/mintDriftS3.js +0 -174
- package/dist/generated/instructions/processSwapDeposit.d.ts +0 -79
- package/dist/generated/instructions/processSwapDeposit.js +0 -161
- package/dist/generated/instructions/processSwapDepositIntrospection.d.ts +0 -79
- package/dist/generated/instructions/processSwapDepositIntrospection.js +0 -161
- package/dist/generated/instructions/processSwapWithdraw.d.ts +0 -68
- package/dist/generated/instructions/processSwapWithdraw.js +0 -157
- package/dist/generated/instructions/processSwapWithdrawIntrospection.d.ts +0 -68
- package/dist/generated/instructions/processSwapWithdrawIntrospection.js +0 -157
- package/dist/generated/instructions/rebalanceJlp.d.ts +0 -81
- package/dist/generated/instructions/rebalanceJlp.js +0 -187
- package/dist/generated/instructions/redeem2DriftS2.d.ts +0 -80
- package/dist/generated/instructions/redeem2DriftS2.js +0 -161
- package/dist/generated/instructions/redeemDriftS1.d.ts +0 -91
- package/dist/generated/instructions/redeemDriftS1.js +0 -185
- package/dist/generated/instructions/redeemDriftS2.d.ts +0 -80
- package/dist/generated/instructions/redeemDriftS2.js +0 -161
- package/dist/generated/instructions/redeemDriftS3.d.ts +0 -87
- package/dist/generated/instructions/redeemDriftS3.js +0 -175
- package/dist/generated/instructions/settlePnl.d.ts +0 -55
- package/dist/generated/instructions/settlePnl.js +0 -114
- package/dist/generated/instructions/settlePnlMulti.d.ts +0 -65
- package/dist/generated/instructions/settlePnlMulti.js +0 -117
- package/dist/generated/instructions/suspendLstProtocol.d.ts +0 -54
- package/dist/generated/instructions/suspendLstProtocol.js +0 -96
- package/dist/generated/instructions/suspendLstStrategy.d.ts +0 -56
- package/dist/generated/instructions/suspendLstStrategy.js +0 -101
- package/dist/generated/instructions/swapOrca.d.ts +0 -78
- package/dist/generated/instructions/swapOrca.js +0 -153
- package/dist/generated/instructions/swapOrcaTwoHop.d.ts +0 -98
- package/dist/generated/instructions/swapOrcaTwoHop.js +0 -200
- package/dist/generated/instructions/updateActionRoleProtocol.d.ts +0 -58
- package/dist/generated/instructions/updateActionRoleProtocol.js +0 -99
- package/dist/generated/instructions/updateActionRoleStrategy.d.ts +0 -61
- package/dist/generated/instructions/updateActionRoleStrategy.js +0 -105
- package/dist/generated/instructions/updateAttenuation.d.ts +0 -56
- package/dist/generated/instructions/updateAttenuation.js +0 -100
- package/dist/generated/instructions/updateCap.d.ts +0 -55
- package/dist/generated/instructions/updateCap.js +0 -99
- package/dist/generated/instructions/updateRebalanceSlippage.d.ts +0 -55
- package/dist/generated/instructions/updateRebalanceSlippage.js +0 -99
- package/dist/generated/instructions/updateRecipients.d.ts +0 -56
- package/dist/generated/instructions/updateRecipients.js +0 -101
- package/dist/generated/instructions/updateRoleHolderProtocol.d.ts +0 -61
- package/dist/generated/instructions/updateRoleHolderProtocol.js +0 -109
- package/dist/generated/instructions/updateRoleHolderStrategy.d.ts +0 -62
- package/dist/generated/instructions/updateRoleHolderStrategy.js +0 -110
- package/dist/generated/types/AMM.d.ts +0 -102
- package/dist/generated/types/AMM.js +0 -127
- package/dist/generated/types/AccKey.d.ts +0 -15
- package/dist/generated/types/AccKey.js +0 -38
- package/dist/generated/types/AccessControl.d.ts +0 -18
- package/dist/generated/types/AccessControl.js +0 -43
- package/dist/generated/types/AccessMap.d.ts +0 -17
- package/dist/generated/types/AccessMap.js +0 -42
- package/dist/generated/types/Action.d.ts +0 -36
- package/dist/generated/types/Action.js +0 -63
- package/dist/generated/types/ActionMapping.d.ts +0 -19
- package/dist/generated/types/ActionMapping.js +0 -44
- package/dist/generated/types/AssetTier.d.ts +0 -23
- package/dist/generated/types/AssetTier.js +0 -50
- package/dist/generated/types/Attenuation.d.ts +0 -16
- package/dist/generated/types/Attenuation.js +0 -41
- package/dist/generated/types/BalanceType.d.ts +0 -20
- package/dist/generated/types/BalanceType.js +0 -47
- package/dist/generated/types/ContractTier.d.ts +0 -24
- package/dist/generated/types/ContractTier.js +0 -51
- package/dist/generated/types/ContractType.d.ts +0 -20
- package/dist/generated/types/ContractType.js +0 -47
- package/dist/generated/types/CorpAction.d.ts +0 -19
- package/dist/generated/types/CorpAction.js +0 -46
- package/dist/generated/types/CustodyInfo.d.ts +0 -20
- package/dist/generated/types/CustodyInfo.js +0 -45
- package/dist/generated/types/DirectionCollateral.d.ts +0 -20
- package/dist/generated/types/DirectionCollateral.js +0 -47
- package/dist/generated/types/DirectionPosition.d.ts +0 -20
- package/dist/generated/types/DirectionPosition.js +0 -47
- package/dist/generated/types/DriftControllerBase.d.ts +0 -15
- package/dist/generated/types/DriftControllerBase.js +0 -38
- package/dist/generated/types/DriftJlpControllerFixedAccounts.d.ts +0 -18
- package/dist/generated/types/DriftJlpControllerFixedAccounts.js +0 -43
- package/dist/generated/types/DriftLstData.d.ts +0 -17
- package/dist/generated/types/DriftLstData.js +0 -42
- package/dist/generated/types/Ema.d.ts +0 -17
- package/dist/generated/types/Ema.js +0 -42
- package/dist/generated/types/Externals.d.ts +0 -16
- package/dist/generated/types/Externals.js +0 -39
- package/dist/generated/types/HistoricalIndexData.d.ts +0 -19
- package/dist/generated/types/HistoricalIndexData.js +0 -44
- package/dist/generated/types/HistoricalOracleData.d.ts +0 -20
- package/dist/generated/types/HistoricalOracleData.js +0 -45
- package/dist/generated/types/Holding.d.ts +0 -21
- package/dist/generated/types/Holding.js +0 -46
- package/dist/generated/types/Holdings.d.ts +0 -17
- package/dist/generated/types/Holdings.js +0 -42
- package/dist/generated/types/InitControllerS2Args.d.ts +0 -23
- package/dist/generated/types/InitControllerS2Args.js +0 -48
- package/dist/generated/types/InsuranceClaim.d.ts +0 -19
- package/dist/generated/types/InsuranceClaim.js +0 -44
- package/dist/generated/types/InsuranceFund.d.ts +0 -24
- package/dist/generated/types/InsuranceFund.js +0 -49
- package/dist/generated/types/JlpRebalanceSettings.d.ts +0 -15
- package/dist/generated/types/JlpRebalanceSettings.js +0 -38
- package/dist/generated/types/KillSwitch.d.ts +0 -15
- package/dist/generated/types/KillSwitch.js +0 -38
- package/dist/generated/types/LevelRoles.d.ts +0 -16
- package/dist/generated/types/LevelRoles.js +0 -39
- package/dist/generated/types/MarketStatus.d.ts +0 -27
- package/dist/generated/types/MarketStatus.js +0 -54
- package/dist/generated/types/MarketType.d.ts +0 -20
- package/dist/generated/types/MarketType.js +0 -47
- package/dist/generated/types/MintJlpArgs.d.ts +0 -15
- package/dist/generated/types/MintJlpArgs.js +0 -38
- package/dist/generated/types/ModifyOrderParams.d.ts +0 -32
- package/dist/generated/types/ModifyOrderParams.js +0 -57
- package/dist/generated/types/ModifyOrderPolicy.d.ts +0 -20
- package/dist/generated/types/ModifyOrderPolicy.js +0 -47
- package/dist/generated/types/Movements.d.ts +0 -19
- package/dist/generated/types/Movements.js +0 -44
- package/dist/generated/types/OracleGuardRails.d.ts +0 -18
- package/dist/generated/types/OracleGuardRails.js +0 -43
- package/dist/generated/types/OracleSource.d.ts +0 -34
- package/dist/generated/types/OracleSource.js +0 -61
- package/dist/generated/types/OracleValidity.d.ts +0 -25
- package/dist/generated/types/OracleValidity.js +0 -52
- package/dist/generated/types/Order.d.ts +0 -43
- package/dist/generated/types/Order.js +0 -68
- package/dist/generated/types/OrderDirection.d.ts +0 -20
- package/dist/generated/types/OrderDirection.js +0 -47
- package/dist/generated/types/OrderParams.d.ts +0 -36
- package/dist/generated/types/OrderParams.js +0 -61
- package/dist/generated/types/OrderStatus.d.ts +0 -22
- package/dist/generated/types/OrderStatus.js +0 -49
- package/dist/generated/types/OrderTriggerCondition.d.ts +0 -22
- package/dist/generated/types/OrderTriggerCondition.js +0 -49
- package/dist/generated/types/OrderType.d.ts +0 -23
- package/dist/generated/types/OrderType.js +0 -50
- package/dist/generated/types/PermissionLevel.d.ts +0 -45
- package/dist/generated/types/PermissionLevel.js +0 -48
- package/dist/generated/types/PerpHedge.d.ts +0 -17
- package/dist/generated/types/PerpHedge.js +0 -42
- package/dist/generated/types/PerpPosition.d.ts +0 -29
- package/dist/generated/types/PerpPosition.js +0 -54
- package/dist/generated/types/PoolBalance.d.ts +0 -17
- package/dist/generated/types/PoolBalance.js +0 -42
- package/dist/generated/types/Position.d.ts +0 -20
- package/dist/generated/types/Position.js +0 -45
- package/dist/generated/types/PositionDirection.d.ts +0 -20
- package/dist/generated/types/PositionDirection.js +0 -47
- package/dist/generated/types/PositionDrift.d.ts +0 -18
- package/dist/generated/types/PositionDrift.js +0 -43
- package/dist/generated/types/PostOnlyParam.d.ts +0 -22
- package/dist/generated/types/PostOnlyParam.js +0 -49
- package/dist/generated/types/Price.d.ts +0 -41
- package/dist/generated/types/Price.js +0 -66
- package/dist/generated/types/PriceComp.d.ts +0 -19
- package/dist/generated/types/PriceComp.js +0 -44
- package/dist/generated/types/PriceDivergenceGuardRails.d.ts +0 -16
- package/dist/generated/types/PriceDivergenceGuardRails.js +0 -41
- package/dist/generated/types/PriceInfo.d.ts +0 -21
- package/dist/generated/types/PriceInfo.js +0 -46
- package/dist/generated/types/PriceStatus.d.ts +0 -22
- package/dist/generated/types/PriceStatus.js +0 -49
- package/dist/generated/types/PriceType.d.ts +0 -20
- package/dist/generated/types/PriceType.js +0 -47
- package/dist/generated/types/ProcessSwapDepositArgs.d.ts +0 -15
- package/dist/generated/types/ProcessSwapDepositArgs.js +0 -38
- package/dist/generated/types/ProcessSwapDepositIntrospectionArgs.d.ts +0 -15
- package/dist/generated/types/ProcessSwapDepositIntrospectionArgs.js +0 -38
- package/dist/generated/types/Program.d.ts +0 -19
- package/dist/generated/types/Program.js +0 -44
- package/dist/generated/types/ProgramStatus.d.ts +0 -20
- package/dist/generated/types/ProgramStatus.js +0 -47
- package/dist/generated/types/RebalanceConfig.d.ts +0 -15
- package/dist/generated/types/RebalanceConfig.js +0 -38
- package/dist/generated/types/Recipient.d.ts +0 -17
- package/dist/generated/types/Recipient.js +0 -42
- package/dist/generated/types/Recipients.d.ts +0 -17
- package/dist/generated/types/Recipients.js +0 -42
- package/dist/generated/types/RedeemJlpArgs.d.ts +0 -15
- package/dist/generated/types/RedeemJlpArgs.js +0 -38
- package/dist/generated/types/Role.d.ts +0 -25
- package/dist/generated/types/Role.js +0 -52
- package/dist/generated/types/ShiftCollateral.d.ts +0 -19
- package/dist/generated/types/ShiftCollateral.js +0 -44
- package/dist/generated/types/ShiftPosition.d.ts +0 -17
- package/dist/generated/types/ShiftPosition.js +0 -42
- package/dist/generated/types/ShortHolding.d.ts +0 -17
- package/dist/generated/types/ShortHolding.js +0 -42
- package/dist/generated/types/SplBase.d.ts +0 -17
- package/dist/generated/types/SplBase.js +0 -42
- package/dist/generated/types/SplMain.d.ts +0 -22
- package/dist/generated/types/SplMain.js +0 -47
- package/dist/generated/types/Spls.d.ts +0 -17
- package/dist/generated/types/Spls.js +0 -42
- package/dist/generated/types/SpotBalanceType.d.ts +0 -20
- package/dist/generated/types/SpotBalanceType.js +0 -47
- package/dist/generated/types/SpotPosition.d.ts +0 -23
- package/dist/generated/types/SpotPosition.js +0 -48
- package/dist/generated/types/Status.d.ts +0 -20
- package/dist/generated/types/Status.js +0 -47
- package/dist/generated/types/Strategy.d.ts +0 -31
- package/dist/generated/types/Strategy.js +0 -56
- package/dist/generated/types/StrategyRoleEntry.d.ts +0 -17
- package/dist/generated/types/StrategyRoleEntry.js +0 -42
- package/dist/generated/types/SubAccount.d.ts +0 -17
- package/dist/generated/types/SubAccount.js +0 -42
- package/dist/generated/types/Update.d.ts +0 -20
- package/dist/generated/types/Update.js +0 -47
- package/dist/generated/types/UserFees.d.ts +0 -20
- package/dist/generated/types/UserFees.js +0 -45
- package/dist/generated/types/ValidityGuardRails.d.ts +0 -18
- package/dist/generated/types/ValidityGuardRails.js +0 -43
- package/dist/generated/types/index.d.ts +0 -83
- package/dist/generated/types/index.js +0 -99
- package/dist/strategies/JlpStrategy.d.ts +0 -17
- package/dist/strategies/JlpStrategy.js +0 -337
- package/dist/strategies/LstStrategy.d.ts +0 -19
- package/dist/strategies/LstStrategy.js +0 -169
- package/dist/strategies/UsdcStrategy.d.ts +0 -12
- package/dist/strategies/UsdcStrategy.js +0 -89
- package/dist/strategies/index.d.ts +0 -3
- 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;
|
package/dist/strategies/index.js
DELETED
|
@@ -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);
|