///
import { EuroMeta } from "@mithraic-labs/tokenized-euros";
import { BN } from "@project-serum/anchor";
import { PublicKey, Transaction } from "@solana/web3.js";
export declare type VaultAccount = {
ownerAuthority: PublicKey;
managerAuthority: PublicKey;
taskerAuthority: PublicKey;
vaultCollateralAssetAccount: PublicKey;
withdrawalCollateralAssetAccount: PublicKey;
vaultOwnershipTokenAccount: PublicKey;
feeTokenAccount: PublicKey;
collateralAssetMint: PublicKey;
quoteAssetMint: PublicKey;
vaultOwnershipTokenMint: PublicKey;
pythPriceOracle: PublicKey;
seedVaultTokenPerCollateral: ExchangeRate;
endingExchangeRateDecimals: number;
strategyType: number;
vaultAccountBump: number;
uniqueSeed: number;
maxDeposits: BN;
fees: VaultFees;
currentEpoch: BN;
currentEpochHistory: PublicKey;
pendingCollateralAssetDeposits: BN;
pendingWithdrawalTokens: BN;
optionsCollateralHeld: BN;
optionsActive: boolean;
};
export declare type VaultFees = {
managementFeeBps: BN;
performanceFeeBps: BN;
withdrawalFeeBps: BN;
};
export declare enum VaultVisibility {
Development = 0,
Staging = 1,
Production = 2
}
export declare type VaultInfo = {
id: string;
name: string;
version: number;
strategyType: Strategy;
visibility: VaultVisibility;
accounts: {
vaultAddress: string;
collateralAssetMint: string;
vaultOwnershipTokenMint: string;
optionsUnderlyingMint: string;
pythPriceOracle: string;
feeTokenAccount: string;
};
deposits: {
current: number;
max: number;
};
fees: {
performance: number;
withdrawal: number;
};
status: {
currentEpoch: number;
optionsActive: boolean;
nextEpochStartTime: number;
nextOptionMintTime: number;
isDeprecated: boolean;
};
stakingProviderUrl?: string;
selectedStrike?: number;
apy: {
currentEpochApy: number;
weightedApy: {
targetDelta: number;
averageHistoricalLoss: number;
epochsCounted: number;
averageSaleYield: number;
apyBeforeFees: number;
apyAfterFees: number;
};
};
vaultHistory: VaultHistory[];
valuePerVaultToken: number;
staking?: {
metadata?: {
usdValuePerVaultToken?: number;
};
stakePoolKey: string;
stakingApr: number[];
poolRewards: PoolReward[];
};
};
export declare type VaultHistory = {
saleAmount: number;
saleYield: number;
priceAtExpiry: number;
endingValuePerVaultToken: number;
strikePrice: number;
overallYield: number;
percentageLossOnCollateral: number;
epoch: number;
optionMinted: string;
startDate: number;
epochHistoryKey: string;
};
export declare type ExchangeRate = {
rate: BN;
decimals: number;
};
export declare enum StrategyType {
CALL = 0,
PUT = 1
}
export declare type DepositReceipt = {
bump: number;
depositAmount: BN;
epochHistory: PublicKey;
forStaking: boolean;
lockupPeriod: number;
receiptOwner: PublicKey;
vaultAccount: PublicKey;
};
export declare type WithdrawalReceipt = {
bump: number;
withdrawalAmount: BN;
epochHistory: PublicKey;
forStaking: boolean;
lockupPeriod: number;
receiptOwner: PublicKey;
vaultAccount: PublicKey;
};
export declare enum Strategy {
Call = 0,
Put = 1
}
export declare type PoolReward = {
metadata?: {
rewardPoolApr?: number[];
rewardInUsdPerYearPerRewardUnit?: number;
usdValuePerRewardToken?: number;
};
tokenSymbol: string;
rewardPoolKey: string;
rewardTokensPerWeek: number;
rewardMintAddress: string;
multiplier: number;
poolId: number;
};
export declare type TokenInfo = {
tokenSymbol?: string;
tokenName: string;
mintAddress: string;
icon?: string;
decimals: number;
lowPrecisionDecimals: number;
prefix?: string;
isVaultToken?: boolean;
coingeckoId?: string;
};
export interface StakingRecord {
stakedAmount: BN;
lastEpochClaimedVec: number[];
rewardUnits: BN;
recordOwner: PublicKey;
stakePool: PublicKey;
lockUpExpiry: BN;
}
export interface StakePool {
currentEpoch: number;
epochDuration: BN;
inactiveEpochVec: number[];
nextEpochStartTime: BN;
rewardPoolCount: number;
stakePoolAuthority: PublicKey;
stakePoolBump: number;
stakingTokenAccount: PublicKey;
stakingTokenAccountBump: number;
stakingTokenMint: PublicKey;
startingEpochVec: number[];
totalRewardUnits: BN;
uniqueSeeds: number;
}
export interface EpochsToClaim {
[key: number]: number[];
}
export interface ClaimableRewardData {
totalClaimableAmount: number;
tokenSymbol: string;
epochsToClaim: EpochsToClaim;
}
export interface ClaimableRewards {
[rewardTokenMint: string]: ClaimableRewardData;
}
export declare type EpochHistory = {
vaultAccount: PublicKey;
epoch: BN;
epochHistoryBump: number;
optionMarketMetaVec: {
euroMeta: PublicKey;
optionSaleMarket: {
isSaleEnabled: boolean;
collateralAssetPerOptionToken: BN;
};
optionTokenAccount: PublicKey;
writerTokenAccount: PublicKey;
}[];
optionSaleAmount: BN;
endingCollateralPerVaultToken: {
rate: BN;
decimals: number;
};
};
export interface TokenAccount {
amount: number;
delegatedAmount: number;
isNative: number;
mint: PublicKey;
owner: PublicKey;
state: number;
}
export interface TokenAccountWithKey extends TokenAccount {
key: PublicKey;
}
export interface EuroMetaWithKey extends EuroMeta {
key: PublicKey;
}
export interface AnchorWallet {
publicKey: PublicKey;
signTransaction(transaction: Transaction): Promise;
signAllTransactions(transactions: Transaction[]): Promise;
}
export declare type VaultData = {
amount: number;
isCall: boolean;
serumMarketKey: string;
strike: number;
expirationTimestamp: number;
endTimestamp: number;
collateralKey: string;
optionMintKey: string;
euroMetaAddress: string;
underlyingMint: string;
stableMint: string;
};
//# sourceMappingURL=vault.d.ts.map