{"version":3,"file":"printTrade.cjs","sources":["../../../../src/plugins/hxroPrintTradeProviderModule/printTrade.ts"],"sourcesContent":["import {\n  futureCommonDataBeet,\n  optionCommonDataBeet,\n} from '@convergence-rfq/risk-engine';\nimport dexterity from '@hxronetwork/dexterity-ts';\nimport BN from 'bn.js';\nimport {\n  Leg as SolitaLeg,\n  QuoteAsset as SolitaQuoteAsset,\n} from '@convergence-rfq/rfq';\nimport { LockedCollateralRecord } from '@convergence-rfq/hxro-print-trade-provider';\nimport {\n  AdditionalResponseData,\n  PrintTrade,\n  PrintTradeLeg,\n  PrintTradeParser,\n  PrintTradeQuote,\n} from '../printTradeModule';\nimport { fromNumberInstrumentType } from '../riskEngineModule';\nimport {\n  AuthoritySide,\n  fromSolitaLegSide,\n  PrintTradeRfq,\n  PrintTradeResponse,\n} from '../rfqModule';\nimport { HXRO_LEG_DECIMALS, HXRO_QUOTE_DECIMALS } from './constants';\nimport { HxroLegInput, HxroProductInfo } from './types';\nimport { fetchValidHxroMpg, getFirstHxroExecutionOutput } from './helpers';\nimport { hxroManifestCache } from './cache';\nimport {\n  lockHxroCollateralBuilder,\n  removeLockCollateralRecordBuilder,\n  signHxroPrintTradeBuilder,\n  unlockHxroCollateralBuilder,\n} from './operations';\nimport { Convergence } from '@/Convergence';\nimport {\n  PublicKey,\n  createSerializerFromFixedSizeBeet,\n  toFractional,\n} from '@/types';\nimport {\n  CvgCache,\n  TransactionBuilderOptions,\n  removeDecimals,\n  useCache,\n} from '@/utils';\n\nexport class HxroPrintTrade implements PrintTrade {\n  constructor(\n    protected cvg: Convergence,\n    public takerTrg: PublicKey,\n    protected legsInfo: HxroLegInput[]\n  ) {}\n  getHxroContextHelper = async (\n    cvg: Convergence,\n    response: PrintTradeResponse,\n    firstToPrepare: AuthoritySide\n  ) => {\n    return HxroContextHelper.create(cvg, this, response, firstToPrepare);\n  };\n  getPrintTradeProviderProgramId = () =>\n    this.cvg.programs().getHxroPrintTradeProvider().address;\n  getLegs = () => this.legsInfo.map((legInfo) => new HxroLeg(legInfo));\n  getQuote = () => new HxroQuote(this.takerTrg);\n  getValidationAccounts = async () => {\n    const { validMpg } = await this.cvg.hxro().fetchConfig();\n\n    const validationAccounts = this.legsInfo\n      .map((legInfo) => {\n        // TODO add in-place product fetching\n        if (legInfo.productInfo.productAddress === undefined) {\n          throw Error('Product addresses not fetched!');\n        }\n\n        const productAccountInfo = {\n          pubkey: legInfo.productInfo.productAddress,\n          isSigner: false,\n          isWritable: false,\n        };\n\n        const baseAssetAccountInfo = {\n          pubkey: this.cvg\n            .protocol()\n            .pdas()\n            .baseAsset({ index: legInfo.productInfo.baseAssetIndex }),\n          isSigner: false,\n          isWritable: false,\n        };\n\n        return [productAccountInfo, baseAssetAccountInfo];\n      })\n      .flat();\n\n    return [\n      {\n        pubkey: this.cvg.hxro().pdas().config(),\n        isSigner: false,\n        isWritable: false,\n      },\n      {\n        pubkey: validMpg,\n        isSigner: false,\n        isWritable: false,\n      },\n      {\n        pubkey: this.takerTrg,\n        isSigner: false,\n        isWritable: false,\n      },\n      ...validationAccounts,\n    ];\n  };\n\n  getSettlementPreparations = async (\n    rfq: PrintTradeRfq,\n    response: PrintTradeResponse,\n    side: AuthoritySide,\n    options: TransactionBuilderOptions\n  ) => {\n    const user = side === 'taker' ? rfq.taker : response.maker;\n\n    const hxroContext = await HxroContextHelper.create(\n      this.cvg,\n      this,\n      response,\n      response.printTradeInitializedBy ?? side\n    );\n\n    const systemProgram = this.cvg.programs().getSystem();\n\n    const builders = [\n      await lockHxroCollateralBuilder(\n        this.cvg,\n        { rfq, response, side, hxroContext },\n        options\n      ),\n    ];\n    if (response.printTradeInitializedBy !== null) {\n      builders.push(\n        await signHxroPrintTradeBuilder(\n          this.cvg,\n          { rfq, response, side, hxroContext },\n          options\n        )\n      );\n    }\n\n    const operatorTrg = await hxroContext.operatorTrg.get();\n\n    const accounts = [\n      {\n        pubkey: this.cvg\n          .hxro()\n          .pdas()\n          .lockedCollateralRecord(user, response.address),\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: this.cvg.hxro().pdas().operator(),\n        isSigner: false,\n        isWritable: false,\n      },\n      {\n        pubkey: this.cvg.hxro().pdas().config(),\n        isSigner: false,\n        isWritable: false,\n      },\n      {\n        pubkey: hxroContext.getDexProgramId(),\n        isSigner: false,\n        isWritable: false,\n      },\n      {\n        pubkey: hxroContext.mpg.pubkey,\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: this.cvg.identity().publicKey,\n        isSigner: true,\n        isWritable: false,\n      },\n      {\n        pubkey: hxroContext.getTakerTrg(),\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: hxroContext.getMakerTrg(),\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: operatorTrg,\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: hxroContext.getPrintTrade(),\n        isSigner: false,\n        isWritable: true,\n      },\n      { pubkey: systemProgram.address, isSigner: false, isWritable: false },\n    ];\n\n    return { accounts, builders };\n  };\n\n  getSettlementAccounts = async (\n    rfq: PrintTradeRfq,\n    response: PrintTradeResponse\n  ) => {\n    const hxroContext = await HxroContextHelper.create(\n      this.cvg,\n      this,\n      response,\n      response.printTradeInitializedBy!\n    );\n    const systemProgram = this.cvg.programs().getSystem();\n\n    const executionOutput = await getFirstHxroExecutionOutput(\n      this.cvg,\n      hxroContext.getDexProgramId()\n    );\n\n    const [creatorTrgData, counterpartyTrgData, operatorTrg] =\n      await Promise.all([\n        hxroContext.creatorTrgData.get(),\n        hxroContext.counterpartyTrgData.get(),\n        hxroContext.operatorTrg.get(),\n      ]);\n\n    return [\n      {\n        pubkey: rfq.taker,\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: response.maker,\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: this.cvg\n          .hxro()\n          .pdas()\n          .lockedCollateralRecord(rfq.taker, response.address),\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: this.cvg\n          .hxro()\n          .pdas()\n          .lockedCollateralRecord(response.maker, response.address),\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: this.cvg.hxro().pdas().operator(),\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: this.cvg.hxro().pdas().config(),\n        isSigner: false,\n        isWritable: false,\n      },\n      {\n        pubkey: hxroContext.getDexProgramId(),\n        isSigner: false,\n        isWritable: false,\n      },\n      { pubkey: hxroContext.mpg.pubkey, isSigner: false, isWritable: true },\n      { pubkey: hxroContext.getTakerTrg(), isSigner: false, isWritable: true },\n      { pubkey: hxroContext.getMakerTrg(), isSigner: false, isWritable: true },\n      {\n        pubkey: operatorTrg,\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: hxroContext.getPrintTrade(),\n        isSigner: false,\n        isWritable: true,\n      },\n      { pubkey: executionOutput, isSigner: false, isWritable: true },\n      {\n        pubkey: hxroContext.mpg.feeModelProgramId,\n        isSigner: false,\n        isWritable: false,\n      },\n      {\n        pubkey: hxroContext.mpg.feeModelConfigurationAcct,\n        isSigner: false,\n        isWritable: false,\n      },\n      {\n        pubkey: hxroContext.mpg.feeOutputRegister,\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: hxroContext.mpg.riskEngineProgramId,\n        isSigner: false,\n        isWritable: false,\n      },\n      {\n        pubkey: hxroContext.mpg.riskModelConfigurationAcct,\n        isSigner: false,\n        isWritable: false,\n      },\n      {\n        pubkey: hxroContext.mpg.riskOutputRegister,\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: hxroContext.getRiskAndFeeSigner(),\n        isSigner: false,\n        isWritable: false,\n      },\n      {\n        pubkey: creatorTrgData.feeStateAccount,\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: creatorTrgData.riskStateAccount,\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: counterpartyTrgData.feeStateAccount,\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: counterpartyTrgData.riskStateAccount,\n        isSigner: false,\n        isWritable: true,\n      },\n      { pubkey: systemProgram.address, isSigner: false, isWritable: false },\n    ];\n  };\n\n  getRevertPreparations = async (\n    rfq: PrintTradeRfq,\n    response: PrintTradeResponse,\n    side: AuthoritySide,\n    options: TransactionBuilderOptions\n  ) => {\n    const user = side === 'taker' ? rfq.taker : response.maker;\n\n    const postBuilders = [];\n    if (this.cvg.identity().publicKey.equals(user)) {\n      const lockRecordAddress = this.cvg\n        .hxro()\n        .pdas()\n        .lockedCollateralRecord(user, response.address);\n\n      const accountData = await LockedCollateralRecord.fromAccountAddress(\n        this.cvg.connection,\n        lockRecordAddress\n      );\n      const lockRecord = { ...accountData, publicKey: lockRecordAddress };\n\n      postBuilders.push(\n        await unlockHxroCollateralBuilder(this.cvg, { lockRecord }, options)\n      );\n      postBuilders.push(\n        await removeLockCollateralRecordBuilder(\n          this.cvg,\n          { lockRecord },\n          options\n        )\n      );\n    }\n\n    const accounts = [\n      {\n        pubkey: this.cvg\n          .hxro()\n          .pdas()\n          .lockedCollateralRecord(user, response.address),\n        isSigner: false,\n        isWritable: true,\n      },\n    ];\n\n    return { accounts, postBuilders };\n  };\n\n  getCleanUpAccounts = async (\n    rfq: PrintTradeRfq,\n    response: PrintTradeResponse\n  ) => {\n    const hxroContext = await HxroContextHelper.create(\n      this.cvg,\n      this,\n      response,\n      response.printTradeInitializedBy!\n    );\n    const systemProgram = this.cvg.programs().getSystem();\n    const creator =\n      response.printTradeInitializedBy! === 'taker'\n        ? rfq.taker\n        : response.maker;\n\n    const operatorTrg = await hxroContext.operatorTrg.get();\n\n    return [\n      {\n        pubkey: this.cvg.hxro().pdas().operator(),\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: this.cvg.hxro().pdas().config(),\n        isSigner: false,\n        isWritable: false,\n      },\n      {\n        pubkey: hxroContext.getDexProgramId(),\n        isSigner: false,\n        isWritable: false,\n      },\n      { pubkey: hxroContext.mpg.pubkey, isSigner: false, isWritable: true },\n      { pubkey: hxroContext.getTakerTrg(), isSigner: false, isWritable: true },\n      { pubkey: hxroContext.getMakerTrg(), isSigner: false, isWritable: true },\n      {\n        pubkey: operatorTrg,\n        isSigner: false,\n        isWritable: true,\n      },\n      {\n        pubkey: hxroContext.getPrintTrade(),\n        isSigner: false,\n        isWritable: true,\n      },\n      { pubkey: creator, isSigner: false, isWritable: true },\n      { pubkey: systemProgram.address, isSigner: false, isWritable: false },\n    ];\n  };\n\n  // after an rfq is parsed from an on-chain data, as much data is possible is parsed from there\n  // but some product info is missing in the rfq on-chain data\n  // this method overwrites hxro product data and can be used to fill all the missing data\n  overwriteWithFullHxroProductData = (fullProductsData: HxroProductInfo[]) => {\n    for (const legInfo of this.legsInfo) {\n      const fullProductData = fullProductsData.find(\n        (data) => data.productIndex === legInfo.productInfo.productIndex\n      );\n\n      if (fullProductData === undefined) {\n        throw new Error(\n          `Missing a product by index ${legInfo.productInfo.productIndex}`\n        );\n      }\n\n      legInfo.productInfo = fullProductData;\n    }\n  };\n\n  getValidateResponseAccounts = async (\n    additionalData: AdditionalResponseData | undefined\n  ) => {\n    if (!(additionalData instanceof HxroAdditionalRespondData)) {\n      throw new Error(\n        'This rfq requires hxro-specific HxroAdditionalRespondData type passed as an additional response data'\n      );\n    }\n\n    return [\n      {\n        pubkey: this.cvg.hxro().pdas().config(),\n        isSigner: false,\n        isWritable: false,\n      },\n      {\n        pubkey: additionalData.makerTrg,\n        isSigner: false,\n        isWritable: false,\n      },\n    ];\n  };\n}\n\nexport class HxroPrintTradeParser implements PrintTradeParser {\n  parsePrintTrade(\n    cvg: Convergence,\n    legs: SolitaLeg[],\n    quote: SolitaQuoteAsset\n  ): PrintTrade {\n    const parsedLegInfo = legs.map((leg): HxroLegInput => {\n      if (leg.settlementTypeMetadata.__kind == 'Instrument') {\n        throw new Error('Invalid settlement leg type');\n      }\n\n      const instrumentType = fromNumberInstrumentType(\n        leg.settlementTypeMetadata.instrumentType\n      );\n      let productInfo;\n      if (instrumentType == 'option') {\n        const serializer =\n          createSerializerFromFixedSizeBeet(optionCommonDataBeet);\n        const legData = Buffer.from(leg.data);\n        const [optionData, offset] = serializer.deserialize(legData);\n        const productIndex = legData.readUInt8(offset);\n\n        productInfo = {\n          instrumentType,\n          baseAssetIndex: leg.baseAssetIndex.value,\n          productIndex,\n          optionType: optionData.optionType,\n          strikePrice: toFractional(\n            optionData.strikePrice,\n            optionData.strikePriceDecimals\n          ),\n          expirationTimestamp: Number(optionData.expirationTimestamp),\n        };\n      } else if (\n        instrumentType == 'perp-future' ||\n        instrumentType == 'term-future'\n      ) {\n        const serializer =\n          createSerializerFromFixedSizeBeet(futureCommonDataBeet);\n        const legData = Buffer.from(leg.data);\n        const [, offset] = serializer.deserialize(legData);\n        const productIndex = legData.readUInt8(offset);\n\n        productInfo = {\n          instrumentType,\n          baseAssetIndex: leg.baseAssetIndex.value,\n          productIndex,\n        };\n      } else {\n        throw new Error('Unsupporeted instrument type!');\n      }\n\n      return {\n        amount: removeDecimals(leg.amount, leg.amountDecimals),\n        side: fromSolitaLegSide(leg.side),\n        productInfo,\n      };\n    });\n    const takerTrg = new PublicKey(quote.data);\n\n    return new HxroPrintTrade(cvg, takerTrg, parsedLegInfo);\n  }\n}\n\nclass HxroQuote implements PrintTradeQuote {\n  constructor(public takerTrg: PublicKey) {}\n\n  getDecimals = () => HXRO_QUOTE_DECIMALS;\n  serializeInstrumentData = () => this.takerTrg.toBuffer();\n}\n\nexport class HxroLeg implements PrintTradeLeg {\n  legType: 'printTrade';\n\n  constructor(public legInfo: HxroLegInput) {\n    this.legType = 'printTrade';\n  }\n\n  getInstrumentType = () => this.legInfo.productInfo.instrumentType;\n  getBaseAssetIndex = () => ({\n    value: this.legInfo.productInfo.baseAssetIndex,\n  });\n  getAmount = () => this.legInfo.amount;\n  getDecimals = () => HXRO_LEG_DECIMALS;\n  getSide = () => this.legInfo.side;\n  serializeInstrumentData = () => {\n    let riskEngineBuffer;\n    if (this.legInfo.productInfo.instrumentType == 'option') {\n      const serializer =\n        createSerializerFromFixedSizeBeet(optionCommonDataBeet);\n      riskEngineBuffer = serializer.serialize({\n        optionType: this.legInfo.productInfo.optionType,\n        underlyingAmountPerContract: new BN(1),\n        underlyingAmountPerContractDecimals: 0,\n        strikePrice: this.legInfo.productInfo.strikePrice.mantissa,\n        strikePriceDecimals: this.legInfo.productInfo.strikePrice.decimals,\n        expirationTimestamp: new BN(\n          this.legInfo.productInfo.expirationTimestamp\n        ),\n      });\n    } else {\n      const serializer =\n        createSerializerFromFixedSizeBeet(futureCommonDataBeet);\n      riskEngineBuffer = serializer.serialize({\n        underlyingAmountPerContract: new BN(1),\n        underlyingAmountPerContractDecimals: 0,\n      });\n    }\n\n    const productInfoBuffer = Buffer.alloc(1);\n    productInfoBuffer.writeUInt8(this.legInfo.productInfo.productIndex);\n\n    return Buffer.concat([riskEngineBuffer, productInfoBuffer]);\n  };\n}\n\nexport class HxroAdditionalRespondData extends AdditionalResponseData {\n  constructor(public makerTrg: PublicKey) {\n    super();\n  }\n\n  serialize(): Buffer {\n    return this.makerTrg.toBuffer();\n  }\n\n  static deserialize(data: Uint8Array): HxroAdditionalRespondData {\n    const makerTrg = new PublicKey(data);\n    return new HxroAdditionalRespondData(makerTrg);\n  }\n}\n\nexport class HxroContextHelper {\n  public creatorTrgData: CvgCache<any, []>;\n  public counterpartyTrgData: CvgCache<any, []>;\n  public operatorTrg: CvgCache<PublicKey, []>;\n\n  private constructor(\n    private cvg: Convergence,\n    public manifest: any,\n    public mpg: any,\n    private printTrade: HxroPrintTrade,\n    private response: PrintTradeResponse,\n    private firstToPrepare: AuthoritySide\n  ) {\n    this.creatorTrgData = useCache(\n      async () => await this.manifest.getTRG(this.getCreatorTrg())\n    );\n    this.counterpartyTrgData = useCache(\n      async () => await this.manifest.getTRG(this.getCounterpartyTrg())\n    );\n    this.operatorTrg = useCache(async () => {\n      const operatorTrgs = await this.manifest.getTRGsOfOwner(\n        this.cvg.hxro().pdas().operator()\n      );\n      const { pubkey } = operatorTrgs[0];\n      return pubkey;\n    });\n  }\n\n  static async create(\n    cvg: Convergence,\n    printTrade: HxroPrintTrade,\n    response: PrintTradeResponse,\n    firstToPrepare: AuthoritySide\n  ) {\n    const manifest = await hxroManifestCache.get(cvg);\n    const mpg = await fetchValidHxroMpg(cvg, manifest);\n\n    return new HxroContextHelper(\n      cvg,\n      manifest,\n      mpg,\n      printTrade,\n      response,\n      firstToPrepare\n    );\n  }\n\n  getTakerTrg() {\n    return this.printTrade.takerTrg;\n  }\n\n  getMakerTrg() {\n    return HxroAdditionalRespondData.deserialize(this.response.additionalData)\n      .makerTrg;\n  }\n\n  getCreatorTrg() {\n    return this.firstToPrepare === 'taker'\n      ? this.getTakerTrg()\n      : this.getMakerTrg();\n  }\n\n  getCounterpartyTrg() {\n    return this.firstToPrepare === 'taker'\n      ? this.getMakerTrg()\n      : this.getTakerTrg();\n  }\n\n  getPrintTrade() {\n    const [result] = PublicKey.findProgramAddressSync(\n      [\n        Buffer.from('print_trade'),\n        this.getCreatorTrg().toBuffer(),\n        this.getCounterpartyTrg().toBuffer(),\n        this.response.address.toBuffer(),\n      ],\n      this.getDexProgramId()\n    );\n\n    return result;\n  }\n\n  getDexProgramId() {\n    return this.manifest.fields.dexProgram.programId;\n  }\n\n  getRiskAndFeeSigner() {\n    return dexterity.Manifest.GetRiskAndFeeSigner(this.mpg.pubkey);\n  }\n\n  getTrgBySide(side: AuthoritySide) {\n    if (side === 'taker') {\n      return this.getTakerTrg();\n    }\n\n    return this.getMakerTrg();\n  }\n\n  getTrgDataBySide(side: AuthoritySide) {\n    const isFirstToPrepare = side === this.firstToPrepare;\n\n    if (isFirstToPrepare) {\n      return this.creatorTrgData;\n    }\n\n    return this.counterpartyTrgData;\n  }\n}\n"],"names":["HxroPrintTrade","_createClass","cvg","takerTrg","legsInfo","_this","_classCallCheck","_defineProperty","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","response","firstToPrepare","wrap","_callee$","_context","prev","next","abrupt","HxroContextHelper","create","stop","_x","_x2","_x3","apply","arguments","programs","getHxroPrintTradeProvider","address","map","legInfo","HxroLeg","HxroQuote","_callee2","_yield$_this$cvg$hxro","validMpg","validationAccounts","_callee2$","_context2","hxro","fetchConfig","sent","productInfo","productAddress","undefined","Error","productAccountInfo","pubkey","isSigner","isWritable","baseAssetAccountInfo","protocol","pdas","baseAsset","index","baseAssetIndex","flat","config","concat","_toConsumableArray","_ref3","_callee3","rfq","side","options","_response$printTradeI","user","hxroContext","systemProgram","builders","operatorTrg","accounts","_callee3$","_context3","taker","maker","printTradeInitializedBy","getSystem","lockHxroCollateralBuilder","t0","t1","signHxroPrintTradeBuilder","t2","push","call","get","lockedCollateralRecord","operator","getDexProgramId","mpg","identity","publicKey","getTakerTrg","getMakerTrg","getPrintTrade","_x4","_x5","_x6","_x7","_ref4","_callee4","executionOutput","_yield$Promise$all","_yield$Promise$all2","creatorTrgData","counterpartyTrgData","_callee4$","_context4","getFirstHxroExecutionOutput","Promise","all","_slicedToArray","feeModelProgramId","feeModelConfigurationAcct","feeOutputRegister","riskEngineProgramId","riskModelConfigurationAcct","riskOutputRegister","getRiskAndFeeSigner","feeStateAccount","riskStateAccount","_x8","_x9","_ref5","_callee5","postBuilders","lockRecordAddress","accountData","lockRecord","_callee5$","_context5","equals","LockedCollateralRecord","fromAccountAddress","connection","_objectSpread","unlockHxroCollateralBuilder","removeLockCollateralRecordBuilder","t3","_x10","_x11","_x12","_x13","_ref6","_callee6","creator","_callee6$","_context6","_x14","_x15","fullProductsData","_iterator","_createForOfIteratorHelper","_step","_loop","value","fullProductData","find","data","productIndex","s","n","done","err","e","f","_ref7","_callee7","additionalData","_callee7$","_context7","HxroAdditionalRespondData","makerTrg","_x16","HxroPrintTradeParser","key","parsePrintTrade","legs","quote","parsedLegInfo","leg","settlementTypeMetadata","__kind","instrumentType","fromNumberInstrumentType","serializer","createSerializerFromFixedSizeBeet","optionCommonDataBeet","legData","Buffer","from","_serializer$deseriali","deserialize","_serializer$deseriali2","optionData","offset","readUInt8","optionType","strikePrice","toFractional","strikePriceDecimals","expirationTimestamp","Number","futureCommonDataBeet","_serializer$deseriali3","_serializer$deseriali4","amount","removeDecimals","amountDecimals","fromSolitaLegSide","PublicKey","_this2","HXRO_QUOTE_DECIMALS","toBuffer","_this3","HXRO_LEG_DECIMALS","riskEngineBuffer","serialize","underlyingAmountPerContract","BN","underlyingAmountPerContractDecimals","mantissa","decimals","productInfoBuffer","alloc","writeUInt8","legType","_AdditionalResponseDa","_inherits","_this4","_callSuper","AdditionalResponseData","manifest","printTrade","_this5","useCache","_callee8","_callee8$","_context8","getTRG","getCreatorTrg","_callee9","_callee9$","_context9","getCounterpartyTrg","_callee10","operatorTrgs","_callee10$","_context10","getTRGsOfOwner","_PublicKey$findProgra","findProgramAddressSync","_PublicKey$findProgra2","result","fields","dexProgram","programId","dexterity","Manifest","GetRiskAndFeeSigner","getTrgBySide","getTrgDataBySide","isFirstToPrepare","_create","_callee11","_callee11$","_context11","hxroManifestCache","fetchValidHxroMpg","_x17","_x18","_x19","_x20"],"mappings":"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"}