/// /// /// 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>;