/// import { PublicKey, TransactionInstruction } from '@solana/web3.js'; import { Leg, BaseAssetIndex } from '@convergence-rfq/rfq'; import { OptionMarketWithKey } from '@mithraic-labs/psy-american'; import { OptionType } from '@mithraic-labs/tokenized-euros'; import { bignum } from '@convergence-rfq/beet'; import { Mint } from '../tokenModule'; import { LegInstrument, CreateOptionInstrumentsResult } from '../instrumentModule'; import { Convergence } from '../../Convergence'; import { LegSide } from '../rfqModule/models/LegSide'; import { NoopWallet } from '../../utils/Wallets'; import { GetOrCreateATAtxBuilderReturnType } from '../../utils'; type PsyoptionsAmericanInstrumentData = { optionType: OptionType; underlyingAmountPerContract: bignum; underlyingAmountPerContractDecimals: number; strikePrice: bignum; strikePriceDecimals: number; expiration: bignum; optionMint: PublicKey; metaKey: PublicKey; }; export declare const psyoptionsAmericanInstrumentDataSerializer: import("../../types").Serializer; export declare class PsyoptionsAmericanInstrument implements LegInstrument { readonly convergence: Convergence; readonly optionType: OptionType; readonly underlyingAmountPerContract: number; private readonly underlyingAmountPerContractDecimals; readonly strikePrice: number; private readonly strikePriceDecimals; readonly expirationTimestamp: number; readonly optionMint: PublicKey; readonly optionMetaPubKey: PublicKey; readonly baseAssetIndex: BaseAssetIndex; readonly instrumentIndex: number; readonly amount: number; readonly side: LegSide; readonly underlyingAssetMint?: PublicKey | undefined; readonly stableAssetMint?: PublicKey | undefined; static readonly decimals = 0; legType: 'escrow'; constructor(convergence: Convergence, optionType: OptionType, underlyingAmountPerContract: number, // without decimals underlyingAmountPerContractDecimals: number, strikePrice: number, // without decimals strikePriceDecimals: number, expirationTimestamp: number, // timestamp in seconds optionMint: PublicKey, optionMetaPubKey: PublicKey, baseAssetIndex: BaseAssetIndex, instrumentIndex: number, amount: number, side: LegSide, underlyingAssetMint?: PublicKey | undefined, stableAssetMint?: PublicKey | undefined); getBaseAssetIndex: () => BaseAssetIndex; getInstrumentIndex: () => number; getAssetMint: () => PublicKey; getAmount: () => number; getDecimals: () => number; getSide: () => LegSide; getPreparationsBeforeRfqCreation(taker: PublicKey): Promise; static create(taker: PublicKey, convergence: Convergence, underlyingMint: Mint, stableMint: Mint, optionType: OptionType, amount: number, side: LegSide, underlyingAmountPerContract: number, strike: number, expirationTimestamp: number): Promise; static fetchMeta(taker: PublicKey, convergence: Convergence, metaKey: PublicKey): Promise; getOptionMeta(taker: PublicKey): Promise; getValidationAccounts(): { pubkey: PublicKey; isSigner: boolean; isWritable: boolean; }[]; static deserializeInstrumentData(buffer: Buffer): PsyoptionsAmericanInstrumentData; serializeInstrumentData(): Buffer; getProgramId(): PublicKey; } export declare const psyoptionsAmericanInstrumentParser: { parseFromLeg(convergence: Convergence, leg: Leg, instrumentIndex: number): PsyoptionsAmericanInstrument; }; export declare const createAmericanProgram: (convergence: Convergence, wallet: NoopWallet) => any; export declare const getPsyAmericanMarketIxs: (cvg: Convergence, taker: PublicKey, underlyingMint: PublicKey, underlyingMintDecimals: number, underlyingAmountPerContract: number, stableMint: PublicKey, stableMintDecimals: number, strike: number, expirationTimestamp: number, optionType: OptionType) => Promise; export type GetAmericanOptionMetaResult = { optionMint: PublicKey; metaKey: PublicKey; }; export declare const getAmericanOptionkeys: (americanProgram: any, underlyingMint: Mint, stableMint: Mint, expirationUnixTimestamp: number, strike: number, underlyingAmountPerContract: number, optionType: OptionType) => Promise; export type GetPsyAmericanOptionMarketAccounts = { optionMarketIx: { optionMarketKey: PublicKey; optionMintKey: PublicKey; quoteAssetPoolKey: PublicKey; tx: TransactionInstruction; underlyingAssetPoolKey: PublicKey; writerMintKey: PublicKey; }; mintFeeAccount: GetOrCreateATAtxBuilderReturnType; exerciseFeeAccount: GetOrCreateATAtxBuilderReturnType; }; export {};