{"version":3,"file":"types.cjs","sources":["../../../../src/plugins/printTradeModule/types.ts"],"sourcesContent":["import { AccountMeta, PublicKey } from '@solana/web3.js';\nimport {\n  BaseAssetIndex,\n  Leg as SolitaLeg,\n  QuoteAsset as SolitaQuoteAsset,\n} from '@convergence-rfq/rfq';\nimport { InstrumentType } from '../riskEngineModule';\nimport {\n  LegSide,\n  AuthoritySide,\n  PrintTradeResponse,\n  PrintTradeRfq,\n} from '../rfqModule';\nimport { HxroContextHelper } from '../hxroPrintTradeProviderModule';\nimport { Convergence } from '@/Convergence';\nimport { TransactionBuilder, TransactionBuilderOptions } from '@/utils';\n\nexport interface PrintTrade {\n  getPrintTradeProviderProgramId: () => PublicKey;\n  getLegs: () => PrintTradeLeg[];\n  getQuote: () => PrintTradeQuote;\n  getValidationAccounts: () => Promise<AccountMeta[]>;\n  getSettlementPreparations: (\n    rfq: PrintTradeRfq,\n    response: PrintTradeResponse,\n    side: AuthoritySide,\n    options: TransactionBuilderOptions\n  ) => Promise<{ accounts: AccountMeta[]; builders: TransactionBuilder[] }>;\n  getHxroContextHelper: (\n    cvg: Convergence,\n    response: PrintTradeResponse,\n    firstToPrepare: AuthoritySide\n  ) => Promise<HxroContextHelper>;\n  getSettlementAccounts: (\n    rfq: PrintTradeRfq,\n    response: PrintTradeResponse\n  ) => Promise<AccountMeta[]>;\n  getRevertPreparations: (\n    rfq: PrintTradeRfq,\n    response: PrintTradeResponse,\n    side: AuthoritySide,\n    options: TransactionBuilderOptions\n  ) => Promise<{ accounts: AccountMeta[]; postBuilders: TransactionBuilder[] }>;\n  getCleanUpAccounts: (\n    rfq: PrintTradeRfq,\n    response: PrintTradeResponse\n  ) => Promise<AccountMeta[]>;\n  getValidateResponseAccounts: (\n    additionalData: AdditionalResponseData | undefined\n  ) => Promise<AccountMeta[]>;\n}\n\nexport interface PrintTradeLeg {\n  legType: 'printTrade';\n\n  getInstrumentType: () => InstrumentType;\n  getBaseAssetIndex: () => BaseAssetIndex;\n  getAmount: () => number;\n  getDecimals: () => number;\n  getSide: () => LegSide;\n  serializeInstrumentData: () => Buffer;\n}\n\nexport interface PrintTradeQuote {\n  getDecimals: () => number;\n  serializeInstrumentData: () => Buffer;\n}\n\nexport interface PrintTradeParser {\n  parsePrintTrade(\n    cvg: Convergence,\n    legs: SolitaLeg[],\n    quote: SolitaQuoteAsset\n  ): PrintTrade;\n}\n\nexport abstract class AdditionalResponseData {\n  abstract serialize(): Buffer;\n}\n"],"names":["AdditionalResponseData","_createClass","_classCallCheck"],"mappings":";;;;;;AA4EA,IAAsBA,sBAAsB,gBAAAC,qCAAA,CAAA,SAAAD,sBAAA,GAAA;AAAAE,EAAAA,wCAAA,OAAAF,sBAAA,CAAA,CAAA;AAAA,CAAA;;;;"}