hedge-web3 0.2.28 → 0.2.33
Sign up to get free protection for your applications and to get access to all the features.
- package/declarations/Constants.d.ts +12 -0
- package/declarations/idl/vault.d.ts +842 -1
- package/declarations/index.d.ts +11 -0
- package/declarations/instructions/adminWithdrawCol.d.ts +5 -0
- package/declarations/instructions/adminWithdrawUsh.d.ts +5 -0
- package/declarations/instructions/compoundCreateReferralAccount.d.ts +17 -0
- package/declarations/instructions/compoundReferralClaimFees.d.ts +16 -0
- package/declarations/instructions/createCompoundStakingPool.d.ts +5 -0
- package/declarations/instructions/createCompoundStakingPoolPosition.d.ts +6 -0
- package/declarations/instructions/depositCompoundStakingPoolPosition.d.ts +6 -0
- package/declarations/instructions/depositRewardsToCompoundPool.d.ts +6 -0
- package/declarations/instructions/setCompoundPoolActive.d.ts +5 -0
- package/declarations/instructions/setDelegateWallet.d.ts +5 -0
- package/declarations/instructions/withdrawCompoundStakingPoolPosition.d.ts +6 -0
- package/lib/Constants.js +28 -1
- package/lib/idl/vault.js +842 -1
- package/lib/index.js +11 -0
- package/lib/instructions/adminWithdrawCol.js +60 -0
- package/lib/instructions/adminWithdrawUsh.js +57 -0
- package/lib/instructions/compoundCreateReferralAccount.js +83 -0
- package/lib/instructions/compoundReferralClaimFees.js +87 -0
- package/lib/instructions/createCompoundStakingPool.js +58 -0
- package/lib/instructions/createCompoundStakingPoolPosition.js +56 -0
- package/lib/instructions/depositCompoundStakingPoolPosition.js +55 -0
- package/lib/instructions/depositRewardsToCompoundPool.js +64 -0
- package/lib/instructions/liquidateVault.js +7 -1
- package/lib/instructions/loanVault.js +7 -1
- package/lib/instructions/setCompoundPoolActive.js +43 -0
- package/lib/instructions/setDelegateWallet.js +43 -0
- package/lib/instructions/withdrawCompoundStakingPoolPosition.js +64 -0
- package/package.json +5 -2
- package/src/Constants.ts +30 -0
- package/src/idl/vault.ts +3753 -2071
- package/src/index.ts +11 -2
- package/src/instructions/adminWithdrawCol.ts +87 -0
- package/src/instructions/adminWithdrawUsh.ts +78 -0
- package/src/instructions/compoundCreateReferralAccount.ts +119 -0
- package/src/instructions/compoundReferralClaimFees.ts +151 -0
- package/src/instructions/createCompoundStakingPool.ts +63 -0
- package/src/instructions/createCompoundStakingPoolPosition.ts +85 -0
- package/src/instructions/createReferralAccount.ts +6 -9
- package/src/instructions/createStakingPool.ts +2 -9
- package/src/instructions/depositCompoundStakingPoolPosition.ts +78 -0
- package/src/instructions/depositRewardsToCompoundPool.ts +110 -0
- package/src/instructions/liquidateVault.ts +37 -27
- package/src/instructions/loanVault.ts +34 -21
- package/src/instructions/referralClaimFees.ts +7 -9
- package/src/instructions/setCompoundPoolActive.ts +51 -0
- package/src/instructions/setDelegateWallet.ts +51 -0
- package/src/instructions/withdrawCompoundStakingPoolPosition.ts +100 -0
package/lib/index.js
CHANGED
@@ -20,6 +20,8 @@ __exportStar(require("./instructions/closeLiquidationPoolPosition"), exports);
|
|
20
20
|
__exportStar(require("./instructions/createReferralAccount"), exports);
|
21
21
|
__exportStar(require("./instructions/createStakingPool"), exports);
|
22
22
|
__exportStar(require("./instructions/createUserReferralAccount"), exports);
|
23
|
+
__exportStar(require("./instructions/compoundCreateReferralAccount"), exports);
|
24
|
+
__exportStar(require("./instructions/compoundReferralClaimFees"), exports);
|
23
25
|
__exportStar(require("./instructions/createVault"), exports);
|
24
26
|
__exportStar(require("./instructions/depositLiquidationPool"), exports);
|
25
27
|
__exportStar(require("./instructions/depositStakingPool"), exports);
|
@@ -36,6 +38,15 @@ __exportStar(require("./instructions/refreshOraclePrice"), exports);
|
|
36
38
|
__exportStar(require("./instructions/repayVault"), exports);
|
37
39
|
__exportStar(require("./instructions/setHalted"), exports);
|
38
40
|
__exportStar(require("./instructions/transferVault"), exports);
|
41
|
+
__exportStar(require("./instructions/createCompoundStakingPool"), exports);
|
42
|
+
__exportStar(require("./instructions/createCompoundStakingPoolPosition"), exports);
|
43
|
+
__exportStar(require("./instructions/depositCompoundStakingPoolPosition"), exports);
|
44
|
+
__exportStar(require("./instructions/withdrawCompoundStakingPoolPosition"), exports);
|
45
|
+
__exportStar(require("./instructions/setDelegateWallet"), exports);
|
46
|
+
__exportStar(require("./instructions/setCompoundPoolActive"), exports);
|
47
|
+
__exportStar(require("./instructions/adminWithdrawCol"), exports);
|
48
|
+
__exportStar(require("./instructions/adminWithdrawUsh"), exports);
|
49
|
+
__exportStar(require("./instructions/depositRewardsToCompoundPool"), exports);
|
39
50
|
__exportStar(require("./instructions/updateReferralAccount"), exports);
|
40
51
|
__exportStar(require("./instructions/updateReferralState"), exports);
|
41
52
|
__exportStar(require("./instructions/updateVaultType"), exports);
|
@@ -0,0 +1,60 @@
|
|
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.adminWithdrawCollateralInstruction = exports.adminWithdrawCollateral = void 0;
|
16
|
+
const spl_token_1 = require("@solana/spl-token");
|
17
|
+
const web3_js_1 = require("@solana/web3.js");
|
18
|
+
const Constants_1 = require("../Constants");
|
19
|
+
const Errors_1 = require("../utils/Errors");
|
20
|
+
const sendAndConfirmWithDebug_1 = __importDefault(require("../utils/sendAndConfirmWithDebug"));
|
21
|
+
function adminWithdrawCollateral(program, provider, payer, mintPublicKey, collateralType) {
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
23
|
+
const [poolPublickey] = yield (0, Constants_1.getPoolPublicKeyForMint)(program.programId, mintPublicKey);
|
24
|
+
const vaultTypeAccountPublicKey = yield (0, Constants_1.getVaultTypeAccountPublicKey)(program.programId, collateralType);
|
25
|
+
const vaultTypeAccountInfo = yield program.account.vaultType.fetch(vaultTypeAccountPublicKey);
|
26
|
+
const stakingPoolAccountObject = yield program.account.stakingPool.fetch(poolPublickey);
|
27
|
+
const payerAssociatedTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, vaultTypeAccountInfo.collateralMint, stakingPoolAccountObject.compoundPoolDelegateWallet);
|
28
|
+
const poolAssociatedTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(program.programId, poolPublickey, vaultTypeAccountInfo.collateralMint);
|
29
|
+
const transaction = new web3_js_1.Transaction().add(yield adminWithdrawCollateralInstruction(program, payer.publicKey, mintPublicKey, vaultTypeAccountPublicKey));
|
30
|
+
yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, [payer]).catch(Errors_1.parseAnchorErrors);
|
31
|
+
return poolPublickey;
|
32
|
+
});
|
33
|
+
}
|
34
|
+
exports.adminWithdrawCollateral = adminWithdrawCollateral;
|
35
|
+
function adminWithdrawCollateralInstruction(program, payerPublicKey, stakedTokenMintPublicKey, vaultTypeAccountPublicKey) {
|
36
|
+
return __awaiter(this, void 0, void 0, function* () {
|
37
|
+
const [poolPublickey] = yield (0, Constants_1.getPoolPublicKeyForMint)(program.programId, stakedTokenMintPublicKey);
|
38
|
+
const vaultTypeAccountInfo = yield program.account.vaultType.fetch(vaultTypeAccountPublicKey);
|
39
|
+
const stakingPoolAccountObject = yield program.account.stakingPool.fetch(poolPublickey);
|
40
|
+
const poolAssociatedTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(program.programId, poolPublickey, vaultTypeAccountInfo.collateralMint);
|
41
|
+
const delegateAssociatedTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(program.programId, stakingPoolAccountObject.compoundPoolDelegateWallet, vaultTypeAccountInfo.collateralMint);
|
42
|
+
const vaultSystemState = yield (0, Constants_1.getVaultSystemStatePublicKey)(program.programId);
|
43
|
+
return yield program.methods
|
44
|
+
.adminWithdrawColAta()
|
45
|
+
.accounts({
|
46
|
+
payer: payerPublicKey,
|
47
|
+
vaultSystemState: vaultSystemState,
|
48
|
+
pool: poolPublickey,
|
49
|
+
vaultTypeAccount: vaultTypeAccountPublicKey,
|
50
|
+
stakedTokenMint: stakedTokenMintPublicKey,
|
51
|
+
poolAssociatedTokenAccount: poolAssociatedTokenAccount,
|
52
|
+
delegateAssociatedColAccount: delegateAssociatedTokenAccount,
|
53
|
+
associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
|
54
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
55
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
56
|
+
})
|
57
|
+
.instruction();
|
58
|
+
});
|
59
|
+
}
|
60
|
+
exports.adminWithdrawCollateralInstruction = adminWithdrawCollateralInstruction;
|
@@ -0,0 +1,57 @@
|
|
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.adminWithdrawUshInstruction = exports.adminWithdrawUsh = void 0;
|
16
|
+
const spl_token_1 = require("@solana/spl-token");
|
17
|
+
const web3_js_1 = require("@solana/web3.js");
|
18
|
+
const Constants_1 = require("../Constants");
|
19
|
+
const Errors_1 = require("../utils/Errors");
|
20
|
+
const sendAndConfirmWithDebug_1 = __importDefault(require("../utils/sendAndConfirmWithDebug"));
|
21
|
+
function adminWithdrawUsh(program, provider, payer, mintPublicKey) {
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
23
|
+
const [poolPublickey] = yield (0, Constants_1.getPoolPublicKeyForMint)(program.programId, mintPublicKey);
|
24
|
+
const stakingPoolAccountObject = yield program.account.stakingPool.fetch(poolPublickey);
|
25
|
+
const ushMintPublickey = yield (0, Constants_1.getUshMintPublicKey)(program.programId);
|
26
|
+
const payerAssociatedTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, ushMintPublickey, stakingPoolAccountObject.compoundPoolDelegateWallet);
|
27
|
+
const transaction = new web3_js_1.Transaction().add(yield adminWithdrawUshInstruction(program, payer.publicKey, mintPublicKey, poolPublickey));
|
28
|
+
yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, [payer]).catch(Errors_1.parseAnchorErrors);
|
29
|
+
return poolPublickey;
|
30
|
+
});
|
31
|
+
}
|
32
|
+
exports.adminWithdrawUsh = adminWithdrawUsh;
|
33
|
+
function adminWithdrawUshInstruction(program, payerPublicKey, stakedTokenMintPublicKey, poolPublickey) {
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
35
|
+
const ushMintPublickey = yield (0, Constants_1.getUshMintPublicKey)(program.programId);
|
36
|
+
const vaultSystemState = yield (0, Constants_1.getVaultSystemStatePublicKey)(program.programId);
|
37
|
+
const poolAssociatedStakedTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(program.programId, poolPublickey, ushMintPublickey);
|
38
|
+
const stakingPoolAccountObject = yield program.account.stakingPool.fetch(poolPublickey);
|
39
|
+
const delegateWalletAssociatedStakedTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(program.programId, stakingPoolAccountObject.compoundPoolDelegateWallet, ushMintPublickey);
|
40
|
+
return yield program.methods
|
41
|
+
.adminWithdrawUshAta()
|
42
|
+
.accounts({
|
43
|
+
payer: payerPublicKey,
|
44
|
+
vaultSystemState: vaultSystemState,
|
45
|
+
pool: poolPublickey,
|
46
|
+
ushMint: ushMintPublickey,
|
47
|
+
stakedTokenMint: stakedTokenMintPublicKey,
|
48
|
+
poolAssociatedTokenAccount: poolAssociatedStakedTokenAccount,
|
49
|
+
delegateAssociatedUshAccount: delegateWalletAssociatedStakedTokenAccount,
|
50
|
+
associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
|
51
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
52
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
53
|
+
})
|
54
|
+
.instruction();
|
55
|
+
});
|
56
|
+
}
|
57
|
+
exports.adminWithdrawUshInstruction = adminWithdrawUshInstruction;
|
@@ -0,0 +1,83 @@
|
|
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.compoundCreateReferralAccountInstruction = exports.compoundCreateReferralAccount = void 0;
|
16
|
+
const anchor_1 = require("@project-serum/anchor");
|
17
|
+
const spl_token_1 = require("@solana/spl-token");
|
18
|
+
const web3_js_1 = require("@solana/web3.js");
|
19
|
+
const Constants_1 = require("../Constants");
|
20
|
+
const Errors_1 = require("../utils/Errors");
|
21
|
+
const sendAndConfirmWithDebug_1 = __importDefault(require("../utils/sendAndConfirmWithDebug"));
|
22
|
+
/** @type {Function} - Creates a new referral account.
|
23
|
+
* This checks the user has enough HDG in their wallet or staked and
|
24
|
+
* then allows them to create a referral account. If they meet the PSM referral threshold,
|
25
|
+
* they will be eligible for PSM cut.
|
26
|
+
* Params:
|
27
|
+
* - program: Program<Vault> : The program instance of Hedge Vault program
|
28
|
+
* - provider: Provider : Current connection
|
29
|
+
* - payer: Signer : who we are creating the referral account for
|
30
|
+
* - poolPublicKey: PublicKey : a key to a pool position. If the position is closed or does not belong to the signer it will be ignored
|
31
|
+
* - referrer: PublicKey
|
32
|
+
* - overrideTime?: number
|
33
|
+
*/
|
34
|
+
function compoundCreateReferralAccount(program, provider, payer, poolPosition, stakedTokenMintPublicKey, overrideTime) {
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
36
|
+
// setup transaction
|
37
|
+
const transaction = new web3_js_1.Transaction();
|
38
|
+
const signers = [payer];
|
39
|
+
const referrer = payer.publicKey;
|
40
|
+
// Setup public keys
|
41
|
+
const vaultSystemStatePublicKey = yield (0, Constants_1.getVaultSystemStatePublicKey)(program.programId);
|
42
|
+
// Find referral account
|
43
|
+
let referralAccountPublicKey = yield (0, Constants_1.getReferralAccountPublicKey)(program.programId, referrer);
|
44
|
+
// Get the referral state PDA
|
45
|
+
const referallStatePublicKey = yield (0, Constants_1.getReferralStatePublicKey)(program.programId);
|
46
|
+
// Get HDG mint public key
|
47
|
+
const hedgeMintPublicKey = yield (0, Constants_1.getHedgeMintPublicKey)(program.programId);
|
48
|
+
// Get HDG account of signer
|
49
|
+
const payerHdgAssociatedTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, hedgeMintPublicKey, payer.publicKey);
|
50
|
+
// Derive the user referral account public key
|
51
|
+
const userReferralAccountPublicKey = yield (0, Constants_1.getUserReferralAccountPublicKey)(program.programId, payer.publicKey);
|
52
|
+
transaction.add(yield compoundCreateReferralAccountInstruction(program, payer.publicKey, poolPosition, stakedTokenMintPublicKey, referralAccountPublicKey, referallStatePublicKey, hedgeMintPublicKey, payerHdgAssociatedTokenAccount.address, userReferralAccountPublicKey, overrideTime));
|
53
|
+
yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, signers).catch(Errors_1.parseAnchorErrors);
|
54
|
+
return referralAccountPublicKey;
|
55
|
+
});
|
56
|
+
}
|
57
|
+
exports.compoundCreateReferralAccount = compoundCreateReferralAccount;
|
58
|
+
function compoundCreateReferralAccountInstruction(program, payerPublicKey, poolPositionPublicKey, stakedTokenMintPublicKey, referralAccountPublicKey, referralStatePublicKey, hedgeMintPublicKey, hdgAssociatedTokenAccountPublicKey, userReferralAccountPublicKey, overrideTime) {
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
60
|
+
const vaultSystemStatePublicKey = yield (0, Constants_1.getVaultSystemStatePublicKey)(program.programId);
|
61
|
+
const [poolPublickey] = yield (0, Constants_1.getCompoundPoolPublicKeyForMint)(program.programId, stakedTokenMintPublicKey);
|
62
|
+
return yield program.methods
|
63
|
+
.compoundCreateReferralAccount(new anchor_1.BN(overrideTime !== null && overrideTime !== void 0 ? overrideTime : Math.floor(Date.now() / 1000)) // override override times
|
64
|
+
)
|
65
|
+
.accounts({
|
66
|
+
signer: payerPublicKey,
|
67
|
+
vaultSystemState: vaultSystemStatePublicKey,
|
68
|
+
referralState: referralStatePublicKey,
|
69
|
+
referralAccount: referralAccountPublicKey,
|
70
|
+
userReferralAccount: userReferralAccountPublicKey,
|
71
|
+
poolPosition: poolPositionPublicKey,
|
72
|
+
pool: poolPublickey,
|
73
|
+
stakedTokenMint: stakedTokenMintPublicKey,
|
74
|
+
hedgeMint: hedgeMintPublicKey,
|
75
|
+
hdgAta: hdgAssociatedTokenAccountPublicKey,
|
76
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
77
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
78
|
+
rent: web3_js_1.SYSVAR_RENT_PUBKEY,
|
79
|
+
})
|
80
|
+
.instruction();
|
81
|
+
});
|
82
|
+
}
|
83
|
+
exports.compoundCreateReferralAccountInstruction = compoundCreateReferralAccountInstruction;
|
@@ -0,0 +1,87 @@
|
|
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.compoundReferralClaimFeesInstruction = exports.compoundReferralClaimFees = void 0;
|
16
|
+
const spl_token_1 = require("@solana/spl-token");
|
17
|
+
const web3_js_1 = require("@solana/web3.js");
|
18
|
+
const Constants_1 = require("../Constants");
|
19
|
+
const Errors_1 = require("../utils/Errors");
|
20
|
+
const sendAndConfirmWithDebug_1 = __importDefault(require("../utils/sendAndConfirmWithDebug"));
|
21
|
+
/** @type {Function} - Allows a referrer to claims their fees.
|
22
|
+
* This checks the user has enough HDG in their wallet or staked and
|
23
|
+
* then allows them to claim earned fees. If they meet the PSM referral threshold,
|
24
|
+
* they will be eligible for PSM cut.
|
25
|
+
* Params:
|
26
|
+
* - program: Program<Vault> : The program instance of Hedge Vault program
|
27
|
+
* - provider: Provider : Current connection
|
28
|
+
* - payer: Signer : who we are creating the referral account for
|
29
|
+
* - poolPublicKey: PublicKey : a key to a pool position. If the position is closed or does not belong to the signer it will be ignored
|
30
|
+
* - referrer: PublicKey
|
31
|
+
*/
|
32
|
+
function compoundReferralClaimFees(program, provider, payer, poolPosition, stakedTokenMintPublicKey) {
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
34
|
+
// setup transaction
|
35
|
+
const transaction = new web3_js_1.Transaction();
|
36
|
+
const signers = [payer];
|
37
|
+
// General variables
|
38
|
+
const vaultSystemStatePublicKey = yield (0, Constants_1.getVaultSystemStatePublicKey)(program.programId);
|
39
|
+
// Find referrer account
|
40
|
+
const referrer = yield payer.publicKey;
|
41
|
+
const referralAccountPublicKey = yield (0, Constants_1.getReferralAccountPublicKey)(program.programId, referrer);
|
42
|
+
// Derive the user referral account public key
|
43
|
+
const referallStatePublicKey = yield (0, Constants_1.getReferralStatePublicKey)(program.programId);
|
44
|
+
const hedgeMintPublicKey = yield (0, Constants_1.getHedgeMintPublicKey)(program.programId);
|
45
|
+
// Get HDG account of signer
|
46
|
+
const payerHdgAssociatedTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, hedgeMintPublicKey, payer.publicKey);
|
47
|
+
const ushMintPublicKey = yield (0, Constants_1.getUshMintPublicKey)(program.programId);
|
48
|
+
// Get USH account of signer
|
49
|
+
const payerUshAssociatedTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, ushMintPublicKey, payer.publicKey);
|
50
|
+
// Get community_associated_hedge_token_account
|
51
|
+
const communityAssociatedHedgeTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, hedgeMintPublicKey, vaultSystemStatePublicKey, true);
|
52
|
+
const [feePoolPublicKey] = yield (0, Constants_1.getPoolPublicKeyForMint)(program.programId, hedgeMintPublicKey);
|
53
|
+
const feePoolAssociatedUshTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, ushMintPublicKey, feePoolPublicKey, true);
|
54
|
+
transaction.add(yield compoundReferralClaimFeesInstruction(program, payer.publicKey, vaultSystemStatePublicKey, poolPosition, stakedTokenMintPublicKey, referralAccountPublicKey, referallStatePublicKey, hedgeMintPublicKey, payerHdgAssociatedTokenAccount.address, ushMintPublicKey, payerUshAssociatedTokenAccount.address, communityAssociatedHedgeTokenAccount.address, feePoolPublicKey, feePoolAssociatedUshTokenAccount.address));
|
55
|
+
yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, signers).catch(Errors_1.parseAnchorErrors);
|
56
|
+
return referralAccountPublicKey;
|
57
|
+
});
|
58
|
+
}
|
59
|
+
exports.compoundReferralClaimFees = compoundReferralClaimFees;
|
60
|
+
function compoundReferralClaimFeesInstruction(program, payerPublicKey, vaultSystemStatePublicKey, poolPositionPublicKey, stakedTokenMintPublicKey, referralAccountPublicKey, referralStatePublicKey, hedgeMintPublicKey, hdgAssociatedTokenAccountPublicKey, ushMintPublicKey, ushAssociatedTokenAccountPublicKey, communityAssociatedHedgeTokenAccountPublicKey, feePoolPublicKey, feePoolAssociatedUshTokenAccountPublicKey) {
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
62
|
+
const [poolPublickey] = yield (0, Constants_1.getCompoundPoolPublicKeyForMint)(program.programId, stakedTokenMintPublicKey);
|
63
|
+
return yield program.methods
|
64
|
+
.compoundReferralClaimFees()
|
65
|
+
.accounts({
|
66
|
+
signer: payerPublicKey,
|
67
|
+
vaultSystemState: vaultSystemStatePublicKey,
|
68
|
+
referralState: referralStatePublicKey,
|
69
|
+
referralAccount: referralAccountPublicKey,
|
70
|
+
poolPosition: poolPositionPublicKey,
|
71
|
+
hedgeMint: hedgeMintPublicKey,
|
72
|
+
signerHdgAta: hdgAssociatedTokenAccountPublicKey,
|
73
|
+
ushMint: ushMintPublicKey,
|
74
|
+
signerUshAta: ushAssociatedTokenAccountPublicKey,
|
75
|
+
communityAssociatedHedgeTokenAccount: communityAssociatedHedgeTokenAccountPublicKey,
|
76
|
+
pool: poolPublickey,
|
77
|
+
stakedTokenMint: stakedTokenMintPublicKey,
|
78
|
+
feePool: feePoolPublicKey,
|
79
|
+
feePoolAssociatedUshTokenAccount: feePoolAssociatedUshTokenAccountPublicKey,
|
80
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
81
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
82
|
+
rent: web3_js_1.SYSVAR_RENT_PUBKEY,
|
83
|
+
})
|
84
|
+
.instruction();
|
85
|
+
});
|
86
|
+
}
|
87
|
+
exports.compoundReferralClaimFeesInstruction = compoundReferralClaimFeesInstruction;
|
@@ -0,0 +1,58 @@
|
|
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.createCompoundStakingPoolInstruction = exports.createCompoundStakingPool = void 0;
|
16
|
+
const anchor_1 = require("@project-serum/anchor");
|
17
|
+
const spl_token_1 = require("@solana/spl-token");
|
18
|
+
const web3_js_1 = require("@solana/web3.js");
|
19
|
+
const Constants_1 = require("../Constants");
|
20
|
+
const Errors_1 = require("../utils/Errors");
|
21
|
+
const sendAndConfirmWithDebug_1 = __importDefault(require("../utils/sendAndConfirmWithDebug"));
|
22
|
+
function createCompoundStakingPool(program, provider, payer, mintPublicKey, overrideStartTime) {
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
24
|
+
const transaction = new web3_js_1.Transaction().add(yield createCompoundStakingPoolInstruction(program, payer.publicKey, mintPublicKey, overrideStartTime));
|
25
|
+
yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, [payer]).catch(Errors_1.parseAnchorErrors);
|
26
|
+
const [poolPublickey] = yield (0, Constants_1.getCompoundPoolPublicKeyForMint)(program.programId, mintPublicKey);
|
27
|
+
return poolPublickey;
|
28
|
+
});
|
29
|
+
}
|
30
|
+
exports.createCompoundStakingPool = createCompoundStakingPool;
|
31
|
+
function createCompoundStakingPoolInstruction(program, payerPublicKey, mintPublicKey, overrideStartTime) {
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
33
|
+
const vaultSystemStatePublicKey = yield (0, Constants_1.getVaultSystemStatePublicKey)(program.programId);
|
34
|
+
const ushMintPublickey = yield (0, Constants_1.getUshMintPublicKey)(program.programId);
|
35
|
+
const hedgeMintPublickey = yield (0, Constants_1.getHedgeMintPublicKey)(program.programId);
|
36
|
+
const [poolPublickey, poolBump] = yield (0, Constants_1.getCompoundPoolPublicKeyForMint)(program.programId, mintPublicKey);
|
37
|
+
const poolAssociatedStakedTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(program.programId, poolPublickey, mintPublicKey);
|
38
|
+
const poolAssociatedUshTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(program.programId, poolPublickey, ushMintPublickey);
|
39
|
+
return yield program.methods
|
40
|
+
.createCompoundStakingPool(new anchor_1.BN(overrideStartTime !== null && overrideStartTime !== void 0 ? overrideStartTime : Math.floor(Date.now() / 1000)))
|
41
|
+
.accounts({
|
42
|
+
signer: payerPublicKey,
|
43
|
+
vaultSystemState: vaultSystemStatePublicKey,
|
44
|
+
pool: poolPublickey,
|
45
|
+
stakedTokenMint: mintPublicKey,
|
46
|
+
ushMint: ushMintPublickey,
|
47
|
+
hedgeMint: hedgeMintPublickey,
|
48
|
+
poolAssociatedStakedTokenAccount: poolAssociatedStakedTokenAccount,
|
49
|
+
poolAssociatedUshTokenAccount: poolAssociatedUshTokenAccount,
|
50
|
+
rent: web3_js_1.SYSVAR_RENT_PUBKEY,
|
51
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
52
|
+
associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
|
53
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
54
|
+
})
|
55
|
+
.instruction();
|
56
|
+
});
|
57
|
+
}
|
58
|
+
exports.createCompoundStakingPoolInstruction = createCompoundStakingPoolInstruction;
|
@@ -0,0 +1,56 @@
|
|
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.createCompoundStakingPoolPositionInstruction = exports.createCompoundStakingPoolPosition = void 0;
|
16
|
+
const anchor_1 = require("@project-serum/anchor");
|
17
|
+
const spl_token_1 = require("@solana/spl-token");
|
18
|
+
const web3_js_1 = require("@solana/web3.js");
|
19
|
+
const Constants_1 = require("../Constants");
|
20
|
+
const Errors_1 = require("../utils/Errors");
|
21
|
+
const sendAndConfirmWithDebug_1 = __importDefault(require("../utils/sendAndConfirmWithDebug"));
|
22
|
+
function createCompoundStakingPoolPosition(program, provider, payer, mintPublicKey, depositAmount, overrideStartTime) {
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
24
|
+
const [poolPublickey, poolBump] = yield (0, Constants_1.getCompoundPoolPublicKeyForMint)(program.programId, mintPublicKey);
|
25
|
+
const poolPosition = yield (0, Constants_1.getCompoundPoolPositionAddress)(program.programId, poolPublickey, payer.publicKey);
|
26
|
+
const payerAssociatedTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, mintPublicKey, payer.publicKey);
|
27
|
+
const transaction = new web3_js_1.Transaction().add(yield createCompoundStakingPoolPositionInstruction(program, payer.publicKey, poolPosition, mintPublicKey, new anchor_1.BN(depositAmount), overrideStartTime));
|
28
|
+
yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, [payer]).catch(Errors_1.parseAnchorErrors);
|
29
|
+
return poolPosition;
|
30
|
+
});
|
31
|
+
}
|
32
|
+
exports.createCompoundStakingPoolPosition = createCompoundStakingPoolPosition;
|
33
|
+
function createCompoundStakingPoolPositionInstruction(program, payerPublicKey, poolPositionPublicKey, stakedTokenMintPublicKey, depositAmount, overrideStartTime) {
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
35
|
+
const [poolPublickey] = yield (0, Constants_1.getCompoundPoolPublicKeyForMint)(program.programId, stakedTokenMintPublicKey);
|
36
|
+
const poolAssociatedStakedTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(program.programId, poolPublickey, stakedTokenMintPublicKey);
|
37
|
+
const payersArbitraryTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(program.programId, payerPublicKey, stakedTokenMintPublicKey);
|
38
|
+
const vaultSystemState = yield (0, Constants_1.getVaultSystemStatePublicKey)(program.programId);
|
39
|
+
return yield program.methods
|
40
|
+
.createCompoundStakingPoolPosition(depositAmount, new anchor_1.BN(overrideStartTime !== null && overrideStartTime !== void 0 ? overrideStartTime : Math.floor(Date.now() / 1000)) // override current time
|
41
|
+
)
|
42
|
+
.accounts({
|
43
|
+
payer: payerPublicKey,
|
44
|
+
vaultSystemState: vaultSystemState,
|
45
|
+
pool: poolPublickey,
|
46
|
+
poolPosition: poolPositionPublicKey,
|
47
|
+
stakedTokenMint: stakedTokenMintPublicKey,
|
48
|
+
poolAssociatedStakedTokenAccount: poolAssociatedStakedTokenAccount,
|
49
|
+
payerAssociatedStakedTokenAccount: payersArbitraryTokenAccount,
|
50
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
51
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
52
|
+
})
|
53
|
+
.instruction();
|
54
|
+
});
|
55
|
+
}
|
56
|
+
exports.createCompoundStakingPoolPositionInstruction = createCompoundStakingPoolPositionInstruction;
|
@@ -0,0 +1,55 @@
|
|
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.depositCompoundStakingPoolPositionInstruction = exports.depositCompoundStakingPoolPosition = void 0;
|
16
|
+
const anchor_1 = require("@project-serum/anchor");
|
17
|
+
const spl_token_1 = require("@solana/spl-token");
|
18
|
+
const web3_js_1 = require("@solana/web3.js");
|
19
|
+
const Constants_1 = require("../Constants");
|
20
|
+
const Errors_1 = require("../utils/Errors");
|
21
|
+
const sendAndConfirmWithDebug_1 = __importDefault(require("../utils/sendAndConfirmWithDebug"));
|
22
|
+
function depositCompoundStakingPoolPosition(program, provider, payer, mintPublicKey, depositAmount, overrideStartTime) {
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
24
|
+
const [poolPublickey, poolBump] = yield (0, Constants_1.getCompoundPoolPublicKeyForMint)(program.programId, mintPublicKey);
|
25
|
+
const poolPosition = yield (0, Constants_1.getCompoundPoolPositionAddress)(program.programId, poolPublickey, payer.publicKey);
|
26
|
+
const transaction = new web3_js_1.Transaction().add(yield depositCompoundStakingPoolPositionInstruction(program, payer.publicKey, poolPosition, mintPublicKey, new anchor_1.BN(depositAmount), overrideStartTime));
|
27
|
+
yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, [payer]).catch(Errors_1.parseAnchorErrors);
|
28
|
+
return poolPosition;
|
29
|
+
});
|
30
|
+
}
|
31
|
+
exports.depositCompoundStakingPoolPosition = depositCompoundStakingPoolPosition;
|
32
|
+
function depositCompoundStakingPoolPositionInstruction(program, payerPublicKey, poolPositionPublicKey, stakedTokenMintPublicKey, depositAmount, overrideStartTime) {
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
34
|
+
const [poolPublickey] = yield (0, Constants_1.getCompoundPoolPublicKeyForMint)(program.programId, stakedTokenMintPublicKey);
|
35
|
+
const poolAssociatedStakedTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(program.programId, poolPublickey, stakedTokenMintPublicKey);
|
36
|
+
const payersArbitraryTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(program.programId, payerPublicKey, stakedTokenMintPublicKey);
|
37
|
+
const vaultSystemState = yield (0, Constants_1.getVaultSystemStatePublicKey)(program.programId);
|
38
|
+
return yield program.methods
|
39
|
+
.depositCompoundStakingPoolPosition(depositAmount, new anchor_1.BN(overrideStartTime !== null && overrideStartTime !== void 0 ? overrideStartTime : Math.floor(Date.now() / 1000)) // override current time
|
40
|
+
)
|
41
|
+
.accounts({
|
42
|
+
payer: payerPublicKey,
|
43
|
+
vaultSystemState: vaultSystemState,
|
44
|
+
pool: poolPublickey,
|
45
|
+
poolPosition: poolPositionPublicKey,
|
46
|
+
stakedTokenMint: stakedTokenMintPublicKey,
|
47
|
+
poolAssociatedStakedTokenAccount: poolAssociatedStakedTokenAccount,
|
48
|
+
payerAssociatedStakedTokenAccount: payersArbitraryTokenAccount,
|
49
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
50
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
51
|
+
})
|
52
|
+
.instruction();
|
53
|
+
});
|
54
|
+
}
|
55
|
+
exports.depositCompoundStakingPoolPositionInstruction = depositCompoundStakingPoolPositionInstruction;
|
@@ -0,0 +1,64 @@
|
|
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.depositRewardsToCompoundStakingPoolInstruction = exports.depositRewardsToCompoundStakingPool = void 0;
|
16
|
+
const anchor_1 = require("@project-serum/anchor");
|
17
|
+
const spl_token_1 = require("@solana/spl-token");
|
18
|
+
const web3_js_1 = require("@solana/web3.js");
|
19
|
+
const Constants_1 = require("../Constants");
|
20
|
+
const Errors_1 = require("../utils/Errors");
|
21
|
+
const sendAndConfirmWithDebug_1 = __importDefault(require("../utils/sendAndConfirmWithDebug"));
|
22
|
+
function depositRewardsToCompoundStakingPool(program, provider, payer, mintPublicKey, depositAmount, overrideStartTime) {
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
24
|
+
const history = web3_js_1.Keypair.generate();
|
25
|
+
const [poolPublickey] = yield (0, Constants_1.getCompoundPoolPublicKeyForMint)(program.programId, mintPublicKey);
|
26
|
+
const [poolStakingPublickey] = yield (0, Constants_1.getPoolPublicKeyForMint)(program.programId, mintPublicKey);
|
27
|
+
const hedgeMintPublickey = yield (0, Constants_1.getHedgeMintPublicKey)(program.programId);
|
28
|
+
const stakingPoolAccountObject = yield program.account.stakingPool.fetch(poolStakingPublickey);
|
29
|
+
const payerAssociatedTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, hedgeMintPublickey, stakingPoolAccountObject.compoundPoolDelegateWallet);
|
30
|
+
const transaction = new web3_js_1.Transaction().add(yield depositRewardsToCompoundStakingPoolInstruction(program, payer.publicKey, mintPublicKey, history.publicKey, new anchor_1.BN(depositAmount), overrideStartTime));
|
31
|
+
yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, [payer, history]).catch(Errors_1.parseAnchorErrors);
|
32
|
+
return poolPublickey;
|
33
|
+
});
|
34
|
+
}
|
35
|
+
exports.depositRewardsToCompoundStakingPool = depositRewardsToCompoundStakingPool;
|
36
|
+
function depositRewardsToCompoundStakingPoolInstruction(program, payerPublicKey, mintPublicKey, historyPublicKey, amount, overrideStartTime) {
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
38
|
+
const vaultSystemStatePublicKey = yield (0, Constants_1.getVaultSystemStatePublicKey)(program.programId);
|
39
|
+
const hedgeMintPublickey = yield (0, Constants_1.getHedgeMintPublicKey)(program.programId);
|
40
|
+
const [poolPublickey, poolBump] = yield (0, Constants_1.getCompoundPoolPublicKeyForMint)(program.programId, mintPublicKey);
|
41
|
+
const [poolStakingPublickey] = yield (0, Constants_1.getPoolPublicKeyForMint)(program.programId, mintPublicKey);
|
42
|
+
const poolAssociatedHedgeTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(program.programId, poolPublickey, hedgeMintPublickey);
|
43
|
+
const payerAssociatedHedgeTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(program.programId, payerPublicKey, hedgeMintPublickey);
|
44
|
+
return yield program.methods
|
45
|
+
.depositRewardsToCompoundPool(amount, new anchor_1.BN(overrideStartTime !== null && overrideStartTime !== void 0 ? overrideStartTime : Math.floor(Date.now() / 1000)) // override current time
|
46
|
+
)
|
47
|
+
.accounts({
|
48
|
+
payer: payerPublicKey,
|
49
|
+
vaultSystemState: vaultSystemStatePublicKey,
|
50
|
+
history: historyPublicKey,
|
51
|
+
compoundPool: poolPublickey,
|
52
|
+
pool: poolStakingPublickey,
|
53
|
+
stakedTokenMint: mintPublicKey,
|
54
|
+
hedgeMint: hedgeMintPublickey,
|
55
|
+
poolAssociatedHedgeAccount: poolAssociatedHedgeTokenAccount,
|
56
|
+
payerAssociatedHedgeAccount: payerAssociatedHedgeTokenAccount,
|
57
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
58
|
+
associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
|
59
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
60
|
+
})
|
61
|
+
.instruction();
|
62
|
+
});
|
63
|
+
}
|
64
|
+
exports.depositRewardsToCompoundStakingPoolInstruction = depositRewardsToCompoundStakingPoolInstruction;
|
@@ -29,6 +29,10 @@ function liquidateVault(program, provider, payer, vaultPublicKey, overrideTime)
|
|
29
29
|
const [hedgeStakingPoolPublicKey] = yield (0, Constants_1.getPoolPublicKeyForMint)(program.programId, hedgeMintPublickey);
|
30
30
|
const liquidationPoolStatePublicKey = yield (0, Constants_1.getLiquidationPoolStatePublicKey)(program.programId);
|
31
31
|
const poolStateInfo = yield program.account.liquidationPoolState.fetch(liquidationPoolStatePublicKey);
|
32
|
+
const additionalComputationBudget = web3_js_1.ComputeBudgetProgram.requestUnits({
|
33
|
+
units: 300000,
|
34
|
+
additionalFee: 0,
|
35
|
+
});
|
32
36
|
const payerAssociatedTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, collateralMint, payer.publicKey, true);
|
33
37
|
const feePoolAssociatedTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, collateralMint, hedgeStakingPoolPublicKey, true);
|
34
38
|
const vaultAssociatedTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, collateralMint, vaultPublicKey, true);
|
@@ -39,7 +43,9 @@ function liquidateVault(program, provider, payer, vaultPublicKey, overrideTime)
|
|
39
43
|
const history = web3_js_1.Keypair.generate();
|
40
44
|
const newEra = web3_js_1.Keypair.generate();
|
41
45
|
const transaction = new web3_js_1.Transaction();
|
42
|
-
transaction
|
46
|
+
transaction
|
47
|
+
.add(additionalComputationBudget)
|
48
|
+
.add(yield liquidateVaultInstruction(program, payer.publicKey, payerAssociatedTokenAccount.address, vaultPublicKey, vaultAssociatedTokenAccount.address, liquidationPoolStatePublicKey, poolStateInfo.currentEra, poolAssociatedTokenAccount.address, history.publicKey, newEra.publicKey, hedgeStakingPoolPublicKey, feePoolAssociatedTokenAccount.address, hedgeStakingPoolAssociatedUshTokenAccount.address, collateralMint, vaultTypeAssociatedTokenAccount.address, oldSmallerPublicKey, newSmallerPublicKey, newLargerPublicKey, vaultAccount.vaultType, overrideTime));
|
43
49
|
yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, [payer, history, newEra]);
|
44
50
|
return vaultPublicKey;
|
45
51
|
});
|
@@ -21,6 +21,10 @@ const getLinkedListAccounts_1 = require("../utils/getLinkedListAccounts");
|
|
21
21
|
const sendAndConfirmWithDebug_1 = __importDefault(require("../utils/sendAndConfirmWithDebug"));
|
22
22
|
function loanVault(program, provider, payer, vaultPublicKey, loanAmount, overrideTime, referrer) {
|
23
23
|
return __awaiter(this, void 0, void 0, function* () {
|
24
|
+
const additionalComputationBudget = web3_js_1.ComputeBudgetProgram.requestUnits({
|
25
|
+
units: 300000,
|
26
|
+
additionalFee: 0,
|
27
|
+
});
|
24
28
|
const ushMintPublickey = yield (0, Constants_1.getUshMintPublicKey)(program.programId);
|
25
29
|
const payerUshAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, ushMintPublickey, payer.publicKey);
|
26
30
|
const vaultAccount = yield program.account.vault.fetch(vaultPublicKey);
|
@@ -37,7 +41,9 @@ function loanVault(program, provider, payer, vaultPublicKey, loanAmount, overrid
|
|
37
41
|
referralAccountPublicKey = yield (0, Constants_1.getReferralAccountPublicKey)(program.programId, referrer);
|
38
42
|
}
|
39
43
|
const history = web3_js_1.Keypair.generate();
|
40
|
-
const transaction = new web3_js_1.Transaction()
|
44
|
+
const transaction = new web3_js_1.Transaction()
|
45
|
+
.add(additionalComputationBudget)
|
46
|
+
.add(yield loanVaultInstruction(program, payer.publicKey, payerUshAccount.address, vaultPublicKey, vaultAssociatedTokenAccount.address, history.publicKey, vaultAccount.vaultType, vaultTypeAssociatedTokenAccount.address, oldSmallerPublicKey, newSmallerPublicKey, newLargerPublicKey, new anchor_1.BN(loanAmount), referralAccountPublicKey, overrideTime));
|
41
47
|
yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, [payer, history]);
|
42
48
|
return vaultPublicKey;
|
43
49
|
});
|