///
///
import { PublicKey } from '@solana/web3.js';
import BigNumber from 'bignumber.js';
import { BeetStruct, FixableBeetStruct } from '@metaplex-foundation/beet';
export type State = {
accountDiscriminator: number[];
admin: PublicKey;
signer: PublicKey;
numberOfAuthorities: BigNumber;
numberOfSubAccounts: BigNumber;
collateralRatioInitial: BigNumber;
collateralRatioMaintenance: BigNumber;
collateralRatioInitialPreExpiry: BigNumber;
numberOfYieldMarkets: number;
numberOfMarginMarkets: number;
signerNonce: number;
twapDuration: number;
marginIndexStart: number;
marketIndexStart: number;
keepers: PublicKey[];
keeperFeePerTx: BigNumber[];
keeperFee: BigNumber[];
};
export declare const stateStruct: FixableBeetStruct>;
export declare enum MarketStatus {
Initialized = 0,
Active = 1,
Paused = 2,
ReduceOnly = 3,
Updating = 4,
Expired = 5,
Settlement = 6
}
export type MarginMarket = {
accountDiscriminator: number[];
pubkey: PublicKey;
mint: PublicKey;
vault: PublicKey;
name: number[];
market_index: number;
padding: number[];
deposit_balance: BigNumber;
next_deposit_record_id: BigNumber;
flash_loan_amount: BigNumber;
flash_loan_initial_token_amount: BigNumber;
decimals: number;
status: MarketStatus;
};
export declare const marginMarketStruct: FixableBeetStruct>;
export type AmmpoolRewardInfo = {
mint: PublicKey;
vault: PublicKey;
authority: PublicKey;
emissionsPerSecondX64: BigNumber;
growthGlobalX64: BigNumber;
};
export declare const ammPoolRewardInfoStruct: BeetStruct>;
export type Ammpool = {
ammpoolsConfig: PublicKey;
liquidity: BigNumber;
sqrtPrice: BigNumber;
protocolFeeOwedA: BigNumber;
protocolFeeOwedB: BigNumber;
tokenMintBase: PublicKey;
tokenVaultBase: PublicKey;
feeGrowthGlobalA: BigNumber;
tokenMintQuote: PublicKey;
tokenVaultQuote: PublicKey;
feeGrowthGlobalB: BigNumber;
rewardLastUpdatedTimestamp: BigNumber;
rewardInfos: AmmpoolRewardInfo[];
oracle: PublicKey;
tickCurrentIndex: number;
observationIndex: number;
observationUpdateDuration: number;
tickSpacing: number;
tickSpacingSeed: number[];
feeRate: number;
protocolFeeRate: number;
};
export declare const ammpoolStruct: BeetStruct>;
export declare enum MarginType {
NonYieldBearing = 0,
YieldBearing = 1
}
export type YieldMarket = {
accountDiscriminator: number[];
pubkey: PublicKey;
oracle: PublicKey;
name: number[];
quoteAssetVault: PublicKey;
baseAssetVault: PublicKey;
pool: Ammpool;
startTs: BigNumber;
expireTs: BigNumber;
orderStepSize: BigNumber;
minOrderSize: BigNumber;
minLpAmount: BigNumber;
minLiquidationSize: BigNumber;
marketIndex: number;
marginIndex: number;
lpMarginIndex: number;
marginType: MarginType;
lpMarginType: MarginType;
marginDecimals: number;
lpMarginDecimals: number;
};
export declare const yieldMarketStruct: FixableBeetStruct>;
export type Oracle = {
accountDiscriminator: number[];
admin: PublicKey;
name: number[];
lastRate: BigNumber;
rate: BigNumber;
marketRate: BigNumber;
ts: BigNumber;
decimals: number;
padding: number[];
epochStartTimestamp: BigNumber;
lastEpochStartTimestamp: BigNumber;
padding1: number[];
};
export declare const oracleStruct: FixableBeetStruct>;
export type YieldPosition = {
baseAssetAmount: BigNumber;
quoteAssetAmount: BigNumber;
lastRate: BigNumber;
marketIndex: number;
padding1: number[];
padding2: number[];
};
export declare const yieldPositionStruct: BeetStruct>;
export declare enum OrderStatus {
Init = 0,
Open = 1,
Filled = 2,
Canceled = 3
}
export declare enum OrderType {
Market = 0,
Limit = 1
}
export type Order = {
slot: BigNumber;
priceLimit: BigNumber;
baseAssetAmount: BigNumber;
baseAssetAmountFilled: BigNumber;
quoteAssetAmountFilled: BigNumber;
expireTs: BigNumber;
orderIndex: number;
orderId: number;
isolatedMarginAmount: BigNumber;
marketIndex: number;
status: OrderStatus;
orderType: OrderType;
isClose: boolean;
padding1: number[];
padding2: number[];
};
export declare const orderStruct: BeetStruct>;
export type MarginPosition = {
balance: BigNumber;
marketIndex: number;
decimals: number;
padding2: number[];
};
export declare const marginPositionStruct: BeetStruct>;
export type User = {
accountDiscriminator: number[];
authority: PublicKey;
marginPositions: MarginPosition[];
orders: Order[];
yieldPositions: YieldPosition[];
lastActiveSlot: BigNumber;
lastOrderId: number;
subAccountId: number;
idle: boolean;
padding2: boolean;
isIsolated: boolean;
isExpiryOn: boolean;
padding1: number[];
};
export declare const userStruct: FixableBeetStruct>;
export type UserStats = {
accountDiscriminator: number[];
authority: PublicKey;
referrer: PublicKey;
numberOfSubAccounts: number;
numberOfSubAccountsCreated: number;
padding: number[];
};
export declare const userStatsStruct: BeetStruct>;
export type PositionRewardInfo = {
growthInsideCheckpoint: BigNumber;
amountOwed: BigNumber;
};
export declare const positionrewardinfoStruct: BeetStruct>;
export type AmmPosition = {
ammpool: PublicKey;
liquidity: BigNumber;
tickLowerIndex: number;
tickUpperIndex: number;
lowerRate: BigNumber;
upperRate: BigNumber;
feeGrowthCheckpointA: BigNumber;
feeOwedA: BigNumber;
feeGrowthCheckpointB: BigNumber;
feeOwedB: BigNumber;
rewardInfos: PositionRewardInfo[];
};
export declare const positionStruct: BeetStruct>;
export declare enum LpStatus {
Active = 0,
Updating = 1
}
export type LP = {
accountDiscriminator: number[];
authority: PublicKey;
ammPosition: AmmPosition;
reserveQuoteAmount: BigNumber;
reserveBaseAmount: BigNumber;
lastActiveSlot: BigNumber;
subAccountId: number;
idle: boolean;
state: LpStatus;
padding1: number[];
padding2: number[];
};
export declare const lpStruct: BeetStruct>;
export type LPV2 = {
accountDiscriminator: number[];
authority: PublicKey;
ammpool: PublicKey;
position: PublicKey;
lastRate: BigNumber;
lastLiquidity: BigNumber;
lastRatio: BigNumber;
last_fee_growth_global_a: BigNumber;
fee_owed_a: BigNumber;
last_fee_growth_global_b: BigNumber;
fee_owed_b: BigNumber;
padding: number[];
reserveQuoteAmount: BigNumber;
reserveBaseAmount: BigNumber;
lastActiveSlot: BigNumber;
subAccountId: number;
idle: boolean;
padding1: number[];
padding2: number[];
};
export declare const lpV2Struct: BeetStruct>;
export type UnifiedPosition = {
accountDiscriminator: number[];
ammpool: PublicKey;
tickLowerIndex: number;
tickUpperIndex: number;
lowerRate: BigNumber;
upperRate: BigNumber;
ratio: BigNumber;
settledBaseAmount: BigNumber;
settledQuoteAmount: BigNumber;
padding: number[];
};
export declare const unifiedPositionStruct: BeetStruct>;