hedge-web3 0.2.14 → 0.2.17

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/lib/idl/vault.js CHANGED
@@ -1759,7 +1759,7 @@ exports.IDL = {
1759
1759
  "args": []
1760
1760
  },
1761
1761
  {
1762
- "name": "adminResetVaultValues",
1762
+ "name": "psmCreate",
1763
1763
  "accounts": [
1764
1764
  {
1765
1765
  "name": "payer",
@@ -1772,30 +1772,106 @@ exports.IDL = {
1772
1772
  "isSigner": false
1773
1773
  },
1774
1774
  {
1775
- "name": "vaultAccount",
1775
+ "name": "psmAccount",
1776
1776
  "isMut": true,
1777
1777
  "isSigner": false
1778
1778
  },
1779
1779
  {
1780
- "name": "vaultAssociatedTokenAccount",
1780
+ "name": "collateralMint",
1781
+ "isMut": false,
1782
+ "isSigner": false
1783
+ },
1784
+ {
1785
+ "name": "systemProgram",
1786
+ "isMut": false,
1787
+ "isSigner": false
1788
+ }
1789
+ ],
1790
+ "args": [
1791
+ {
1792
+ "name": "mintFee",
1793
+ "type": "u64"
1794
+ },
1795
+ {
1796
+ "name": "redeemFee",
1797
+ "type": "u64"
1798
+ },
1799
+ {
1800
+ "name": "debtLimit",
1801
+ "type": "u64"
1802
+ },
1803
+ {
1804
+ "name": "minSwap",
1805
+ "type": "u64"
1806
+ },
1807
+ {
1808
+ "name": "collateralDecimals",
1809
+ "type": "u8"
1810
+ },
1811
+ {
1812
+ "name": "overrideCurrentTime",
1813
+ "type": "i64"
1814
+ }
1815
+ ]
1816
+ },
1817
+ {
1818
+ "name": "psmMintUsh",
1819
+ "accounts": [
1820
+ {
1821
+ "name": "payer",
1822
+ "isMut": true,
1823
+ "isSigner": true
1824
+ },
1825
+ {
1826
+ "name": "vaultSystemState",
1781
1827
  "isMut": true,
1782
1828
  "isSigner": false
1783
1829
  },
1784
1830
  {
1785
- "name": "vaultTypeAccount",
1831
+ "name": "feePool",
1786
1832
  "isMut": true,
1787
1833
  "isSigner": false
1788
1834
  },
1789
1835
  {
1790
- "name": "vaultTypeAssociatedTokenAccount",
1836
+ "name": "feePoolAssociatedUshTokenAccount",
1837
+ "isMut": true,
1838
+ "isSigner": false
1839
+ },
1840
+ {
1841
+ "name": "psmAccount",
1842
+ "isMut": true,
1843
+ "isSigner": false
1844
+ },
1845
+ {
1846
+ "name": "psmAccountAta",
1847
+ "isMut": true,
1848
+ "isSigner": false
1849
+ },
1850
+ {
1851
+ "name": "ownerUshAccount",
1852
+ "isMut": true,
1853
+ "isSigner": false
1854
+ },
1855
+ {
1856
+ "name": "ownerCollateralAccount",
1791
1857
  "isMut": true,
1792
1858
  "isSigner": false
1793
1859
  },
1794
1860
  {
1795
1861
  "name": "collateralMint",
1862
+ "isMut": false,
1863
+ "isSigner": false
1864
+ },
1865
+ {
1866
+ "name": "ushMint",
1796
1867
  "isMut": true,
1797
1868
  "isSigner": false
1798
1869
  },
1870
+ {
1871
+ "name": "systemProgram",
1872
+ "isMut": false,
1873
+ "isSigner": false
1874
+ },
1799
1875
  {
1800
1876
  "name": "tokenProgram",
1801
1877
  "isMut": false,
@@ -1804,12 +1880,87 @@ exports.IDL = {
1804
1880
  ],
1805
1881
  "args": [
1806
1882
  {
1807
- "name": "setCollateral",
1883
+ "name": "collateralAmount",
1808
1884
  "type": "u64"
1809
1885
  },
1810
1886
  {
1811
- "name": "setDebt",
1887
+ "name": "overrideCurrentTime",
1888
+ "type": "i64"
1889
+ }
1890
+ ]
1891
+ },
1892
+ {
1893
+ "name": "psmRedeemUsh",
1894
+ "accounts": [
1895
+ {
1896
+ "name": "payer",
1897
+ "isMut": true,
1898
+ "isSigner": true
1899
+ },
1900
+ {
1901
+ "name": "vaultSystemState",
1902
+ "isMut": true,
1903
+ "isSigner": false
1904
+ },
1905
+ {
1906
+ "name": "feePool",
1907
+ "isMut": true,
1908
+ "isSigner": false
1909
+ },
1910
+ {
1911
+ "name": "feePoolAssociatedUshTokenAccount",
1912
+ "isMut": true,
1913
+ "isSigner": false
1914
+ },
1915
+ {
1916
+ "name": "psmAccount",
1917
+ "isMut": true,
1918
+ "isSigner": false
1919
+ },
1920
+ {
1921
+ "name": "psmAccountAta",
1922
+ "isMut": true,
1923
+ "isSigner": false
1924
+ },
1925
+ {
1926
+ "name": "ownerUshAccount",
1927
+ "isMut": true,
1928
+ "isSigner": false
1929
+ },
1930
+ {
1931
+ "name": "ownerCollateralAccount",
1932
+ "isMut": true,
1933
+ "isSigner": false
1934
+ },
1935
+ {
1936
+ "name": "collateralMint",
1937
+ "isMut": false,
1938
+ "isSigner": false
1939
+ },
1940
+ {
1941
+ "name": "ushMint",
1942
+ "isMut": true,
1943
+ "isSigner": false
1944
+ },
1945
+ {
1946
+ "name": "systemProgram",
1947
+ "isMut": false,
1948
+ "isSigner": false
1949
+ },
1950
+ {
1951
+ "name": "tokenProgram",
1952
+ "isMut": false,
1953
+ "isSigner": false
1954
+ }
1955
+ ],
1956
+ "args": [
1957
+ {
1958
+ "name": "ushAmount",
1812
1959
  "type": "u64"
1960
+ },
1961
+ {
1962
+ "name": "overrideCurrentTime",
1963
+ "type": "i64"
1813
1964
  }
1814
1965
  ]
1815
1966
  }
@@ -2043,6 +2194,80 @@ exports.IDL = {
2043
2194
  ]
2044
2195
  }
2045
2196
  },
2197
+ {
2198
+ "name": "psmAccount",
2199
+ "type": {
2200
+ "kind": "struct",
2201
+ "fields": [
2202
+ {
2203
+ "name": "collateralMint",
2204
+ "type": "publicKey"
2205
+ },
2206
+ {
2207
+ "name": "minCollateralRatio",
2208
+ "type": "u128"
2209
+ },
2210
+ {
2211
+ "name": "mintFee",
2212
+ "type": "u128"
2213
+ },
2214
+ {
2215
+ "name": "redeemFee",
2216
+ "type": "u128"
2217
+ },
2218
+ {
2219
+ "name": "totalFeesAccumulatedUsh",
2220
+ "type": "u128"
2221
+ },
2222
+ {
2223
+ "name": "totalFeesAccumulatedCollateral",
2224
+ "type": "u128"
2225
+ },
2226
+ {
2227
+ "name": "recentPrice",
2228
+ "type": "u128"
2229
+ },
2230
+ {
2231
+ "name": "debtLimit",
2232
+ "type": "u64"
2233
+ },
2234
+ {
2235
+ "name": "deposited",
2236
+ "type": "u64"
2237
+ },
2238
+ {
2239
+ "name": "amountMinted",
2240
+ "type": "u64"
2241
+ },
2242
+ {
2243
+ "name": "minSwap",
2244
+ "type": "u64"
2245
+ },
2246
+ {
2247
+ "name": "timeCreated",
2248
+ "type": "u64"
2249
+ },
2250
+ {
2251
+ "name": "timeLastInteraction",
2252
+ "type": "u64"
2253
+ },
2254
+ {
2255
+ "name": "priceLastUpdatedTimestamp",
2256
+ "type": "u64"
2257
+ },
2258
+ {
2259
+ "name": "psmStatus",
2260
+ "type": {
2261
+ "defined": "PsmStatus"
2262
+ }
2263
+ },
2264
+ {
2265
+ "name": "collateralDecimals",
2266
+ "type": "u8"
2267
+ }
2268
+ ]
2269
+ }
2270
+ },
2046
2271
  {
2047
2272
  "name": "stakingPoolPosition",
2048
2273
  "type": {
@@ -2620,6 +2845,26 @@ exports.IDL = {
2620
2845
  ]
2621
2846
  }
2622
2847
  },
2848
+ {
2849
+ "name": "PsmStatus",
2850
+ "type": {
2851
+ "kind": "enum",
2852
+ "variants": [
2853
+ {
2854
+ "name": "PsmEnabled"
2855
+ },
2856
+ {
2857
+ "name": "PsmDisabled"
2858
+ },
2859
+ {
2860
+ "name": "MintOnly"
2861
+ },
2862
+ {
2863
+ "name": "RedeemOnly"
2864
+ }
2865
+ ]
2866
+ }
2867
+ },
2623
2868
  {
2624
2869
  "name": "SystemStatus",
2625
2870
  "type": {
@@ -2916,26 +3161,36 @@ exports.IDL = {
2916
3161
  },
2917
3162
  {
2918
3163
  "code": 6027,
3164
+ "name": "PsmDisabled",
3165
+ "msg": "PSM is currently disabled."
3166
+ },
3167
+ {
3168
+ "code": 6028,
3169
+ "name": "PsmError",
3170
+ "msg": "PSM error."
3171
+ },
3172
+ {
3173
+ "code": 6029,
2919
3174
  "name": "UpdateVaultTypeBadMaxDebtExtended",
2920
3175
  "msg": "New Max debt extended value is less than the current debt!"
2921
3176
  },
2922
3177
  {
2923
- "code": 6028,
3178
+ "code": 6030,
2924
3179
  "name": "UpdateVaultTypeNoEnabledOracles",
2925
3180
  "msg": "No Enabled Oracles!"
2926
3181
  },
2927
3182
  {
2928
- "code": 6029,
3183
+ "code": 6031,
2929
3184
  "name": "UpdateVaultTypeDuplicateOraclePriorities",
2930
3185
  "msg": "Duplicate Oracle Priorities"
2931
3186
  },
2932
3187
  {
2933
- "code": 6030,
3188
+ "code": 6032,
2934
3189
  "name": "UpdateVaultTypeInvalidOraclePriority",
2935
3190
  "msg": "Invalid Oracle Priority"
2936
3191
  },
2937
3192
  {
2938
- "code": 6031,
3193
+ "code": 6033,
2939
3194
  "name": "OracleUpdateFailed",
2940
3195
  "msg": "OracleUpdateFailed"
2941
3196
  }
package/lib/index.js CHANGED
@@ -19,6 +19,8 @@ __exportStar(require("./instructions/closeLiquidationPoolPosition"), exports);
19
19
  __exportStar(require("./instructions/claimLiquidationPoolPosition"), exports);
20
20
  __exportStar(require("./instructions/closeClaimedLiquidationPoolPosition"), exports);
21
21
  __exportStar(require("./instructions/createVault"), exports);
22
+ __exportStar(require("./instructions/psmMintUsh"), exports);
23
+ __exportStar(require("./instructions/psmRedeemUsh"), exports);
22
24
  __exportStar(require("./instructions/depositVault"), exports);
23
25
  __exportStar(require("./instructions/withdrawVault"), exports);
24
26
  __exportStar(require("./instructions/loanVault"), exports);
@@ -0,0 +1,65 @@
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.psmMintUshInstruction = exports.psmMintUsh = void 0;
16
+ const anchor_1 = require("@project-serum/anchor");
17
+ const spl_token_1 = require("@solana/spl-token");
18
+ const web3_js_1 = require("@solana/web3.js");
19
+ const Constants_1 = require("../Constants");
20
+ const sendAndConfirmWithDebug_1 = __importDefault(require("../utils/sendAndConfirmWithDebug"));
21
+ function psmMintUsh(program, provider, payer, collateralMint, collateralAmount, overrideTime) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ const ushMintPublickey = yield (0, Constants_1.getUshMintPublicKey)();
24
+ const payerUshAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, ushMintPublickey, payer.publicKey);
25
+ const payerCollateralAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, collateralMint, payer.publicKey);
26
+ const enc = new TextEncoder();
27
+ const [psmAccount] = yield web3_js_1.PublicKey.findProgramAddress([enc.encode(collateralMint.toString().slice(0, 12)), enc.encode('PSM')], Constants_1.HEDGE_PROGRAM_PUBLICKEY);
28
+ const psmAccountAta = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, collateralMint, psmAccount, true);
29
+ const transaction = new web3_js_1.Transaction().add(yield psmMintUshInstruction(program, payer.publicKey, psmAccount, collateralMint, new anchor_1.BN(collateralAmount), overrideTime));
30
+ yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, [payer]);
31
+ return payer.publicKey;
32
+ });
33
+ }
34
+ exports.psmMintUsh = psmMintUsh;
35
+ function psmMintUshInstruction(program, payerPublicKey, psmAccount, collateralMint, collateralAmount, overrideTime) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ const vaultSystemStatePublicKey = yield (0, Constants_1.getVaultSystemStatePublicKey)();
38
+ const ushMintPublickey = yield (0, Constants_1.getUshMintPublicKey)();
39
+ const hedgeMintPublickey = yield (0, Constants_1.getHedgeMintPublicKey)();
40
+ const [hedgeStakingPoolPublicKey] = yield (0, Constants_1.getPoolPublicKeyForMint)(hedgeMintPublickey);
41
+ const hedgeStakingPoolAssociatedUshTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(hedgeStakingPoolPublicKey, ushMintPublickey);
42
+ const psmAccountAta = yield (0, Constants_1.findAssociatedTokenAddress)(psmAccount, collateralMint);
43
+ const ownerCollateralAccount = yield (0, Constants_1.findAssociatedTokenAddress)(payerPublicKey, collateralMint);
44
+ const ownerUshAccount = yield (0, Constants_1.findAssociatedTokenAddress)(payerPublicKey, ushMintPublickey);
45
+ return yield program.methods
46
+ .psmMintUsh(collateralAmount, new anchor_1.BN(overrideTime !== null && overrideTime !== void 0 ? overrideTime : Math.floor(Date.now() / 1000)) // override override time
47
+ )
48
+ .accounts({
49
+ payer: payerPublicKey,
50
+ vaultSystemState: vaultSystemStatePublicKey,
51
+ feePool: hedgeStakingPoolPublicKey,
52
+ feePoolAssociatedUshTokenAccount: hedgeStakingPoolAssociatedUshTokenAccount,
53
+ psmAccount: psmAccount,
54
+ psmAccountAta: psmAccountAta,
55
+ ownerUshAccount: ownerUshAccount,
56
+ ownerCollateralAccount: ownerCollateralAccount,
57
+ collateralMint: collateralMint,
58
+ ushMint: ushMintPublickey,
59
+ systemProgram: web3_js_1.SystemProgram.programId,
60
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
61
+ })
62
+ .instruction();
63
+ });
64
+ }
65
+ exports.psmMintUshInstruction = psmMintUshInstruction;
@@ -0,0 +1,65 @@
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.psmRedeemUshInstruction = exports.psmRedeemUsh = void 0;
16
+ const anchor_1 = require("@project-serum/anchor");
17
+ const spl_token_1 = require("@solana/spl-token");
18
+ const web3_js_1 = require("@solana/web3.js");
19
+ const Constants_1 = require("../Constants");
20
+ const sendAndConfirmWithDebug_1 = __importDefault(require("../utils/sendAndConfirmWithDebug"));
21
+ function psmRedeemUsh(program, provider, payer, collateralMint, ushAmount, overrideTime) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ const ushMintPublickey = yield (0, Constants_1.getUshMintPublicKey)();
24
+ const payerUshAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, ushMintPublickey, payer.publicKey);
25
+ const payerCollateralAccount = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, collateralMint, payer.publicKey);
26
+ const enc = new TextEncoder();
27
+ const [psmAccount] = yield web3_js_1.PublicKey.findProgramAddress([enc.encode(collateralMint.toString().slice(0, 12)), enc.encode('PSM')], Constants_1.HEDGE_PROGRAM_PUBLICKEY);
28
+ const psmAccountAta = yield (0, spl_token_1.getOrCreateAssociatedTokenAccount)(provider.connection, payer, collateralMint, psmAccount, true);
29
+ const transaction = new web3_js_1.Transaction().add(yield psmRedeemUshInstruction(program, payer.publicKey, psmAccount, collateralMint, new anchor_1.BN(ushAmount), overrideTime));
30
+ yield (0, sendAndConfirmWithDebug_1.default)(provider.connection, transaction, [payer]);
31
+ return payer.publicKey;
32
+ });
33
+ }
34
+ exports.psmRedeemUsh = psmRedeemUsh;
35
+ function psmRedeemUshInstruction(program, payerPublicKey, psmAccount, collateralMint, ushAmount, overrideTime) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ const vaultSystemStatePublicKey = yield (0, Constants_1.getVaultSystemStatePublicKey)();
38
+ const ushMintPublickey = yield (0, Constants_1.getUshMintPublicKey)();
39
+ const hedgeMintPublickey = yield (0, Constants_1.getHedgeMintPublicKey)();
40
+ const [hedgeStakingPoolPublicKey] = yield (0, Constants_1.getPoolPublicKeyForMint)(hedgeMintPublickey);
41
+ const hedgeStakingPoolAssociatedUshTokenAccount = yield (0, Constants_1.findAssociatedTokenAddress)(hedgeStakingPoolPublicKey, ushMintPublickey);
42
+ const psmAccountAta = yield (0, Constants_1.findAssociatedTokenAddress)(psmAccount, collateralMint);
43
+ const ownerCollateralAccount = yield (0, Constants_1.findAssociatedTokenAddress)(payerPublicKey, collateralMint);
44
+ const ownerUshAccount = yield (0, Constants_1.findAssociatedTokenAddress)(payerPublicKey, ushMintPublickey);
45
+ return yield program.methods
46
+ .psmRedeemUsh(ushAmount, new anchor_1.BN(overrideTime !== null && overrideTime !== void 0 ? overrideTime : Math.floor(Date.now() / 1000)) // override override time
47
+ )
48
+ .accounts({
49
+ payer: payerPublicKey,
50
+ vaultSystemState: vaultSystemStatePublicKey,
51
+ feePool: hedgeStakingPoolPublicKey,
52
+ feePoolAssociatedUshTokenAccount: hedgeStakingPoolAssociatedUshTokenAccount,
53
+ psmAccount: psmAccount,
54
+ psmAccountAta: psmAccountAta,
55
+ ownerUshAccount: ownerUshAccount,
56
+ ownerCollateralAccount: ownerCollateralAccount,
57
+ collateralMint: collateralMint,
58
+ ushMint: ushMintPublickey,
59
+ systemProgram: web3_js_1.SystemProgram.programId,
60
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
61
+ })
62
+ .instruction();
63
+ });
64
+ }
65
+ exports.psmRedeemUshInstruction = psmRedeemUshInstruction;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hedge-web3",
3
- "version": "0.2.14",
3
+ "version": "0.2.17",
4
4
  "description": "Hedge Javascript Web3 API",
5
5
  "main": "lib/index.js",
6
6
  "types": "declarations/index.d.ts",