@kamino-finance/klend-sdk 7.2.6-beta.1 → 7.3.0
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/README.md +1 -0
- package/dist/@codegen/klend/accounts/LendingMarket.d.ts +33 -0
- package/dist/@codegen/klend/accounts/LendingMarket.d.ts.map +1 -1
- package/dist/@codegen/klend/accounts/LendingMarket.js +24 -2
- package/dist/@codegen/klend/accounts/LendingMarket.js.map +1 -1
- package/dist/@codegen/klend/errors/custom.d.ts +26 -2
- package/dist/@codegen/klend/errors/custom.d.ts.map +1 -1
- package/dist/@codegen/klend/errors/custom.js +45 -3
- package/dist/@codegen/klend/errors/custom.js.map +1 -1
- package/dist/@codegen/klend/instructions/index.d.ts +2 -0
- package/dist/@codegen/klend/instructions/index.d.ts.map +1 -1
- package/dist/@codegen/klend/instructions/index.js +3 -1
- package/dist/@codegen/klend/instructions/index.js.map +1 -1
- package/dist/@codegen/klend/instructions/initReserve.d.ts +1 -1
- package/dist/@codegen/klend/instructions/initReserve.d.ts.map +1 -1
- package/dist/@codegen/klend/instructions/initReserve.js +1 -5
- package/dist/@codegen/klend/instructions/initReserve.js.map +1 -1
- package/dist/@codegen/klend/instructions/liquidateObligationAndRedeemReserveCollateralV2.js +1 -1
- package/dist/@codegen/klend/instructions/seedDepositOnInitReserve.d.ts +13 -0
- package/dist/@codegen/klend/instructions/seedDepositOnInitReserve.d.ts.map +1 -0
- package/dist/@codegen/klend/instructions/seedDepositOnInitReserve.js +24 -0
- package/dist/@codegen/klend/instructions/seedDepositOnInitReserve.js.map +1 -0
- package/dist/@codegen/klend/instructions/withdrawObligationCollateral.js +1 -1
- package/dist/@codegen/klend/instructions/withdrawObligationCollateralV2.js +1 -1
- package/dist/@codegen/klend/types/ReserveConfig.d.ts +58 -24
- package/dist/@codegen/klend/types/ReserveConfig.d.ts.map +1 -1
- package/dist/@codegen/klend/types/ReserveConfig.js +40 -18
- package/dist/@codegen/klend/types/ReserveConfig.js.map +1 -1
- package/dist/@codegen/klend/types/ReserveFees.d.ts +8 -8
- package/dist/@codegen/klend/types/ReserveFees.d.ts.map +1 -1
- package/dist/@codegen/klend/types/ReserveFees.js +8 -8
- package/dist/@codegen/klend/types/ReserveFees.js.map +1 -1
- package/dist/@codegen/klend/types/UpdateConfigMode.d.ts +46 -7
- package/dist/@codegen/klend/types/UpdateConfigMode.d.ts.map +1 -1
- package/dist/@codegen/klend/types/UpdateConfigMode.js +85 -12
- package/dist/@codegen/klend/types/UpdateConfigMode.js.map +1 -1
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.d.ts +26 -0
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.d.ts.map +1 -1
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.js +49 -1
- package/dist/@codegen/klend/types/UpdateLendingMarketMode.js.map +1 -1
- package/dist/@codegen/klend/types/index.d.ts +4 -4
- package/dist/@codegen/klend/types/index.d.ts.map +1 -1
- package/dist/@codegen/klend/types/index.js.map +1 -1
- package/dist/@codegen/kvault/accounts/GlobalConfig.d.ts +32 -0
- package/dist/@codegen/kvault/accounts/GlobalConfig.d.ts.map +1 -0
- package/dist/@codegen/kvault/accounts/GlobalConfig.js +125 -0
- package/dist/@codegen/kvault/accounts/GlobalConfig.js.map +1 -0
- package/dist/@codegen/kvault/accounts/Reserve.js +1 -1
- package/dist/@codegen/kvault/accounts/ReserveWhitelistEntry.d.ts +52 -0
- package/dist/@codegen/kvault/accounts/ReserveWhitelistEntry.d.ts.map +1 -0
- package/dist/@codegen/kvault/accounts/ReserveWhitelistEntry.js +127 -0
- package/dist/@codegen/kvault/accounts/ReserveWhitelistEntry.js.map +1 -0
- package/dist/@codegen/kvault/accounts/VaultState.d.ts +18 -0
- package/dist/@codegen/kvault/accounts/VaultState.d.ts.map +1 -1
- package/dist/@codegen/kvault/accounts/VaultState.js +39 -1
- package/dist/@codegen/kvault/accounts/VaultState.js.map +1 -1
- package/dist/@codegen/kvault/accounts/index.d.ts +4 -0
- package/dist/@codegen/kvault/accounts/index.d.ts.map +1 -1
- package/dist/@codegen/kvault/accounts/index.js +5 -1
- package/dist/@codegen/kvault/accounts/index.js.map +1 -1
- package/dist/@codegen/kvault/errors/custom.d.ts +61 -5
- package/dist/@codegen/kvault/errors/custom.d.ts.map +1 -1
- package/dist/@codegen/kvault/errors/custom.js +108 -9
- package/dist/@codegen/kvault/errors/custom.js.map +1 -1
- package/dist/@codegen/kvault/instructions/addUpdateWhitelistedReserve.d.ts +16 -0
- package/dist/@codegen/kvault/instructions/addUpdateWhitelistedReserve.d.ts.map +1 -0
- package/dist/@codegen/kvault/instructions/addUpdateWhitelistedReserve.js +66 -0
- package/dist/@codegen/kvault/instructions/addUpdateWhitelistedReserve.js.map +1 -0
- package/dist/@codegen/kvault/instructions/buy.d.ts +24 -0
- package/dist/@codegen/kvault/instructions/buy.d.ts.map +1 -0
- package/dist/@codegen/kvault/instructions/buy.js +67 -0
- package/dist/@codegen/kvault/instructions/buy.js.map +1 -0
- package/dist/@codegen/kvault/instructions/index.d.ts +12 -0
- package/dist/@codegen/kvault/instructions/index.d.ts.map +1 -1
- package/dist/@codegen/kvault/instructions/index.js +13 -1
- package/dist/@codegen/kvault/instructions/index.js.map +1 -1
- package/dist/@codegen/kvault/instructions/initGlobalConfig.d.ts +11 -0
- package/dist/@codegen/kvault/instructions/initGlobalConfig.d.ts.map +1 -0
- package/dist/@codegen/kvault/instructions/initGlobalConfig.js +20 -0
- package/dist/@codegen/kvault/instructions/initGlobalConfig.js.map +1 -0
- package/dist/@codegen/kvault/instructions/invest.d.ts +2 -1
- package/dist/@codegen/kvault/instructions/invest.d.ts.map +1 -1
- package/dist/@codegen/kvault/instructions/invest.js +5 -0
- package/dist/@codegen/kvault/instructions/invest.js.map +1 -1
- package/dist/@codegen/kvault/instructions/sell.d.ts +40 -0
- package/dist/@codegen/kvault/instructions/sell.d.ts.map +1 -0
- package/dist/@codegen/kvault/instructions/sell.js +98 -0
- package/dist/@codegen/kvault/instructions/sell.js.map +1 -0
- package/dist/@codegen/kvault/instructions/updateGlobalConfig.d.ts +13 -0
- package/dist/@codegen/kvault/instructions/updateGlobalConfig.d.ts.map +1 -0
- package/dist/@codegen/kvault/instructions/updateGlobalConfig.js +63 -0
- package/dist/@codegen/kvault/instructions/updateGlobalConfig.js.map +1 -0
- package/dist/@codegen/kvault/instructions/updateGlobalConfigAdmin.d.ts +8 -0
- package/dist/@codegen/kvault/instructions/updateGlobalConfigAdmin.d.ts.map +1 -0
- package/dist/@codegen/kvault/instructions/updateGlobalConfigAdmin.js +21 -0
- package/dist/@codegen/kvault/instructions/updateGlobalConfigAdmin.js.map +1 -0
- package/dist/@codegen/kvault/instructions/updateReserveAllocation.d.ts +2 -1
- package/dist/@codegen/kvault/instructions/updateReserveAllocation.d.ts.map +1 -1
- package/dist/@codegen/kvault/instructions/updateReserveAllocation.js +5 -0
- package/dist/@codegen/kvault/instructions/updateReserveAllocation.js.map +1 -1
- package/dist/@codegen/kvault/instructions/updateVaultConfig.d.ts +2 -1
- package/dist/@codegen/kvault/instructions/updateVaultConfig.d.ts.map +1 -1
- package/dist/@codegen/kvault/instructions/updateVaultConfig.js +2 -5
- package/dist/@codegen/kvault/instructions/updateVaultConfig.js.map +1 -1
- package/dist/@codegen/kvault/instructions/withdraw.d.ts +1 -0
- package/dist/@codegen/kvault/instructions/withdraw.d.ts.map +1 -1
- package/dist/@codegen/kvault/instructions/withdraw.js +1 -0
- package/dist/@codegen/kvault/instructions/withdraw.js.map +1 -1
- package/dist/@codegen/kvault/instructions/withdrawFromAvailable.d.ts +1 -0
- package/dist/@codegen/kvault/instructions/withdrawFromAvailable.d.ts.map +1 -1
- package/dist/@codegen/kvault/instructions/withdrawFromAvailable.js +1 -0
- package/dist/@codegen/kvault/instructions/withdrawFromAvailable.js.map +1 -1
- package/dist/@codegen/kvault/types/ReserveConfig.d.ts +27 -34
- package/dist/@codegen/kvault/types/ReserveConfig.d.ts.map +1 -1
- package/dist/@codegen/kvault/types/ReserveConfig.js +20 -17
- package/dist/@codegen/kvault/types/ReserveConfig.js.map +1 -1
- package/dist/@codegen/kvault/types/ReserveFees.d.ts +8 -8
- package/dist/@codegen/kvault/types/ReserveFees.d.ts.map +1 -1
- package/dist/@codegen/kvault/types/ReserveFees.js +8 -8
- package/dist/@codegen/kvault/types/ReserveFees.js.map +1 -1
- package/dist/@codegen/kvault/types/UpdateGlobalConfigMode.d.ts +68 -0
- package/dist/@codegen/kvault/types/UpdateGlobalConfigMode.d.ts.map +1 -0
- package/dist/@codegen/kvault/types/UpdateGlobalConfigMode.js +162 -0
- package/dist/@codegen/kvault/types/UpdateGlobalConfigMode.js.map +1 -0
- package/dist/@codegen/kvault/types/UpdateReserveWhitelistMode.d.ts +46 -0
- package/dist/@codegen/kvault/types/UpdateReserveWhitelistMode.d.ts.map +1 -0
- package/dist/@codegen/kvault/types/UpdateReserveWhitelistMode.js +124 -0
- package/dist/@codegen/kvault/types/UpdateReserveWhitelistMode.js.map +1 -0
- package/dist/@codegen/kvault/types/VaultConfigField.d.ts +65 -0
- package/dist/@codegen/kvault/types/VaultConfigField.d.ts.map +1 -1
- package/dist/@codegen/kvault/types/VaultConfigField.js +121 -1
- package/dist/@codegen/kvault/types/VaultConfigField.js.map +1 -1
- package/dist/@codegen/kvault/types/index.d.ts +10 -2
- package/dist/@codegen/kvault/types/index.d.ts.map +1 -1
- package/dist/@codegen/kvault/types/index.js +5 -1
- package/dist/@codegen/kvault/types/index.js.map +1 -1
- package/dist/classes/manager.d.ts +17 -1
- package/dist/classes/manager.d.ts.map +1 -1
- package/dist/classes/manager.js +22 -0
- package/dist/classes/manager.js.map +1 -1
- package/dist/classes/market.js +3 -3
- package/dist/classes/market.js.map +1 -1
- package/dist/classes/reserve.d.ts.map +1 -1
- package/dist/classes/reserve.js +7 -4
- package/dist/classes/reserve.js.map +1 -1
- package/dist/classes/vault.d.ts +29 -5
- package/dist/classes/vault.d.ts.map +1 -1
- package/dist/classes/vault.js +119 -48
- package/dist/classes/vault.js.map +1 -1
- package/dist/idl/klend.json +129 -59
- package/dist/lib.d.ts +1 -0
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +4 -2
- package/dist/lib.js.map +1 -1
- package/dist/manager/client_kamino_manager.js +206 -15
- package/dist/manager/client_kamino_manager.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/managerTypes.d.ts +1 -1
- package/dist/utils/managerTypes.d.ts.map +1 -1
- package/dist/utils/managerTypes.js +5 -3
- package/dist/utils/managerTypes.js.map +1 -1
- package/dist/utils/parse.d.ts +10 -0
- package/dist/utils/parse.d.ts.map +1 -0
- package/dist/utils/parse.js +24 -0
- package/dist/utils/parse.js.map +1 -0
- package/dist/utils/seeds.d.ts +5 -5
- package/dist/utils/seeds.d.ts.map +1 -1
- package/dist/utils/seeds.js +13 -13
- package/dist/utils/seeds.js.map +1 -1
- package/dist/utils/vault.d.ts.map +1 -1
- package/dist/utils/vault.js +6 -0
- package/dist/utils/vault.js.map +1 -1
- package/package.json +1 -1
- package/src/@codegen/klend/accounts/LendingMarket.ts +46 -2
- package/src/@codegen/klend/errors/custom.ts +47 -2
- package/src/@codegen/klend/instructions/index.ts +2 -0
- package/src/@codegen/klend/instructions/initReserve.ts +2 -6
- package/src/@codegen/klend/instructions/liquidateObligationAndRedeemReserveCollateralV2.ts +1 -1
- package/src/@codegen/klend/instructions/seedDepositOnInitReserve.ts +50 -0
- package/src/@codegen/klend/instructions/withdrawObligationCollateral.ts +1 -1
- package/src/@codegen/klend/instructions/withdrawObligationCollateralV2.ts +1 -1
- package/src/@codegen/klend/types/ReserveConfig.ts +72 -30
- package/src/@codegen/klend/types/ReserveFees.ts +12 -12
- package/src/@codegen/klend/types/UpdateConfigMode.ts +103 -13
- package/src/@codegen/klend/types/UpdateLendingMarketMode.ts +60 -0
- package/src/@codegen/klend/types/index.ts +12 -2
- package/src/@codegen/kvault/accounts/GlobalConfig.ts +136 -0
- package/src/@codegen/kvault/accounts/Reserve.ts +1 -1
- package/src/@codegen/kvault/accounts/ReserveWhitelistEntry.ts +157 -0
- package/src/@codegen/kvault/accounts/VaultState.ts +57 -1
- package/src/@codegen/kvault/accounts/index.ts +7 -0
- package/src/@codegen/kvault/errors/custom.ts +109 -8
- package/src/@codegen/kvault/instructions/addUpdateWhitelistedReserve.ts +64 -0
- package/src/@codegen/kvault/instructions/buy.ts +74 -0
- package/src/@codegen/kvault/instructions/index.ts +18 -0
- package/src/@codegen/kvault/instructions/initGlobalConfig.ts +44 -0
- package/src/@codegen/kvault/instructions/invest.ts +4 -0
- package/src/@codegen/kvault/instructions/sell.ts +122 -0
- package/src/@codegen/kvault/instructions/updateGlobalConfig.ts +58 -0
- package/src/@codegen/kvault/instructions/updateGlobalConfigAdmin.ts +42 -0
- package/src/@codegen/kvault/instructions/updateReserveAllocation.ts +4 -0
- package/src/@codegen/kvault/instructions/updateVaultConfig.ts +4 -6
- package/src/@codegen/kvault/instructions/withdraw.ts +2 -0
- package/src/@codegen/kvault/instructions/withdrawFromAvailable.ts +2 -0
- package/src/@codegen/kvault/types/ReserveConfig.ts +34 -37
- package/src/@codegen/kvault/types/ReserveFees.ts +12 -12
- package/src/@codegen/kvault/types/UpdateGlobalConfigMode.ts +160 -0
- package/src/@codegen/kvault/types/UpdateReserveWhitelistMode.ts +117 -0
- package/src/@codegen/kvault/types/VaultConfigField.ts +150 -0
- package/src/@codegen/kvault/types/index.ts +31 -0
- package/src/classes/manager.ts +29 -1
- package/src/classes/market.ts +3 -3
- package/src/classes/reserve.ts +7 -5
- package/src/classes/vault.ts +166 -48
- package/src/idl/klend.json +130 -60
- package/src/idl/kvault.json +582 -23
- package/src/lib.ts +2 -1
- package/src/manager/client_kamino_manager.ts +313 -18
- package/src/utils/index.ts +2 -1
- package/src/utils/managerTypes.ts +6 -4
- package/src/utils/parse.ts +18 -0
- package/src/utils/seeds.ts +13 -17
- package/src/utils/vault.ts +6 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import {
|
|
3
|
+
Address,
|
|
4
|
+
isSome,
|
|
5
|
+
AccountMeta,
|
|
6
|
+
AccountSignerMeta,
|
|
7
|
+
Instruction,
|
|
8
|
+
Option,
|
|
9
|
+
TransactionSigner,
|
|
10
|
+
} from "@solana/kit"
|
|
11
|
+
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
12
|
+
import BN from "bn.js" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
13
|
+
import * as borsh from "@coral-xyz/borsh" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
14
|
+
import { borshAddress } from "../utils" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
15
|
+
import * as types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
16
|
+
import { PROGRAM_ID } from "../programId"
|
|
17
|
+
|
|
18
|
+
export const DISCRIMINATOR = Buffer.from([102, 6, 61, 18, 1, 218, 235, 234])
|
|
19
|
+
|
|
20
|
+
export interface BuyArgs {
|
|
21
|
+
maxAmount: BN
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface BuyAccounts {
|
|
25
|
+
user: TransactionSigner
|
|
26
|
+
vaultState: Address
|
|
27
|
+
tokenVault: Address
|
|
28
|
+
tokenMint: Address
|
|
29
|
+
baseVaultAuthority: Address
|
|
30
|
+
sharesMint: Address
|
|
31
|
+
userTokenAta: Address
|
|
32
|
+
userSharesAta: Address
|
|
33
|
+
klendProgram: Address
|
|
34
|
+
tokenProgram: Address
|
|
35
|
+
sharesTokenProgram: Address
|
|
36
|
+
eventAuthority: Address
|
|
37
|
+
program: Address
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export const layout = borsh.struct<BuyArgs>([borsh.u64("maxAmount")])
|
|
41
|
+
|
|
42
|
+
export function buy(
|
|
43
|
+
args: BuyArgs,
|
|
44
|
+
accounts: BuyAccounts,
|
|
45
|
+
remainingAccounts: Array<AccountMeta | AccountSignerMeta> = [],
|
|
46
|
+
programAddress: Address = PROGRAM_ID
|
|
47
|
+
) {
|
|
48
|
+
const keys: Array<AccountMeta | AccountSignerMeta> = [
|
|
49
|
+
{ address: accounts.user.address, role: 3, signer: accounts.user },
|
|
50
|
+
{ address: accounts.vaultState, role: 1 },
|
|
51
|
+
{ address: accounts.tokenVault, role: 1 },
|
|
52
|
+
{ address: accounts.tokenMint, role: 0 },
|
|
53
|
+
{ address: accounts.baseVaultAuthority, role: 0 },
|
|
54
|
+
{ address: accounts.sharesMint, role: 1 },
|
|
55
|
+
{ address: accounts.userTokenAta, role: 1 },
|
|
56
|
+
{ address: accounts.userSharesAta, role: 1 },
|
|
57
|
+
{ address: accounts.klendProgram, role: 0 },
|
|
58
|
+
{ address: accounts.tokenProgram, role: 0 },
|
|
59
|
+
{ address: accounts.sharesTokenProgram, role: 0 },
|
|
60
|
+
{ address: accounts.eventAuthority, role: 0 },
|
|
61
|
+
{ address: accounts.program, role: 0 },
|
|
62
|
+
...remainingAccounts,
|
|
63
|
+
]
|
|
64
|
+
const buffer = Buffer.alloc(1000)
|
|
65
|
+
const len = layout.encode(
|
|
66
|
+
{
|
|
67
|
+
maxAmount: args.maxAmount,
|
|
68
|
+
},
|
|
69
|
+
buffer
|
|
70
|
+
)
|
|
71
|
+
const data = Buffer.concat([DISCRIMINATOR, buffer]).slice(0, 8 + len)
|
|
72
|
+
const ix: Instruction = { accounts: keys, programAddress, data }
|
|
73
|
+
return ix
|
|
74
|
+
}
|
|
@@ -7,8 +7,12 @@ export type {
|
|
|
7
7
|
} from "./updateReserveAllocation"
|
|
8
8
|
export { deposit } from "./deposit"
|
|
9
9
|
export type { DepositArgs, DepositAccounts } from "./deposit"
|
|
10
|
+
export { buy } from "./buy"
|
|
11
|
+
export type { BuyArgs, BuyAccounts } from "./buy"
|
|
10
12
|
export { withdraw } from "./withdraw"
|
|
11
13
|
export type { WithdrawArgs, WithdrawAccounts } from "./withdraw"
|
|
14
|
+
export { sell } from "./sell"
|
|
15
|
+
export type { SellArgs, SellAccounts } from "./sell"
|
|
12
16
|
export { invest } from "./invest"
|
|
13
17
|
export type { InvestAccounts } from "./invest"
|
|
14
18
|
export { updateVaultConfig } from "./updateVaultConfig"
|
|
@@ -42,3 +46,17 @@ export type {
|
|
|
42
46
|
} from "./withdrawFromAvailable"
|
|
43
47
|
export { removeAllocation } from "./removeAllocation"
|
|
44
48
|
export type { RemoveAllocationAccounts } from "./removeAllocation"
|
|
49
|
+
export { initGlobalConfig as initKVaultGlobalConfig } from "./initGlobalConfig"
|
|
50
|
+
export type { InitGlobalConfigAccounts as InitKVaultGlobalConfigAccounts } from "./initGlobalConfig"
|
|
51
|
+
export { updateGlobalConfig as updateKVaultGlobalConfig } from "./updateGlobalConfig"
|
|
52
|
+
export type {
|
|
53
|
+
UpdateGlobalConfigArgs as UpdateKVaultGlobalConfigArgs,
|
|
54
|
+
UpdateGlobalConfigAccounts as UpdateKVaultGlobalConfigAccounts,
|
|
55
|
+
} from "./updateGlobalConfig"
|
|
56
|
+
export { updateGlobalConfigAdmin as updateKVaultGlobalConfigAdmin } from "./updateGlobalConfigAdmin"
|
|
57
|
+
export type { UpdateGlobalConfigAdminAccounts as UpdateKVaultGlobalConfigAdminAccounts } from "./updateGlobalConfigAdmin"
|
|
58
|
+
export { addUpdateWhitelistedReserve } from "./addUpdateWhitelistedReserve"
|
|
59
|
+
export type {
|
|
60
|
+
AddUpdateWhitelistedReserveArgs,
|
|
61
|
+
AddUpdateWhitelistedReserveAccounts,
|
|
62
|
+
} from "./addUpdateWhitelistedReserve"
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import {
|
|
3
|
+
Address,
|
|
4
|
+
isSome,
|
|
5
|
+
AccountMeta,
|
|
6
|
+
AccountSignerMeta,
|
|
7
|
+
Instruction,
|
|
8
|
+
Option,
|
|
9
|
+
TransactionSigner,
|
|
10
|
+
} from "@solana/kit"
|
|
11
|
+
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
12
|
+
import BN from "bn.js" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
13
|
+
import * as borsh from "@coral-xyz/borsh" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
14
|
+
import { borshAddress } from "../utils" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
15
|
+
import * as types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
16
|
+
import { PROGRAM_ID } from "../programId"
|
|
17
|
+
|
|
18
|
+
export const DISCRIMINATOR = Buffer.from([140, 136, 214, 48, 87, 0, 120, 255])
|
|
19
|
+
|
|
20
|
+
export interface InitGlobalConfigAccounts {
|
|
21
|
+
payer: TransactionSigner
|
|
22
|
+
globalConfig: Address
|
|
23
|
+
programData: Address
|
|
24
|
+
systemProgram: Address
|
|
25
|
+
rent: Address
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function initGlobalConfig(
|
|
29
|
+
accounts: InitGlobalConfigAccounts,
|
|
30
|
+
remainingAccounts: Array<AccountMeta | AccountSignerMeta> = [],
|
|
31
|
+
programAddress: Address = PROGRAM_ID
|
|
32
|
+
) {
|
|
33
|
+
const keys: Array<AccountMeta | AccountSignerMeta> = [
|
|
34
|
+
{ address: accounts.payer.address, role: 3, signer: accounts.payer },
|
|
35
|
+
{ address: accounts.globalConfig, role: 1 },
|
|
36
|
+
{ address: accounts.programData, role: 0 },
|
|
37
|
+
{ address: accounts.systemProgram, role: 0 },
|
|
38
|
+
{ address: accounts.rent, role: 0 },
|
|
39
|
+
...remainingAccounts,
|
|
40
|
+
]
|
|
41
|
+
const data = DISCRIMINATOR
|
|
42
|
+
const ix: Instruction = { accounts: keys, programAddress, data }
|
|
43
|
+
return ix
|
|
44
|
+
}
|
|
@@ -31,6 +31,7 @@ export interface InvestAccounts {
|
|
|
31
31
|
lendingMarketAuthority: Address
|
|
32
32
|
reserveLiquiditySupply: Address
|
|
33
33
|
reserveCollateralMint: Address
|
|
34
|
+
reserveWhitelistEntry: Option<Address>
|
|
34
35
|
klendProgram: Address
|
|
35
36
|
reserveCollateralTokenProgram: Address
|
|
36
37
|
tokenProgram: Address
|
|
@@ -55,6 +56,9 @@ export function invest(
|
|
|
55
56
|
{ address: accounts.lendingMarketAuthority, role: 0 },
|
|
56
57
|
{ address: accounts.reserveLiquiditySupply, role: 1 },
|
|
57
58
|
{ address: accounts.reserveCollateralMint, role: 1 },
|
|
59
|
+
isSome(accounts.reserveWhitelistEntry)
|
|
60
|
+
? { address: accounts.reserveWhitelistEntry.value, role: 0 }
|
|
61
|
+
: { address: programAddress, role: 0 },
|
|
58
62
|
{ address: accounts.klendProgram, role: 0 },
|
|
59
63
|
{ address: accounts.reserveCollateralTokenProgram, role: 0 },
|
|
60
64
|
{ address: accounts.tokenProgram, role: 0 },
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import {
|
|
3
|
+
Address,
|
|
4
|
+
isSome,
|
|
5
|
+
AccountMeta,
|
|
6
|
+
AccountSignerMeta,
|
|
7
|
+
Instruction,
|
|
8
|
+
Option,
|
|
9
|
+
TransactionSigner,
|
|
10
|
+
} from "@solana/kit"
|
|
11
|
+
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
12
|
+
import BN from "bn.js" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
13
|
+
import * as borsh from "@coral-xyz/borsh" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
14
|
+
import { borshAddress } from "../utils" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
15
|
+
import * as types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
16
|
+
import { PROGRAM_ID } from "../programId"
|
|
17
|
+
|
|
18
|
+
export const DISCRIMINATOR = Buffer.from([51, 230, 133, 164, 1, 127, 131, 173])
|
|
19
|
+
|
|
20
|
+
export interface SellArgs {
|
|
21
|
+
sharesAmount: BN
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface SellAccounts {
|
|
25
|
+
withdrawFromAvailable: {
|
|
26
|
+
user: TransactionSigner
|
|
27
|
+
vaultState: Address
|
|
28
|
+
globalConfig: Address
|
|
29
|
+
tokenVault: Address
|
|
30
|
+
baseVaultAuthority: Address
|
|
31
|
+
userTokenAta: Address
|
|
32
|
+
tokenMint: Address
|
|
33
|
+
userSharesAta: Address
|
|
34
|
+
sharesMint: Address
|
|
35
|
+
tokenProgram: Address
|
|
36
|
+
sharesTokenProgram: Address
|
|
37
|
+
klendProgram: Address
|
|
38
|
+
eventAuthority: Address
|
|
39
|
+
program: Address
|
|
40
|
+
}
|
|
41
|
+
withdrawFromReserveAccounts: {
|
|
42
|
+
vaultState: Address
|
|
43
|
+
reserve: Address
|
|
44
|
+
ctokenVault: Address
|
|
45
|
+
lendingMarket: Address
|
|
46
|
+
lendingMarketAuthority: Address
|
|
47
|
+
reserveLiquiditySupply: Address
|
|
48
|
+
reserveCollateralMint: Address
|
|
49
|
+
reserveCollateralTokenProgram: Address
|
|
50
|
+
instructionSysvarAccount: Address
|
|
51
|
+
}
|
|
52
|
+
eventAuthority: Address
|
|
53
|
+
program: Address
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export const layout = borsh.struct<SellArgs>([borsh.u64("sharesAmount")])
|
|
57
|
+
|
|
58
|
+
export function sell(
|
|
59
|
+
args: SellArgs,
|
|
60
|
+
accounts: SellAccounts,
|
|
61
|
+
remainingAccounts: Array<AccountMeta | AccountSignerMeta> = [],
|
|
62
|
+
programAddress: Address = PROGRAM_ID
|
|
63
|
+
) {
|
|
64
|
+
const keys: Array<AccountMeta | AccountSignerMeta> = [
|
|
65
|
+
{
|
|
66
|
+
address: accounts.withdrawFromAvailable.user.address,
|
|
67
|
+
role: 3,
|
|
68
|
+
signer: accounts.withdrawFromAvailable.user,
|
|
69
|
+
},
|
|
70
|
+
{ address: accounts.withdrawFromAvailable.vaultState, role: 1 },
|
|
71
|
+
{ address: accounts.withdrawFromAvailable.globalConfig, role: 0 },
|
|
72
|
+
{ address: accounts.withdrawFromAvailable.tokenVault, role: 1 },
|
|
73
|
+
{ address: accounts.withdrawFromAvailable.baseVaultAuthority, role: 0 },
|
|
74
|
+
{ address: accounts.withdrawFromAvailable.userTokenAta, role: 1 },
|
|
75
|
+
{ address: accounts.withdrawFromAvailable.tokenMint, role: 1 },
|
|
76
|
+
{ address: accounts.withdrawFromAvailable.userSharesAta, role: 1 },
|
|
77
|
+
{ address: accounts.withdrawFromAvailable.sharesMint, role: 1 },
|
|
78
|
+
{ address: accounts.withdrawFromAvailable.tokenProgram, role: 0 },
|
|
79
|
+
{ address: accounts.withdrawFromAvailable.sharesTokenProgram, role: 0 },
|
|
80
|
+
{ address: accounts.withdrawFromAvailable.klendProgram, role: 0 },
|
|
81
|
+
{ address: accounts.withdrawFromAvailable.eventAuthority, role: 0 },
|
|
82
|
+
{ address: accounts.withdrawFromAvailable.program, role: 0 },
|
|
83
|
+
{ address: accounts.withdrawFromReserveAccounts.vaultState, role: 1 },
|
|
84
|
+
{ address: accounts.withdrawFromReserveAccounts.reserve, role: 1 },
|
|
85
|
+
{ address: accounts.withdrawFromReserveAccounts.ctokenVault, role: 1 },
|
|
86
|
+
{ address: accounts.withdrawFromReserveAccounts.lendingMarket, role: 0 },
|
|
87
|
+
{
|
|
88
|
+
address: accounts.withdrawFromReserveAccounts.lendingMarketAuthority,
|
|
89
|
+
role: 0,
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
address: accounts.withdrawFromReserveAccounts.reserveLiquiditySupply,
|
|
93
|
+
role: 1,
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
address: accounts.withdrawFromReserveAccounts.reserveCollateralMint,
|
|
97
|
+
role: 1,
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
address:
|
|
101
|
+
accounts.withdrawFromReserveAccounts.reserveCollateralTokenProgram,
|
|
102
|
+
role: 0,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
address: accounts.withdrawFromReserveAccounts.instructionSysvarAccount,
|
|
106
|
+
role: 0,
|
|
107
|
+
},
|
|
108
|
+
{ address: accounts.eventAuthority, role: 0 },
|
|
109
|
+
{ address: accounts.program, role: 0 },
|
|
110
|
+
...remainingAccounts,
|
|
111
|
+
]
|
|
112
|
+
const buffer = Buffer.alloc(1000)
|
|
113
|
+
const len = layout.encode(
|
|
114
|
+
{
|
|
115
|
+
sharesAmount: args.sharesAmount,
|
|
116
|
+
},
|
|
117
|
+
buffer
|
|
118
|
+
)
|
|
119
|
+
const data = Buffer.concat([DISCRIMINATOR, buffer]).slice(0, 8 + len)
|
|
120
|
+
const ix: Instruction = { accounts: keys, programAddress, data }
|
|
121
|
+
return ix
|
|
122
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import {
|
|
3
|
+
Address,
|
|
4
|
+
isSome,
|
|
5
|
+
AccountMeta,
|
|
6
|
+
AccountSignerMeta,
|
|
7
|
+
Instruction,
|
|
8
|
+
Option,
|
|
9
|
+
TransactionSigner,
|
|
10
|
+
} from "@solana/kit"
|
|
11
|
+
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
12
|
+
import BN from "bn.js" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
13
|
+
import * as borsh from "@coral-xyz/borsh" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
14
|
+
import { borshAddress } from "../utils" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
15
|
+
import * as types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
16
|
+
import { PROGRAM_ID } from "../programId"
|
|
17
|
+
|
|
18
|
+
export const DISCRIMINATOR = Buffer.from([164, 84, 130, 189, 111, 58, 250, 200])
|
|
19
|
+
|
|
20
|
+
export interface UpdateGlobalConfigArgs {
|
|
21
|
+
update: types.UpdateGlobalConfigModeKind
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface UpdateGlobalConfigAccounts {
|
|
25
|
+
globalAdmin: TransactionSigner
|
|
26
|
+
globalConfig: Address
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const layout = borsh.struct([
|
|
30
|
+
types.UpdateGlobalConfigMode.layout("update"),
|
|
31
|
+
])
|
|
32
|
+
|
|
33
|
+
export function updateGlobalConfig(
|
|
34
|
+
args: UpdateGlobalConfigArgs,
|
|
35
|
+
accounts: UpdateGlobalConfigAccounts,
|
|
36
|
+
remainingAccounts: Array<AccountMeta | AccountSignerMeta> = [],
|
|
37
|
+
programAddress: Address = PROGRAM_ID
|
|
38
|
+
) {
|
|
39
|
+
const keys: Array<AccountMeta | AccountSignerMeta> = [
|
|
40
|
+
{
|
|
41
|
+
address: accounts.globalAdmin.address,
|
|
42
|
+
role: 2,
|
|
43
|
+
signer: accounts.globalAdmin,
|
|
44
|
+
},
|
|
45
|
+
{ address: accounts.globalConfig, role: 1 },
|
|
46
|
+
...remainingAccounts,
|
|
47
|
+
]
|
|
48
|
+
const buffer = Buffer.alloc(1000)
|
|
49
|
+
const len = layout.encode(
|
|
50
|
+
{
|
|
51
|
+
update: args.update.toEncodable(),
|
|
52
|
+
},
|
|
53
|
+
buffer
|
|
54
|
+
)
|
|
55
|
+
const data = Buffer.concat([DISCRIMINATOR, buffer]).slice(0, 8 + len)
|
|
56
|
+
const ix: Instruction = { accounts: keys, programAddress, data }
|
|
57
|
+
return ix
|
|
58
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import {
|
|
3
|
+
Address,
|
|
4
|
+
isSome,
|
|
5
|
+
AccountMeta,
|
|
6
|
+
AccountSignerMeta,
|
|
7
|
+
Instruction,
|
|
8
|
+
Option,
|
|
9
|
+
TransactionSigner,
|
|
10
|
+
} from "@solana/kit"
|
|
11
|
+
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
12
|
+
import BN from "bn.js" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
13
|
+
import * as borsh from "@coral-xyz/borsh" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
14
|
+
import { borshAddress } from "../utils" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
15
|
+
import * as types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
16
|
+
import { PROGRAM_ID } from "../programId"
|
|
17
|
+
|
|
18
|
+
export const DISCRIMINATOR = Buffer.from([184, 87, 23, 193, 156, 238, 175, 119])
|
|
19
|
+
|
|
20
|
+
export interface UpdateGlobalConfigAdminAccounts {
|
|
21
|
+
pendingAdmin: TransactionSigner
|
|
22
|
+
globalConfig: Address
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function updateGlobalConfigAdmin(
|
|
26
|
+
accounts: UpdateGlobalConfigAdminAccounts,
|
|
27
|
+
remainingAccounts: Array<AccountMeta | AccountSignerMeta> = [],
|
|
28
|
+
programAddress: Address = PROGRAM_ID
|
|
29
|
+
) {
|
|
30
|
+
const keys: Array<AccountMeta | AccountSignerMeta> = [
|
|
31
|
+
{
|
|
32
|
+
address: accounts.pendingAdmin.address,
|
|
33
|
+
role: 2,
|
|
34
|
+
signer: accounts.pendingAdmin,
|
|
35
|
+
},
|
|
36
|
+
{ address: accounts.globalConfig, role: 1 },
|
|
37
|
+
...remainingAccounts,
|
|
38
|
+
]
|
|
39
|
+
const data = DISCRIMINATOR
|
|
40
|
+
const ix: Instruction = { accounts: keys, programAddress, data }
|
|
41
|
+
return ix
|
|
42
|
+
}
|
|
@@ -29,6 +29,7 @@ export interface UpdateReserveAllocationAccounts {
|
|
|
29
29
|
reserveCollateralMint: Address
|
|
30
30
|
reserve: Address
|
|
31
31
|
ctokenVault: Address
|
|
32
|
+
reserveWhitelistEntry: Option<Address>
|
|
32
33
|
reserveCollateralTokenProgram: Address
|
|
33
34
|
systemProgram: Address
|
|
34
35
|
rent: Address
|
|
@@ -52,6 +53,9 @@ export function updateReserveAllocation(
|
|
|
52
53
|
{ address: accounts.reserveCollateralMint, role: 1 },
|
|
53
54
|
{ address: accounts.reserve, role: 0 },
|
|
54
55
|
{ address: accounts.ctokenVault, role: 1 },
|
|
56
|
+
isSome(accounts.reserveWhitelistEntry)
|
|
57
|
+
? { address: accounts.reserveWhitelistEntry.value, role: 0 }
|
|
58
|
+
: { address: programAddress, role: 0 },
|
|
55
59
|
{ address: accounts.reserveCollateralTokenProgram, role: 0 },
|
|
56
60
|
{ address: accounts.systemProgram, role: 0 },
|
|
57
61
|
{ address: accounts.rent, role: 0 },
|
|
@@ -23,7 +23,8 @@ export interface UpdateVaultConfigArgs {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export interface UpdateVaultConfigAccounts {
|
|
26
|
-
|
|
26
|
+
signer: TransactionSigner
|
|
27
|
+
globalConfig: Address
|
|
27
28
|
vaultState: Address
|
|
28
29
|
klendProgram: Address
|
|
29
30
|
}
|
|
@@ -40,11 +41,8 @@ export function updateVaultConfig(
|
|
|
40
41
|
programAddress: Address = PROGRAM_ID
|
|
41
42
|
) {
|
|
42
43
|
const keys: Array<AccountMeta | AccountSignerMeta> = [
|
|
43
|
-
{
|
|
44
|
-
|
|
45
|
-
role: 2,
|
|
46
|
-
signer: accounts.vaultAdminAuthority,
|
|
47
|
-
},
|
|
44
|
+
{ address: accounts.signer.address, role: 2, signer: accounts.signer },
|
|
45
|
+
{ address: accounts.globalConfig, role: 0 },
|
|
48
46
|
{ address: accounts.vaultState, role: 1 },
|
|
49
47
|
{ address: accounts.klendProgram, role: 0 },
|
|
50
48
|
...remainingAccounts,
|
|
@@ -25,6 +25,7 @@ export interface WithdrawAccounts {
|
|
|
25
25
|
withdrawFromAvailable: {
|
|
26
26
|
user: TransactionSigner
|
|
27
27
|
vaultState: Address
|
|
28
|
+
globalConfig: Address
|
|
28
29
|
tokenVault: Address
|
|
29
30
|
baseVaultAuthority: Address
|
|
30
31
|
userTokenAta: Address
|
|
@@ -67,6 +68,7 @@ export function withdraw(
|
|
|
67
68
|
signer: accounts.withdrawFromAvailable.user,
|
|
68
69
|
},
|
|
69
70
|
{ address: accounts.withdrawFromAvailable.vaultState, role: 1 },
|
|
71
|
+
{ address: accounts.withdrawFromAvailable.globalConfig, role: 0 },
|
|
70
72
|
{ address: accounts.withdrawFromAvailable.tokenVault, role: 1 },
|
|
71
73
|
{ address: accounts.withdrawFromAvailable.baseVaultAuthority, role: 0 },
|
|
72
74
|
{ address: accounts.withdrawFromAvailable.userTokenAta, role: 1 },
|
|
@@ -24,6 +24,7 @@ export interface WithdrawFromAvailableArgs {
|
|
|
24
24
|
export interface WithdrawFromAvailableAccounts {
|
|
25
25
|
user: TransactionSigner
|
|
26
26
|
vaultState: Address
|
|
27
|
+
globalConfig: Address
|
|
27
28
|
tokenVault: Address
|
|
28
29
|
baseVaultAuthority: Address
|
|
29
30
|
userTokenAta: Address
|
|
@@ -50,6 +51,7 @@ export function withdrawFromAvailable(
|
|
|
50
51
|
const keys: Array<AccountMeta | AccountSignerMeta> = [
|
|
51
52
|
{ address: accounts.user.address, role: 3, signer: accounts.user },
|
|
52
53
|
{ address: accounts.vaultState, role: 1 },
|
|
54
|
+
{ address: accounts.globalConfig, role: 0 },
|
|
53
55
|
{ address: accounts.tokenVault, role: 1 },
|
|
54
56
|
{ address: accounts.baseVaultAuthority, role: 0 },
|
|
55
57
|
{ address: accounts.userTokenAta, role: 1 },
|
|
@@ -11,12 +11,15 @@ export interface ReserveConfigFields {
|
|
|
11
11
|
assetTier: number
|
|
12
12
|
/** Flat rate that goes to the host */
|
|
13
13
|
hostFixedInterestRateBps: number
|
|
14
|
+
/** Starting bonus for deleveraging-related liquidations, in bps. */
|
|
15
|
+
minDeleveragingBonusBps: number
|
|
14
16
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* Can be re-used after making sure all underlying production account data is zeroed.
|
|
17
|
+
* Boolean flag to block minting/redeeming of ctokens
|
|
18
|
+
* Blocks usage of ctokens (minting or withdrawing from obligation)
|
|
19
|
+
* Effectively blocks deposit_reserve_liquidity and withdraw_obligation_collateral
|
|
19
20
|
*/
|
|
21
|
+
blockCtokenUsage: number
|
|
22
|
+
/** Past reserved space - feel free to reuse. */
|
|
20
23
|
reserved1: Array<number>
|
|
21
24
|
/** Cut of the order execution bonus that the protocol receives, as a percentage */
|
|
22
25
|
protocolOrderExecutionFeePct: number
|
|
@@ -102,12 +105,6 @@ export interface ReserveConfigFields {
|
|
|
102
105
|
* Only relevant when `autodeleverage_enabled == 1`, and must not be 0 in such case.
|
|
103
106
|
*/
|
|
104
107
|
deleveragingBonusIncreaseBpsPerDay: BN
|
|
105
|
-
/**
|
|
106
|
-
* The timestamp at which all [Obligation::borrows] using this reserve become liquidatable
|
|
107
|
-
* (on the same terms as reserve-wide deleveraging).
|
|
108
|
-
* Inactive when zeroed (i.e. debt never matures).
|
|
109
|
-
*/
|
|
110
|
-
debtMaturityTimestamp: BN
|
|
111
108
|
}
|
|
112
109
|
|
|
113
110
|
export interface ReserveConfigJSON {
|
|
@@ -117,12 +114,15 @@ export interface ReserveConfigJSON {
|
|
|
117
114
|
assetTier: number
|
|
118
115
|
/** Flat rate that goes to the host */
|
|
119
116
|
hostFixedInterestRateBps: number
|
|
117
|
+
/** Starting bonus for deleveraging-related liquidations, in bps. */
|
|
118
|
+
minDeleveragingBonusBps: number
|
|
120
119
|
/**
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
* Can be re-used after making sure all underlying production account data is zeroed.
|
|
120
|
+
* Boolean flag to block minting/redeeming of ctokens
|
|
121
|
+
* Blocks usage of ctokens (minting or withdrawing from obligation)
|
|
122
|
+
* Effectively blocks deposit_reserve_liquidity and withdraw_obligation_collateral
|
|
125
123
|
*/
|
|
124
|
+
blockCtokenUsage: number
|
|
125
|
+
/** Past reserved space - feel free to reuse. */
|
|
126
126
|
reserved1: Array<number>
|
|
127
127
|
/** Cut of the order execution bonus that the protocol receives, as a percentage */
|
|
128
128
|
protocolOrderExecutionFeePct: number
|
|
@@ -208,12 +208,6 @@ export interface ReserveConfigJSON {
|
|
|
208
208
|
* Only relevant when `autodeleverage_enabled == 1`, and must not be 0 in such case.
|
|
209
209
|
*/
|
|
210
210
|
deleveragingBonusIncreaseBpsPerDay: string
|
|
211
|
-
/**
|
|
212
|
-
* The timestamp at which all [Obligation::borrows] using this reserve become liquidatable
|
|
213
|
-
* (on the same terms as reserve-wide deleveraging).
|
|
214
|
-
* Inactive when zeroed (i.e. debt never matures).
|
|
215
|
-
*/
|
|
216
|
-
debtMaturityTimestamp: string
|
|
217
211
|
}
|
|
218
212
|
|
|
219
213
|
/** Reserve configuration values */
|
|
@@ -224,12 +218,15 @@ export class ReserveConfig {
|
|
|
224
218
|
readonly assetTier: number
|
|
225
219
|
/** Flat rate that goes to the host */
|
|
226
220
|
readonly hostFixedInterestRateBps: number
|
|
221
|
+
/** Starting bonus for deleveraging-related liquidations, in bps. */
|
|
222
|
+
readonly minDeleveragingBonusBps: number
|
|
227
223
|
/**
|
|
228
|
-
*
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
* Can be re-used after making sure all underlying production account data is zeroed.
|
|
224
|
+
* Boolean flag to block minting/redeeming of ctokens
|
|
225
|
+
* Blocks usage of ctokens (minting or withdrawing from obligation)
|
|
226
|
+
* Effectively blocks deposit_reserve_liquidity and withdraw_obligation_collateral
|
|
232
227
|
*/
|
|
228
|
+
readonly blockCtokenUsage: number
|
|
229
|
+
/** Past reserved space - feel free to reuse. */
|
|
233
230
|
readonly reserved1: Array<number>
|
|
234
231
|
/** Cut of the order execution bonus that the protocol receives, as a percentage */
|
|
235
232
|
readonly protocolOrderExecutionFeePct: number
|
|
@@ -315,17 +312,13 @@ export class ReserveConfig {
|
|
|
315
312
|
* Only relevant when `autodeleverage_enabled == 1`, and must not be 0 in such case.
|
|
316
313
|
*/
|
|
317
314
|
readonly deleveragingBonusIncreaseBpsPerDay: BN
|
|
318
|
-
/**
|
|
319
|
-
* The timestamp at which all [Obligation::borrows] using this reserve become liquidatable
|
|
320
|
-
* (on the same terms as reserve-wide deleveraging).
|
|
321
|
-
* Inactive when zeroed (i.e. debt never matures).
|
|
322
|
-
*/
|
|
323
|
-
readonly debtMaturityTimestamp: BN
|
|
324
315
|
|
|
325
316
|
constructor(fields: ReserveConfigFields) {
|
|
326
317
|
this.status = fields.status
|
|
327
318
|
this.assetTier = fields.assetTier
|
|
328
319
|
this.hostFixedInterestRateBps = fields.hostFixedInterestRateBps
|
|
320
|
+
this.minDeleveragingBonusBps = fields.minDeleveragingBonusBps
|
|
321
|
+
this.blockCtokenUsage = fields.blockCtokenUsage
|
|
329
322
|
this.reserved1 = fields.reserved1
|
|
330
323
|
this.protocolOrderExecutionFeePct = fields.protocolOrderExecutionFeePct
|
|
331
324
|
this.protocolTakeRatePct = fields.protocolTakeRatePct
|
|
@@ -365,7 +358,6 @@ export class ReserveConfig {
|
|
|
365
358
|
fields.borrowLimitAgainstThisCollateralInElevationGroup
|
|
366
359
|
this.deleveragingBonusIncreaseBpsPerDay =
|
|
367
360
|
fields.deleveragingBonusIncreaseBpsPerDay
|
|
368
|
-
this.debtMaturityTimestamp = fields.debtMaturityTimestamp
|
|
369
361
|
}
|
|
370
362
|
|
|
371
363
|
static layout(property?: string) {
|
|
@@ -374,7 +366,9 @@ export class ReserveConfig {
|
|
|
374
366
|
borsh.u8("status"),
|
|
375
367
|
borsh.u8("assetTier"),
|
|
376
368
|
borsh.u16("hostFixedInterestRateBps"),
|
|
377
|
-
borsh.
|
|
369
|
+
borsh.u16("minDeleveragingBonusBps"),
|
|
370
|
+
borsh.u8("blockCtokenUsage"),
|
|
371
|
+
borsh.array(borsh.u8(), 6, "reserved1"),
|
|
378
372
|
borsh.u8("protocolOrderExecutionFeePct"),
|
|
379
373
|
borsh.u8("protocolTakeRatePct"),
|
|
380
374
|
borsh.u8("protocolLiquidationFeePct"),
|
|
@@ -405,7 +399,6 @@ export class ReserveConfig {
|
|
|
405
399
|
"borrowLimitAgainstThisCollateralInElevationGroup"
|
|
406
400
|
),
|
|
407
401
|
borsh.u64("deleveragingBonusIncreaseBpsPerDay"),
|
|
408
|
-
borsh.u64("debtMaturityTimestamp"),
|
|
409
402
|
],
|
|
410
403
|
property
|
|
411
404
|
)
|
|
@@ -417,6 +410,8 @@ export class ReserveConfig {
|
|
|
417
410
|
status: obj.status,
|
|
418
411
|
assetTier: obj.assetTier,
|
|
419
412
|
hostFixedInterestRateBps: obj.hostFixedInterestRateBps,
|
|
413
|
+
minDeleveragingBonusBps: obj.minDeleveragingBonusBps,
|
|
414
|
+
blockCtokenUsage: obj.blockCtokenUsage,
|
|
420
415
|
reserved1: obj.reserved1,
|
|
421
416
|
protocolOrderExecutionFeePct: obj.protocolOrderExecutionFeePct,
|
|
422
417
|
protocolTakeRatePct: obj.protocolTakeRatePct,
|
|
@@ -452,7 +447,6 @@ export class ReserveConfig {
|
|
|
452
447
|
obj.borrowLimitAgainstThisCollateralInElevationGroup,
|
|
453
448
|
deleveragingBonusIncreaseBpsPerDay:
|
|
454
449
|
obj.deleveragingBonusIncreaseBpsPerDay,
|
|
455
|
-
debtMaturityTimestamp: obj.debtMaturityTimestamp,
|
|
456
450
|
})
|
|
457
451
|
}
|
|
458
452
|
|
|
@@ -461,6 +455,8 @@ export class ReserveConfig {
|
|
|
461
455
|
status: fields.status,
|
|
462
456
|
assetTier: fields.assetTier,
|
|
463
457
|
hostFixedInterestRateBps: fields.hostFixedInterestRateBps,
|
|
458
|
+
minDeleveragingBonusBps: fields.minDeleveragingBonusBps,
|
|
459
|
+
blockCtokenUsage: fields.blockCtokenUsage,
|
|
464
460
|
reserved1: fields.reserved1,
|
|
465
461
|
protocolOrderExecutionFeePct: fields.protocolOrderExecutionFeePct,
|
|
466
462
|
protocolTakeRatePct: fields.protocolTakeRatePct,
|
|
@@ -498,7 +494,6 @@ export class ReserveConfig {
|
|
|
498
494
|
fields.borrowLimitAgainstThisCollateralInElevationGroup,
|
|
499
495
|
deleveragingBonusIncreaseBpsPerDay:
|
|
500
496
|
fields.deleveragingBonusIncreaseBpsPerDay,
|
|
501
|
-
debtMaturityTimestamp: fields.debtMaturityTimestamp,
|
|
502
497
|
}
|
|
503
498
|
}
|
|
504
499
|
|
|
@@ -507,6 +502,8 @@ export class ReserveConfig {
|
|
|
507
502
|
status: this.status,
|
|
508
503
|
assetTier: this.assetTier,
|
|
509
504
|
hostFixedInterestRateBps: this.hostFixedInterestRateBps,
|
|
505
|
+
minDeleveragingBonusBps: this.minDeleveragingBonusBps,
|
|
506
|
+
blockCtokenUsage: this.blockCtokenUsage,
|
|
510
507
|
reserved1: this.reserved1,
|
|
511
508
|
protocolOrderExecutionFeePct: this.protocolOrderExecutionFeePct,
|
|
512
509
|
protocolTakeRatePct: this.protocolTakeRatePct,
|
|
@@ -542,7 +539,6 @@ export class ReserveConfig {
|
|
|
542
539
|
),
|
|
543
540
|
deleveragingBonusIncreaseBpsPerDay:
|
|
544
541
|
this.deleveragingBonusIncreaseBpsPerDay.toString(),
|
|
545
|
-
debtMaturityTimestamp: this.debtMaturityTimestamp.toString(),
|
|
546
542
|
}
|
|
547
543
|
}
|
|
548
544
|
|
|
@@ -551,6 +547,8 @@ export class ReserveConfig {
|
|
|
551
547
|
status: obj.status,
|
|
552
548
|
assetTier: obj.assetTier,
|
|
553
549
|
hostFixedInterestRateBps: obj.hostFixedInterestRateBps,
|
|
550
|
+
minDeleveragingBonusBps: obj.minDeleveragingBonusBps,
|
|
551
|
+
blockCtokenUsage: obj.blockCtokenUsage,
|
|
554
552
|
reserved1: obj.reserved1,
|
|
555
553
|
protocolOrderExecutionFeePct: obj.protocolOrderExecutionFeePct,
|
|
556
554
|
protocolTakeRatePct: obj.protocolTakeRatePct,
|
|
@@ -592,7 +590,6 @@ export class ReserveConfig {
|
|
|
592
590
|
deleveragingBonusIncreaseBpsPerDay: new BN(
|
|
593
591
|
obj.deleveragingBonusIncreaseBpsPerDay
|
|
594
592
|
),
|
|
595
|
-
debtMaturityTimestamp: new BN(obj.debtMaturityTimestamp),
|
|
596
593
|
})
|
|
597
594
|
}
|
|
598
595
|
|