/// import { AccountMeta, PublicKey } from '@solana/web3.js'; import { BaseAssetIndex, Leg as SolitaLeg, QuoteAsset as SolitaQuoteAsset } from '@convergence-rfq/rfq'; import { InstrumentType } from '../riskEngineModule'; import { LegSide, AuthoritySide, PrintTradeResponse, PrintTradeRfq } from '../rfqModule'; import { HxroContextHelper } from '../hxroPrintTradeProviderModule'; import { Convergence } from '../../Convergence'; import { TransactionBuilder, TransactionBuilderOptions } from '../../utils'; export interface PrintTrade { getPrintTradeProviderProgramId: () => PublicKey; getLegs: () => PrintTradeLeg[]; getQuote: () => PrintTradeQuote; getValidationAccounts: () => Promise; getSettlementPreparations: (rfq: PrintTradeRfq, response: PrintTradeResponse, side: AuthoritySide, options: TransactionBuilderOptions) => Promise<{ accounts: AccountMeta[]; builders: TransactionBuilder[]; }>; getHxroContextHelper: (cvg: Convergence, response: PrintTradeResponse, firstToPrepare: AuthoritySide) => Promise; getSettlementAccounts: (rfq: PrintTradeRfq, response: PrintTradeResponse) => Promise; getRevertPreparations: (rfq: PrintTradeRfq, response: PrintTradeResponse, side: AuthoritySide, options: TransactionBuilderOptions) => Promise<{ accounts: AccountMeta[]; postBuilders: TransactionBuilder[]; }>; getCleanUpAccounts: (rfq: PrintTradeRfq, response: PrintTradeResponse) => Promise; getValidateResponseAccounts: (additionalData: AdditionalResponseData | undefined) => Promise; } export interface PrintTradeLeg { legType: 'printTrade'; getInstrumentType: () => InstrumentType; getBaseAssetIndex: () => BaseAssetIndex; getAmount: () => number; getDecimals: () => number; getSide: () => LegSide; serializeInstrumentData: () => Buffer; } export interface PrintTradeQuote { getDecimals: () => number; serializeInstrumentData: () => Buffer; } export interface PrintTradeParser { parsePrintTrade(cvg: Convergence, legs: SolitaLeg[], quote: SolitaQuoteAsset): PrintTrade; } export declare abstract class AdditionalResponseData { abstract serialize(): Buffer; }