/// import { Commitment, ConfirmOptions, PublicKey } from "@solana/web3.js"; import { AnchorProvider, BN, Idl, Wallet } from "@project-serum/anchor"; import { AccountSummary, AssetGroup, AssetGroupSummary, FeeTier, Fees, Greeks, OptionChain, OptionTypeV2, OptionVault, Position, TokenWhitelist, TradingAccount, TradingParams, TransferQueue, TransferRecord, VolatilityFeed } from "../types"; import { AnchorWallet } from "@solana/wallet-adapter-react"; export interface SdxClientConfig { clusterUrl: string; sdxProgramId: PublicKey; euroPrimitiveProgramId: PublicKey; wallet?: Wallet | AnchorWallet; anchorProvider?: AnchorProvider; idl: Idl; volatilityFeedSeed?: number; tradingAccountSeed?: number; tokenWhitelist?: PublicKey; placeholderOptionChain?: PublicKey; confirmOptions?: ConfirmOptions; priorityFeeMicroLamports?: number; maxPriorityFeeMicroLamports?: number; priorityFeeMultiplier?: number; computeBudgetMultiplier?: number; useOnChainClock?: boolean; } export interface SendAndConfirmOptions { skipPreflight?: boolean; preflightCommitment?: Commitment; commitment?: Commitment; computeBudgetMultiplier?: number; skipSimulation?: boolean; } export declare enum AssetType { BTC = 0, USDC = 1, SOL = 2, MSOL = 3, ETH = 4, BONK = 5, PSY = 6, EURO_TOKEN = 7, HNT = 8 } export interface AssetDetails { assetMint: PublicKey; assetDecimals: number; optionVault?: PublicKey; optionChain?: PublicKey; lpMint?: PublicKey; depositQueue?: PublicKey; withdrawQueue?: PublicKey; vaultTradingAccount?: PublicKey; underlyingFeeAccount?: PublicKey; stableFeeAccount?: PublicKey; vaultUnderlyingAssetAccount?: PublicKey; vaultStableAssetAccount?: PublicKey; oracleAddress?: PublicKey; pendingUnderlyingAssetAccount?: PublicKey; pendingStableAssetAccount?: PublicKey; pendingLpTokenAccount?: PublicKey; } export interface AssetDetailsInput { underlyingAssetMint?: PublicKey; stableAssetMint?: PublicKey; assetDecimals: number; optionVaultSeed?: number; oracleAddress?: PublicKey; optionChain?: PublicKey; underlyingFeeAccount?: PublicKey; stableFeeAccount?: PublicKey; } export interface State { assetMap: Map; tokenBalanceMap: Map; tradingAccountMap: Map; transferRecordMap: Map; volatilityFeed?: VolatilityFeed; tokenWhitelist?: TokenWhitelist; } export interface AssetState { optionChain?: OptionChain; optionVault?: OptionVault; depositQueue?: TransferQueue; withdrawQueue?: TransferQueue; tokenWhitelist?: TokenWhitelist; } export interface InitializeState { tradingAccount: boolean; } export interface ProgramAuthority { ownerAuthority: PublicKey; taskerAuthority: PublicKey; tokenWhitelist: PublicKey; bump: number; } export declare enum FeeType { BASE_PRICE = 0, UNDERLYING = 1 } export declare enum TradeStatus { SUCCESSFUL = 0, FAIL_DUE_TO_INSUFFICIENT_USER_FUNDS = 1, FAIL_DUE_TO_INSUFFICIENT_VAULT_FUNDS = 2, FAIL_DUE_TO_FREE_CAPITAL_EXCEEDED = 3, FAIL_DUE_TO_POSITION_CAP = 4, FAIL_DUE_TO_REDUCE_ONLY_DELTA = 5, FAIL_DUE_TO_REDUCE_ONLY_PRICE = 6, MIN_THETA_BOUNDS_EXCEEDED = 7, MIN_GAMMA_BOUNDS_EXCEEDED = 8, MIN_VEGA_BOUNDS_EXCEEDED = 9, MIN_DELTA_BOUNDS_EXCEEDED = 10, MAX_THETA_BOUNDS_EXCEEDED = 11, MAX_GAMMA_BOUNDS_EXCEEDED = 12, MAX_VEGA_BOUNDS_EXCEEDED = 13, MAX_DELTA_BOUNDS_EXCEEDED = 14 } export interface PriceMultipliers { delta: number; vega: number; gamma: number; theta: number; weighted: number; } export type EstimatedTradeDetails = { tradeStatus: TradeStatus; markGreeks: Greeks; markPriceStable: number; markPriceUnderlying: number; priceMultipliers: PriceMultipliers; optionPrice: number; tradeFee: { type: FeeType; feeTier: FeeTier; amount: number; }; capitalUtilizationFee: number; impliedVolatility: number[] | undefined; priceGreeks: Greeks; breakEvenPrice: number; user: { netChangeInUnderlying: number; netChangeInStable: number; ticketsEarned: number; }; vault: { netChangeInUnderlying: number; netChangeInStable: number; }; vaultPostTrade: { accountSummary: AccountSummary; assetGroup: AssetGroup; }; isVolShock: boolean; }; export interface OptionPricing { strikePrices: number[]; markPriceStable: number; markPriceUnderlying: number; markPriceStableByLeg: number[]; greeks: Greeks; stableCollateralPerOption: number; underlyingCollateralPerOption: number; maturityInYears: number; markVol: number[]; skew: number[]; expiration: BN; } export interface PricingInputs { currentTimestamp: number; underlyingPrice: number; markVolBps: number; interestRateBps: number; stakingRateBps: number; } export interface PriceAndFees { tradeFee: { type: FeeType; amount: number; feeTier: FeeTier; }; optionPrice: number; capitalUtilizationFee: number; vaultOptionsToMint: number; impliedVolatility: number[] | undefined; priceGreeks: Greeks; breakEvenPrice: number; maxSizeForUser: number; } export interface EstimatedOptionPricing extends PriceAndFees { markGreeks: Greeks; markPriceStable?: number; markPriceUnderlying?: number; underlyingPrice?: number; isVolShock: boolean; } export interface TradeDetailsInput { optionChain: OptionChain; tradingParams: TradingParams; vaultAssetPositions: Position[]; pricingInputs: PricingInputs; feeParams: Fees; seriesId: number; optionType: OptionTypeV2; sizeForUser: number; currentUserPositionSize: number; notionalPerContract: number; vaultUnderlyingAssetAmount: number; vaultStableAssetAmount: number; userUnderlyingAssetAmount: number; userStableAssetAmount: number; collateralDecimals: number; feeTier: FeeTier; vaultPositionCap: number; isVolShock: boolean; isNearExpiry: boolean; enableLogging?: boolean; } export interface convertInputs { underlyingAmount: number; stableAmount: number; underlyingPrice: number; normDelta: number; targetDelta: number; slippageFactorBps: number; navInUnderlying: number; } export interface optimalDepositInputs { initialUnderlyingAmount: number; initialStableAmount: number; idealUnderlyingAmount: number; idealStableAmount: number; userUnderlyingAssetAmount: number; userStableAssetAmount: number; underlyingPrice: number; stableDecimals: number; underlyingDecimals: number; } export interface DepositEstimate { conversionAmount: { underlyingToConvert: number; stableToReceive: number; stableToConvert: number; underlyingToReceive: number; }; amountAfterConversion: { underlying: number; stable: number; slippagePercentage: number; lpTokenToReceive: number; }; suggestedDepositAmount: { underlying: number; stable: number; }; } export interface WithdrawalEstimate { estimatedAmountReceivable: { underlying: number; stable: number; }; } export interface TokenPriceEstimate { lpTokenAmount: number; priceInUnderlying: number; priceInStable: number; } export interface VaultAndTradingSummary { vaultSummary: AccountSummary; assetGroupSummary: AssetGroupSummary; positions: Position[]; } export declare enum TradeType { BUY = 0, SELL = 1 } export interface SwapEstimate { swapPrice: number; isValidSwap: boolean; amountReceivable: number; currentDelta: number; newDelta: number; } //# sourceMappingURL=clientTypes.d.ts.map