hedge-web3 0.2.1 → 0.2.7

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.
@@ -1706,6 +1706,54 @@ export declare type Vault = {
1706
1706
  }
1707
1707
  ];
1708
1708
  "args": [];
1709
+ },
1710
+ {
1711
+ "name": "closeClaimedLiquidationPoolPosition";
1712
+ "accounts": [
1713
+ {
1714
+ "name": "payer";
1715
+ "isMut": true;
1716
+ "isSigner": true;
1717
+ },
1718
+ {
1719
+ "name": "poolPosition";
1720
+ "isMut": true;
1721
+ "isSigner": false;
1722
+ }
1723
+ ];
1724
+ "args": [];
1725
+ },
1726
+ {
1727
+ "name": "closeClaimedStakingPoolPosition";
1728
+ "accounts": [
1729
+ {
1730
+ "name": "payer";
1731
+ "isMut": true;
1732
+ "isSigner": true;
1733
+ },
1734
+ {
1735
+ "name": "poolPosition";
1736
+ "isMut": true;
1737
+ "isSigner": false;
1738
+ }
1739
+ ];
1740
+ "args": [];
1741
+ },
1742
+ {
1743
+ "name": "closeUnusedPoolEra";
1744
+ "accounts": [
1745
+ {
1746
+ "name": "payer";
1747
+ "isMut": true;
1748
+ "isSigner": true;
1749
+ },
1750
+ {
1751
+ "name": "poolEra";
1752
+ "isMut": true;
1753
+ "isSigner": false;
1754
+ }
1755
+ ];
1756
+ "args": [];
1709
1757
  }
1710
1758
  ];
1711
1759
  "accounts": [
@@ -2803,26 +2851,36 @@ export declare type Vault = {
2803
2851
  },
2804
2852
  {
2805
2853
  "code": 6025;
2854
+ "name": "PositionNotClaimed";
2855
+ "msg": "Not all positions claimed. Claim all before closing account to recover SOL rent.";
2856
+ },
2857
+ {
2858
+ "code": 6026;
2859
+ "name": "PoolWasUsed";
2860
+ "msg": "Era was not unused. Cannot reclaim the SOL rent.";
2861
+ },
2862
+ {
2863
+ "code": 6027;
2806
2864
  "name": "UpdateVaultTypeBadMaxDebtExtended";
2807
2865
  "msg": "New Max debt extended value is less than the current debt!";
2808
2866
  },
2809
2867
  {
2810
- "code": 6026;
2868
+ "code": 6028;
2811
2869
  "name": "UpdateVaultTypeNoEnabledOracles";
2812
2870
  "msg": "No Enabled Oracles!";
2813
2871
  },
2814
2872
  {
2815
- "code": 6027;
2873
+ "code": 6029;
2816
2874
  "name": "UpdateVaultTypeDuplicateOraclePriorities";
2817
2875
  "msg": "Duplicate Oracle Priorities";
2818
2876
  },
2819
2877
  {
2820
- "code": 6028;
2878
+ "code": 6030;
2821
2879
  "name": "UpdateVaultTypeInvalidOraclePriority";
2822
2880
  "msg": "Invalid Oracle Priority";
2823
2881
  },
2824
2882
  {
2825
- "code": 6029;
2883
+ "code": 6031;
2826
2884
  "name": "OracleUpdateFailed";
2827
2885
  "msg": "OracleUpdateFailed";
2828
2886
  }
@@ -5,6 +5,7 @@ export * from './instructions/claimStakingPoolPosition';
5
5
  export * from './instructions/depositLiquidationPool';
6
6
  export * from './instructions/closeLiquidationPoolPosition';
7
7
  export * from './instructions/claimLiquidationPoolPosition';
8
+ export * from './instructions/closeClaimedLiquidationPoolPosition';
8
9
  export * from './instructions/createVault';
9
10
  export * from './instructions/depositVault';
10
11
  export * from './instructions/withdrawVault';
@@ -0,0 +1,5 @@
1
+ import { Program, Provider } from '@project-serum/anchor';
2
+ import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
3
+ import { Vault } from '../idl/vault';
4
+ export declare function closeClaimedLiquidationPoolPosition(program: Program<Vault>, provider: Provider, poolPosition: PublicKey, payer: Signer): Promise<PublicKey>;
5
+ export declare function closeClaimedLiquidationPoolPositionInstruction(program: Program<Vault>, poolPosition: PublicKey, payer: PublicKey): Promise<TransactionInstruction>;
@@ -1,5 +1,4 @@
1
1
  import { Program, Provider } from '@project-serum/anchor';
2
2
  import { PublicKey, Signer, TransactionInstruction } from '@solana/web3.js';
3
- import { Vault } from 'idl/vault';
4
- export declare function setVaultTypeStatus(program: Program<Vault>, provider: Provider, payer: Signer, vaultTypeAccount: PublicKey, deprecated: boolean): Promise<PublicKey>;
5
- export declare function setVaultTypeStatusInstruction(program: Program<Vault>, vaultSystemStatePublicKey: PublicKey, payerPublicKey: PublicKey, vaultTypeAccount: PublicKey, deprecated: boolean): Promise<TransactionInstruction>;
3
+ export declare function setVaultTypeStatus(program: Program, provider: Provider, payer: Signer, vaultTypeAccount: PublicKey, deprecated: boolean): Promise<PublicKey>;
4
+ export declare function setVaultTypeStatusInstruction(program: Program, vaultSystemStatePublicKey: PublicKey, payerPublicKey: PublicKey, vaultTypeAccount: PublicKey, deprecated: boolean): Promise<TransactionInstruction>;
package/lib/idl/vault.js CHANGED
@@ -1709,6 +1709,54 @@ exports.IDL = {
1709
1709
  }
1710
1710
  ],
1711
1711
  "args": []
1712
+ },
1713
+ {
1714
+ "name": "closeClaimedLiquidationPoolPosition",
1715
+ "accounts": [
1716
+ {
1717
+ "name": "payer",
1718
+ "isMut": true,
1719
+ "isSigner": true
1720
+ },
1721
+ {
1722
+ "name": "poolPosition",
1723
+ "isMut": true,
1724
+ "isSigner": false
1725
+ }
1726
+ ],
1727
+ "args": []
1728
+ },
1729
+ {
1730
+ "name": "closeClaimedStakingPoolPosition",
1731
+ "accounts": [
1732
+ {
1733
+ "name": "payer",
1734
+ "isMut": true,
1735
+ "isSigner": true
1736
+ },
1737
+ {
1738
+ "name": "poolPosition",
1739
+ "isMut": true,
1740
+ "isSigner": false
1741
+ }
1742
+ ],
1743
+ "args": []
1744
+ },
1745
+ {
1746
+ "name": "closeUnusedPoolEra",
1747
+ "accounts": [
1748
+ {
1749
+ "name": "payer",
1750
+ "isMut": true,
1751
+ "isSigner": true
1752
+ },
1753
+ {
1754
+ "name": "poolEra",
1755
+ "isMut": true,
1756
+ "isSigner": false
1757
+ }
1758
+ ],
1759
+ "args": []
1712
1760
  }
1713
1761
  ],
1714
1762
  "accounts": [
@@ -2806,26 +2854,36 @@ exports.IDL = {
2806
2854
  },
2807
2855
  {
2808
2856
  "code": 6025,
2857
+ "name": "PositionNotClaimed",
2858
+ "msg": "Not all positions claimed. Claim all before closing account to recover SOL rent."
2859
+ },
2860
+ {
2861
+ "code": 6026,
2862
+ "name": "PoolWasUsed",
2863
+ "msg": "Era was not unused. Cannot reclaim the SOL rent."
2864
+ },
2865
+ {
2866
+ "code": 6027,
2809
2867
  "name": "UpdateVaultTypeBadMaxDebtExtended",
2810
2868
  "msg": "New Max debt extended value is less than the current debt!"
2811
2869
  },
2812
2870
  {
2813
- "code": 6026,
2871
+ "code": 6028,
2814
2872
  "name": "UpdateVaultTypeNoEnabledOracles",
2815
2873
  "msg": "No Enabled Oracles!"
2816
2874
  },
2817
2875
  {
2818
- "code": 6027,
2876
+ "code": 6029,
2819
2877
  "name": "UpdateVaultTypeDuplicateOraclePriorities",
2820
2878
  "msg": "Duplicate Oracle Priorities"
2821
2879
  },
2822
2880
  {
2823
- "code": 6028,
2881
+ "code": 6030,
2824
2882
  "name": "UpdateVaultTypeInvalidOraclePriority",
2825
2883
  "msg": "Invalid Oracle Priority"
2826
2884
  },
2827
2885
  {
2828
- "code": 6029,
2886
+ "code": 6031,
2829
2887
  "name": "OracleUpdateFailed",
2830
2888
  "msg": "OracleUpdateFailed"
2831
2889
  }
package/lib/index.js CHANGED
@@ -17,6 +17,7 @@ __exportStar(require("./instructions/claimStakingPoolPosition"), exports);
17
17
  __exportStar(require("./instructions/depositLiquidationPool"), exports);
18
18
  __exportStar(require("./instructions/closeLiquidationPoolPosition"), exports);
19
19
  __exportStar(require("./instructions/claimLiquidationPoolPosition"), exports);
20
+ __exportStar(require("./instructions/closeClaimedLiquidationPoolPosition"), exports);
20
21
  __exportStar(require("./instructions/createVault"), exports);
21
22
  __exportStar(require("./instructions/depositVault"), exports);
22
23
  __exportStar(require("./instructions/withdrawVault"), exports);
@@ -0,0 +1,38 @@
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.closeClaimedLiquidationPoolPositionInstruction = exports.closeClaimedLiquidationPoolPosition = void 0;
16
+ const web3_js_1 = require("@solana/web3.js");
17
+ const Errors_1 = require("../utils/Errors");
18
+ const sendAndConfirmWithDebug_1 = __importDefault(require("../utils/sendAndConfirmWithDebug"));
19
+ function closeClaimedLiquidationPoolPosition(program, provider, poolPosition, payer) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ const transaction = new web3_js_1.Transaction().add(yield closeClaimedLiquidationPoolPositionInstruction(program, poolPosition, payer.publicKey));
22
+ yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, [payer]).catch(Errors_1.parseAnchorErrors);
23
+ return poolPosition;
24
+ });
25
+ }
26
+ exports.closeClaimedLiquidationPoolPosition = closeClaimedLiquidationPoolPosition;
27
+ function closeClaimedLiquidationPoolPositionInstruction(program, poolPosition, payer) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ return program.methods
30
+ .closeClaimedLiquidationPoolPosition()
31
+ .accounts({
32
+ poolPosition: poolPosition,
33
+ payer: payer
34
+ })
35
+ .instruction();
36
+ });
37
+ }
38
+ exports.closeClaimedLiquidationPoolPositionInstruction = closeClaimedLiquidationPoolPositionInstruction;
@@ -17,21 +17,22 @@ function setVaultTypeStatus(program, provider, payer, vaultTypeAccount, deprecat
17
17
  return __awaiter(this, void 0, void 0, function* () {
18
18
  const vaultSystemStatePublicKey = yield (0, Constants_1.getVaultSystemStatePublicKey)();
19
19
  const transaction = new web3_js_1.Transaction().add(yield setVaultTypeStatusInstruction(program, vaultSystemStatePublicKey, payer.publicKey, vaultTypeAccount, deprecated));
20
- yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer]).catch(Errors_1.parseAnchorErrors);
20
+ yield (0, web3_js_1.sendAndConfirmTransaction)(provider.connection, transaction, [payer], provider === null || provider === void 0 ? void 0 : provider.opts).catch(Errors_1.parseAnchorErrors);
21
21
  return vaultSystemStatePublicKey;
22
22
  });
23
23
  }
24
24
  exports.setVaultTypeStatus = setVaultTypeStatus;
25
25
  function setVaultTypeStatusInstruction(program, vaultSystemStatePublicKey, payerPublicKey, vaultTypeAccount, deprecated) {
26
26
  return __awaiter(this, void 0, void 0, function* () {
27
- return yield program.methods
28
- .setVaultTypeStatus(deprecated)
29
- .accounts({
30
- payer: payerPublicKey,
31
- vaultSystemState: vaultSystemStatePublicKey,
32
- vaultType: vaultTypeAccount,
33
- })
34
- .instruction();
27
+ const ix = program.instruction.setVaultTypeStatus(deprecated, {
28
+ accounts: {
29
+ payer: payerPublicKey,
30
+ vaultSystemState: vaultSystemStatePublicKey,
31
+ vaultType: vaultTypeAccount,
32
+ },
33
+ signers: []
34
+ });
35
+ return ix;
35
36
  });
36
37
  }
37
38
  exports.setVaultTypeStatusInstruction = setVaultTypeStatusInstruction;
@@ -32,7 +32,9 @@ const borsh = __importStar(require("@project-serum/borsh"));
32
32
  */
33
33
  class VaultAccount {
34
34
  constructor(vault, publicKey) {
35
- var _a, _b, _c;
35
+ var _a, _b;
36
+ /** The ordered number of when this vault was created. */
37
+ this.vaultNumber = 0;
36
38
  /** Debt redistribution snapshot */
37
39
  this.debtProductSnapshotBytes = new decimal_js_1.default(0);
38
40
  /** Collateral redistribution snapshot' */
@@ -41,10 +43,12 @@ class VaultAccount {
41
43
  this.vaultStatus = '';
42
44
  this.publicKey = publicKey;
43
45
  this.vaultOwner = vault.vaultOwner;
44
- this.vaultNumber = (_a = vault.vaultNumber) === null || _a === void 0 ? void 0 : _a.toNumber();
45
46
  this.pdaSalt = vault.pdaSalt;
46
- this.deposited = (_b = vault.deposited) === null || _b === void 0 ? void 0 : _b.toNumber();
47
- this.denormalizedDebt = (_c = vault.denormalizedDebt) === null || _c === void 0 ? void 0 : _c.toNumber();
47
+ this.deposited = (_a = vault.deposited) === null || _a === void 0 ? void 0 : _a.toNumber();
48
+ this.denormalizedDebt = (_b = vault.denormalizedDebt) === null || _b === void 0 ? void 0 : _b.toNumber();
49
+ if (vault.vaultNumber) {
50
+ this.vaultNumber = vault.vaultNumber.toNumber();
51
+ }
48
52
  if (vault.debtProductSnapshotBytes) {
49
53
  this.debtProductSnapshotBytes = (0, HedgeDecimal_1.DecimalFromU128)(vault.debtProductSnapshotBytes.toString());
50
54
  }
@@ -138,7 +142,7 @@ class VaultAccount {
138
142
  if (this.nextVaultToRedeem) {
139
143
  nextVault = this.nextVaultToRedeem.toString().substring(0, 6);
140
144
  }
141
- return `Vault(${this.vaultNumber}): ${this.publicKey.toString().substring(0, 6)}. Debt: ${this.denormalizedDebt} Collat: ${this.deposited} Ratio: ${collateralRatio} ${arrow} `;
145
+ return `${this.publicKey.toString().substring(0, 6)}. Debt: ${this.denormalizedDebt} Collat: ${this.deposited} Ratio: ${collateralRatio} ${arrow} `;
142
146
  }
143
147
  /**
144
148
  * Creates a VaultAccount from a slice of data
@@ -153,7 +157,7 @@ class VaultAccount {
153
157
  * @returns a new VaultAccount
154
158
  */
155
159
  static FromMiniSlice(data, pubkey) {
156
- const props = [borsh.u64('vaultNumber'), borsh.u64('deposited'), borsh.u64('denormalizedDebt')];
160
+ const props = [borsh.u64('deposited'), borsh.u64('denormalizedDebt')];
157
161
  const miniVaultLayout = borsh.struct(props, 'minVaultLayout');
158
162
  const decodedData = miniVaultLayout.decode(data);
159
163
  return new VaultAccount(decodedData, pubkey);
@@ -157,7 +157,7 @@ function sortVaults(a, b) {
157
157
  const aRatio = a.deposited / a.denormalizedDebt;
158
158
  const bRatio = b.deposited / b.denormalizedDebt;
159
159
  if (aRatio === bRatio) {
160
- return b.vaultNumber - a.vaultNumber;
160
+ return a.publicKey.toString() > b.publicKey.toString() ? 1 : -1;
161
161
  }
162
162
  return aRatio - bRatio;
163
163
  }
@@ -189,8 +189,8 @@ function getMiniVaults(program, vaultTypePublicKey) {
189
189
  // Slice the data only to grab the 3 u64's of size 8 bytes each
190
190
  dataSlice: {
191
191
  // See programs/hedge-vault/src/account_data/vault.rs for struct layout
192
- offset: 8 + 32,
193
- length: 24,
192
+ offset: 8 + 32 + 8,
193
+ length: 16,
194
194
  },
195
195
  });
196
196
  return allAccounts.map((vaultData) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hedge-web3",
3
- "version": "0.2.1",
3
+ "version": "0.2.7",
4
4
  "description": "Hedge Javascript Web3 API",
5
5
  "main": "lib/index.js",
6
6
  "types": "declarations/index.d.ts",
package/src/idl/vault.ts CHANGED
@@ -1706,6 +1706,54 @@ export type Vault = {
1706
1706
  }
1707
1707
  ],
1708
1708
  "args": []
1709
+ },
1710
+ {
1711
+ "name": "closeClaimedLiquidationPoolPosition",
1712
+ "accounts": [
1713
+ {
1714
+ "name": "payer",
1715
+ "isMut": true,
1716
+ "isSigner": true
1717
+ },
1718
+ {
1719
+ "name": "poolPosition",
1720
+ "isMut": true,
1721
+ "isSigner": false
1722
+ }
1723
+ ],
1724
+ "args": []
1725
+ },
1726
+ {
1727
+ "name": "closeClaimedStakingPoolPosition",
1728
+ "accounts": [
1729
+ {
1730
+ "name": "payer",
1731
+ "isMut": true,
1732
+ "isSigner": true
1733
+ },
1734
+ {
1735
+ "name": "poolPosition",
1736
+ "isMut": true,
1737
+ "isSigner": false
1738
+ }
1739
+ ],
1740
+ "args": []
1741
+ },
1742
+ {
1743
+ "name": "closeUnusedPoolEra",
1744
+ "accounts": [
1745
+ {
1746
+ "name": "payer",
1747
+ "isMut": true,
1748
+ "isSigner": true
1749
+ },
1750
+ {
1751
+ "name": "poolEra",
1752
+ "isMut": true,
1753
+ "isSigner": false
1754
+ }
1755
+ ],
1756
+ "args": []
1709
1757
  }
1710
1758
  ],
1711
1759
  "accounts": [
@@ -2803,26 +2851,36 @@ export type Vault = {
2803
2851
  },
2804
2852
  {
2805
2853
  "code": 6025,
2854
+ "name": "PositionNotClaimed",
2855
+ "msg": "Not all positions claimed. Claim all before closing account to recover SOL rent."
2856
+ },
2857
+ {
2858
+ "code": 6026,
2859
+ "name": "PoolWasUsed",
2860
+ "msg": "Era was not unused. Cannot reclaim the SOL rent."
2861
+ },
2862
+ {
2863
+ "code": 6027,
2806
2864
  "name": "UpdateVaultTypeBadMaxDebtExtended",
2807
2865
  "msg": "New Max debt extended value is less than the current debt!"
2808
2866
  },
2809
2867
  {
2810
- "code": 6026,
2868
+ "code": 6028,
2811
2869
  "name": "UpdateVaultTypeNoEnabledOracles",
2812
2870
  "msg": "No Enabled Oracles!"
2813
2871
  },
2814
2872
  {
2815
- "code": 6027,
2873
+ "code": 6029,
2816
2874
  "name": "UpdateVaultTypeDuplicateOraclePriorities",
2817
2875
  "msg": "Duplicate Oracle Priorities"
2818
2876
  },
2819
2877
  {
2820
- "code": 6028,
2878
+ "code": 6030,
2821
2879
  "name": "UpdateVaultTypeInvalidOraclePriority",
2822
2880
  "msg": "Invalid Oracle Priority"
2823
2881
  },
2824
2882
  {
2825
- "code": 6029,
2883
+ "code": 6031,
2826
2884
  "name": "OracleUpdateFailed",
2827
2885
  "msg": "OracleUpdateFailed"
2828
2886
  }
@@ -4537,6 +4595,54 @@ export const IDL: Vault = {
4537
4595
  }
4538
4596
  ],
4539
4597
  "args": []
4598
+ },
4599
+ {
4600
+ "name": "closeClaimedLiquidationPoolPosition",
4601
+ "accounts": [
4602
+ {
4603
+ "name": "payer",
4604
+ "isMut": true,
4605
+ "isSigner": true
4606
+ },
4607
+ {
4608
+ "name": "poolPosition",
4609
+ "isMut": true,
4610
+ "isSigner": false
4611
+ }
4612
+ ],
4613
+ "args": []
4614
+ },
4615
+ {
4616
+ "name": "closeClaimedStakingPoolPosition",
4617
+ "accounts": [
4618
+ {
4619
+ "name": "payer",
4620
+ "isMut": true,
4621
+ "isSigner": true
4622
+ },
4623
+ {
4624
+ "name": "poolPosition",
4625
+ "isMut": true,
4626
+ "isSigner": false
4627
+ }
4628
+ ],
4629
+ "args": []
4630
+ },
4631
+ {
4632
+ "name": "closeUnusedPoolEra",
4633
+ "accounts": [
4634
+ {
4635
+ "name": "payer",
4636
+ "isMut": true,
4637
+ "isSigner": true
4638
+ },
4639
+ {
4640
+ "name": "poolEra",
4641
+ "isMut": true,
4642
+ "isSigner": false
4643
+ }
4644
+ ],
4645
+ "args": []
4540
4646
  }
4541
4647
  ],
4542
4648
  "accounts": [
@@ -5634,26 +5740,36 @@ export const IDL: Vault = {
5634
5740
  },
5635
5741
  {
5636
5742
  "code": 6025,
5743
+ "name": "PositionNotClaimed",
5744
+ "msg": "Not all positions claimed. Claim all before closing account to recover SOL rent."
5745
+ },
5746
+ {
5747
+ "code": 6026,
5748
+ "name": "PoolWasUsed",
5749
+ "msg": "Era was not unused. Cannot reclaim the SOL rent."
5750
+ },
5751
+ {
5752
+ "code": 6027,
5637
5753
  "name": "UpdateVaultTypeBadMaxDebtExtended",
5638
5754
  "msg": "New Max debt extended value is less than the current debt!"
5639
5755
  },
5640
5756
  {
5641
- "code": 6026,
5757
+ "code": 6028,
5642
5758
  "name": "UpdateVaultTypeNoEnabledOracles",
5643
5759
  "msg": "No Enabled Oracles!"
5644
5760
  },
5645
5761
  {
5646
- "code": 6027,
5762
+ "code": 6029,
5647
5763
  "name": "UpdateVaultTypeDuplicateOraclePriorities",
5648
5764
  "msg": "Duplicate Oracle Priorities"
5649
5765
  },
5650
5766
  {
5651
- "code": 6028,
5767
+ "code": 6030,
5652
5768
  "name": "UpdateVaultTypeInvalidOraclePriority",
5653
5769
  "msg": "Invalid Oracle Priority"
5654
5770
  },
5655
5771
  {
5656
- "code": 6029,
5772
+ "code": 6031,
5657
5773
  "name": "OracleUpdateFailed",
5658
5774
  "msg": "OracleUpdateFailed"
5659
5775
  }
package/src/index.ts CHANGED
@@ -6,6 +6,7 @@ export * from './instructions/claimStakingPoolPosition'
6
6
  export * from './instructions/depositLiquidationPool'
7
7
  export * from './instructions/closeLiquidationPoolPosition'
8
8
  export * from './instructions/claimLiquidationPoolPosition'
9
+ export * from './instructions/closeClaimedLiquidationPoolPosition'
9
10
  export * from './instructions/createVault'
10
11
  export * from './instructions/depositVault'
11
12
  export * from './instructions/withdrawVault'
@@ -0,0 +1,31 @@
1
+ import { Program, Provider } from '@project-serum/anchor'
2
+ import { PublicKey, Signer, Transaction, TransactionInstruction } from '@solana/web3.js'
3
+ import { parseAnchorErrors } from '../utils/Errors'
4
+ import sendAndConfirmWithDebug from '../utils/sendAndConfirmWithDebug'
5
+ import { Vault } from '../idl/vault'
6
+
7
+ export async function closeClaimedLiquidationPoolPosition(
8
+ program: Program<Vault>,
9
+ provider: Provider,
10
+ poolPosition: PublicKey,
11
+ payer: Signer
12
+ ): Promise<PublicKey> {
13
+ const transaction = new Transaction().add(await closeClaimedLiquidationPoolPositionInstruction(program, poolPosition, payer.publicKey))
14
+
15
+ await sendAndConfirmWithDebug(provider.connection, transaction, [payer]).catch(parseAnchorErrors)
16
+ return poolPosition
17
+ }
18
+
19
+ export async function closeClaimedLiquidationPoolPositionInstruction(
20
+ program: Program<Vault>,
21
+ poolPosition: PublicKey,
22
+ payer: PublicKey
23
+ ): Promise<TransactionInstruction> {
24
+ return program.methods
25
+ .closeClaimedLiquidationPoolPosition()
26
+ .accounts({
27
+ poolPosition: poolPosition,
28
+ payer: payer
29
+ })
30
+ .instruction()
31
+ }
@@ -124,6 +124,7 @@ export async function liquidateVault(
124
124
  overrideTime
125
125
  )
126
126
  )
127
+
127
128
  await sendAndConfirmWithDebug(provider.connection, transaction, [payer, history, newEra])
128
129
  return vaultPublicKey
129
130
  }
@@ -27,7 +27,7 @@ export async function withdrawStakingPool(
27
27
  payer: Signer,
28
28
  poolPositionPublicKey: PublicKey,
29
29
  stakedTokenMintPublicKey: PublicKey,
30
- overrideStartTime?: number
30
+ overrideStartTime?: number,
31
31
  ): Promise<PublicKey> {
32
32
  const poolPosition = Keypair.generate()
33
33
  const transaction = new Transaction().add(
@@ -39,6 +39,7 @@ export async function withdrawStakingPool(
39
39
  overrideStartTime
40
40
  )
41
41
  )
42
+
42
43
  await sendAndConfirmWithDebug(provider.connection, transaction, [payer]).catch(parseAnchorErrors)
43
44
  return poolPosition.publicKey
44
45
  }
@@ -26,7 +26,7 @@ export class VaultAccount {
26
26
  denormalizedDebt: number
27
27
 
28
28
  /** The ordered number of when this vault was created. */
29
- vaultNumber: number
29
+ vaultNumber = 0
30
30
 
31
31
  /** Debt redistribution snapshot */
32
32
  debtProductSnapshotBytes = new Decimal(0)
@@ -49,10 +49,12 @@ export class VaultAccount {
49
49
  constructor(vault: any, publicKey: PublicKey) {
50
50
  this.publicKey = publicKey
51
51
  this.vaultOwner = vault.vaultOwner
52
- this.vaultNumber = vault.vaultNumber?.toNumber()
53
52
  this.pdaSalt = vault.pdaSalt
54
53
  this.deposited = vault.deposited?.toNumber()
55
54
  this.denormalizedDebt = vault.denormalizedDebt?.toNumber()
55
+ if (vault.vaultNumber) {
56
+ this.vaultNumber = vault.vaultNumber.toNumber()
57
+ }
56
58
  if (vault.debtProductSnapshotBytes) {
57
59
  this.debtProductSnapshotBytes = DecimalFromU128(vault.debtProductSnapshotBytes.toString())
58
60
  }
@@ -163,7 +165,7 @@ export class VaultAccount {
163
165
  nextVault = this.nextVaultToRedeem.toString().substring(0, 6)
164
166
  }
165
167
 
166
- return `Vault(${this.vaultNumber}): ${this.publicKey.toString().substring(0, 6)}. Debt: ${
168
+ return `${this.publicKey.toString().substring(0, 6)}. Debt: ${
167
169
  this.denormalizedDebt
168
170
  } Collat: ${this.deposited} Ratio: ${collateralRatio} ${arrow} `
169
171
  }
@@ -180,7 +182,7 @@ export class VaultAccount {
180
182
  * @returns a new VaultAccount
181
183
  */
182
184
  static FromMiniSlice(data: Buffer, pubkey: PublicKey) {
183
- const props = [borsh.u64('vaultNumber'), borsh.u64('deposited'), borsh.u64('denormalizedDebt')]
185
+ const props = [borsh.u64('deposited'), borsh.u64('denormalizedDebt')]
184
186
  const miniVaultLayout = borsh.struct(props, 'minVaultLayout')
185
187
  const decodedData: any = miniVaultLayout.decode(data)
186
188
 
@@ -183,7 +183,7 @@ function sortVaults(a: VaultAccount, b: VaultAccount) {
183
183
  const aRatio = a.deposited / a.denormalizedDebt
184
184
  const bRatio = b.deposited / b.denormalizedDebt
185
185
  if (aRatio === bRatio) {
186
- return b.vaultNumber - a.vaultNumber
186
+ return a.publicKey.toString() > b.publicKey.toString() ? 1 : -1
187
187
  }
188
188
  return aRatio - bRatio
189
189
  }
@@ -215,8 +215,8 @@ async function getMiniVaults(program: Program<Vault>, vaultTypePublicKey: Public
215
215
  // Slice the data only to grab the 3 u64's of size 8 bytes each
216
216
  dataSlice: {
217
217
  // See programs/hedge-vault/src/account_data/vault.rs for struct layout
218
- offset: 8 + 32,
219
- length: 24,
218
+ offset: 8 + 32 + 8,
219
+ length: 16,
220
220
  },
221
221
  })
222
222