/// import { PublicKey } from '@solana/web3.js'; import { Leg, BaseAssetIndex } from '@convergence-rfq/rfq'; import { EuroMeta } from '@convergence-rfq/psyoptions-european-instrument'; import { OptionType } from '@mithraic-labs/tokenized-euros'; import { bignum } from '@convergence-rfq/beet'; import * as psyoptionsEuropean from '@mithraic-labs/tokenized-euros'; import { Mint } from '../tokenModule'; import { LegInstrument, CreateOptionInstrumentsResult } from '../instrumentModule'; import { Convergence } from '../../Convergence'; import { LegSide } from '../rfqModule/models/LegSide'; export declare const createEuropeanProgram: (convergence: Convergence, taker: PublicKey) => Promise>; type PsyoptionsEuropeanInstrumentData = { optionType: OptionType; underlyingAmountPerContract: bignum; underlyingAmountPerContractDecimals: number; strikePrice: bignum; strikePriceDecimals: number; expiration: bignum; optionMint: PublicKey; metaKey: PublicKey; }; export declare const psyoptionsEuropeanInstrumentDataSerializer: import("../../types").Serializer; /** * This model captures all the relevant information about a Psyoptions European * instrument on the Solana blockchain. * * @group Models */ export declare class PsyoptionsEuropeanInstrument 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; readonly oracleAddress?: PublicKey | undefined; readonly oracleProviderId?: number | undefined; static readonly decimals = 4; 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, oracleAddress?: PublicKey | undefined, oracleProviderId?: number | undefined); getInstrumentIndex: () => number; getBaseAssetIndex: () => BaseAssetIndex; 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, strike: number, underlyingAmountPerContract: number, oracleAddress: PublicKey, oracleProviderId: number, expirationTimestamp: number): Promise; getOptionMeta(): Promise; /** Helper method to get validation accounts for a Psyoptions European instrument. */ getValidationAccounts(): { pubkey: PublicKey; isSigner: boolean; isWritable: boolean; }[]; static deserializeInstrumentData(buffer: Buffer): PsyoptionsEuropeanInstrumentData; static fetchMeta(convergence: Convergence, metaKey: PublicKey): Promise; serializeInstrumentData(): Buffer; getProgramId(): PublicKey; } export declare const psyoptionsEuropeanInstrumentParser: { parseFromLeg(convergence: Convergence, leg: Leg, instrumentIndex: number): PsyoptionsEuropeanInstrument; }; export declare const getPsyEuropeanMarketIxs: (cvg: Convergence, taker: PublicKey, underlyingMint: PublicKey, underlyingMintDecimals: number, underlyingAmountPerContract: number, stableMint: PublicKey, stableMintDecimals: number, strike: number, expirationTimeStamp: number, oracleAddress: PublicKey, oracleProviderId: number) => Promise; export type GetEuropeanOptionMetaResult = { optionMint: PublicKey; metaKey: PublicKey; }; export declare const getEuropeanOptionKeys: (europeanProgram: any, underlyingMint: Mint, stableMint: Mint, expirationTimestamp: number, strike: number, underlyingAmountPerContract: number, optionType: OptionType) => Promise; export {};