hedge-web3 0.2.17 → 0.2.18

Sign up to get free protection for your applications and to get access to all the features.
@@ -1802,8 +1802,56 @@ export declare type Vault = {
1802
1802
  "type": "u64";
1803
1803
  },
1804
1804
  {
1805
- "name": "collateralDecimals";
1806
- "type": "u8";
1805
+ "name": "overrideCurrentTime";
1806
+ "type": "i64";
1807
+ }
1808
+ ];
1809
+ },
1810
+ {
1811
+ "name": "psmEditAccount";
1812
+ "accounts": [
1813
+ {
1814
+ "name": "payer";
1815
+ "isMut": true;
1816
+ "isSigner": true;
1817
+ },
1818
+ {
1819
+ "name": "vaultSystemState";
1820
+ "isMut": true;
1821
+ "isSigner": false;
1822
+ },
1823
+ {
1824
+ "name": "psmAccount";
1825
+ "isMut": true;
1826
+ "isSigner": false;
1827
+ },
1828
+ {
1829
+ "name": "collateralMint";
1830
+ "isMut": false;
1831
+ "isSigner": false;
1832
+ },
1833
+ {
1834
+ "name": "systemProgram";
1835
+ "isMut": false;
1836
+ "isSigner": false;
1837
+ }
1838
+ ];
1839
+ "args": [
1840
+ {
1841
+ "name": "mintFee";
1842
+ "type": "u64";
1843
+ },
1844
+ {
1845
+ "name": "redeemFee";
1846
+ "type": "u64";
1847
+ },
1848
+ {
1849
+ "name": "debtLimit";
1850
+ "type": "u64";
1851
+ },
1852
+ {
1853
+ "name": "minSwap";
1854
+ "type": "u64";
1807
1855
  },
1808
1856
  {
1809
1857
  "name": "overrideCurrentTime";
@@ -3163,31 +3211,36 @@ export declare type Vault = {
3163
3211
  },
3164
3212
  {
3165
3213
  "code": 6028;
3166
- "name": "PsmError";
3167
- "msg": "PSM error.";
3214
+ "name": "PsmMaxDebtReached";
3215
+ "msg": "PSM - Max Debt reached";
3168
3216
  },
3169
3217
  {
3170
3218
  "code": 6029;
3219
+ "name": "PsmMinSwapAmount";
3220
+ "msg": "PSM - Need more to swap";
3221
+ },
3222
+ {
3223
+ "code": 6030;
3171
3224
  "name": "UpdateVaultTypeBadMaxDebtExtended";
3172
3225
  "msg": "New Max debt extended value is less than the current debt!";
3173
3226
  },
3174
3227
  {
3175
- "code": 6030;
3228
+ "code": 6031;
3176
3229
  "name": "UpdateVaultTypeNoEnabledOracles";
3177
3230
  "msg": "No Enabled Oracles!";
3178
3231
  },
3179
3232
  {
3180
- "code": 6031;
3233
+ "code": 6032;
3181
3234
  "name": "UpdateVaultTypeDuplicateOraclePriorities";
3182
3235
  "msg": "Duplicate Oracle Priorities";
3183
3236
  },
3184
3237
  {
3185
- "code": 6032;
3238
+ "code": 6033;
3186
3239
  "name": "UpdateVaultTypeInvalidOraclePriority";
3187
3240
  "msg": "Invalid Oracle Priority";
3188
3241
  },
3189
3242
  {
3190
- "code": 6033;
3243
+ "code": 6034;
3191
3244
  "name": "OracleUpdateFailed";
3192
3245
  "msg": "OracleUpdateFailed";
3193
3246
  }
package/lib/idl/vault.js CHANGED
@@ -1805,8 +1805,56 @@ exports.IDL = {
1805
1805
  "type": "u64"
1806
1806
  },
1807
1807
  {
1808
- "name": "collateralDecimals",
1809
- "type": "u8"
1808
+ "name": "overrideCurrentTime",
1809
+ "type": "i64"
1810
+ }
1811
+ ]
1812
+ },
1813
+ {
1814
+ "name": "psmEditAccount",
1815
+ "accounts": [
1816
+ {
1817
+ "name": "payer",
1818
+ "isMut": true,
1819
+ "isSigner": true
1820
+ },
1821
+ {
1822
+ "name": "vaultSystemState",
1823
+ "isMut": true,
1824
+ "isSigner": false
1825
+ },
1826
+ {
1827
+ "name": "psmAccount",
1828
+ "isMut": true,
1829
+ "isSigner": false
1830
+ },
1831
+ {
1832
+ "name": "collateralMint",
1833
+ "isMut": false,
1834
+ "isSigner": false
1835
+ },
1836
+ {
1837
+ "name": "systemProgram",
1838
+ "isMut": false,
1839
+ "isSigner": false
1840
+ }
1841
+ ],
1842
+ "args": [
1843
+ {
1844
+ "name": "mintFee",
1845
+ "type": "u64"
1846
+ },
1847
+ {
1848
+ "name": "redeemFee",
1849
+ "type": "u64"
1850
+ },
1851
+ {
1852
+ "name": "debtLimit",
1853
+ "type": "u64"
1854
+ },
1855
+ {
1856
+ "name": "minSwap",
1857
+ "type": "u64"
1810
1858
  },
1811
1859
  {
1812
1860
  "name": "overrideCurrentTime",
@@ -3166,31 +3214,36 @@ exports.IDL = {
3166
3214
  },
3167
3215
  {
3168
3216
  "code": 6028,
3169
- "name": "PsmError",
3170
- "msg": "PSM error."
3217
+ "name": "PsmMaxDebtReached",
3218
+ "msg": "PSM - Max Debt reached"
3171
3219
  },
3172
3220
  {
3173
3221
  "code": 6029,
3222
+ "name": "PsmMinSwapAmount",
3223
+ "msg": "PSM - Need more to swap"
3224
+ },
3225
+ {
3226
+ "code": 6030,
3174
3227
  "name": "UpdateVaultTypeBadMaxDebtExtended",
3175
3228
  "msg": "New Max debt extended value is less than the current debt!"
3176
3229
  },
3177
3230
  {
3178
- "code": 6030,
3231
+ "code": 6031,
3179
3232
  "name": "UpdateVaultTypeNoEnabledOracles",
3180
3233
  "msg": "No Enabled Oracles!"
3181
3234
  },
3182
3235
  {
3183
- "code": 6031,
3236
+ "code": 6032,
3184
3237
  "name": "UpdateVaultTypeDuplicateOraclePriorities",
3185
3238
  "msg": "Duplicate Oracle Priorities"
3186
3239
  },
3187
3240
  {
3188
- "code": 6032,
3241
+ "code": 6033,
3189
3242
  "name": "UpdateVaultTypeInvalidOraclePriority",
3190
3243
  "msg": "Invalid Oracle Priority"
3191
3244
  },
3192
3245
  {
3193
- "code": 6033,
3246
+ "code": 6034,
3194
3247
  "name": "OracleUpdateFailed",
3195
3248
  "msg": "OracleUpdateFailed"
3196
3249
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hedge-web3",
3
- "version": "0.2.17",
3
+ "version": "0.2.18",
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
@@ -1802,8 +1802,56 @@ export type Vault = {
1802
1802
  "type": "u64"
1803
1803
  },
1804
1804
  {
1805
- "name": "collateralDecimals",
1806
- "type": "u8"
1805
+ "name": "overrideCurrentTime",
1806
+ "type": "i64"
1807
+ }
1808
+ ]
1809
+ },
1810
+ {
1811
+ "name": "psmEditAccount",
1812
+ "accounts": [
1813
+ {
1814
+ "name": "payer",
1815
+ "isMut": true,
1816
+ "isSigner": true
1817
+ },
1818
+ {
1819
+ "name": "vaultSystemState",
1820
+ "isMut": true,
1821
+ "isSigner": false
1822
+ },
1823
+ {
1824
+ "name": "psmAccount",
1825
+ "isMut": true,
1826
+ "isSigner": false
1827
+ },
1828
+ {
1829
+ "name": "collateralMint",
1830
+ "isMut": false,
1831
+ "isSigner": false
1832
+ },
1833
+ {
1834
+ "name": "systemProgram",
1835
+ "isMut": false,
1836
+ "isSigner": false
1837
+ }
1838
+ ],
1839
+ "args": [
1840
+ {
1841
+ "name": "mintFee",
1842
+ "type": "u64"
1843
+ },
1844
+ {
1845
+ "name": "redeemFee",
1846
+ "type": "u64"
1847
+ },
1848
+ {
1849
+ "name": "debtLimit",
1850
+ "type": "u64"
1851
+ },
1852
+ {
1853
+ "name": "minSwap",
1854
+ "type": "u64"
1807
1855
  },
1808
1856
  {
1809
1857
  "name": "overrideCurrentTime",
@@ -3163,31 +3211,36 @@ export type Vault = {
3163
3211
  },
3164
3212
  {
3165
3213
  "code": 6028,
3166
- "name": "PsmError",
3167
- "msg": "PSM error."
3214
+ "name": "PsmMaxDebtReached",
3215
+ "msg": "PSM - Max Debt reached"
3168
3216
  },
3169
3217
  {
3170
3218
  "code": 6029,
3219
+ "name": "PsmMinSwapAmount",
3220
+ "msg": "PSM - Need more to swap"
3221
+ },
3222
+ {
3223
+ "code": 6030,
3171
3224
  "name": "UpdateVaultTypeBadMaxDebtExtended",
3172
3225
  "msg": "New Max debt extended value is less than the current debt!"
3173
3226
  },
3174
3227
  {
3175
- "code": 6030,
3228
+ "code": 6031,
3176
3229
  "name": "UpdateVaultTypeNoEnabledOracles",
3177
3230
  "msg": "No Enabled Oracles!"
3178
3231
  },
3179
3232
  {
3180
- "code": 6031,
3233
+ "code": 6032,
3181
3234
  "name": "UpdateVaultTypeDuplicateOraclePriorities",
3182
3235
  "msg": "Duplicate Oracle Priorities"
3183
3236
  },
3184
3237
  {
3185
- "code": 6032,
3238
+ "code": 6033,
3186
3239
  "name": "UpdateVaultTypeInvalidOraclePriority",
3187
3240
  "msg": "Invalid Oracle Priority"
3188
3241
  },
3189
3242
  {
3190
- "code": 6033,
3243
+ "code": 6034,
3191
3244
  "name": "OracleUpdateFailed",
3192
3245
  "msg": "OracleUpdateFailed"
3193
3246
  }
@@ -4998,8 +5051,56 @@ export const IDL: Vault = {
4998
5051
  "type": "u64"
4999
5052
  },
5000
5053
  {
5001
- "name": "collateralDecimals",
5002
- "type": "u8"
5054
+ "name": "overrideCurrentTime",
5055
+ "type": "i64"
5056
+ }
5057
+ ]
5058
+ },
5059
+ {
5060
+ "name": "psmEditAccount",
5061
+ "accounts": [
5062
+ {
5063
+ "name": "payer",
5064
+ "isMut": true,
5065
+ "isSigner": true
5066
+ },
5067
+ {
5068
+ "name": "vaultSystemState",
5069
+ "isMut": true,
5070
+ "isSigner": false
5071
+ },
5072
+ {
5073
+ "name": "psmAccount",
5074
+ "isMut": true,
5075
+ "isSigner": false
5076
+ },
5077
+ {
5078
+ "name": "collateralMint",
5079
+ "isMut": false,
5080
+ "isSigner": false
5081
+ },
5082
+ {
5083
+ "name": "systemProgram",
5084
+ "isMut": false,
5085
+ "isSigner": false
5086
+ }
5087
+ ],
5088
+ "args": [
5089
+ {
5090
+ "name": "mintFee",
5091
+ "type": "u64"
5092
+ },
5093
+ {
5094
+ "name": "redeemFee",
5095
+ "type": "u64"
5096
+ },
5097
+ {
5098
+ "name": "debtLimit",
5099
+ "type": "u64"
5100
+ },
5101
+ {
5102
+ "name": "minSwap",
5103
+ "type": "u64"
5003
5104
  },
5004
5105
  {
5005
5106
  "name": "overrideCurrentTime",
@@ -6359,31 +6460,36 @@ export const IDL: Vault = {
6359
6460
  },
6360
6461
  {
6361
6462
  "code": 6028,
6362
- "name": "PsmError",
6363
- "msg": "PSM error."
6463
+ "name": "PsmMaxDebtReached",
6464
+ "msg": "PSM - Max Debt reached"
6364
6465
  },
6365
6466
  {
6366
6467
  "code": 6029,
6468
+ "name": "PsmMinSwapAmount",
6469
+ "msg": "PSM - Need more to swap"
6470
+ },
6471
+ {
6472
+ "code": 6030,
6367
6473
  "name": "UpdateVaultTypeBadMaxDebtExtended",
6368
6474
  "msg": "New Max debt extended value is less than the current debt!"
6369
6475
  },
6370
6476
  {
6371
- "code": 6030,
6477
+ "code": 6031,
6372
6478
  "name": "UpdateVaultTypeNoEnabledOracles",
6373
6479
  "msg": "No Enabled Oracles!"
6374
6480
  },
6375
6481
  {
6376
- "code": 6031,
6482
+ "code": 6032,
6377
6483
  "name": "UpdateVaultTypeDuplicateOraclePriorities",
6378
6484
  "msg": "Duplicate Oracle Priorities"
6379
6485
  },
6380
6486
  {
6381
- "code": 6032,
6487
+ "code": 6033,
6382
6488
  "name": "UpdateVaultTypeInvalidOraclePriority",
6383
6489
  "msg": "Invalid Oracle Priority"
6384
6490
  },
6385
6491
  {
6386
- "code": 6033,
6492
+ "code": 6034,
6387
6493
  "name": "OracleUpdateFailed",
6388
6494
  "msg": "OracleUpdateFailed"
6389
6495
  }
@@ -0,0 +1,124 @@
1
+ import { BN, Program, Provider } from '@project-serum/anchor'
2
+ import { getOrCreateAssociatedTokenAccount, TOKEN_PROGRAM_ID } from '@solana/spl-token'
3
+ import {
4
+ Keypair,
5
+ PublicKey,
6
+ sendAndConfirmTransaction,
7
+ Signer,
8
+ SystemProgram,
9
+ Transaction,
10
+ TransactionInstruction,
11
+ } from '@solana/web3.js'
12
+ import { getLinkedListAccounts } from '../utils/getLinkedListAccounts'
13
+ import {
14
+ findAssociatedTokenAddress,
15
+ getHedgeMintPublicKey,
16
+ getPoolPublicKeyForMint,
17
+ getUshMintPublicKey,
18
+ getVaultSystemStatePublicKey,
19
+ HEDGE_PROGRAM_PUBLICKEY,
20
+ } from '../Constants'
21
+ import sendAndConfirmWithDebug from '../utils/sendAndConfirmWithDebug'
22
+ import { Vault } from '../idl/vault'
23
+ import { parseAnchorErrors } from '../utils/Errors'
24
+ import { VaultAccount } from '../state/VaultAccount'
25
+
26
+ export enum psmStatus {
27
+ PsmEnabled,
28
+ PsmDisabled,
29
+ MintOnly,
30
+ RedeemOnly
31
+ }
32
+
33
+ export async function psmEditAccount(
34
+ program: Program<Vault>,
35
+ provider: Provider,
36
+ payer: Signer,
37
+ collateralMint: PublicKey,
38
+ mintFee: number,
39
+ redeemFee: number,
40
+ debtLimit: number,
41
+ minSwap: number,
42
+ overrideTime?: number
43
+ ): Promise<PublicKey> {
44
+ const ushMintPublickey = await getUshMintPublicKey()
45
+
46
+ const payerUshAccount = await getOrCreateAssociatedTokenAccount(
47
+ provider.connection,
48
+ payer,
49
+ ushMintPublickey,
50
+ payer.publicKey
51
+ )
52
+
53
+ const payerCollateralAccount = await getOrCreateAssociatedTokenAccount(
54
+ provider.connection,
55
+ payer,
56
+ collateralMint,
57
+ payer.publicKey
58
+ )
59
+
60
+
61
+ const enc = new TextEncoder()
62
+ const [psmAccount] = await PublicKey.findProgramAddress(
63
+ [enc.encode(collateralMint.toString().slice(0, 12)), enc.encode('PSM')],
64
+ HEDGE_PROGRAM_PUBLICKEY
65
+ )
66
+
67
+ const psmAccountAta = await getOrCreateAssociatedTokenAccount(
68
+ provider.connection,
69
+ payer,
70
+ collateralMint,
71
+ psmAccount,
72
+ true
73
+ )
74
+
75
+ const transaction = new Transaction().add(
76
+ await psmEditAccountInstruction(
77
+ program,
78
+ payer.publicKey,
79
+ psmAccount,
80
+ collateralMint,
81
+ new BN(mintFee),
82
+ new BN(redeemFee),
83
+ new BN(debtLimit),
84
+ new BN(minSwap),
85
+ overrideTime
86
+ )
87
+ )
88
+ await sendAndConfirmWithDebug(provider.connection, transaction, [payer])
89
+ return payer.publicKey
90
+ }
91
+
92
+ export async function psmEditAccountInstruction(
93
+ program: Program<Vault>,
94
+ payerPublicKey: PublicKey,
95
+ psmAccount: PublicKey,
96
+ collateralMint: PublicKey,
97
+ mintFee: BN,
98
+ redeemFee: BN,
99
+ debtLimit: BN,
100
+ minSwap: BN,
101
+ overrideTime?: number
102
+ ): Promise<TransactionInstruction> {
103
+ const vaultSystemStatePublicKey = await getVaultSystemStatePublicKey()
104
+ const hedgeMintPublickey = await getHedgeMintPublicKey()
105
+ const [hedgeStakingPoolPublicKey] = await getPoolPublicKeyForMint(hedgeMintPublickey)
106
+
107
+
108
+ return await program.methods
109
+ .psmEditAccount(
110
+ mintFee,
111
+ redeemFee,
112
+ debtLimit,
113
+ minSwap,
114
+ new BN(overrideTime ?? Math.floor(Date.now() / 1000)) // override override time
115
+ )
116
+ .accounts({
117
+ payer: payerPublicKey,
118
+ vaultSystemState: vaultSystemStatePublicKey,
119
+ psmAccount: psmAccount,
120
+ collateralMint: collateralMint,
121
+ systemProgram: SystemProgram.programId,
122
+ })
123
+ .instruction()
124
+ }