///
///
import { PublicKey } from '@solana/web3.js';
import BigNumber from 'bignumber.js';
import { FixableBeetStruct, COption, BeetStruct } from '@metaplex-foundation/beet';
export declare enum LendOfferStatus {
Created = 0,
Canceling = 1,
Canceled = 2,
Loaned = 3
}
export declare enum LoanOfferStatus {
Matched = 0,
FundTransferred = 1,
Repay = 2,
BorrowerPaid = 3,
Liquidating = 4,
Liquidated = 5,
Finished = 6
}
export type LendOfferAccount = {
accountDiscriminator: number[];
interest: number;
lenderFeePercent: number;
duration: BigNumber;
offerIdsLength: number[];
offerId: number[];
lender: PublicKey;
lendMintToken: PublicKey;
amount: BigNumber;
bump: number;
status: LendOfferStatus;
};
export declare const lendOfferAccountStruct: BeetStruct>;
export type LoanOfferAccount = {
accountDiscriminator: number[];
tierId: number[];
lendOfferId: number[];
interest: number;
borrowAmount: BigNumber;
lenderFeePercent: number;
duration: BigNumber;
lendMintToken: PublicKey;
lender: PublicKey;
offerId: number[];
borrower: PublicKey;
collateralMintToken: PublicKey;
collateralAmount: BigNumber;
requestWithdrawAmount: COption;
status: LoanOfferStatus;
borrowerFeePercent: number;
startedAt: BigNumber;
liquidatingAt: COption;
liquidatingPrice: COption;
liquidatedTx: COption;
liquidatedPrice: COption;
bump: number;
};
export declare const loanOfferAccountStruct: FixableBeetStruct>;
export type UserPosition = {
accountDiscriminator: number[];
bump: number;
protocol_position: PublicKey;
owner: PublicKey;
liquidity: BigNumber;
fee_growth_inside_0: BigNumber;
fee_growth_inside_1: BigNumber;
token_fee_owed_0: BigNumber;
token_fee_owed_1: BigNumber;
token_fee_claimed_0: BigNumber;
token_fee_claimed_1: BigNumber;
version: BigNumber;
padding: BigNumber[];
};
export declare const userPositionStruct: BeetStruct>;
export type PositionRewardInfo = {
reward_growth_inside: BigNumber;
reward_amount_owed: BigNumber;
reward_vault: PublicKey | null;
};
export declare const positionRewardInfoStruct: BeetStruct>;
export declare enum ProtocolPositionStatus {
Active = 0,
ReBalancing = 1,
ReOpened = 2
}
export type ProtocolPosition = {
accountDiscriminator: number[];
bump: number;
system_config: PublicKey;
position_mint: PublicKey;
pool_address: PublicKey;
tick_lower_index: number;
tick_upper_index: number;
liquidity: BigNumber;
fee_growth_inside_0: BigNumber;
fee_growth_inside_1: BigNumber;
amount_0_reserve: BigNumber;
amount_1_reserve: BigNumber;
token_vault_0: PublicKey;
token_vault_1: PublicKey;
reward_infos: PositionRewardInfo[];
recent_epoch: BigNumber;
authority_position: PublicKey;
status: ProtocolPositionStatus;
version: BigNumber;
old_liquidity: BigNumber;
padding: BigNumber[];
};
export declare const protocolPositionStruct: BeetStruct>;
export type ProtocolPositionState = {
accountDiscriminator: number[];
bump: number;
pool_id: PublicKey;
tick_lower_index: number;
tick_upper_index: number;
liquidity: BigNumber;
fee_growth_inside_0_last_x64: BigNumber;
fee_growth_inside_1_last_x64: BigNumber;
token_fees_owed_0: BigNumber;
token_fees_owed_1: BigNumber;
reward_growth_inside: BigNumber[];
padding: BigNumber[];
};
export declare const protocolPositionStateStruct: BeetStruct>;
export type BigFractionBytes = {
value0: BigNumber;
value1: BigNumber;
value2: BigNumber;
value3: BigNumber;
padding: BigNumber;
padding1: BigNumber;
};
type LastUpdate = {
slot: BigNumber;
stale: number;
price_status: number;
padding: number[];
};
type ObligationCollateral = {
reserve_storage: PublicKey;
deposited_amount: BigNumber;
market_value_sf: BigNumber;
};
type ObligationLiquidity = {
reserve_storage: PublicKey;
cumulative_borrow_rate_bsf: BigFractionBytes;
borrowed_amount_sf: BigNumber;
market_value_sf: BigNumber;
borrow_factor_adjusted_market_value_sf: BigNumber;
};
export type ObligationFlex = {
accountDiscriminator: number[];
version: number;
owner: PublicKey;
lowest_reserve_deposit_liquidation_ltv: BigNumber;
total_deposited_value_sf: BigNumber;
deposits: ObligationCollateral[];
padding_1: ObligationCollateral[];
borrow_factor_adjusted_debt_value_sf: BigNumber;
borrowed_assets_market_value_sf: BigNumber;
highest_borrow_factor_pct: BigNumber;
allowed_borrow_value_sf: BigNumber;
unhealthy_borrow_value_sf: BigNumber;
borrows: ObligationLiquidity[];
padding_2: ObligationLiquidity[];
deposit_asset_tier: number[];
padding_3: number[];
borrow_asset_tier: number[];
padding_4: number[];
num_of_obsolete_reserves: number;
has_debt: number;
last_update: LastUpdate;
locking: number;
liquidating_asset_position: number;
};
export declare const obligationFlexStruct: FixableBeetStruct>;
type ReserveLiquidity = {
token_mint: PublicKey;
supply_vault: PublicKey;
fee_vault: PublicKey;
available_amount: BigNumber;
borrowed_amount_sf: BigNumber;
market_price_sf: BigNumber;
market_price_last_updated_ts: BigNumber;
mint_decimals: number;
deposit_limit_crossed_ts: BigNumber;
borrow_limit_crossed_ts: BigNumber;
cumulative_borrow_rate_bsf: BigFractionBytes;
accumulated_protocol_fees_sf: BigNumber;
token_program: PublicKey;
};
type ReserveCollateral = {
token_mint: PublicKey;
mint_total_supply: BigNumber;
supply_vault: PublicKey;
};
export type Reserve = {
accountDiscriminator: number[];
version: number;
padding: number[];
liquidity: ReserveLiquidity;
collateral: ReserveCollateral;
};
export declare const reserveStruct: FixableBeetStruct>;
export {};