///
///
///
import { BeetStruct, COption, FixableBeetStruct } from '@metaplex-foundation/beet';
import BigNumber from 'bignumber.js';
import { PublicKey } from '@solana/web3.js';
export type LimitOrder = {
buffer: Buffer;
maker: PublicKey;
inputMint: PublicKey;
outputMint: PublicKey;
waiting: boolean;
oriMakingAmount: BigNumber;
oriTakingAmount: BigNumber;
makingAmount: BigNumber;
takingAmount: BigNumber;
makerInputAccount: PublicKey;
makerOutputAccount: PublicKey;
reserve: PublicKey;
uid: BigNumber;
expiredAt: BigNumber;
base: PublicKey;
referral: PublicKey;
};
export declare const limitOrderStruct: BeetStruct>;
export type LimitOrderV2 = {
buffer: Buffer;
maker: PublicKey;
inputMint: PublicKey;
outputMint: PublicKey;
inputTokenProgram: PublicKey;
outputTokenProgram: PublicKey;
inputMintReserve: PublicKey;
uniqueId: boolean;
oriMakingAmount: BigNumber;
oriTakingAmount: BigNumber;
makingAmount: BigNumber;
takingAmount: BigNumber;
borrowMakingAmount: BigNumber;
expiredAt: COption;
feeBps: number;
feeAccount: PublicKey;
createdAt: BigNumber;
updatedAt: BigNumber;
bump: number;
slippage_bps: number;
sl_taking_amount: BigNumber;
};
export declare const limitOrderV2Struct: FixableBeetStruct>;
export type DCA = {
buffer: Buffer;
user: PublicKey;
inputMint: PublicKey;
outputMint: PublicKey;
idx: BigNumber;
nextCycleAt: BigNumber;
inDeposited: BigNumber;
inWithdrawn: BigNumber;
outWithdrawn: BigNumber;
inUsed: BigNumber;
outReceived: BigNumber;
inAmountPerCycle: BigNumber;
cycleFrequency: BigNumber;
nextCycleAmountLeft: BigNumber;
inAccount: PublicKey;
outAccount: PublicKey;
minOutAmount: BigNumber;
maxOutAmount: BigNumber;
keeperInBalanceBeforeBorrow: BigNumber;
dcaOutBalanceBeforeSwap: BigNumber;
createdAt: BigNumber;
bump: number;
};
export declare const dcaStruct: BeetStruct>;
export type ValueAverage = {
buffer: Buffer;
isStale: boolean;
idx: BigNumber;
bump: number;
user: PublicKey;
inputMint: PublicKey;
outputMint: PublicKey;
incrementUsdcValue: BigNumber;
orderInterval: BigNumber;
inputVault: PublicKey;
outputVault: PublicKey;
autoWithdraw: boolean;
feeDataAccount: PublicKey;
referralFeeAccount: PublicKey;
createdAt: BigNumber;
inDeposited: BigNumber;
inLeft: BigNumber;
inUsed: BigNumber;
inWithdrawn: BigNumber;
outReceived: BigNumber;
outWithdrawn: BigNumber;
supposedUsdcValue: BigNumber;
nextOrderAt: BigNumber;
outBalanceBeforeSwap: BigNumber;
};
export declare const valueAverageStruct: BeetStruct>;
export type VestingEscrow = {
buffer: Buffer;
recipient: PublicKey;
tokenMint: PublicKey;
creator: PublicKey;
base: PublicKey;
escrowBump: number;
updateRecipientMode: number;
cancelMode: number;
tokenProgramFlag: number;
padding0: number[];
cliffTime: BigNumber;
frequency: BigNumber;
cliffUnlockAmount: BigNumber;
amountPerPeriod: BigNumber;
numberOfPeriod: BigNumber;
totalClaimedAmount: BigNumber;
vestingStartTime: BigNumber;
cancelledAt: BigNumber;
padding1: BigNumber;
padding: BigNumber[];
};
export declare const vestingEscrowStruct: BeetStruct>;
export declare enum RequestChange {
None = 0,
Increase = 1,
Decrease = 2
}
export declare enum RequestType {
Market = 0,
Trigger = 1
}
export type PositionRequest = {
buffer: Buffer;
owner: PublicKey;
pool: PublicKey;
custody: PublicKey;
position: PublicKey;
mint: PublicKey;
openTime: BigNumber;
updateTime: BigNumber;
sizeUsdDelta: BigNumber;
collateralDelta: BigNumber;
requestChange: RequestChange;
requestType: RequestType;
side: Side;
priceSlippage: COption;
jupiterMinimumOut: COption;
preSwapAmount: COption;
triggerPrice: COption;
triggerAboveThreshold: COption;
entirePosition: COption;
executed: boolean;
counter: BigNumber;
bump: number;
};
export declare const positionRequestStruct: FixableBeetStruct>;
export type Limit = {
maxAumUsd: BigNumber;
maxIndividualLpToken: BigNumber;
maxPositionUsd: BigNumber;
};
export declare const limitStruct: BeetStruct>;
export type PoolApr = {
lastUpdated: BigNumber;
feeAprBps: BigNumber;
realizedFeeUsd: BigNumber;
};
export declare const poolAprStruct: BeetStruct>;
export type Fees = {
increasePositionBps: BigNumber;
decreasePositionBps: BigNumber;
addRemoveLiquidityBps: BigNumber;
swapBps: BigNumber;
taxBps: BigNumber;
stableSwapBps: BigNumber;
stableSwapTaxBps: BigNumber;
liquidationRewardBps: BigNumber;
protocolShareBps: BigNumber;
};
export declare const feesStruct: BeetStruct>;
export type PerpetualPool = {
buffer: Buffer;
name: number;
custodies: PublicKey[];
aumUsd: BigNumber;
limit: Limit;
fees: Fees;
poolApr: PoolApr;
maxRequestExecutionSec: BigNumber;
bump: number;
lpTokenBump: number;
inceptionTime: BigNumber;
};
export declare const perpetualPoolStruct: FixableBeetStruct>;
export declare enum OracleType {
None = 0,
Test = 1,
Pyth = 2
}
export type OracleParams = {
oracleAccount: PublicKey;
oracleType: OracleType;
maxPriceError: BigNumber;
maxPriceAgeSec: BigNumber;
};
export declare const oracleParamsStruct: BeetStruct>;
export type PricingParams = {
tradeSpreadLong: BigNumber;
tradeSpreadShort: BigNumber;
swapSpread: BigNumber;
maxLeverage: BigNumber;
maxGlobalLongSizes: BigNumber;
maxGlobalShortSizes: BigNumber;
};
export declare const pricingParamsStruct: BeetStruct>;
export type Permissions = {
allowSwap: boolean;
allowAddLiquidity: boolean;
allowRemoveLiquidity: boolean;
allowIncreasePosition: boolean;
allowDecreasePosition: boolean;
allowCollateralWithdrawal: boolean;
allowLiquidatePosition: boolean;
};
export declare const permissionsStruct: BeetStruct>;
export type Assets = {
feesReserves: BigNumber;
owned: BigNumber;
locked: BigNumber;
guaranteedUsd: BigNumber;
globalShortSizes: BigNumber;
globalShortAveragePrices: BigNumber;
};
export declare const assetsStruct: BeetStruct>;
export type FundingRateState = {
cumulativeInterestRate: BigNumber;
lastUpdate: BigNumber;
hourlyFundingBps: BigNumber;
};
export declare const fundingRateStateStruct: BeetStruct>;
export type JumpRateState = {
minRateBps: BigNumber;
maxRateBps: BigNumber;
targetRateBps: BigNumber;
targetUtilizationRate: BigNumber;
};
export declare const jumpRateStateStruct: BeetStruct>;
export type Custody = {
buffer: Buffer;
pool: PublicKey;
mint: PublicKey;
tokenAccount: PublicKey;
decimals: number;
isStable: boolean;
oracle: OracleParams;
pricing: PricingParams;
permissions: Permissions;
targetRatioBps: BigNumber;
assets: Assets;
fundingRateState: FundingRateState;
bump: number;
tokenAccountBump: number;
increasePositionBps: BigNumber;
decreasePositionBps: BigNumber;
maxPositionSizeUsd: BigNumber;
dovesOracle: PublicKey;
jumpRateState: JumpRateState;
};
export declare const custodyStruct: BeetStruct>;
export declare enum Side {
None = 0,
Long = 1,
Short = 2
}
export type Position = {
buffer: Buffer;
owner: PublicKey;
pool: PublicKey;
custody: PublicKey;
collateralCustody: PublicKey;
openTime: BigNumber;
updateTime: BigNumber;
side: Side;
price: BigNumber;
sizeUsd: BigNumber;
collateralUsd: BigNumber;
realisedPnlUsd: BigNumber;
cumulativeInterestSnapshot: BigNumber;
lockedAmount: BigNumber;
bump: number;
};
export declare const positionStruct: BeetStruct>;
export type BorrowPosition = {
accountDiscriminator: number[];
owner: PublicKey;
pool: PublicKey;
custody: PublicKey;
openTime: BigNumber;
updateTime: BigNumber;
borrowSize: BigNumber;
cumulativeCompoundedInterestSnapshot: BigNumber;
lockedCollateral: BigNumber;
bump: number;
};
export declare const borrowPositionStruct: BeetStruct>;