/// import { AccountMeta, TransactionInstruction } from '@solana/web3.js'; import { BaseAssetIndex, Leg } from '@convergence-rfq/rfq'; import { PublicKey } from '../../types'; import { Convergence } from '../../Convergence'; import { LegSide } from '../rfqModule/models/LegSide'; export interface LegInstrumentParser { parseFromLeg(convergence: Convergence, leg: Leg, instrumentIndex: number): LegInstrument; } export type CreateOptionInstrumentsResult = TransactionInstruction[]; export interface LegInstrument { legType: 'escrow'; getInstrumentIndex: () => number; getProgramId: () => PublicKey; getBaseAssetIndex: () => BaseAssetIndex; getAssetMint: () => PublicKey; getAmount: () => number; getDecimals: () => number; getSide: () => LegSide; serializeInstrumentData: () => Buffer; getValidationAccounts(): AccountMeta[]; getPreparationsBeforeRfqCreation(taker: PublicKey): Promise; } export interface QuoteInstrument { getInstrumentIndex: () => number; getProgramId: () => PublicKey; getDecimals: () => number; serializeInstrumentData: () => Buffer; getValidationAccounts(): AccountMeta[]; }