hedge-web3 0.2.19 → 0.2.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/declarations/idl/pyth.d.ts +44 -24
- package/declarations/idl/switchboard.d.ts +47 -0
- package/declarations/idl/vault.d.ts +67 -0
- package/declarations/index.d.ts +1 -0
- package/declarations/instructions/transferVault.d.ts +5 -0
- package/declarations/instructions/updateVaultType.d.ts +1 -0
- package/declarations/state/VaultAccount.d.ts +1 -1
- package/lib/idl/pyth.js +44 -24
- package/lib/idl/switchboard.js +49 -0
- package/lib/idl/vault.js +67 -0
- package/lib/index.js +1 -0
- package/lib/instructions/transferVault.js +41 -0
- package/lib/instructions/updateVaultType.js +10 -9
- package/lib/state/VaultAccount.js +3 -1
- package/package.json +1 -1
- package/src/idl/pyth.ts +88 -48
- package/src/idl/switchboard.ts +93 -0
- package/src/idl/vault.ts +134 -0
- package/src/index.ts +1 -4
- package/src/instructions/transferVault.ts +62 -0
- package/src/instructions/updateVaultType.ts +3 -0
- package/src/state/VaultAccount.ts +9 -10
@@ -5,19 +5,9 @@ export declare type Pyth = {
|
|
5
5
|
{
|
6
6
|
"name": "initialize";
|
7
7
|
"accounts": [
|
8
|
-
{
|
9
|
-
"name": "payer";
|
10
|
-
"isMut": true;
|
11
|
-
"isSigner": true;
|
12
|
-
},
|
13
8
|
{
|
14
9
|
"name": "price";
|
15
10
|
"isMut": true;
|
16
|
-
"isSigner": true;
|
17
|
-
},
|
18
|
-
{
|
19
|
-
"name": "systemProgram";
|
20
|
-
"isMut": false;
|
21
11
|
"isSigner": false;
|
22
12
|
}
|
23
13
|
];
|
@@ -53,27 +43,57 @@ export declare type Pyth = {
|
|
53
43
|
];
|
54
44
|
}
|
55
45
|
];
|
56
|
-
"
|
46
|
+
"types": [
|
57
47
|
{
|
58
|
-
"name": "
|
48
|
+
"name": "PriceStatus";
|
59
49
|
"type": {
|
60
|
-
"kind": "
|
61
|
-
"
|
50
|
+
"kind": "enum";
|
51
|
+
"variants": [
|
52
|
+
{
|
53
|
+
"name": "Unknown";
|
54
|
+
},
|
55
|
+
{
|
56
|
+
"name": "Trading";
|
57
|
+
},
|
62
58
|
{
|
63
|
-
"name": "
|
64
|
-
|
65
|
-
|
66
|
-
|
59
|
+
"name": "Halted";
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"name": "Auction";
|
67
63
|
}
|
68
64
|
];
|
69
65
|
};
|
70
|
-
}
|
71
|
-
|
72
|
-
|
66
|
+
},
|
67
|
+
{
|
68
|
+
"name": "CorpAction";
|
69
|
+
"type": {
|
70
|
+
"kind": "enum";
|
71
|
+
"variants": [
|
72
|
+
{
|
73
|
+
"name": "NoCorpAct";
|
74
|
+
}
|
75
|
+
];
|
76
|
+
};
|
77
|
+
},
|
73
78
|
{
|
74
|
-
"
|
75
|
-
"
|
76
|
-
|
79
|
+
"name": "PriceType";
|
80
|
+
"type": {
|
81
|
+
"kind": "enum";
|
82
|
+
"variants": [
|
83
|
+
{
|
84
|
+
"name": "Unknown";
|
85
|
+
},
|
86
|
+
{
|
87
|
+
"name": "Price";
|
88
|
+
},
|
89
|
+
{
|
90
|
+
"name": "TWAP";
|
91
|
+
},
|
92
|
+
{
|
93
|
+
"name": "Volatility";
|
94
|
+
}
|
95
|
+
];
|
96
|
+
};
|
77
97
|
}
|
78
98
|
];
|
79
99
|
};
|
@@ -0,0 +1,47 @@
|
|
1
|
+
export declare type Switchboard = {
|
2
|
+
"version": "0.1.0";
|
3
|
+
"name": "switchboard";
|
4
|
+
"instructions": [
|
5
|
+
{
|
6
|
+
"name": "initialize";
|
7
|
+
"accounts": [
|
8
|
+
{
|
9
|
+
"name": "aggregator";
|
10
|
+
"isMut": true;
|
11
|
+
"isSigner": false;
|
12
|
+
}
|
13
|
+
];
|
14
|
+
"args": [
|
15
|
+
{
|
16
|
+
"name": "price";
|
17
|
+
"type": "u64";
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"name": "scale";
|
21
|
+
"type": "u16";
|
22
|
+
}
|
23
|
+
];
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"name": "setPrice";
|
27
|
+
"accounts": [
|
28
|
+
{
|
29
|
+
"name": "aggregator";
|
30
|
+
"isMut": true;
|
31
|
+
"isSigner": false;
|
32
|
+
}
|
33
|
+
];
|
34
|
+
"args": [
|
35
|
+
{
|
36
|
+
"name": "price";
|
37
|
+
"type": "u64";
|
38
|
+
},
|
39
|
+
{
|
40
|
+
"name": "scale";
|
41
|
+
"type": "u16";
|
42
|
+
}
|
43
|
+
];
|
44
|
+
}
|
45
|
+
];
|
46
|
+
};
|
47
|
+
export declare const IDL: Switchboard;
|
@@ -2012,6 +2012,47 @@ export declare type Vault = {
|
|
2012
2012
|
"type": "i64";
|
2013
2013
|
}
|
2014
2014
|
];
|
2015
|
+
},
|
2016
|
+
{
|
2017
|
+
"name": "transferVault";
|
2018
|
+
"accounts": [
|
2019
|
+
{
|
2020
|
+
"name": "vault";
|
2021
|
+
"isMut": true;
|
2022
|
+
"isSigner": false;
|
2023
|
+
},
|
2024
|
+
{
|
2025
|
+
"name": "vaultSystemState";
|
2026
|
+
"isMut": true;
|
2027
|
+
"isSigner": false;
|
2028
|
+
},
|
2029
|
+
{
|
2030
|
+
"name": "vaultType";
|
2031
|
+
"isMut": true;
|
2032
|
+
"isSigner": false;
|
2033
|
+
},
|
2034
|
+
{
|
2035
|
+
"name": "history";
|
2036
|
+
"isMut": true;
|
2037
|
+
"isSigner": true;
|
2038
|
+
},
|
2039
|
+
{
|
2040
|
+
"name": "vaultOwner";
|
2041
|
+
"isMut": true;
|
2042
|
+
"isSigner": true;
|
2043
|
+
},
|
2044
|
+
{
|
2045
|
+
"name": "systemProgram";
|
2046
|
+
"isMut": false;
|
2047
|
+
"isSigner": false;
|
2048
|
+
}
|
2049
|
+
];
|
2050
|
+
"args": [
|
2051
|
+
{
|
2052
|
+
"name": "newOwner";
|
2053
|
+
"type": "publicKey";
|
2054
|
+
}
|
2055
|
+
];
|
2015
2056
|
}
|
2016
2057
|
];
|
2017
2058
|
"accounts": [
|
@@ -2798,6 +2839,12 @@ export declare type Vault = {
|
|
2798
2839
|
"option": "u64";
|
2799
2840
|
};
|
2800
2841
|
},
|
2842
|
+
{
|
2843
|
+
"name": "interestRatePerSecond";
|
2844
|
+
"type": {
|
2845
|
+
"option": "u128";
|
2846
|
+
};
|
2847
|
+
},
|
2801
2848
|
{
|
2802
2849
|
"name": "emergencyModeThreshold";
|
2803
2850
|
"type": {
|
@@ -3076,6 +3123,26 @@ export declare type Vault = {
|
|
3076
3123
|
"index": false;
|
3077
3124
|
}
|
3078
3125
|
];
|
3126
|
+
},
|
3127
|
+
{
|
3128
|
+
"name": "VaultTransferEvent";
|
3129
|
+
"fields": [
|
3130
|
+
{
|
3131
|
+
"name": "vault";
|
3132
|
+
"type": "publicKey";
|
3133
|
+
"index": false;
|
3134
|
+
},
|
3135
|
+
{
|
3136
|
+
"name": "oldOwner";
|
3137
|
+
"type": "publicKey";
|
3138
|
+
"index": false;
|
3139
|
+
},
|
3140
|
+
{
|
3141
|
+
"name": "newOwner";
|
3142
|
+
"type": "publicKey";
|
3143
|
+
"index": false;
|
3144
|
+
}
|
3145
|
+
];
|
3079
3146
|
}
|
3080
3147
|
];
|
3081
3148
|
"errors": [
|
package/declarations/index.d.ts
CHANGED
@@ -20,6 +20,7 @@ export * from './instructions/initHedgeFoundation';
|
|
20
20
|
export * from './instructions/initHedgeFoundationTokens';
|
21
21
|
export * from './instructions/setHalted';
|
22
22
|
export * from './instructions/updateVaultType';
|
23
|
+
export * from './instructions/transferVault';
|
23
24
|
export * from './HedgeDecimal';
|
24
25
|
export * from './Constants';
|
25
26
|
export * from './state/VaultAccount';
|
@@ -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 transferVault(program: Program<Vault>, provider: Provider, payer: Signer, vaultPublicKey: PublicKey, vaultSystemStatePublicKey: PublicKey, vaultTypeAccount: PublicKey, newOwner: PublicKey): Promise<PublicKey>;
|
5
|
+
export declare function transferVaultInstruction(vaultPublickey: PublicKey, vaultSystemStatePublicKey: PublicKey, vaultTypeAccount: PublicKey, historyPublicKey: PublicKey, vaultOwner: PublicKey, program: Program<Vault>, newOwner: PublicKey): Promise<TransactionInstruction>;
|
@@ -11,7 +11,7 @@ export declare class VaultAccount {
|
|
11
11
|
publicKey: PublicKey;
|
12
12
|
/** The public key of the vault owner. */
|
13
13
|
vaultOwner: PublicKey;
|
14
|
-
/** The
|
14
|
+
/** The salt used to derive the PDA for the vault. */
|
15
15
|
pdaSalt: string;
|
16
16
|
/** The deposited collateral of the vault (in SOL Lamports). */
|
17
17
|
deposited: BN;
|
package/lib/idl/pyth.js
CHANGED
@@ -8,19 +8,9 @@ exports.IDL = {
|
|
8
8
|
{
|
9
9
|
"name": "initialize",
|
10
10
|
"accounts": [
|
11
|
-
{
|
12
|
-
"name": "payer",
|
13
|
-
"isMut": true,
|
14
|
-
"isSigner": true
|
15
|
-
},
|
16
11
|
{
|
17
12
|
"name": "price",
|
18
13
|
"isMut": true,
|
19
|
-
"isSigner": true
|
20
|
-
},
|
21
|
-
{
|
22
|
-
"name": "systemProgram",
|
23
|
-
"isMut": false,
|
24
14
|
"isSigner": false
|
25
15
|
}
|
26
16
|
],
|
@@ -56,27 +46,57 @@ exports.IDL = {
|
|
56
46
|
]
|
57
47
|
}
|
58
48
|
],
|
59
|
-
"
|
49
|
+
"types": [
|
60
50
|
{
|
61
|
-
"name": "
|
51
|
+
"name": "PriceStatus",
|
62
52
|
"type": {
|
63
|
-
"kind": "
|
64
|
-
"
|
53
|
+
"kind": "enum",
|
54
|
+
"variants": [
|
55
|
+
{
|
56
|
+
"name": "Unknown"
|
57
|
+
},
|
58
|
+
{
|
59
|
+
"name": "Trading"
|
60
|
+
},
|
65
61
|
{
|
66
|
-
"name": "
|
67
|
-
|
68
|
-
|
69
|
-
|
62
|
+
"name": "Halted"
|
63
|
+
},
|
64
|
+
{
|
65
|
+
"name": "Auction"
|
70
66
|
}
|
71
67
|
]
|
72
68
|
}
|
73
|
-
}
|
74
|
-
|
75
|
-
|
69
|
+
},
|
70
|
+
{
|
71
|
+
"name": "CorpAction",
|
72
|
+
"type": {
|
73
|
+
"kind": "enum",
|
74
|
+
"variants": [
|
75
|
+
{
|
76
|
+
"name": "NoCorpAct"
|
77
|
+
}
|
78
|
+
]
|
79
|
+
}
|
80
|
+
},
|
76
81
|
{
|
77
|
-
"
|
78
|
-
"
|
79
|
-
|
82
|
+
"name": "PriceType",
|
83
|
+
"type": {
|
84
|
+
"kind": "enum",
|
85
|
+
"variants": [
|
86
|
+
{
|
87
|
+
"name": "Unknown"
|
88
|
+
},
|
89
|
+
{
|
90
|
+
"name": "Price"
|
91
|
+
},
|
92
|
+
{
|
93
|
+
"name": "TWAP"
|
94
|
+
},
|
95
|
+
{
|
96
|
+
"name": "Volatility"
|
97
|
+
}
|
98
|
+
]
|
99
|
+
}
|
80
100
|
}
|
81
101
|
]
|
82
102
|
};
|
@@ -0,0 +1,49 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.IDL = void 0;
|
4
|
+
exports.IDL = {
|
5
|
+
"version": "0.1.0",
|
6
|
+
"name": "switchboard",
|
7
|
+
"instructions": [
|
8
|
+
{
|
9
|
+
"name": "initialize",
|
10
|
+
"accounts": [
|
11
|
+
{
|
12
|
+
"name": "aggregator",
|
13
|
+
"isMut": true,
|
14
|
+
"isSigner": false
|
15
|
+
}
|
16
|
+
],
|
17
|
+
"args": [
|
18
|
+
{
|
19
|
+
"name": "price",
|
20
|
+
"type": "u64"
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"name": "scale",
|
24
|
+
"type": "u16"
|
25
|
+
}
|
26
|
+
]
|
27
|
+
},
|
28
|
+
{
|
29
|
+
"name": "setPrice",
|
30
|
+
"accounts": [
|
31
|
+
{
|
32
|
+
"name": "aggregator",
|
33
|
+
"isMut": true,
|
34
|
+
"isSigner": false
|
35
|
+
}
|
36
|
+
],
|
37
|
+
"args": [
|
38
|
+
{
|
39
|
+
"name": "price",
|
40
|
+
"type": "u64"
|
41
|
+
},
|
42
|
+
{
|
43
|
+
"name": "scale",
|
44
|
+
"type": "u16"
|
45
|
+
}
|
46
|
+
]
|
47
|
+
}
|
48
|
+
]
|
49
|
+
};
|
package/lib/idl/vault.js
CHANGED
@@ -2015,6 +2015,47 @@ exports.IDL = {
|
|
2015
2015
|
"type": "i64"
|
2016
2016
|
}
|
2017
2017
|
]
|
2018
|
+
},
|
2019
|
+
{
|
2020
|
+
"name": "transferVault",
|
2021
|
+
"accounts": [
|
2022
|
+
{
|
2023
|
+
"name": "vault",
|
2024
|
+
"isMut": true,
|
2025
|
+
"isSigner": false
|
2026
|
+
},
|
2027
|
+
{
|
2028
|
+
"name": "vaultSystemState",
|
2029
|
+
"isMut": true,
|
2030
|
+
"isSigner": false
|
2031
|
+
},
|
2032
|
+
{
|
2033
|
+
"name": "vaultType",
|
2034
|
+
"isMut": true,
|
2035
|
+
"isSigner": false
|
2036
|
+
},
|
2037
|
+
{
|
2038
|
+
"name": "history",
|
2039
|
+
"isMut": true,
|
2040
|
+
"isSigner": true
|
2041
|
+
},
|
2042
|
+
{
|
2043
|
+
"name": "vaultOwner",
|
2044
|
+
"isMut": true,
|
2045
|
+
"isSigner": true
|
2046
|
+
},
|
2047
|
+
{
|
2048
|
+
"name": "systemProgram",
|
2049
|
+
"isMut": false,
|
2050
|
+
"isSigner": false
|
2051
|
+
}
|
2052
|
+
],
|
2053
|
+
"args": [
|
2054
|
+
{
|
2055
|
+
"name": "newOwner",
|
2056
|
+
"type": "publicKey"
|
2057
|
+
}
|
2058
|
+
]
|
2018
2059
|
}
|
2019
2060
|
],
|
2020
2061
|
"accounts": [
|
@@ -2801,6 +2842,12 @@ exports.IDL = {
|
|
2801
2842
|
"option": "u64"
|
2802
2843
|
}
|
2803
2844
|
},
|
2845
|
+
{
|
2846
|
+
"name": "interestRatePerSecond",
|
2847
|
+
"type": {
|
2848
|
+
"option": "u128"
|
2849
|
+
}
|
2850
|
+
},
|
2804
2851
|
{
|
2805
2852
|
"name": "emergencyModeThreshold",
|
2806
2853
|
"type": {
|
@@ -3079,6 +3126,26 @@ exports.IDL = {
|
|
3079
3126
|
"index": false
|
3080
3127
|
}
|
3081
3128
|
]
|
3129
|
+
},
|
3130
|
+
{
|
3131
|
+
"name": "VaultTransferEvent",
|
3132
|
+
"fields": [
|
3133
|
+
{
|
3134
|
+
"name": "vault",
|
3135
|
+
"type": "publicKey",
|
3136
|
+
"index": false
|
3137
|
+
},
|
3138
|
+
{
|
3139
|
+
"name": "oldOwner",
|
3140
|
+
"type": "publicKey",
|
3141
|
+
"index": false
|
3142
|
+
},
|
3143
|
+
{
|
3144
|
+
"name": "newOwner",
|
3145
|
+
"type": "publicKey",
|
3146
|
+
"index": false
|
3147
|
+
}
|
3148
|
+
]
|
3082
3149
|
}
|
3083
3150
|
],
|
3084
3151
|
"errors": [
|
package/lib/index.js
CHANGED
@@ -32,6 +32,7 @@ __exportStar(require("./instructions/initHedgeFoundation"), exports);
|
|
32
32
|
__exportStar(require("./instructions/initHedgeFoundationTokens"), exports);
|
33
33
|
__exportStar(require("./instructions/setHalted"), exports);
|
34
34
|
__exportStar(require("./instructions/updateVaultType"), exports);
|
35
|
+
__exportStar(require("./instructions/transferVault"), exports);
|
35
36
|
__exportStar(require("./HedgeDecimal"), exports);
|
36
37
|
__exportStar(require("./Constants"), exports);
|
37
38
|
__exportStar(require("./state/VaultAccount"), exports);
|
@@ -0,0 +1,41 @@
|
|
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.transferVaultInstruction = exports.transferVault = void 0;
|
16
|
+
const web3_js_1 = require("@solana/web3.js");
|
17
|
+
const sendAndConfirmWithDebug_1 = __importDefault(require("../utils/sendAndConfirmWithDebug"));
|
18
|
+
function transferVault(program, provider, payer, vaultPublicKey, vaultSystemStatePublicKey, vaultTypeAccount, newOwner) {
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
20
|
+
const history = web3_js_1.Keypair.generate();
|
21
|
+
const transaction = new web3_js_1.Transaction().add(yield transferVaultInstruction(vaultPublicKey, vaultSystemStatePublicKey, vaultTypeAccount, history.publicKey, payer.publicKey, program, newOwner));
|
22
|
+
yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, [payer, history]);
|
23
|
+
return vaultPublicKey;
|
24
|
+
});
|
25
|
+
}
|
26
|
+
exports.transferVault = transferVault;
|
27
|
+
function transferVaultInstruction(vaultPublickey, vaultSystemStatePublicKey, vaultTypeAccount, historyPublicKey, vaultOwner, program, newOwner) {
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
29
|
+
return yield program.methods
|
30
|
+
.transferVault(newOwner)
|
31
|
+
.accounts({
|
32
|
+
vault: vaultPublickey,
|
33
|
+
vaultSystemState: vaultSystemStatePublicKey,
|
34
|
+
vaultType: vaultTypeAccount,
|
35
|
+
history: historyPublicKey,
|
36
|
+
vaultOwner: vaultOwner,
|
37
|
+
})
|
38
|
+
.instruction();
|
39
|
+
});
|
40
|
+
}
|
41
|
+
exports.transferVaultInstruction = transferVaultInstruction;
|
@@ -26,20 +26,21 @@ function updateVaultType(program, provider, payer, vaultTypeAccount, oracleInfoA
|
|
26
26
|
}
|
27
27
|
exports.updateVaultType = updateVaultType;
|
28
28
|
function updateVaultTypeStatusInstruction(program, vaultSystemStatePublicKey, payerPublicKey, vaultTypeAccount, oracleInfoAccount, vaultTypeConfig) {
|
29
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
29
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
30
30
|
return __awaiter(this, void 0, void 0, function* () {
|
31
31
|
const config = {
|
32
32
|
maxDebtExtended: (_a = vaultTypeConfig.maxDebtExtended) !== null && _a !== void 0 ? _a : null,
|
33
33
|
minDebtPerVault: (_b = vaultTypeConfig.minDebtPerVault) !== null && _b !== void 0 ? _b : null,
|
34
34
|
loanInitFee: (_c = vaultTypeConfig.loanInitFee) !== null && _c !== void 0 ? _c : null,
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
35
|
+
interestRatePerSecond: (_d = vaultTypeConfig.interestRatePerSecond) !== null && _d !== void 0 ? _d : null,
|
36
|
+
emergencyModeThreshold: (_e = vaultTypeConfig.emergencyModeThreshold) !== null && _e !== void 0 ? _e : null,
|
37
|
+
oracleChainlink: (_f = vaultTypeConfig.oracleChainlink) !== null && _f !== void 0 ? _f : null,
|
38
|
+
oraclePyth: (_g = vaultTypeConfig.oraclePyth) !== null && _g !== void 0 ? _g : null,
|
39
|
+
oracleSwitchboard: (_h = vaultTypeConfig.oracleSwitchboard) !== null && _h !== void 0 ? _h : null,
|
40
|
+
deprecated: (_j = vaultTypeConfig.deprecated) !== null && _j !== void 0 ? _j : null,
|
41
|
+
priorityPyth: (_k = vaultTypeConfig.priorityPyth) !== null && _k !== void 0 ? _k : null,
|
42
|
+
priorityChainlink: (_l = vaultTypeConfig.priorityChainlink) !== null && _l !== void 0 ? _l : null,
|
43
|
+
prioritySwitchboard: (_m = vaultTypeConfig.prioritySwitchboard) !== null && _m !== void 0 ? _m : null,
|
43
44
|
};
|
44
45
|
return yield program.methods
|
45
46
|
.updateVaultType(config)
|
@@ -163,7 +163,9 @@ class VaultAccount {
|
|
163
163
|
.mul(new decimal_js_1.default(this.denormalizedDebt.toString()))
|
164
164
|
.floor()
|
165
165
|
.toString());
|
166
|
-
const extraCollateralDeposited = new decimal_js_1.default(this.denormalizedDebt.toString())
|
166
|
+
const extraCollateralDeposited = new decimal_js_1.default(this.denormalizedDebt.toString())
|
167
|
+
.mul(vaultTypeAccountData.collateralRedistributionAccumulator.sub(this.collateralAccumulatorSnapshotBytes).toNumber())
|
168
|
+
.floor();
|
167
169
|
this.deposited = this.deposited.add(new bn_js_1.default(extraCollateralDeposited.toString()));
|
168
170
|
this.collateralAccumulatorSnapshotBytes = vaultTypeAccountData.collateralRedistributionAccumulator;
|
169
171
|
this.debtProductSnapshotBytes = vaultTypeAccountData.debtRedistributionProduct;
|
package/package.json
CHANGED
package/src/idl/pyth.ts
CHANGED
@@ -5,19 +5,9 @@ export type Pyth = {
|
|
5
5
|
{
|
6
6
|
"name": "initialize",
|
7
7
|
"accounts": [
|
8
|
-
{
|
9
|
-
"name": "payer",
|
10
|
-
"isMut": true,
|
11
|
-
"isSigner": true
|
12
|
-
},
|
13
8
|
{
|
14
9
|
"name": "price",
|
15
10
|
"isMut": true,
|
16
|
-
"isSigner": true
|
17
|
-
},
|
18
|
-
{
|
19
|
-
"name": "systemProgram",
|
20
|
-
"isMut": false,
|
21
11
|
"isSigner": false
|
22
12
|
}
|
23
13
|
],
|
@@ -53,27 +43,57 @@ export type Pyth = {
|
|
53
43
|
]
|
54
44
|
}
|
55
45
|
],
|
56
|
-
"
|
46
|
+
"types": [
|
57
47
|
{
|
58
|
-
"name": "
|
48
|
+
"name": "PriceStatus",
|
59
49
|
"type": {
|
60
|
-
"kind": "
|
61
|
-
"
|
50
|
+
"kind": "enum",
|
51
|
+
"variants": [
|
52
|
+
{
|
53
|
+
"name": "Unknown"
|
54
|
+
},
|
55
|
+
{
|
56
|
+
"name": "Trading"
|
57
|
+
},
|
62
58
|
{
|
63
|
-
"name": "
|
64
|
-
|
65
|
-
|
66
|
-
|
59
|
+
"name": "Halted"
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"name": "Auction"
|
67
63
|
}
|
68
64
|
]
|
69
65
|
}
|
70
|
-
}
|
71
|
-
|
72
|
-
|
66
|
+
},
|
67
|
+
{
|
68
|
+
"name": "CorpAction",
|
69
|
+
"type": {
|
70
|
+
"kind": "enum",
|
71
|
+
"variants": [
|
72
|
+
{
|
73
|
+
"name": "NoCorpAct"
|
74
|
+
}
|
75
|
+
]
|
76
|
+
}
|
77
|
+
},
|
73
78
|
{
|
74
|
-
"
|
75
|
-
"
|
76
|
-
|
79
|
+
"name": "PriceType",
|
80
|
+
"type": {
|
81
|
+
"kind": "enum",
|
82
|
+
"variants": [
|
83
|
+
{
|
84
|
+
"name": "Unknown"
|
85
|
+
},
|
86
|
+
{
|
87
|
+
"name": "Price"
|
88
|
+
},
|
89
|
+
{
|
90
|
+
"name": "TWAP"
|
91
|
+
},
|
92
|
+
{
|
93
|
+
"name": "Volatility"
|
94
|
+
}
|
95
|
+
]
|
96
|
+
}
|
77
97
|
}
|
78
98
|
]
|
79
99
|
};
|
@@ -85,19 +105,9 @@ export const IDL: Pyth = {
|
|
85
105
|
{
|
86
106
|
"name": "initialize",
|
87
107
|
"accounts": [
|
88
|
-
{
|
89
|
-
"name": "payer",
|
90
|
-
"isMut": true,
|
91
|
-
"isSigner": true
|
92
|
-
},
|
93
108
|
{
|
94
109
|
"name": "price",
|
95
110
|
"isMut": true,
|
96
|
-
"isSigner": true
|
97
|
-
},
|
98
|
-
{
|
99
|
-
"name": "systemProgram",
|
100
|
-
"isMut": false,
|
101
111
|
"isSigner": false
|
102
112
|
}
|
103
113
|
],
|
@@ -133,27 +143,57 @@ export const IDL: Pyth = {
|
|
133
143
|
]
|
134
144
|
}
|
135
145
|
],
|
136
|
-
"
|
146
|
+
"types": [
|
137
147
|
{
|
138
|
-
"name": "
|
148
|
+
"name": "PriceStatus",
|
139
149
|
"type": {
|
140
|
-
"kind": "
|
141
|
-
"
|
150
|
+
"kind": "enum",
|
151
|
+
"variants": [
|
152
|
+
{
|
153
|
+
"name": "Unknown"
|
154
|
+
},
|
155
|
+
{
|
156
|
+
"name": "Trading"
|
157
|
+
},
|
142
158
|
{
|
143
|
-
"name": "
|
144
|
-
|
145
|
-
|
146
|
-
|
159
|
+
"name": "Halted"
|
160
|
+
},
|
161
|
+
{
|
162
|
+
"name": "Auction"
|
147
163
|
}
|
148
164
|
]
|
149
165
|
}
|
150
|
-
}
|
151
|
-
|
152
|
-
|
166
|
+
},
|
167
|
+
{
|
168
|
+
"name": "CorpAction",
|
169
|
+
"type": {
|
170
|
+
"kind": "enum",
|
171
|
+
"variants": [
|
172
|
+
{
|
173
|
+
"name": "NoCorpAct"
|
174
|
+
}
|
175
|
+
]
|
176
|
+
}
|
177
|
+
},
|
153
178
|
{
|
154
|
-
"
|
155
|
-
"
|
156
|
-
|
179
|
+
"name": "PriceType",
|
180
|
+
"type": {
|
181
|
+
"kind": "enum",
|
182
|
+
"variants": [
|
183
|
+
{
|
184
|
+
"name": "Unknown"
|
185
|
+
},
|
186
|
+
{
|
187
|
+
"name": "Price"
|
188
|
+
},
|
189
|
+
{
|
190
|
+
"name": "TWAP"
|
191
|
+
},
|
192
|
+
{
|
193
|
+
"name": "Volatility"
|
194
|
+
}
|
195
|
+
]
|
196
|
+
}
|
157
197
|
}
|
158
198
|
]
|
159
199
|
};
|
@@ -0,0 +1,93 @@
|
|
1
|
+
export type Switchboard = {
|
2
|
+
"version": "0.1.0",
|
3
|
+
"name": "switchboard",
|
4
|
+
"instructions": [
|
5
|
+
{
|
6
|
+
"name": "initialize",
|
7
|
+
"accounts": [
|
8
|
+
{
|
9
|
+
"name": "aggregator",
|
10
|
+
"isMut": true,
|
11
|
+
"isSigner": false
|
12
|
+
}
|
13
|
+
],
|
14
|
+
"args": [
|
15
|
+
{
|
16
|
+
"name": "price",
|
17
|
+
"type": "u64"
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"name": "scale",
|
21
|
+
"type": "u16"
|
22
|
+
}
|
23
|
+
]
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"name": "setPrice",
|
27
|
+
"accounts": [
|
28
|
+
{
|
29
|
+
"name": "aggregator",
|
30
|
+
"isMut": true,
|
31
|
+
"isSigner": false
|
32
|
+
}
|
33
|
+
],
|
34
|
+
"args": [
|
35
|
+
{
|
36
|
+
"name": "price",
|
37
|
+
"type": "u64"
|
38
|
+
},
|
39
|
+
{
|
40
|
+
"name": "scale",
|
41
|
+
"type": "u16"
|
42
|
+
}
|
43
|
+
]
|
44
|
+
}
|
45
|
+
]
|
46
|
+
};
|
47
|
+
|
48
|
+
export const IDL: Switchboard = {
|
49
|
+
"version": "0.1.0",
|
50
|
+
"name": "switchboard",
|
51
|
+
"instructions": [
|
52
|
+
{
|
53
|
+
"name": "initialize",
|
54
|
+
"accounts": [
|
55
|
+
{
|
56
|
+
"name": "aggregator",
|
57
|
+
"isMut": true,
|
58
|
+
"isSigner": false
|
59
|
+
}
|
60
|
+
],
|
61
|
+
"args": [
|
62
|
+
{
|
63
|
+
"name": "price",
|
64
|
+
"type": "u64"
|
65
|
+
},
|
66
|
+
{
|
67
|
+
"name": "scale",
|
68
|
+
"type": "u16"
|
69
|
+
}
|
70
|
+
]
|
71
|
+
},
|
72
|
+
{
|
73
|
+
"name": "setPrice",
|
74
|
+
"accounts": [
|
75
|
+
{
|
76
|
+
"name": "aggregator",
|
77
|
+
"isMut": true,
|
78
|
+
"isSigner": false
|
79
|
+
}
|
80
|
+
],
|
81
|
+
"args": [
|
82
|
+
{
|
83
|
+
"name": "price",
|
84
|
+
"type": "u64"
|
85
|
+
},
|
86
|
+
{
|
87
|
+
"name": "scale",
|
88
|
+
"type": "u16"
|
89
|
+
}
|
90
|
+
]
|
91
|
+
}
|
92
|
+
]
|
93
|
+
};
|
package/src/idl/vault.ts
CHANGED
@@ -2012,6 +2012,47 @@ export type Vault = {
|
|
2012
2012
|
"type": "i64"
|
2013
2013
|
}
|
2014
2014
|
]
|
2015
|
+
},
|
2016
|
+
{
|
2017
|
+
"name": "transferVault",
|
2018
|
+
"accounts": [
|
2019
|
+
{
|
2020
|
+
"name": "vault",
|
2021
|
+
"isMut": true,
|
2022
|
+
"isSigner": false
|
2023
|
+
},
|
2024
|
+
{
|
2025
|
+
"name": "vaultSystemState",
|
2026
|
+
"isMut": true,
|
2027
|
+
"isSigner": false
|
2028
|
+
},
|
2029
|
+
{
|
2030
|
+
"name": "vaultType",
|
2031
|
+
"isMut": true,
|
2032
|
+
"isSigner": false
|
2033
|
+
},
|
2034
|
+
{
|
2035
|
+
"name": "history",
|
2036
|
+
"isMut": true,
|
2037
|
+
"isSigner": true
|
2038
|
+
},
|
2039
|
+
{
|
2040
|
+
"name": "vaultOwner",
|
2041
|
+
"isMut": true,
|
2042
|
+
"isSigner": true
|
2043
|
+
},
|
2044
|
+
{
|
2045
|
+
"name": "systemProgram",
|
2046
|
+
"isMut": false,
|
2047
|
+
"isSigner": false
|
2048
|
+
}
|
2049
|
+
],
|
2050
|
+
"args": [
|
2051
|
+
{
|
2052
|
+
"name": "newOwner",
|
2053
|
+
"type": "publicKey"
|
2054
|
+
}
|
2055
|
+
]
|
2015
2056
|
}
|
2016
2057
|
],
|
2017
2058
|
"accounts": [
|
@@ -2798,6 +2839,12 @@ export type Vault = {
|
|
2798
2839
|
"option": "u64"
|
2799
2840
|
}
|
2800
2841
|
},
|
2842
|
+
{
|
2843
|
+
"name": "interestRatePerSecond",
|
2844
|
+
"type": {
|
2845
|
+
"option": "u128"
|
2846
|
+
}
|
2847
|
+
},
|
2801
2848
|
{
|
2802
2849
|
"name": "emergencyModeThreshold",
|
2803
2850
|
"type": {
|
@@ -3076,6 +3123,26 @@ export type Vault = {
|
|
3076
3123
|
"index": false
|
3077
3124
|
}
|
3078
3125
|
]
|
3126
|
+
},
|
3127
|
+
{
|
3128
|
+
"name": "VaultTransferEvent",
|
3129
|
+
"fields": [
|
3130
|
+
{
|
3131
|
+
"name": "vault",
|
3132
|
+
"type": "publicKey",
|
3133
|
+
"index": false
|
3134
|
+
},
|
3135
|
+
{
|
3136
|
+
"name": "oldOwner",
|
3137
|
+
"type": "publicKey",
|
3138
|
+
"index": false
|
3139
|
+
},
|
3140
|
+
{
|
3141
|
+
"name": "newOwner",
|
3142
|
+
"type": "publicKey",
|
3143
|
+
"index": false
|
3144
|
+
}
|
3145
|
+
]
|
3079
3146
|
}
|
3080
3147
|
],
|
3081
3148
|
"errors": [
|
@@ -5271,6 +5338,47 @@ export const IDL: Vault = {
|
|
5271
5338
|
"type": "i64"
|
5272
5339
|
}
|
5273
5340
|
]
|
5341
|
+
},
|
5342
|
+
{
|
5343
|
+
"name": "transferVault",
|
5344
|
+
"accounts": [
|
5345
|
+
{
|
5346
|
+
"name": "vault",
|
5347
|
+
"isMut": true,
|
5348
|
+
"isSigner": false
|
5349
|
+
},
|
5350
|
+
{
|
5351
|
+
"name": "vaultSystemState",
|
5352
|
+
"isMut": true,
|
5353
|
+
"isSigner": false
|
5354
|
+
},
|
5355
|
+
{
|
5356
|
+
"name": "vaultType",
|
5357
|
+
"isMut": true,
|
5358
|
+
"isSigner": false
|
5359
|
+
},
|
5360
|
+
{
|
5361
|
+
"name": "history",
|
5362
|
+
"isMut": true,
|
5363
|
+
"isSigner": true
|
5364
|
+
},
|
5365
|
+
{
|
5366
|
+
"name": "vaultOwner",
|
5367
|
+
"isMut": true,
|
5368
|
+
"isSigner": true
|
5369
|
+
},
|
5370
|
+
{
|
5371
|
+
"name": "systemProgram",
|
5372
|
+
"isMut": false,
|
5373
|
+
"isSigner": false
|
5374
|
+
}
|
5375
|
+
],
|
5376
|
+
"args": [
|
5377
|
+
{
|
5378
|
+
"name": "newOwner",
|
5379
|
+
"type": "publicKey"
|
5380
|
+
}
|
5381
|
+
]
|
5274
5382
|
}
|
5275
5383
|
],
|
5276
5384
|
"accounts": [
|
@@ -6057,6 +6165,12 @@ export const IDL: Vault = {
|
|
6057
6165
|
"option": "u64"
|
6058
6166
|
}
|
6059
6167
|
},
|
6168
|
+
{
|
6169
|
+
"name": "interestRatePerSecond",
|
6170
|
+
"type": {
|
6171
|
+
"option": "u128"
|
6172
|
+
}
|
6173
|
+
},
|
6060
6174
|
{
|
6061
6175
|
"name": "emergencyModeThreshold",
|
6062
6176
|
"type": {
|
@@ -6335,6 +6449,26 @@ export const IDL: Vault = {
|
|
6335
6449
|
"index": false
|
6336
6450
|
}
|
6337
6451
|
]
|
6452
|
+
},
|
6453
|
+
{
|
6454
|
+
"name": "VaultTransferEvent",
|
6455
|
+
"fields": [
|
6456
|
+
{
|
6457
|
+
"name": "vault",
|
6458
|
+
"type": "publicKey",
|
6459
|
+
"index": false
|
6460
|
+
},
|
6461
|
+
{
|
6462
|
+
"name": "oldOwner",
|
6463
|
+
"type": "publicKey",
|
6464
|
+
"index": false
|
6465
|
+
},
|
6466
|
+
{
|
6467
|
+
"name": "newOwner",
|
6468
|
+
"type": "publicKey",
|
6469
|
+
"index": false
|
6470
|
+
}
|
6471
|
+
]
|
6338
6472
|
}
|
6339
6473
|
],
|
6340
6474
|
"errors": [
|
package/src/index.ts
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
export * from './instructions/createStakingPool'
|
3
2
|
export * from './instructions/depositStakingPool'
|
4
3
|
export * from './instructions/withdrawStakingPool'
|
@@ -21,10 +20,9 @@ export * from './instructions/initHedgeFoundation'
|
|
21
20
|
export * from './instructions/initHedgeFoundationTokens'
|
22
21
|
export * from './instructions/setHalted'
|
23
22
|
export * from './instructions/updateVaultType'
|
24
|
-
|
23
|
+
export * from './instructions/transferVault'
|
25
24
|
export * from './HedgeDecimal'
|
26
25
|
export * from './Constants'
|
27
|
-
|
28
26
|
export * from './state/VaultAccount'
|
29
27
|
export * from './state/VaultHistoryEvent'
|
30
28
|
export * from './state/StakingPool'
|
@@ -32,6 +30,5 @@ export * from './state/StakingPoolPosition'
|
|
32
30
|
export * from './state/LiquidationPoolEra'
|
33
31
|
export * from './state/LiquidationPoolState'
|
34
32
|
export * from './state/LiquidationPosition'
|
35
|
-
|
36
33
|
export * from './utils/getLinkedListAccounts'
|
37
34
|
export * from './idl/vault'
|
@@ -0,0 +1,62 @@
|
|
1
|
+
import { BN, Program, Provider } from '@project-serum/anchor'
|
2
|
+
import {
|
3
|
+
Keypair,
|
4
|
+
PublicKey,
|
5
|
+
sendAndConfirmTransaction,
|
6
|
+
Signer,
|
7
|
+
SystemProgram,
|
8
|
+
SYSVAR_RENT_PUBKEY,
|
9
|
+
Transaction,
|
10
|
+
TransactionInstruction,
|
11
|
+
} from '@solana/web3.js'
|
12
|
+
|
13
|
+
import sendAndConfirmWithDebug from '../utils/sendAndConfirmWithDebug'
|
14
|
+
import { Vault } from '../idl/vault'
|
15
|
+
|
16
|
+
export async function transferVault(
|
17
|
+
program: Program<Vault>,
|
18
|
+
provider: Provider,
|
19
|
+
payer: Signer,
|
20
|
+
vaultPublicKey: PublicKey,
|
21
|
+
vaultSystemStatePublicKey: PublicKey,
|
22
|
+
vaultTypeAccount: PublicKey,
|
23
|
+
newOwner: PublicKey
|
24
|
+
): Promise<PublicKey> {
|
25
|
+
const history = Keypair.generate()
|
26
|
+
|
27
|
+
const transaction = new Transaction().add(
|
28
|
+
await transferVaultInstruction(
|
29
|
+
vaultPublicKey,
|
30
|
+
vaultSystemStatePublicKey,
|
31
|
+
vaultTypeAccount,
|
32
|
+
history.publicKey,
|
33
|
+
payer.publicKey,
|
34
|
+
program,
|
35
|
+
newOwner
|
36
|
+
)
|
37
|
+
)
|
38
|
+
|
39
|
+
await sendAndConfirmWithDebug(provider.connection, transaction, [payer, history])
|
40
|
+
return vaultPublicKey
|
41
|
+
}
|
42
|
+
|
43
|
+
export async function transferVaultInstruction(
|
44
|
+
vaultPublickey: PublicKey,
|
45
|
+
vaultSystemStatePublicKey: PublicKey,
|
46
|
+
vaultTypeAccount: PublicKey,
|
47
|
+
historyPublicKey: PublicKey,
|
48
|
+
vaultOwner: PublicKey,
|
49
|
+
program: Program<Vault>,
|
50
|
+
newOwner: PublicKey
|
51
|
+
): Promise<TransactionInstruction> {
|
52
|
+
return await program.methods
|
53
|
+
.transferVault(newOwner)
|
54
|
+
.accounts({
|
55
|
+
vault: vaultPublickey,
|
56
|
+
vaultSystemState: vaultSystemStatePublicKey,
|
57
|
+
vaultType: vaultTypeAccount,
|
58
|
+
history: historyPublicKey,
|
59
|
+
vaultOwner: vaultOwner,
|
60
|
+
})
|
61
|
+
.instruction()
|
62
|
+
}
|
@@ -28,6 +28,8 @@ export interface VaultTypeConfig {
|
|
28
28
|
maxDebtExtended?: BN
|
29
29
|
minDebtPerVault?: BN
|
30
30
|
loanInitFee?: BN
|
31
|
+
interestRatePerSecond?: BN
|
32
|
+
|
31
33
|
emergencyModeThreshold?: BN
|
32
34
|
|
33
35
|
oracleChainlink?: PublicKey
|
@@ -77,6 +79,7 @@ export async function updateVaultTypeStatusInstruction(
|
|
77
79
|
maxDebtExtended: vaultTypeConfig.maxDebtExtended ?? null,
|
78
80
|
minDebtPerVault: vaultTypeConfig.minDebtPerVault ?? null,
|
79
81
|
loanInitFee: vaultTypeConfig.loanInitFee ?? null,
|
82
|
+
interestRatePerSecond: vaultTypeConfig.interestRatePerSecond ?? null,
|
80
83
|
emergencyModeThreshold: vaultTypeConfig.emergencyModeThreshold ?? null,
|
81
84
|
oracleChainlink: vaultTypeConfig.oracleChainlink ?? null,
|
82
85
|
oraclePyth: vaultTypeConfig.oraclePyth ?? null,
|
@@ -16,7 +16,7 @@ export class VaultAccount {
|
|
16
16
|
/** The public key of the vault owner. */
|
17
17
|
vaultOwner: PublicKey
|
18
18
|
|
19
|
-
/** The
|
19
|
+
/** The salt used to derive the PDA for the vault. */
|
20
20
|
pdaSalt: string
|
21
21
|
|
22
22
|
/** The deposited collateral of the vault (in SOL Lamports). */
|
@@ -50,7 +50,7 @@ export class VaultAccount {
|
|
50
50
|
this.publicKey = publicKey
|
51
51
|
this.vaultOwner = vault.vaultOwner
|
52
52
|
this.pdaSalt = vault.pdaSalt
|
53
|
-
|
53
|
+
|
54
54
|
this.deposited = vault.deposited
|
55
55
|
this.denormalizedDebt = vault.denormalizedDebt
|
56
56
|
|
@@ -177,16 +177,15 @@ export class VaultAccount {
|
|
177
177
|
public updateDebtAndCollateral(vaultTypeAccountData: VaultType) {
|
178
178
|
this.denormalizedDebt = new BN(
|
179
179
|
vaultTypeAccountData.debtRedistributionProduct
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
180
|
+
.div(this.debtProductSnapshotBytes)
|
181
|
+
.mul(new Decimal(this.denormalizedDebt.toString()))
|
182
|
+
.floor()
|
183
|
+
.toString()
|
184
184
|
)
|
185
185
|
|
186
|
-
const extraCollateralDeposited =
|
187
|
-
|
188
|
-
|
189
|
-
).floor()
|
186
|
+
const extraCollateralDeposited = new Decimal(this.denormalizedDebt.toString())
|
187
|
+
.mul(vaultTypeAccountData.collateralRedistributionAccumulator.sub(this.collateralAccumulatorSnapshotBytes).toNumber())
|
188
|
+
.floor()
|
190
189
|
this.deposited = this.deposited.add(new BN(extraCollateralDeposited.toString()))
|
191
190
|
|
192
191
|
this.collateralAccumulatorSnapshotBytes = vaultTypeAccountData.collateralRedistributionAccumulator
|