hedge-web3 0.1.27 → 0.1.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/declarations/Constants.d.ts +1 -1
  2. package/declarations/idl/vault.d.ts +277 -126
  3. package/declarations/index.d.ts +3 -0
  4. package/declarations/instructions/claimLiquidationPoolPosition.d.ts +3 -2
  5. package/declarations/instructions/claimStakingPoolPosition.d.ts +3 -2
  6. package/declarations/instructions/closeLiquidationPoolPosition.d.ts +3 -2
  7. package/declarations/instructions/createStakingPool.d.ts +3 -2
  8. package/declarations/instructions/createVault.d.ts +6 -5
  9. package/declarations/instructions/depositLiquidationPool.d.ts +3 -2
  10. package/declarations/instructions/depositStakingPool.d.ts +3 -2
  11. package/declarations/instructions/depositVault.d.ts +3 -2
  12. package/declarations/instructions/initHedgeFoundation.d.ts +3 -2
  13. package/declarations/instructions/liquidateVault.d.ts +3 -2
  14. package/declarations/instructions/loanVault.d.ts +3 -2
  15. package/declarations/instructions/redeemVault.d.ts +3 -2
  16. package/declarations/instructions/refreshOraclePrice.d.ts +3 -2
  17. package/declarations/instructions/repayVault.d.ts +3 -2
  18. package/declarations/instructions/setHalted.d.ts +3 -2
  19. package/declarations/instructions/setVaultTypeStatus.d.ts +5 -0
  20. package/declarations/instructions/withdrawStakingPool.d.ts +3 -2
  21. package/declarations/instructions/withdrawVault.d.ts +3 -2
  22. package/declarations/state/VaultAccount.d.ts +8 -0
  23. package/declarations/utils/getLinkedListAccounts.d.ts +5 -0
  24. package/lib/Constants.js +1 -1
  25. package/lib/idl/vault.js +277 -126
  26. package/lib/index.js +3 -0
  27. package/lib/instructions/claimLiquidationPoolPosition.js +19 -22
  28. package/lib/instructions/claimStakingPoolPosition.js +19 -19
  29. package/lib/instructions/closeLiquidationPoolPosition.js +22 -22
  30. package/lib/instructions/createStakingPool.js +18 -19
  31. package/lib/instructions/createVault.js +28 -31
  32. package/lib/instructions/depositLiquidationPool.js +17 -18
  33. package/lib/instructions/depositStakingPool.js +16 -18
  34. package/lib/instructions/depositVault.js +31 -26
  35. package/lib/instructions/initHedgeFoundation.js +17 -19
  36. package/lib/instructions/initHedgeFoundationTokens.js +15 -15
  37. package/lib/instructions/liquidateVault.js +36 -32
  38. package/lib/instructions/loanVault.js +27 -22
  39. package/lib/instructions/redeemVault.js +28 -23
  40. package/lib/instructions/refreshOraclePrice.js +17 -17
  41. package/lib/instructions/repayVault.js +27 -22
  42. package/lib/instructions/setHalted.js +8 -9
  43. package/lib/instructions/setVaultTypeStatus.js +37 -0
  44. package/lib/instructions/withdrawStakingPool.js +22 -24
  45. package/lib/instructions/withdrawVault.js +30 -25
  46. package/lib/state/LiquidationPoolEra.js +3 -1
  47. package/lib/state/LiquidationPosition.js +0 -7
  48. package/lib/state/StakingPool.js +3 -4
  49. package/lib/state/VaultAccount.js +51 -1
  50. package/lib/utils/getLinkedListAccounts.js +139 -0
  51. package/package.json +4 -2
  52. package/src/Constants.ts +1 -1
  53. package/src/idl/vault.ts +554 -252
  54. package/src/index.ts +4 -0
  55. package/src/instructions/claimLiquidationPoolPosition.ts +39 -29
  56. package/src/instructions/claimStakingPoolPosition.ts +45 -25
  57. package/src/instructions/closeLiquidationPoolPosition.ts +62 -32
  58. package/src/instructions/createStakingPool.ts +38 -37
  59. package/src/instructions/createVault.ts +81 -125
  60. package/src/instructions/depositLiquidationPool.ts +45 -26
  61. package/src/instructions/depositStakingPool.ts +32 -24
  62. package/src/instructions/depositVault.ts +77 -31
  63. package/src/instructions/initHedgeFoundation.ts +42 -43
  64. package/src/instructions/initHedgeFoundationTokens.ts +38 -39
  65. package/src/instructions/liquidateVault.ts +96 -22
  66. package/src/instructions/loanVault.ts +84 -30
  67. package/src/instructions/redeemVault.ts +91 -32
  68. package/src/instructions/refreshOraclePrice.ts +41 -32
  69. package/src/instructions/repayVault.ts +74 -29
  70. package/src/instructions/setHalted.ts +32 -24
  71. package/src/instructions/setVaultTypeStatus.ts +58 -0
  72. package/src/instructions/withdrawStakingPool.ts +44 -30
  73. package/src/instructions/withdrawVault.ts +87 -33
  74. package/src/state/LiquidationPoolEra.ts +4 -3
  75. package/src/state/LiquidationPosition.ts +0 -27
  76. package/src/state/StakingPool.ts +4 -7
  77. package/src/state/StakingPoolPosition.ts +2 -3
  78. package/src/state/VaultAccount.ts +65 -8
  79. package/src/state/VaultHistoryEvent.ts +1 -2
  80. package/src/utils/getLinkedListAccounts.ts +157 -0
@@ -24,7 +24,7 @@ function claimStakingPoolPosition(program, provider, poolPosition, payer, collat
24
24
  const feePoolAssociatedTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, collateralMint, feePool, true);
25
25
  const payerAssociatedTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, collateralMint, payer.publicKey);
26
26
  const transaction = new web3_js_1.Transaction().add(yield claimStakingPoolPositionInstruction(program, feePool, feePoolAssociatedTokenAccount.address, stakedTokenMint, vaultTypeAccount, collateralMint, poolPosition, payer.publicKey, payerAssociatedTokenAccount.address));
27
- yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer], provider.opts).catch(Errors_1.parseAnchorErrors);
27
+ yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer]).catch(Errors_1.parseAnchorErrors);
28
28
  return payerAssociatedTokenAccount.address;
29
29
  });
30
30
  }
@@ -32,24 +32,24 @@ exports.claimStakingPoolPosition = claimStakingPoolPosition;
32
32
  function claimStakingPoolPositionInstruction(program, feePool, feePoolAssociatedTokenAccount, stakedTokenMint, vaultTypeAccount, collateralMint, poolPosition, payer, payerAssociatedTokenAccount) {
33
33
  return __awaiter(this, void 0, void 0, function* () {
34
34
  const vaultSystemState = yield (0, Constants_1.getVaultSystemStatePublicKey)();
35
- return program.instruction.claimStakingPoolPosition({
36
- accounts: {
37
- vaultSystemState: vaultSystemState,
38
- feePool: feePool,
39
- stakedTokenMint: stakedTokenMint,
40
- feePoolAssociatedTokenAccount: feePoolAssociatedTokenAccount,
41
- vaultTypeAccount: vaultTypeAccount,
42
- collateralMint: collateralMint,
43
- poolPosition: poolPosition,
44
- payer: payer,
45
- payerAssociatedTokenAccount: payerAssociatedTokenAccount,
46
- associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
47
- systemProgram: web3_js_1.SystemProgram.programId,
48
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
49
- rent: web3_js_1.SYSVAR_RENT_PUBKEY
50
- },
51
- signers: []
52
- });
35
+ return yield program.methods
36
+ .claimStakingPoolPosition()
37
+ .accounts({
38
+ vaultSystemState: vaultSystemState,
39
+ feePool: feePool,
40
+ stakedTokenMint: stakedTokenMint,
41
+ feePoolAssociatedTokenAccount: feePoolAssociatedTokenAccount,
42
+ vaultTypeAccount: vaultTypeAccount,
43
+ collateralMint: collateralMint,
44
+ poolPosition: poolPosition,
45
+ payer: payer,
46
+ payerAssociatedTokenAccount: payerAssociatedTokenAccount,
47
+ associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
48
+ systemProgram: web3_js_1.SystemProgram.programId,
49
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
50
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY,
51
+ })
52
+ .instruction();
53
53
  });
54
54
  }
55
55
  exports.claimStakingPoolPositionInstruction = claimStakingPoolPositionInstruction;
@@ -26,7 +26,7 @@ function closeLiquidationPoolPosition(program, provider, poolPosition, payer, ov
26
26
  const payerAssociatedHedgeAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, hedgeMint, payer.publicKey);
27
27
  const communityAssociatedHedgeTokenAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, hedgeMint, vaultSystemStatePublicKey, true);
28
28
  const transaction = new web3_js_1.Transaction().add(yield closeLiquidationPoolPositionInstruction(program, poolEra, poolPosition, payer.publicKey, payerUshAccount.address, payerAssociatedHedgeAccount.address, communityAssociatedHedgeTokenAccount.address, overrideStartTime));
29
- yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer], provider.opts).catch(Errors_1.parseAnchorErrors);
29
+ yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer]).catch(Errors_1.parseAnchorErrors);
30
30
  return poolPosition;
31
31
  });
32
32
  }
@@ -38,27 +38,27 @@ function closeLiquidationPoolPositionInstruction(program, poolEra, poolPosition,
38
38
  const hedgeMint = yield (0, Constants_1.getHedgeMintPublicKey)();
39
39
  const poolUshAccount = yield (0, Constants_1.getLiquidationPoolUshAccountPublicKey)();
40
40
  const poolState = yield (0, Constants_1.getLiquidationPoolStatePublicKey)();
41
- return program.instruction.closeLiquidationPoolPosition(new anchor_1.BN(overrideStartTime !== null && overrideStartTime !== void 0 ? overrideStartTime : Math.floor(Date.now() / 1000)), // override current time
42
- {
43
- accounts: {
44
- vaultSystemState: vaultSystemStatePublicKey,
45
- poolState: poolState,
46
- poolEra: poolEra,
47
- poolPosition: poolPosition,
48
- poolUshAccount: poolUshAccount,
49
- payer: payerPublicKey,
50
- ownerUshAccount: payerUshAccount,
51
- hedgeMint: hedgeMint,
52
- ushMint: ushMint,
53
- payerAssociatedHedgeAccount: payerAssociatedHedgeAccount,
54
- communityAssociatedHedgeTokenAccount: communityAssociatedHedgeTokenAccount,
55
- associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
56
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
57
- systemProgram: web3_js_1.SystemProgram.programId,
58
- rent: web3_js_1.SYSVAR_RENT_PUBKEY
59
- },
60
- signers: []
61
- });
41
+ return yield program.methods
42
+ .closeLiquidationPoolPosition(new anchor_1.BN(overrideStartTime !== null && overrideStartTime !== void 0 ? overrideStartTime : Math.floor(Date.now() / 1000)) // override current time
43
+ )
44
+ .accounts({
45
+ vaultSystemState: vaultSystemStatePublicKey,
46
+ poolState: poolState,
47
+ poolEra: poolEra,
48
+ poolPosition: poolPosition,
49
+ poolUshAccount: poolUshAccount,
50
+ payer: payerPublicKey,
51
+ ownerUshAccount: payerUshAccount,
52
+ hedgeMint: hedgeMint,
53
+ ushMint: ushMint,
54
+ payerAssociatedHedgeAccount: payerAssociatedHedgeAccount,
55
+ communityAssociatedHedgeTokenAccount: communityAssociatedHedgeTokenAccount,
56
+ associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
57
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
58
+ systemProgram: web3_js_1.SystemProgram.programId,
59
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY,
60
+ })
61
+ .instruction();
62
62
  });
63
63
  }
64
64
  exports.closeLiquidationPoolPositionInstruction = closeLiquidationPoolPositionInstruction;
@@ -18,7 +18,7 @@ const Constants_1 = require("../Constants");
18
18
  function createStakingPool(program, provider, payer, mintPublicKey, hedgeTokensToBeMinted, overrideStartTime) {
19
19
  return __awaiter(this, void 0, void 0, function* () {
20
20
  const transaction = new web3_js_1.Transaction().add(yield createStakingPoolInstruction(program, payer.publicKey, mintPublicKey, hedgeTokensToBeMinted, overrideStartTime));
21
- yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer], provider.opts).catch(Errors_1.parseAnchorErrors);
21
+ yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer]).catch(Errors_1.parseAnchorErrors);
22
22
  const [poolPublickey] = yield (0, Constants_1.getPoolPublicKeyForMint)(mintPublicKey);
23
23
  return poolPublickey;
24
24
  });
@@ -26,28 +26,27 @@ function createStakingPool(program, provider, payer, mintPublicKey, hedgeTokensT
26
26
  exports.createStakingPool = createStakingPool;
27
27
  function createStakingPoolInstruction(program, payerPublicKey, mintPublicKey, hedgeTokensToBeMinted, overrideStartTime) {
28
28
  return __awaiter(this, void 0, void 0, function* () {
29
- console.log("createStakingPoolInstruction program ID", program.programId.toString());
30
29
  const vaultSystemStatePublicKey = yield (0, Constants_1.getVaultSystemStatePublicKey)();
31
30
  const ushMintPublickey = yield (0, Constants_1.getUshMintPublicKey)();
32
- const [poolPublickey, poolBump, poolSeedPhrase] = yield (0, Constants_1.getPoolPublicKeyForMint)(mintPublicKey);
31
+ const [poolPublickey, poolBump] = yield (0, Constants_1.getPoolPublicKeyForMint)(mintPublicKey);
33
32
  const poolAssociatedStakedTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(poolPublickey, mintPublicKey);
34
33
  const poolAssociatedUshTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(poolPublickey, ushMintPublickey);
35
- return program.instruction.createStakingPool(poolBump, poolSeedPhrase, new anchor_1.BN(hedgeTokensToBeMinted), new anchor_1.BN(overrideStartTime !== null && overrideStartTime !== void 0 ? overrideStartTime : Math.floor(Date.now() / 1000)), {
36
- accounts: {
37
- signer: payerPublicKey,
38
- vaultSystemState: vaultSystemStatePublicKey,
39
- pool: poolPublickey,
40
- stakedTokenMintInfo: mintPublicKey,
41
- ushMint: ushMintPublickey,
42
- poolAssociatedStakedTokenAccount: poolAssociatedStakedTokenAccount,
43
- poolAssociatedUshTokenAccount: poolAssociatedUshTokenAccount,
44
- rent: web3_js_1.SYSVAR_RENT_PUBKEY,
45
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
46
- associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
47
- systemProgram: web3_js_1.SystemProgram.programId
48
- },
49
- signers: []
50
- });
34
+ return yield program.methods
35
+ .createStakingPool(poolBump, new anchor_1.BN(hedgeTokensToBeMinted), new anchor_1.BN(overrideStartTime !== null && overrideStartTime !== void 0 ? overrideStartTime : Math.floor(Date.now() / 1000)))
36
+ .accounts({
37
+ signer: payerPublicKey,
38
+ vaultSystemState: vaultSystemStatePublicKey,
39
+ pool: poolPublickey,
40
+ stakedTokenMintInfo: mintPublicKey,
41
+ ushMint: ushMintPublickey,
42
+ poolAssociatedStakedTokenAccount: poolAssociatedStakedTokenAccount,
43
+ poolAssociatedUshTokenAccount: poolAssociatedUshTokenAccount,
44
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY,
45
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
46
+ associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
47
+ systemProgram: web3_js_1.SystemProgram.programId,
48
+ })
49
+ .instruction();
51
50
  });
52
51
  }
53
52
  exports.createStakingPoolInstruction = createStakingPoolInstruction;
@@ -32,8 +32,7 @@ function createVault(program, provider, payer, collateralType, depositAmount, ov
32
32
  const wrappedSolAccount = web3_js_1.Keypair.generate();
33
33
  const transaction = new web3_js_1.Transaction();
34
34
  const signers = [payer, history];
35
- const isWrappedSol = vaultTypeAccountInfo.collateralMint.toString() ===
36
- serum_1.TokenInstructions.WRAPPED_SOL_MINT.toString();
35
+ const isWrappedSol = vaultTypeAccountInfo.collateralMint.toString() === serum_1.TokenInstructions.WRAPPED_SOL_MINT.toString();
37
36
  const [hedgeStakingPoolPublicKey] = yield (0, Constants_1.getPoolPublicKeyForMint)(yield (0, Constants_1.getHedgeMintPublicKey)());
38
37
  const feePoolAssociatedUshTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(hedgeStakingPoolPublicKey, ushMintPublickey);
39
38
  if (isWrappedSol) {
@@ -58,16 +57,15 @@ function createVault(program, provider, payer, collateralType, depositAmount, ov
58
57
  owner: payer.publicKey,
59
58
  }));
60
59
  }
61
- yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, signers, provider === null || provider === void 0 ? void 0 : provider.opts).catch(Errors_1.parseAnchorErrors);
60
+ yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, signers).catch(Errors_1.parseAnchorErrors);
62
61
  return newVaultPublicKey;
63
62
  });
64
63
  }
65
64
  exports.createVault = createVault;
66
- function buildCreateVaultTransaction(program, collateralType, depositAmount, overrideTime) {
65
+ function buildCreateVaultTransaction(program, payerPublicKey, collateralType, depositAmount, overrideTime) {
67
66
  return __awaiter(this, void 0, void 0, function* () {
68
- console.log("HEDGE SDK: buildCreateVaultTransaction");
67
+ console.log('HEDGE SDK: buildCreateVaultTransaction');
69
68
  const ushMintPublickey = yield (0, Constants_1.getUshMintPublicKey)();
70
- const payerPublicKey = program.provider.wallet.publicKey;
71
69
  const salt = (0, uuid_1.v4)().substring(0, 8);
72
70
  const newVaultPublicKey = yield (0, Constants_1.findVaultAddress)(salt);
73
71
  const history = web3_js_1.Keypair.generate();
@@ -84,8 +82,7 @@ function buildCreateVaultTransaction(program, collateralType, depositAmount, ove
84
82
  console.log('Lookup vaultTypeAccountPublicKey', vaultTypeAccountPublicKey.toString());
85
83
  const vaultTypeAccountInfo = yield program.account.vaultType.fetch(vaultTypeAccountPublicKey);
86
84
  console.log('Lookup vaultTypeAccountInfo', vaultTypeAccountInfo);
87
- const isWrappedSol = vaultTypeAccountInfo.collateralMint.toString() ===
88
- serum_1.TokenInstructions.WRAPPED_SOL_MINT.toString();
85
+ const isWrappedSol = vaultTypeAccountInfo.collateralMint.toString() === serum_1.TokenInstructions.WRAPPED_SOL_MINT.toString();
89
86
  const payerTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(payerPublicKey, vaultTypeAccountInfo.collateralMint);
90
87
  const vaultAssociatedTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(newVaultPublicKey, vaultTypeAccountInfo.collateralMint);
91
88
  const [hedgeStakingPoolPublicKey] = yield (0, Constants_1.getPoolPublicKeyForMint)(yield (0, Constants_1.getHedgeMintPublicKey)());
@@ -106,7 +103,7 @@ function buildCreateVaultTransaction(program, collateralType, depositAmount, ove
106
103
  }));
107
104
  signers.push(wrappedSolAccount);
108
105
  }
109
- console.log("hedgeStakingPoolPublicKey", hedgeStakingPoolPublicKey.toString());
106
+ console.log('hedgeStakingPoolPublicKey', hedgeStakingPoolPublicKey.toString());
110
107
  transaction.add(yield createVaultInstruction(program, salt, payerPublicKey, isWrappedSol ? wrappedSolAccount.publicKey : payerTokenAccount, newVaultPublicKey, vaultAssociatedTokenAccount, hedgeStakingPoolPublicKey, feePoolAssociatedUshTokenAccount, vaultTypeAccountPublicKey, vaultTypeAccountInfo.collateralMint, history.publicKey, ushMintPublickey, depositAmount, overrideTime));
111
108
  if (isWrappedSol) {
112
109
  transaction.add(serum_1.TokenInstructions.closeAccount({
@@ -117,7 +114,7 @@ function buildCreateVaultTransaction(program, collateralType, depositAmount, ove
117
114
  transaction.partialSign(wrappedSolAccount);
118
115
  }
119
116
  transaction.partialSign(history);
120
- console.log("transaction", transaction);
117
+ console.log('transaction', transaction);
121
118
  return [transaction, signers, newVaultPublicKey];
122
119
  });
123
120
  }
@@ -125,27 +122,27 @@ exports.buildCreateVaultTransaction = buildCreateVaultTransaction;
125
122
  function createVaultInstruction(program, salt, payerPublicKey, payerTokenAccountPublicKey, vaultPublicKey, vaultAssociatedTokenAccount, feePool, feePoolAssociatedUshTokenAccount, vaultTypeAccount, collateralMint, historyPublicKey, ushMintPublickey, depositAmount, overrideTime) {
126
123
  return __awaiter(this, void 0, void 0, function* () {
127
124
  const vaultSystemStatePublicKey = yield (0, Constants_1.getVaultSystemStatePublicKey)();
128
- const ix = program.instruction.createVault(salt, new anchor_1.BN(depositAmount), new anchor_1.BN(overrideTime !== null && overrideTime !== void 0 ? overrideTime : Math.floor(Date.now() / 1000)), // override override time
129
- {
130
- accounts: {
131
- vaultSystemState: vaultSystemStatePublicKey,
132
- vaultTypeAccount: vaultTypeAccount,
133
- vault: vaultPublicKey,
134
- vaultAssociatedTokenAccount: vaultAssociatedTokenAccount,
135
- feePool: feePool,
136
- feePoolAssociatedUshTokenAccount: feePoolAssociatedUshTokenAccount,
137
- history: historyPublicKey,
138
- payer: payerPublicKey,
139
- payerTokenAccount: payerTokenAccountPublicKey,
140
- collateralMint: collateralMint,
141
- ushMint: ushMintPublickey,
142
- systemProgram: web3_js_1.SystemProgram.programId,
143
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
144
- associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
145
- rent: web3_js_1.SYSVAR_RENT_PUBKEY,
146
- },
147
- signers: [],
148
- });
125
+ const ix = program.methods
126
+ .createVault(salt, new anchor_1.BN(depositAmount), new anchor_1.BN(overrideTime !== null && overrideTime !== void 0 ? overrideTime : Math.floor(Date.now() / 1000)) // override override time
127
+ )
128
+ .accounts({
129
+ vaultSystemState: vaultSystemStatePublicKey,
130
+ vaultTypeAccount: vaultTypeAccount,
131
+ vault: vaultPublicKey,
132
+ vaultAssociatedTokenAccount: vaultAssociatedTokenAccount,
133
+ feePool: feePool,
134
+ feePoolAssociatedUshTokenAccount: feePoolAssociatedUshTokenAccount,
135
+ history: historyPublicKey,
136
+ payer: payerPublicKey,
137
+ payerTokenAccount: payerTokenAccountPublicKey,
138
+ collateralMint: collateralMint,
139
+ ushMint: ushMintPublickey,
140
+ systemProgram: web3_js_1.SystemProgram.programId,
141
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
142
+ associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
143
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY,
144
+ })
145
+ .instruction();
149
146
  return ix;
150
147
  });
151
148
  }
@@ -21,7 +21,7 @@ function depositLiquidationPool(program, provider, payer, depositAmount, overrid
21
21
  const payerUshAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, ushMintPublickey, payer.publicKey);
22
22
  const poolPosition = web3_js_1.Keypair.generate();
23
23
  const transaction = new web3_js_1.Transaction().add(yield depositLiquidationPoolInstruction(program, payer.publicKey, payerUshAccount.address, poolPosition.publicKey, depositAmount, overrideStartTime));
24
- yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer, poolPosition], provider.opts).catch(Errors_1.parseAnchorErrors);
24
+ yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer, poolPosition]).catch(Errors_1.parseAnchorErrors);
25
25
  return poolPosition.publicKey;
26
26
  });
27
27
  }
@@ -33,23 +33,22 @@ function depositLiquidationPoolInstruction(program, payerPublicKey, payerUshAcco
33
33
  const poolUSHAccount = yield (0, Constants_1.getLiquidationPoolUshAccountPublicKey)();
34
34
  const ushMint = yield (0, Constants_1.getUshMintPublicKey)();
35
35
  const vaultSystemState = yield (0, Constants_1.getVaultSystemStatePublicKey)();
36
- return program.instruction.depositLiquidationPool(new anchor_1.BN(depositAmount), new anchor_1.BN(overrideStartTime !== null && overrideStartTime !== void 0 ? overrideStartTime : Math.floor(Date.now() / 1000)), // override current time
37
- {
38
- accounts: {
39
- vaultSystemState: vaultSystemState,
40
- poolState: liquidationPoolStatePublicKey,
41
- poolEra: liquidationPoolState.currentEra,
42
- poolPosition: poolPositionPublicKey,
43
- poolUshAccount: poolUSHAccount,
44
- ushMint: ushMint,
45
- payer: payerPublicKey,
46
- ownerUshAccount: payerUshAccount,
47
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
48
- systemProgram: web3_js_1.SystemProgram.programId,
49
- rent: web3_js_1.SYSVAR_RENT_PUBKEY
50
- },
51
- signers: []
52
- });
36
+ return yield program.methods
37
+ .depositLiquidationPool(new anchor_1.BN(depositAmount), new anchor_1.BN(overrideStartTime !== null && overrideStartTime !== void 0 ? overrideStartTime : Math.floor(Date.now() / 1000)) // override current time
38
+ )
39
+ .accounts({
40
+ vaultSystemState: vaultSystemState,
41
+ poolState: liquidationPoolStatePublicKey,
42
+ poolUshAccount: poolUSHAccount,
43
+ poolEra: liquidationPoolState.currentEra,
44
+ poolPosition: poolPositionPublicKey,
45
+ ushMint: ushMint,
46
+ payer: payerPublicKey,
47
+ ownerUshAccount: payerUshAccount,
48
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
49
+ systemProgram: web3_js_1.SystemProgram.programId,
50
+ })
51
+ .instruction();
53
52
  });
54
53
  }
55
54
  exports.depositLiquidationPoolInstruction = depositLiquidationPoolInstruction;
@@ -19,7 +19,7 @@ function depositStakingPool(program, provider, payer, mintPublicKey, depositAmou
19
19
  return __awaiter(this, void 0, void 0, function* () {
20
20
  const poolPosition = web3_js_1.Keypair.generate();
21
21
  const transaction = new web3_js_1.Transaction().add(yield depositStakingPoolInstruction(program, payer.publicKey, poolPosition.publicKey, mintPublicKey, depositAmount, overrideStartTime));
22
- yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer, poolPosition], provider.opts).catch(Errors_1.parseAnchorErrors);
22
+ yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer, poolPosition]).catch(Errors_1.parseAnchorErrors);
23
23
  return poolPosition.publicKey;
24
24
  });
25
25
  }
@@ -30,23 +30,21 @@ function depositStakingPoolInstruction(program, payerPublicKey, poolPositionPubl
30
30
  const poolAssociatedStakedTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(poolPublickey, stakedTokenMintPublicKey);
31
31
  const payersArbitraryTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(payerPublicKey, stakedTokenMintPublicKey);
32
32
  const vaultSystemState = yield (0, Constants_1.getVaultSystemStatePublicKey)();
33
- return program.instruction.depositStakingPool(new anchor_1.BN(depositAmount), new anchor_1.BN(overrideStartTime !== null && overrideStartTime !== void 0 ? overrideStartTime : Math.floor(Date.now() / 1000)), // override current time
34
- {
35
- accounts: {
36
- payer: payerPublicKey,
37
- vaultSystemState: vaultSystemState,
38
- pool: poolPublickey,
39
- poolPosition: poolPositionPublicKey,
40
- stakedTokenMintInfo: stakedTokenMintPublicKey,
41
- poolAssociatedStakedTokenAccount: poolAssociatedStakedTokenAccount,
42
- payerAssociatedStakedTokenAccount: payersArbitraryTokenAccount,
43
- rent: web3_js_1.SYSVAR_RENT_PUBKEY,
44
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
45
- associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
46
- systemProgram: web3_js_1.SystemProgram.programId
47
- },
48
- signers: []
49
- });
33
+ return yield program.methods
34
+ .depositStakingPool(new anchor_1.BN(depositAmount), new anchor_1.BN(overrideStartTime !== null && overrideStartTime !== void 0 ? overrideStartTime : Math.floor(Date.now() / 1000)) // override current time
35
+ )
36
+ .accounts({
37
+ payer: payerPublicKey,
38
+ vaultSystemState: vaultSystemState,
39
+ pool: poolPublickey,
40
+ poolPosition: poolPositionPublicKey,
41
+ stakedTokenMintInfo: stakedTokenMintPublicKey,
42
+ poolAssociatedStakedTokenAccount: poolAssociatedStakedTokenAccount,
43
+ payerAssociatedStakedTokenAccount: payersArbitraryTokenAccount,
44
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
45
+ systemProgram: web3_js_1.SystemProgram.programId,
46
+ })
47
+ .instruction();
50
48
  });
51
49
  }
52
50
  exports.depositStakingPoolInstruction = depositStakingPoolInstruction;
@@ -14,6 +14,7 @@ const anchor_1 = require("@project-serum/anchor");
14
14
  const serum_1 = require("@project-serum/serum");
15
15
  const spl_token_1 = require("@solana/spl-token");
16
16
  const web3_js_1 = require("@solana/web3.js");
17
+ const getLinkedListAccounts_1 = require("../utils/getLinkedListAccounts");
17
18
  const Constants_1 = require("../Constants");
18
19
  function depositVault(program, provider, payer, vaultPublicKey, depositAmount, overrideTime) {
19
20
  return __awaiter(this, void 0, void 0, function* () {
@@ -33,55 +34,59 @@ function depositVault(program, provider, payer, vaultPublicKey, depositAmount, o
33
34
  const hedgeStakingPoolAssociatedUshTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(hedgeStakingPoolPublicKey, ushMintPublickey);
34
35
  const transaction = new web3_js_1.Transaction();
35
36
  const signers = [payer, history];
37
+ const [oldSmallerPublicKey, newSmallerPublicKey, newLargerPublicKey] = yield (0, getLinkedListAccounts_1.getLinkedListAccounts)(program, provider, vaultTypeAccountPublicKey, vaultPublicKey, depositAmount, 0, false, false);
36
38
  if (vaultAccount.collateralType === 'SOL') {
37
39
  transaction.add(web3_js_1.SystemProgram.createAccount({
38
40
  fromPubkey: payer.publicKey,
39
41
  lamports: depositAmount + 2.04e6,
40
42
  newAccountPubkey: wrappedSolAccount.publicKey,
41
43
  programId: spl_token_1.TOKEN_PROGRAM_ID,
42
- space: 165
44
+ space: 165,
43
45
  }), serum_1.TokenInstructions.initializeAccount({
44
46
  account: wrappedSolAccount.publicKey,
45
47
  mint: serum_1.TokenInstructions.WRAPPED_SOL_MINT,
46
- owner: payer.publicKey
48
+ owner: payer.publicKey,
47
49
  }));
48
50
  signers.push(wrappedSolAccount);
49
51
  }
50
- transaction.add(yield depositVaultInstruction(program, vaultSystemStatePublicKey, payer.publicKey, vaultAccount.collateralType === 'SOL' ? wrappedSolAccount.publicKey : payerTokenAccount, vaultPublicKey, vaultAssociatedCollateralAccountPublicKey, history.publicKey, vaultTypeAccountPublicKey, vaultTypeAssociatedTokenAccount.address, hedgeStakingPoolPublicKey, hedgeStakingPoolAssociatedUshTokenAccount, vaultTypeAccountInfo.collateralMint, ushMintPublickey, depositAmount, overrideTime));
52
+ transaction.add(yield depositVaultInstruction(program, vaultSystemStatePublicKey, payer.publicKey, vaultAccount.collateralType === 'SOL' ? wrappedSolAccount.publicKey : payerTokenAccount, vaultPublicKey, vaultAssociatedCollateralAccountPublicKey, history.publicKey, vaultTypeAccountPublicKey, vaultTypeAssociatedTokenAccount.address, hedgeStakingPoolPublicKey, hedgeStakingPoolAssociatedUshTokenAccount, vaultTypeAccountInfo.collateralMint, ushMintPublickey, oldSmallerPublicKey, newSmallerPublicKey, newLargerPublicKey, depositAmount, overrideTime));
51
53
  if (vaultAccount.collateralType === 'SOL') {
52
54
  transaction.add(serum_1.TokenInstructions.closeAccount({
53
55
  source: wrappedSolAccount.publicKey,
54
56
  destination: payer.publicKey,
55
- owner: payer.publicKey
57
+ owner: payer.publicKey,
56
58
  }));
57
59
  }
58
- yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, signers, provider.opts);
60
+ yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, signers);
59
61
  return vaultPublicKey;
60
62
  });
61
63
  }
62
64
  exports.depositVault = depositVault;
63
- function depositVaultInstruction(program, vaultSystemStatePublicKey, vaultOwner, vaultOwnerTokenAccount, vaultPublicKey, vaultAssociatedTokenAccount, historyPublicKey, vaultTypeAccountPublicKey, vaultTypeAssociatedTokenAccount, hedgeStakingPoolPublicKey, hedgeStakingPoolAssociatedUshTokenAccount, collateralMint, ushMintPublickey, depositAmount, overrideTime) {
65
+ function depositVaultInstruction(program, vaultSystemStatePublicKey, vaultOwner, vaultOwnerTokenAccount, vaultPublicKey, vaultAssociatedTokenAccount, historyPublicKey, vaultTypeAccountPublicKey, vaultTypeAssociatedTokenAccount, hedgeStakingPoolPublicKey, hedgeStakingPoolAssociatedUshTokenAccount, collateralMint, ushMintPublickey, oldSmallerPublicKey, newSmallerPublicKey, newLargerPublicKey, depositAmount, overrideTime) {
64
66
  return __awaiter(this, void 0, void 0, function* () {
65
- return program.instruction.depositVault(new anchor_1.BN(depositAmount), new anchor_1.BN(overrideTime !== null && overrideTime !== void 0 ? overrideTime : Math.floor(Date.now() / 1000)), // override override time
66
- {
67
- accounts: {
68
- vaultSystemState: vaultSystemStatePublicKey,
69
- vaultTypeAccount: vaultTypeAccountPublicKey,
70
- vaultTypeAssociatedTokenAccount: vaultTypeAssociatedTokenAccount,
71
- collateralTokenMint: collateralMint,
72
- vault: vaultPublicKey,
73
- vaultAssociatedTokenAccount: vaultAssociatedTokenAccount,
74
- feePool: hedgeStakingPoolPublicKey,
75
- feePoolAssociatedUshTokenAccount: hedgeStakingPoolAssociatedUshTokenAccount,
76
- history: historyPublicKey,
77
- vaultOwner: vaultOwner,
78
- vaultOwnerTokenAccount: vaultOwnerTokenAccount,
79
- ushMint: ushMintPublickey,
80
- systemProgram: web3_js_1.SystemProgram.programId,
81
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID
82
- },
83
- signers: []
84
- });
67
+ return yield program.methods
68
+ .depositVault(new anchor_1.BN(depositAmount), new anchor_1.BN(overrideTime !== null && overrideTime !== void 0 ? overrideTime : Math.floor(Date.now() / 1000)) // override override time
69
+ )
70
+ .accounts({
71
+ vaultSystemState: vaultSystemStatePublicKey,
72
+ vaultTypeAccount: vaultTypeAccountPublicKey,
73
+ vaultTypeAssociatedTokenAccount: vaultTypeAssociatedTokenAccount,
74
+ collateralTokenMint: collateralMint,
75
+ vault: vaultPublicKey,
76
+ vaultAssociatedTokenAccount: vaultAssociatedTokenAccount,
77
+ feePool: hedgeStakingPoolPublicKey,
78
+ feePoolAssociatedUshTokenAccount: hedgeStakingPoolAssociatedUshTokenAccount,
79
+ history: historyPublicKey,
80
+ vaultOwner: vaultOwner,
81
+ vaultOwnerTokenAccount: vaultOwnerTokenAccount,
82
+ ushMint: ushMintPublickey,
83
+ oldSmallerVaultInfo: oldSmallerPublicKey,
84
+ newSmallerVaultInfo: newSmallerPublicKey,
85
+ newLargerVaultInfo: newLargerPublicKey,
86
+ systemProgram: web3_js_1.SystemProgram.programId,
87
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
88
+ })
89
+ .instruction();
85
90
  });
86
91
  }
87
92
  exports.depositVaultInstruction = depositVaultInstruction;
@@ -18,7 +18,7 @@ function initHedgeFoundation(program, provider, payer) {
18
18
  return __awaiter(this, void 0, void 0, function* () {
19
19
  const poolEra = web3_js_1.Keypair.generate();
20
20
  const transaction = new web3_js_1.Transaction().add(yield initHedgeFoundationInstruction(program, poolEra.publicKey, payer.publicKey));
21
- yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer, poolEra], provider.opts).catch(Errors_1.parseAnchorErrors);
21
+ yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer, poolEra]).catch(Errors_1.parseAnchorErrors);
22
22
  return payer.publicKey;
23
23
  });
24
24
  }
@@ -32,24 +32,22 @@ function initHedgeFoundationInstruction(program, poolEraPublicKey, payerPublicKe
32
32
  const hedgeMintPublickey = yield (0, Constants_1.getHedgeMintPublicKey)();
33
33
  const founderHedgeTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(payerPublicKey, hedgeMintPublickey);
34
34
  const communityHedgeTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(vaultSystemStatePublicKey, hedgeMintPublickey);
35
- return program.instruction.initHedgeFoundation({
36
- accounts: {
37
- vaultSystemState: vaultSystemStatePublicKey,
38
- poolState: poolStatePublickey,
39
- poolEra: poolEraPublicKey,
40
- poolUshAccount: poolUshTokenAccount,
41
- founder: payerPublicKey,
42
- ushMint: ushMintPublickey,
43
- hedgeMint: hedgeMintPublickey,
44
- founderAssociatedHedgeTokenAccount: founderHedgeTokenAccount,
45
- communityAssociatedHedgeTokenAccount: communityHedgeTokenAccount,
46
- rent: web3_js_1.SYSVAR_RENT_PUBKEY,
47
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
48
- associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
49
- systemProgram: web3_js_1.SystemProgram.programId
50
- },
51
- signers: []
52
- });
35
+ return yield program.methods
36
+ .initHedgeFoundation()
37
+ .accounts({
38
+ vaultSystemState: vaultSystemStatePublicKey,
39
+ poolState: poolStatePublickey,
40
+ poolEra: poolEraPublicKey,
41
+ poolUshAccount: poolUshTokenAccount,
42
+ founder: payerPublicKey,
43
+ ushMint: ushMintPublickey,
44
+ hedgeMint: hedgeMintPublickey,
45
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY,
46
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
47
+ associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
48
+ systemProgram: web3_js_1.SystemProgram.programId,
49
+ })
50
+ .instruction();
53
51
  });
54
52
  }
55
53
  exports.initHedgeFoundationInstruction = initHedgeFoundationInstruction;
@@ -18,7 +18,7 @@ function initHedgeFoundationTokens(program, provider, payer) {
18
18
  return __awaiter(this, void 0, void 0, function* () {
19
19
  const poolEra = web3_js_1.Keypair.generate();
20
20
  const transaction = new web3_js_1.Transaction().add(yield initHedgeFoundationTokensInstruction(program, payer.publicKey));
21
- yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer], provider.opts).catch(Errors_1.parseAnchorErrors);
21
+ yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer]).catch(Errors_1.parseAnchorErrors);
22
22
  return payer.publicKey;
23
23
  });
24
24
  }
@@ -29,20 +29,20 @@ function initHedgeFoundationTokensInstruction(program, payerPublicKey) {
29
29
  const hedgeMintPublickey = yield (0, Constants_1.getHedgeMintPublicKey)();
30
30
  const founderHedgeTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(payerPublicKey, hedgeMintPublickey);
31
31
  const communityHedgeTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(vaultSystemStatePublicKey, hedgeMintPublickey);
32
- return program.instruction.initHedgeFoundationTokens({
33
- accounts: {
34
- vaultSystemState: vaultSystemStatePublicKey,
35
- founder: payerPublicKey,
36
- hedgeMint: hedgeMintPublickey,
37
- founderAssociatedHedgeTokenAccount: founderHedgeTokenAccount,
38
- communityAssociatedHedgeTokenAccount: communityHedgeTokenAccount,
39
- rent: web3_js_1.SYSVAR_RENT_PUBKEY,
40
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
41
- associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
42
- systemProgram: web3_js_1.SystemProgram.programId
43
- },
44
- signers: []
45
- });
32
+ return yield program.methods
33
+ .initHedgeFoundationTokens()
34
+ .accounts({
35
+ vaultSystemState: vaultSystemStatePublicKey,
36
+ founder: payerPublicKey,
37
+ hedgeMint: hedgeMintPublickey,
38
+ founderAssociatedHedgeTokenAccount: founderHedgeTokenAccount,
39
+ communityAssociatedHedgeTokenAccount: communityHedgeTokenAccount,
40
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY,
41
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
42
+ associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
43
+ systemProgram: web3_js_1.SystemProgram.programId,
44
+ })
45
+ .instruction();
46
46
  });
47
47
  }
48
48
  exports.initHedgeFoundationTokensInstruction = initHedgeFoundationTokensInstruction;