///
///
///
import { BeetStruct, FixableBeetStruct } from '@metaplex-foundation/beet';
import { PublicKey } from '@solana/web3.js';
import BigNumber from 'bignumber.js';
import { OracleType, Side } from '../jupiter/exchange/structs';
export type CustomOracle = {
buffer: Buffer;
price: BigNumber;
expo: number;
conf: BigNumber;
ema: BigNumber;
publishTime: BigNumber;
};
export declare const customOracleStruct: BeetStruct>;
export type OracleParams = {
oracleAccount: PublicKey;
customOracleAccount: PublicKey;
oracleType: OracleType;
maxDivergenceBps: BigNumber;
maxConfBps: BigNumber;
maxPriceAgeSec: BigNumber;
};
export declare const oracleParamsStruct: BeetStruct>;
export type PricingParams = {
tradeSpreadLong: BigNumber;
tradeSpreadShort: BigNumber;
swapSpread: BigNumber;
minInitialLeverage: BigNumber;
maxInitialLeverage: BigNumber;
maxLeverage: BigNumber;
minCollateralUsd: BigNumber;
delaySeconds: BigNumber;
maxUtilization: BigNumber;
maxPositionLockedUsd: BigNumber;
maxTotalLockedUsd: BigNumber;
};
export declare const pricingParamsStruct: BeetStruct>;
export declare enum FeesMode {
Fixed = 0,
Linear = 1
}
export type RatioFees = {
minFee: BigNumber;
targetFee: BigNumber;
maxFee: BigNumber;
};
export declare const ratioFeesStruct: BeetStruct>;
export type Fees = {
mode: FeesMode;
swapIn: RatioFees;
swapOut: RatioFees;
stableSwapIn: RatioFees;
stableSwapOut: RatioFees;
addLiquidity: RatioFees;
removeLiquidity: RatioFees;
openPosition: BigNumber;
closePosition: BigNumber;
removeCollateral: BigNumber;
};
export declare const feesStruct: BeetStruct>;
export type BorrowRateParams = {
baseRate: BigNumber;
slope1: BigNumber;
slope2: BigNumber;
optimalUtilization: BigNumber;
};
export declare const borrowRateParamsStruct: BeetStruct>;
export type Assets = {
collateral: BigNumber;
owned: BigNumber;
locked: BigNumber;
};
export declare const assetsStruct: BeetStruct>;
export type BorrowRateState = {
currentRate: BigNumber;
cumulativeLockFee: BigNumber;
lastUpdate: BigNumber;
};
export declare const borrowRateStateStruct: BeetStruct>;
export type FeesStats = {
accrued: BigNumber;
distributed: BigNumber;
paid: BigNumber;
rewardPerLpStaked: BigNumber;
protocolFee: BigNumber;
};
export declare const feesStatsStruct: BeetStruct>;
export type Permissions = {
allowSwap: boolean;
allowAddLiquidity: boolean;
allowRemoveLiquidity: boolean;
allowOpenPosition: boolean;
allowClosePosition: boolean;
allowCollateralWithdrawal: boolean;
allowSizeChange: boolean;
allowLiquidation: boolean;
allowFlpStaking: boolean;
allowFeeDistribution: boolean;
allowUngatedTrading: boolean;
allowFeeDiscounts: boolean;
allowReferralRebates: boolean;
};
export declare const permissionsStruct: BeetStruct>;
export type Custody = {
buffer: Buffer;
pool: PublicKey;
mint: PublicKey;
tokenAccount: PublicKey;
decimals: number;
isStable: boolean;
depegAdjustment: boolean;
isVirtual: boolean;
distributeRewards: boolean;
oracle: OracleParams;
pricing: PricingParams;
permissions: Permissions;
fees: Fees;
borrowRate: BorrowRateParams;
rewardThreshold: BigNumber;
assets: Assets;
feesStats: FeesStats;
borrowRateState: BorrowRateState;
bump: number;
tokenAccountBump: number;
sizeFactorForSpread: number;
null: number;
reservedAmount: BigNumber;
minReserveUsd: BigNumber;
limitPriceBufferBps: BigNumber;
padding: Buffer;
};
export declare const custodyStruct: BeetStruct>;
export type StakeStats = {
pendingActivation: BigNumber;
activeAmount: BigNumber;
pendingDeactivation: BigNumber;
deactivatedAmount: BigNumber;
};
export declare const stakeStatsStruct: BeetStruct>;
export type FlpStake = {
buffer: Buffer;
owner: PublicKey;
pool: PublicKey;
stakeStats: StakeStats;
rewardSnapshot: BigNumber;
unclaimedRewards: BigNumber;
feeShareBps: BigNumber;
isInitialized: boolean;
bump: number;
};
export declare const flpStakeStruct: BeetStruct>;
export type MarketPermissions = {
allowOpenPosition: boolean;
allowClosePosition: boolean;
allowCollateralWithdrawal: boolean;
allowSizeChange: boolean;
};
export declare const marketPermissionsStruct: BeetStruct>;
export type OraclePrice = {
price: BigNumber;
exponent: number;
};
export declare const oraclePriceStruct: BeetStruct>;
export type PositionStats = {
openPositions: BigNumber;
updateTime: BigNumber;
averageEntryPrice: OraclePrice;
sizeAmount: BigNumber;
sizeUsd: BigNumber;
lockedAmount: BigNumber;
lockedUsd: BigNumber;
collateralAmount: BigNumber;
collateralUsd: BigNumber;
unsettledFeeUsd: BigNumber;
cumulativeLockFeeSnapshot: BigNumber;
sizeDecimals: number;
lockedDecimals: number;
collateralDecimals: number;
};
export declare const positionStatsStruct: BeetStruct>;
export type Market = {
buffer: Buffer;
pool: PublicKey;
targetCustody: PublicKey;
collateralCustody: PublicKey;
side: Side;
correlation: boolean;
maxPayoffBps: BigNumber;
permissions: MarketPermissions;
openInterest: BigNumber;
collectivePosition: PositionStats;
targetCustodyId: BigNumber;
collateralCustodyId: BigNumber;
bump: Buffer;
};
export declare const marketStruct: BeetStruct>;
export type Position = {
buffer: Buffer;
owner: PublicKey;
market: PublicKey;
delegate: PublicKey;
openTime: BigNumber;
updateTime: BigNumber;
entryPrice: OraclePrice;
sizeAmount: BigNumber;
sizeUsd: BigNumber;
lockedAmount: BigNumber;
lockedUsd: BigNumber;
collateralAmount: BigNumber;
collateralUsd: BigNumber;
unsettledAmount: BigNumber;
unsettledFeesUsd: BigNumber;
cumulativeLockFeeSnapshot: BigNumber;
takeProfitPrice: OraclePrice;
stopLossPrice: OraclePrice;
sizeDecimals: number;
lockedDecimals: number;
collateralDecimals: number;
bump: number;
};
export declare const positionStruct: BeetStruct>;
export type TokenRatios = {
target: BigNumber;
min: BigNumber;
max: BigNumber;
};
export declare const tokenRatiosStruct: BeetStruct>;
export type FLPool = {
buffer: Buffer;
name: number[];
permissions: Permissions;
inceptionTime: BigNumber;
flpMint: PublicKey;
oracleAuthority: PublicKey;
flpTokenAccount: PublicKey;
rewardCustody: PublicKey;
custodies: PublicKey[];
ratios: TokenRatios[];
markets: PublicKey[];
maxAumUsd: BigNumber;
aumUsd: BigNumber;
totalStaked: StakeStats;
stakingFeeShareBps: BigNumber;
bump: number;
flpMintBump: number;
flpTokenAccountBump: number;
vpVolumeFactor: number;
padding: number[];
stakingFeeBoostBps: BigNumber[];
compoundingMint: PublicKey;
compoundingLpVault: PublicKey;
};
export declare const flPoolStruct: FixableBeetStruct>;
export type WithdrawRequest = {
pendingDeactivation: BigNumber;
withdrawRequestTimestamp: BigNumber;
};
export declare const withdrawRequestStruct: BeetStruct>;
export type TokenStake = {
discriminator: number[];
owner: PublicKey;
isInitialized: boolean;
bump: number;
level: number;
withdrawRequestCount: number;
withdrawRequest: WithdrawRequest[];
activeStakeAmount: BigNumber;
updateTimestamp: BigNumber;
tradeTimestamp: BigNumber;
tradeCounter: number;
lastRewardEpochCount: number;
rewardTokens: BigNumber;
padding: BigNumber[];
};
export declare const tokenStakeStruct: BeetStruct>;