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