hedge-web3 0.1.36 → 0.1.39
Sign up to get free protection for your applications and to get access to all the features.
- package/declarations/idl/vault.d.ts +12 -12
- package/declarations/state/VaultAccount.d.ts +2 -0
- package/lib/idl/vault.js +12 -12
- package/lib/instructions/claimLiquidationPoolPosition.js +0 -1
- package/lib/state/VaultAccount.js +10 -5
- package/lib/utils/getLinkedListAccounts.js +29 -8
- package/package.json +1 -1
- package/src/idl/vault.ts +24 -24
- package/src/instructions/claimLiquidationPoolPosition.ts +0 -1
- package/src/state/VaultAccount.ts +16 -6
- package/src/utils/getLinkedListAccounts.ts +29 -8
@@ -1802,18 +1802,6 @@ export declare type Vault = {
|
|
1802
1802
|
"type": {
|
1803
1803
|
"kind": "struct";
|
1804
1804
|
"fields": [
|
1805
|
-
{
|
1806
|
-
"name": "owner";
|
1807
|
-
"type": "publicKey";
|
1808
|
-
},
|
1809
|
-
{
|
1810
|
-
"name": "pool";
|
1811
|
-
"type": "publicKey";
|
1812
|
-
},
|
1813
|
-
{
|
1814
|
-
"name": "deposited";
|
1815
|
-
"type": "u64";
|
1816
|
-
},
|
1817
1805
|
{
|
1818
1806
|
"name": "startHedgeRewardAccumulator";
|
1819
1807
|
"type": "u128";
|
@@ -1852,6 +1840,18 @@ export declare type Vault = {
|
|
1852
1840
|
"name": "closedRewardedTokens";
|
1853
1841
|
"type": "u64";
|
1854
1842
|
},
|
1843
|
+
{
|
1844
|
+
"name": "deposited";
|
1845
|
+
"type": "u64";
|
1846
|
+
},
|
1847
|
+
{
|
1848
|
+
"name": "owner";
|
1849
|
+
"type": "publicKey";
|
1850
|
+
},
|
1851
|
+
{
|
1852
|
+
"name": "pool";
|
1853
|
+
"type": "publicKey";
|
1854
|
+
},
|
1855
1855
|
{
|
1856
1856
|
"name": "state";
|
1857
1857
|
"type": {
|
@@ -21,6 +21,8 @@ export declare class VaultAccount {
|
|
21
21
|
collateralType: string;
|
22
22
|
/** Current State of the vautl ("Open", "Closed", "Liquidated") */
|
23
23
|
vaultStatus: string;
|
24
|
+
/** The public key of the next vault to redeem. */
|
25
|
+
nextVaultToRedeem: PublicKey;
|
24
26
|
constructor(vault: any, publicKey: PublicKey);
|
25
27
|
/**
|
26
28
|
* Check if some `PublicKey` is the owner
|
package/lib/idl/vault.js
CHANGED
@@ -1805,18 +1805,6 @@ exports.IDL = {
|
|
1805
1805
|
"type": {
|
1806
1806
|
"kind": "struct",
|
1807
1807
|
"fields": [
|
1808
|
-
{
|
1809
|
-
"name": "owner",
|
1810
|
-
"type": "publicKey"
|
1811
|
-
},
|
1812
|
-
{
|
1813
|
-
"name": "pool",
|
1814
|
-
"type": "publicKey"
|
1815
|
-
},
|
1816
|
-
{
|
1817
|
-
"name": "deposited",
|
1818
|
-
"type": "u64"
|
1819
|
-
},
|
1820
1808
|
{
|
1821
1809
|
"name": "startHedgeRewardAccumulator",
|
1822
1810
|
"type": "u128"
|
@@ -1855,6 +1843,18 @@ exports.IDL = {
|
|
1855
1843
|
"name": "closedRewardedTokens",
|
1856
1844
|
"type": "u64"
|
1857
1845
|
},
|
1846
|
+
{
|
1847
|
+
"name": "deposited",
|
1848
|
+
"type": "u64"
|
1849
|
+
},
|
1850
|
+
{
|
1851
|
+
"name": "owner",
|
1852
|
+
"type": "publicKey"
|
1853
|
+
},
|
1854
|
+
{
|
1855
|
+
"name": "pool",
|
1856
|
+
"type": "publicKey"
|
1857
|
+
},
|
1858
1858
|
{
|
1859
1859
|
"name": "state",
|
1860
1860
|
"type": {
|
@@ -28,7 +28,6 @@ function claimLiquidationPoolPosition(program, provider, poolPosition, payer, co
|
|
28
28
|
exports.claimLiquidationPoolPosition = claimLiquidationPoolPosition;
|
29
29
|
function claimLiquidationPoolPositionInstruction(program, vaultTypeAccount, collateralMint, poolPosition, payer, payerAssociatedTokenAccount, overrideStartTime) {
|
30
30
|
return __awaiter(this, void 0, void 0, function* () {
|
31
|
-
console.log("inside function");
|
32
31
|
const vaultSystemState = yield (0, Constants_1.getVaultSystemStatePublicKey)();
|
33
32
|
const poolStatePublicKey = yield (0, Constants_1.getLiquidationPoolStatePublicKey)();
|
34
33
|
const poolAssociatedTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(poolStatePublicKey, collateralMint);
|
@@ -21,6 +21,7 @@ class VaultAccount {
|
|
21
21
|
this.debtProductSnapshotBytes = (0, HedgeDecimal_1.DecimalFromU128)(vault.debtProductSnapshotBytes.toString());
|
22
22
|
this.collateralAccumulatorSnapshotBytes = (0, HedgeDecimal_1.DecimalFromU128)(vault.collateralAccumulatorSnapshotBytes.toString());
|
23
23
|
this.collateralType = vault.collateralType;
|
24
|
+
this.nextVaultToRedeem = vault.nextVaultToRedeem;
|
24
25
|
this.vaultStatus = Object.keys(vault.vaultStatus)[0];
|
25
26
|
}
|
26
27
|
/**
|
@@ -60,7 +61,8 @@ class VaultAccount {
|
|
60
61
|
}
|
61
62
|
addDebt(newNormalizedDebt, vaultTypeCompoundedInterest) {
|
62
63
|
const denormalizedNewDebt = newNormalizedDebt.div(vaultTypeCompoundedInterest);
|
63
|
-
this.denormalizedDebt
|
64
|
+
this.denormalizedDebt = denormalizedNewDebt.add(new decimal_js_1.default(this.denormalizedDebt)).floor().toNumber();
|
65
|
+
// this.denormalizedDebt = parseFloat(this.denormalizedDebt.toFixed(0))
|
64
66
|
}
|
65
67
|
addDeposit(depositAmount) {
|
66
68
|
this.deposited += depositAmount;
|
@@ -81,7 +83,6 @@ class VaultAccount {
|
|
81
83
|
this.denormalizedDebt = debtProductCurrent
|
82
84
|
.div(this.debtProductSnapshotBytes)
|
83
85
|
.mul(new decimal_js_1.default(this.denormalizedDebt))
|
84
|
-
// .add(new Decimal(vaultTypeAccuntData.debtRedistributionError))
|
85
86
|
.toNumber();
|
86
87
|
const extraCollateralDeposited = this.denormalizedDebt * collateralAccumulatorCurrent.sub(this.collateralAccumulatorSnapshotBytes).toNumber();
|
87
88
|
this.deposited += extraCollateralDeposited;
|
@@ -91,15 +92,19 @@ class VaultAccount {
|
|
91
92
|
toString(highlight) {
|
92
93
|
let arrow = '';
|
93
94
|
if (this.publicKey.toString() === highlight.toString()) {
|
94
|
-
arrow = '
|
95
|
+
arrow = ' <----!!';
|
95
96
|
}
|
96
97
|
let collateralRatio = 'Infinite';
|
97
98
|
if (this.denormalizedDebt > 0) {
|
98
|
-
collateralRatio = (this.deposited
|
99
|
+
collateralRatio = new decimal_js_1.default(this.deposited).div(new decimal_js_1.default(this.denormalizedDebt)).toString();
|
100
|
+
}
|
101
|
+
let nextVault = 'None';
|
102
|
+
if (this.nextVaultToRedeem) {
|
103
|
+
nextVault = this.nextVaultToRedeem.toString().substring(0, 6);
|
99
104
|
}
|
100
105
|
return `Vault(${this.vaultNumber}): ${this.publicKey
|
101
106
|
.toString()
|
102
|
-
.substring(0, 6)}. Debt: ${this.
|
107
|
+
.substring(0, 6)}. Debt: ${this.denormalizedDebt} Collat: ${this.deposited} Ratio: ${collateralRatio} NextVault: ${nextVault} ${arrow} `;
|
103
108
|
}
|
104
109
|
}
|
105
110
|
exports.VaultAccount = VaultAccount;
|
@@ -70,12 +70,26 @@ function getLinkedListAccounts(program, provider, vaultTypeAccountPublicKey, vau
|
|
70
70
|
oldSmallerPublicKey = vaults[indexBefore - 1].publicKey;
|
71
71
|
}
|
72
72
|
// Pretty print all the vaults before the operation
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
73
|
+
console.log('Sorted open vaults BEFORE at index:', indexBefore);
|
74
|
+
let correctOrderBefore = true;
|
75
|
+
for (let i = 0; i < vaults.length; i++) {
|
76
|
+
if (i < vaults.length - 1) {
|
77
|
+
// Verify i points to i+1
|
78
|
+
if (vaults[i].nextVaultToRedeem.toString() !== vaults[i + 1].publicKey.toString()) {
|
79
|
+
correctOrderBefore = false;
|
80
|
+
console.log("A vault was found OUT OF ORDER!!", vaults[i]);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
if (correctOrderBefore) {
|
85
|
+
console.log(`Verfied the on-chain order of `, correctOrderBefore);
|
86
|
+
}
|
87
|
+
else {
|
88
|
+
throw new Error("On-Chian vaults not in order!");
|
89
|
+
}
|
77
90
|
// If it wasn't in the list, add it now
|
78
91
|
if (indexBefore < 0) {
|
92
|
+
// console.log('Was not in the list before. Adding now.')
|
79
93
|
vaults.push(thisVault);
|
80
94
|
indexBefore = vaults.length - 1;
|
81
95
|
}
|
@@ -98,10 +112,10 @@ function getLinkedListAccounts(program, provider, vaultTypeAccountPublicKey, vau
|
|
98
112
|
// Sort it again since we've changed one vault
|
99
113
|
vaults = vaults.sort(sortVaults);
|
100
114
|
// Pretty print the list again
|
101
|
-
// console.log('Sorted open vaults with new debt added')
|
102
|
-
// vaults.
|
103
|
-
//
|
104
|
-
// })
|
115
|
+
// console.log('Sorted open vaults with new debt added at index: ', indexAfter)
|
116
|
+
// console.log(vaults.map((vault) => {
|
117
|
+
// return vault.toString(vaultPublicKey)
|
118
|
+
// }))
|
105
119
|
// Search for the vaults new position
|
106
120
|
let indexAfter = -1;
|
107
121
|
vaults.forEach((vault, index) => {
|
@@ -109,6 +123,13 @@ function getLinkedListAccounts(program, provider, vaultTypeAccountPublicKey, vau
|
|
109
123
|
indexAfter = index;
|
110
124
|
}
|
111
125
|
});
|
126
|
+
// New list with vault
|
127
|
+
// console.log('New list with vault now at index:', indexAfter)
|
128
|
+
// console.log(
|
129
|
+
// vaults.map((vault) => {
|
130
|
+
// return vault.toString(vaultPublicKey)
|
131
|
+
// })
|
132
|
+
// )
|
112
133
|
// Print where it moved from / to
|
113
134
|
// console.log('Index Before', indexBefore)
|
114
135
|
// console.log('Index After', indexAfter)
|
package/package.json
CHANGED
package/src/idl/vault.ts
CHANGED
@@ -1802,18 +1802,6 @@ export type Vault = {
|
|
1802
1802
|
"type": {
|
1803
1803
|
"kind": "struct",
|
1804
1804
|
"fields": [
|
1805
|
-
{
|
1806
|
-
"name": "owner",
|
1807
|
-
"type": "publicKey"
|
1808
|
-
},
|
1809
|
-
{
|
1810
|
-
"name": "pool",
|
1811
|
-
"type": "publicKey"
|
1812
|
-
},
|
1813
|
-
{
|
1814
|
-
"name": "deposited",
|
1815
|
-
"type": "u64"
|
1816
|
-
},
|
1817
1805
|
{
|
1818
1806
|
"name": "startHedgeRewardAccumulator",
|
1819
1807
|
"type": "u128"
|
@@ -1852,6 +1840,18 @@ export type Vault = {
|
|
1852
1840
|
"name": "closedRewardedTokens",
|
1853
1841
|
"type": "u64"
|
1854
1842
|
},
|
1843
|
+
{
|
1844
|
+
"name": "deposited",
|
1845
|
+
"type": "u64"
|
1846
|
+
},
|
1847
|
+
{
|
1848
|
+
"name": "owner",
|
1849
|
+
"type": "publicKey"
|
1850
|
+
},
|
1851
|
+
{
|
1852
|
+
"name": "pool",
|
1853
|
+
"type": "publicKey"
|
1854
|
+
},
|
1855
1855
|
{
|
1856
1856
|
"name": "state",
|
1857
1857
|
"type": {
|
@@ -4373,18 +4373,6 @@ export const IDL: Vault = {
|
|
4373
4373
|
"type": {
|
4374
4374
|
"kind": "struct",
|
4375
4375
|
"fields": [
|
4376
|
-
{
|
4377
|
-
"name": "owner",
|
4378
|
-
"type": "publicKey"
|
4379
|
-
},
|
4380
|
-
{
|
4381
|
-
"name": "pool",
|
4382
|
-
"type": "publicKey"
|
4383
|
-
},
|
4384
|
-
{
|
4385
|
-
"name": "deposited",
|
4386
|
-
"type": "u64"
|
4387
|
-
},
|
4388
4376
|
{
|
4389
4377
|
"name": "startHedgeRewardAccumulator",
|
4390
4378
|
"type": "u128"
|
@@ -4423,6 +4411,18 @@ export const IDL: Vault = {
|
|
4423
4411
|
"name": "closedRewardedTokens",
|
4424
4412
|
"type": "u64"
|
4425
4413
|
},
|
4414
|
+
{
|
4415
|
+
"name": "deposited",
|
4416
|
+
"type": "u64"
|
4417
|
+
},
|
4418
|
+
{
|
4419
|
+
"name": "owner",
|
4420
|
+
"type": "publicKey"
|
4421
|
+
},
|
4422
|
+
{
|
4423
|
+
"name": "pool",
|
4424
|
+
"type": "publicKey"
|
4425
|
+
},
|
4426
4426
|
{
|
4427
4427
|
"name": "state",
|
4428
4428
|
"type": {
|
@@ -62,7 +62,6 @@ export async function claimLiquidationPoolPositionInstruction(
|
|
62
62
|
overrideStartTime?: number
|
63
63
|
): Promise<TransactionInstruction> {
|
64
64
|
|
65
|
-
console.log("inside function")
|
66
65
|
const vaultSystemState = await getVaultSystemStatePublicKey()
|
67
66
|
const poolStatePublicKey = await getLiquidationPoolStatePublicKey()
|
68
67
|
const poolAssociatedTokenAccount = await findAssociatedTokenAddress(poolStatePublicKey, collateralMint)
|
@@ -33,6 +33,9 @@ export class VaultAccount {
|
|
33
33
|
/** Current State of the vautl ("Open", "Closed", "Liquidated") */
|
34
34
|
vaultStatus: string
|
35
35
|
|
36
|
+
/** The public key of the next vault to redeem. */
|
37
|
+
nextVaultToRedeem: PublicKey
|
38
|
+
|
36
39
|
constructor(vault: any, publicKey: PublicKey) {
|
37
40
|
this.publicKey = publicKey
|
38
41
|
this.vaultOwner = vault.vaultOwner
|
@@ -43,6 +46,7 @@ export class VaultAccount {
|
|
43
46
|
this.debtProductSnapshotBytes = DecimalFromU128(vault.debtProductSnapshotBytes.toString())
|
44
47
|
this.collateralAccumulatorSnapshotBytes = DecimalFromU128(vault.collateralAccumulatorSnapshotBytes.toString())
|
45
48
|
this.collateralType = vault.collateralType
|
49
|
+
this.nextVaultToRedeem = vault.nextVaultToRedeem
|
46
50
|
|
47
51
|
this.vaultStatus = Object.keys(vault.vaultStatus)[0]
|
48
52
|
}
|
@@ -88,7 +92,8 @@ export class VaultAccount {
|
|
88
92
|
|
89
93
|
public addDebt(newNormalizedDebt: Decimal, vaultTypeCompoundedInterest: Decimal) {
|
90
94
|
const denormalizedNewDebt = newNormalizedDebt.div(vaultTypeCompoundedInterest)
|
91
|
-
this.denormalizedDebt
|
95
|
+
this.denormalizedDebt = denormalizedNewDebt.add(new Decimal(this.denormalizedDebt)).floor().toNumber()
|
96
|
+
// this.denormalizedDebt = parseFloat(this.denormalizedDebt.toFixed(0))
|
92
97
|
}
|
93
98
|
public addDeposit(depositAmount: number) {
|
94
99
|
this.deposited += depositAmount
|
@@ -113,9 +118,8 @@ export class VaultAccount {
|
|
113
118
|
this.denormalizedDebt = debtProductCurrent
|
114
119
|
.div(this.debtProductSnapshotBytes)
|
115
120
|
.mul(new Decimal(this.denormalizedDebt))
|
116
|
-
// .add(new Decimal(vaultTypeAccuntData.debtRedistributionError))
|
117
121
|
.toNumber()
|
118
|
-
|
122
|
+
|
119
123
|
const extraCollateralDeposited =
|
120
124
|
this.denormalizedDebt * collateralAccumulatorCurrent.sub(this.collateralAccumulatorSnapshotBytes).toNumber()
|
121
125
|
this.deposited += extraCollateralDeposited
|
@@ -127,14 +131,20 @@ export class VaultAccount {
|
|
127
131
|
public toString(highlight: PublicKey): string {
|
128
132
|
let arrow = ''
|
129
133
|
if (this.publicKey.toString() === highlight.toString()) {
|
130
|
-
arrow = '
|
134
|
+
arrow = ' <----!!'
|
131
135
|
}
|
132
136
|
let collateralRatio = 'Infinite'
|
133
137
|
if (this.denormalizedDebt > 0) {
|
134
|
-
collateralRatio = (this.deposited
|
138
|
+
collateralRatio = new Decimal(this.deposited).div(new Decimal(this.denormalizedDebt)).toString()
|
135
139
|
}
|
140
|
+
|
141
|
+
let nextVault = 'None'
|
142
|
+
if (this.nextVaultToRedeem) {
|
143
|
+
nextVault = this.nextVaultToRedeem.toString().substring(0, 6)
|
144
|
+
}
|
145
|
+
|
136
146
|
return `Vault(${this.vaultNumber}): ${this.publicKey
|
137
147
|
.toString()
|
138
|
-
.substring(0, 6)}. Debt: ${this.
|
148
|
+
.substring(0, 6)}. Debt: ${this.denormalizedDebt} Collat: ${this.deposited} Ratio: ${collateralRatio} NextVault: ${nextVault} ${arrow} `
|
139
149
|
}
|
140
150
|
}
|
@@ -78,13 +78,26 @@ export async function getLinkedListAccounts(
|
|
78
78
|
}
|
79
79
|
|
80
80
|
// Pretty print all the vaults before the operation
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
81
|
+
console.log('Sorted open vaults BEFORE at index:', indexBefore)
|
82
|
+
let correctOrderBefore = true
|
83
|
+
for (let i = 0; i < vaults.length; i++) {
|
84
|
+
if (i < vaults.length - 1) {
|
85
|
+
// Verify i points to i+1
|
86
|
+
if (vaults[i].nextVaultToRedeem.toString() !== vaults[i+1].publicKey.toString()){
|
87
|
+
correctOrderBefore = false
|
88
|
+
console.log("A vault was found OUT OF ORDER!!", vaults[i])
|
89
|
+
}
|
90
|
+
}
|
91
|
+
}
|
92
|
+
if (correctOrderBefore){
|
93
|
+
console.log(`Verfied the on-chain order of `, correctOrderBefore)
|
94
|
+
} else {
|
95
|
+
throw new Error("On-Chian vaults not in order!");
|
96
|
+
}
|
85
97
|
|
86
98
|
// If it wasn't in the list, add it now
|
87
99
|
if (indexBefore < 0) {
|
100
|
+
// console.log('Was not in the list before. Adding now.')
|
88
101
|
vaults.push(thisVault)
|
89
102
|
indexBefore = vaults.length - 1
|
90
103
|
}
|
@@ -112,10 +125,10 @@ export async function getLinkedListAccounts(
|
|
112
125
|
vaults = vaults.sort(sortVaults)
|
113
126
|
|
114
127
|
// Pretty print the list again
|
115
|
-
// console.log('Sorted open vaults with new debt added')
|
116
|
-
// vaults.
|
117
|
-
//
|
118
|
-
// })
|
128
|
+
// console.log('Sorted open vaults with new debt added at index: ', indexAfter)
|
129
|
+
// console.log(vaults.map((vault) => {
|
130
|
+
// return vault.toString(vaultPublicKey)
|
131
|
+
// }))
|
119
132
|
|
120
133
|
// Search for the vaults new position
|
121
134
|
let indexAfter = -1
|
@@ -125,6 +138,14 @@ export async function getLinkedListAccounts(
|
|
125
138
|
}
|
126
139
|
})
|
127
140
|
|
141
|
+
// New list with vault
|
142
|
+
// console.log('New list with vault now at index:', indexAfter)
|
143
|
+
// console.log(
|
144
|
+
// vaults.map((vault) => {
|
145
|
+
// return vault.toString(vaultPublicKey)
|
146
|
+
// })
|
147
|
+
// )
|
148
|
+
|
128
149
|
// Print where it moved from / to
|
129
150
|
// console.log('Index Before', indexBefore)
|
130
151
|
// console.log('Index After', indexAfter)
|