///
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 {};