{"version":3,"file":"signHxroPrintTrade.cjs","sources":["../../../../../src/plugins/hxroPrintTradeProviderModule/operations/signHxroPrintTrade.ts"],"sourcesContent":["import BN from 'bn.js';\nimport { SystemProgram } from '@solana/web3.js';\nimport { getHxroProgramFromIDL } from '../program';\nimport { numberToHxroFractional } from '../helpers';\nimport type { HxroContextHelper, HxroLeg } from '../printTrade';\nimport { Convergence } from '@/Convergence';\nimport { TransactionBuilder, TransactionBuilderOptions } from '@/utils';\nimport {\n  AuthoritySide,\n  PrintTradeResponse,\n  PrintTradeRfq,\n} from '@/plugins/rfqModule';\n\nexport type SignHxroPrintTradeParams = {\n  rfq: PrintTradeRfq;\n  response: PrintTradeResponse;\n  side: AuthoritySide;\n  hxroContext: HxroContextHelper;\n};\n\nexport const signHxroPrintTradeBuilder = async (\n  cvg: Convergence,\n  params: SignHxroPrintTradeParams,\n  options: TransactionBuilderOptions = {}\n): Promise<TransactionBuilder<{}>> => {\n  const { rfq, response, side, hxroContext } = params;\n  const { payer = cvg.rpc().getDefaultFeePayer() } = options;\n\n  const settlementResult = cvg.rfqs().getSettlementResult({ rfq, response });\n  const products = [];\n  for (let i = 0; i < 6; i++) {\n    if (i < rfq.legs.length) {\n      const legResult = settlementResult.legs[i];\n\n      const productIndex = new BN(\n        (rfq.legs[i] as HxroLeg).legInfo.productInfo.productIndex\n      );\n      const size = numberToHxroFractional(\n        legResult.amount,\n        legResult.receiver === 'maker'\n      );\n\n      products.push({\n        productIndex,\n        size,\n      });\n    } else {\n      products.push({\n        productIndex: new BN(0),\n        size: { m: new BN(0), exp: new BN(0) },\n      });\n    }\n  }\n\n  const quoteSettlement = settlementResult.quote;\n  const price = numberToHxroFractional(\n    quoteSettlement.amount,\n    quoteSettlement.receiver == 'taker'\n  );\n\n  const printTradeSide = side === 'taker' ? { bid: {} } : { ask: {} };\n\n  const [creatorTrgData, counterpartyTrgData, operatorTrg] = await Promise.all([\n    hxroContext.creatorTrgData.get(),\n    hxroContext.counterpartyTrgData.get(),\n    hxroContext.operatorTrg.get(),\n  ]);\n\n  const idlProgram = await getHxroProgramFromIDL(cvg, hxroContext.manifest);\n  const instruction = await idlProgram.methods\n    .signPrintTrade({\n      numProducts: new BN(rfq.legs.length),\n      products,\n      operatorCounterpartyFeeProportion: { m: new BN(0), exp: new BN(0) },\n      operatorCreatorFeeProportion: { m: new BN(0), exp: new BN(0) },\n      price,\n      side: printTradeSide,\n    })\n    .accounts({\n      user: payer.publicKey,\n      creator: hxroContext.getCreatorTrg(),\n      counterparty: hxroContext.getCounterpartyTrg(),\n      operator: operatorTrg,\n      marketProductGroup: hxroContext.mpg.pubkey,\n      printTrade: hxroContext.getPrintTrade(),\n      systemProgram: SystemProgram.programId,\n      feeModelProgram: hxroContext.mpg.feeModelProgramId,\n      feeModelConfigurationAcct: hxroContext.mpg.feeModelConfigurationAcct,\n      feeOutputRegister: hxroContext.mpg.feeOutputRegister,\n      riskEngineProgram: hxroContext.mpg.riskEngineProgramId,\n      riskModelConfigurationAcct: hxroContext.mpg.riskModelConfigurationAcct,\n      riskOutputRegister: hxroContext.mpg.riskOutputRegister,\n      riskAndFeeSigner: hxroContext.getRiskAndFeeSigner(),\n      creatorTraderFeeStateAcct: creatorTrgData.feeStateAccount,\n      creatorTraderRiskStateAcct: creatorTrgData.riskStateAccount,\n      counterpartyTraderFeeStateAcct: counterpartyTrgData.feeStateAccount,\n      counterpartyTraderRiskStateAcct: counterpartyTrgData.riskStateAccount,\n      seed: response.address,\n    })\n    .instruction();\n\n  return TransactionBuilder.make<{}>()\n    .setFeePayer(payer)\n    .add({\n      instruction,\n      signers: [payer],\n      key: 'signHxroPrintTrade',\n    });\n};\n"],"names":["signHxroPrintTradeBuilder","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","cvg","params","options","rfq","response","side","hxroContext","_options$payer","payer","settlementResult","products","i","legResult","productIndex","size","quoteSettlement","price","printTradeSide","_yield$Promise$all","_yield$Promise$all2","creatorTrgData","counterpartyTrgData","operatorTrg","idlProgram","instruction","_args","arguments","wrap","_callee$","_context","prev","next","length","undefined","rpc","getDefaultFeePayer","rfqs","getSettlementResult","legs","BN","legInfo","productInfo","numberToHxroFractional","amount","receiver","push","m","exp","quote","bid","ask","Promise","all","get","sent","_slicedToArray","getHxroProgramFromIDL","manifest","methods","signPrintTrade","numProducts","operatorCounterpartyFeeProportion","operatorCreatorFeeProportion","accounts","user","publicKey","creator","getCreatorTrg","counterparty","getCounterpartyTrg","operator","marketProductGroup","mpg","pubkey","printTrade","getPrintTrade","systemProgram","SystemProgram","programId","feeModelProgram","feeModelProgramId","feeModelConfigurationAcct","feeOutputRegister","riskEngineProgram","riskEngineProgramId","riskModelConfigurationAcct","riskOutputRegister","riskAndFeeSigner","getRiskAndFeeSigner","creatorTraderFeeStateAcct","feeStateAccount","creatorTraderRiskStateAcct","riskStateAccount","counterpartyTraderFeeStateAcct","counterpartyTraderRiskStateAcct","seed","address","abrupt","TransactionBuilder","make","setFeePayer","add","signers","key","stop","_x","_x2","apply"],"mappings":"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"}