{"version":3,"file":"fetchHxroProducts.mjs","sources":["../../../../../src/plugins/hxroPrintTradeProviderModule/operations/fetchHxroProducts.ts"],"sourcesContent":["import dexterity from '@hxronetwork/dexterity-ts';\nimport BN from 'bn.js';\nimport { OptionType } from '@convergence-rfq/risk-engine';\nimport { HxroProductInfo } from '../types';\nimport { fetchValidHxroMpg } from '../helpers';\nimport { hxroManifestCache } from '../cache';\nimport { Convergence } from '@/Convergence';\nimport {\n  Operation,\n  OperationHandler,\n  OperationScope,\n  PublicKey,\n  useOperation,\n} from '@/types';\nimport { BaseAsset } from '@/plugins/protocolModule';\n\nconst Key = 'FetchHxroProducts' as const;\n\nexport const fetchHxroProductsOperation =\n  useOperation<FetchHxroProductsOperation>(Key);\n\n/**\n * @group Operations\n * @category Types\n */\nexport type FetchHxroProductsOperation = Operation<\n  typeof Key,\n  FetchHxroProductsInput,\n  FetchHxroProductsOutput\n>;\n\n/**\n * @group Operations\n * @category Inputs\n */\nexport type FetchHxroProductsInput = {} | undefined;\n\n/**\n * @group Operations\n * @category Outputs\n */\nexport type FetchHxroProductsOutput = HxroProductInfo[];\n\ntype BaseProductData = {\n  productIndex: number;\n  productName: string;\n  productAddress: PublicKey;\n};\n\n/**\n * @group Operations\n * @category Handlers\n */\nexport const fetchHxroProductsOperationHandler: OperationHandler<FetchHxroProductsOperation> =\n  {\n    handle: async (\n      _operation: FetchHxroProductsOperation,\n      cvg: Convergence,\n      scope: OperationScope\n    ): Promise<FetchHxroProductsOutput> => {\n      const manifest = await hxroManifestCache.get(cvg);\n      const baseProductData = await parseBaseProductData(cvg, manifest);\n      scope.throwIfCanceled();\n\n      const baseAssets = await cvg.protocol().getBaseAssets();\n      const productsData = await Promise.all(\n        baseProductData.map((baseData) =>\n          expandProductData(manifest, baseAssets, baseData)\n        )\n      );\n\n      scope.throwIfCanceled();\n\n      return productsData.filter((x): x is HxroProductInfo => x !== null);\n    },\n  };\n\nconst parseBaseProductData = async (\n  cvg: Convergence,\n  manifest: any\n): Promise<BaseProductData[]> => {\n  const mpg = await fetchValidHxroMpg(cvg, manifest);\n\n  return [...dexterity.Manifest.GetProductsOfMPG(mpg).values()]\n    .filter((productInfo) => productInfo.product?.outright !== undefined)\n    .map((productInfo) => {\n      const byteName: number[] =\n        productInfo.product.outright.outright.metadata.name;\n      const name = byteName.map((char) => String.fromCharCode(char)).join('');\n      return {\n        productIndex: productInfo.index as number,\n        productName: name,\n        productAddress: productInfo.product.outright.outright.metadata\n          .productKey as PublicKey,\n      };\n    });\n};\n\nconst expandProductData = async (\n  manifest: any,\n  baseAssets: BaseAsset[],\n  baseData: BaseProductData\n): Promise<HxroProductInfo | null> => {\n  const metadata = await manifest.getDerivativeMetadata(\n    baseData.productAddress\n  );\n  const {\n    instrumentType: rawInstrumentType,\n    strike,\n    initializationTime,\n    fullFundingPeriod,\n    oracleType,\n    priceOracle,\n  } = metadata;\n  const strikePriceIsZero = strike.m.eq(new BN(0));\n  const instrumentType = parseHxroInstrumentType(rawInstrumentType);\n\n  const baseAsset = baseAssets.find(\n    (baseAsset) =>\n      baseAsset.enabled &&\n      baseAsset.pythOracle !== undefined &&\n      oracleType.pyth !== undefined &&\n      baseAsset.pythOracle.equals(priceOracle)\n  );\n\n  if (baseAsset === undefined) {\n    return null;\n  }\n\n  const commonInResponse = {\n    ...baseData,\n    baseAssetIndex: baseAsset.index,\n  };\n\n  const isOption =\n    !strikePriceIsZero &&\n    (instrumentType === 'expiring-call' || instrumentType === 'expiring-put');\n  const isTermFuture = strikePriceIsZero && instrumentType === 'expiring-call';\n  const isPerpFuture = instrumentType === 'recurring-call';\n  const expirationTimestamp =\n    isOption || isTermFuture\n      ? initializationTime.add(fullFundingPeriod)\n      : undefined;\n\n  // filter out expired products\n  if (expirationTimestamp !== undefined) {\n    const currentTimestamp = Date.now() / 1000; // convert to seconds\n\n    if (expirationTimestamp <= currentTimestamp) {\n      return null;\n    }\n  }\n\n  if (isOption) {\n    return {\n      ...commonInResponse,\n      instrumentType: 'option',\n      optionType:\n        instrumentType === 'expiring-call' ? OptionType.Call : OptionType.Put,\n      strikePrice: strike,\n      expirationTimestamp,\n    };\n  }\n  if (isTermFuture) {\n    return {\n      ...commonInResponse,\n      instrumentType: 'term-future',\n      expirationTimestamp,\n    };\n  }\n  if (isPerpFuture) {\n    return {\n      ...commonInResponse,\n      instrumentType: 'perp-future',\n    };\n  }\n\n  return null;\n};\n\nconst parseHxroInstrumentType = (instrumentType: any) => {\n  if (instrumentType.expiringCall !== undefined) {\n    return 'expiring-call';\n  }\n\n  if (instrumentType.expiringPut !== undefined) {\n    return 'expiring-put';\n  }\n\n  if (instrumentType.recurringCall !== undefined) {\n    return 'recurring-call';\n  }\n\n  if (instrumentType.recurringPut !== undefined) {\n    return 'recurring-put';\n  }\n\n  throw new Error('Unrecognized Hxro instrument type!');\n};\n"],"names":["Key","fetchHxroProductsOperation","useOperation","fetchHxroProductsOperationHandler","handle","_handle","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_operation","cvg","scope","manifest","baseProductData","baseAssets","productsData","wrap","_callee$","_context","prev","next","hxroManifestCache","get","sent","parseBaseProductData","throwIfCanceled","protocol","getBaseAssets","Promise","all","map","baseData","expandProductData","abrupt","filter","x","stop","_x","_x2","_x3","apply","arguments","_ref","_callee2","mpg","_callee2$","_context2","fetchValidHxroMpg","_toConsumableArray","dexterity","Manifest","GetProductsOfMPG","values","productInfo","_productInfo$product","product","outright","undefined","byteName","metadata","name","char","String","fromCharCode","join","productIndex","index","productName","productAddress","productKey","_x4","_x5","_ref2","_callee3","rawInstrumentType","strike","initializationTime","fullFundingPeriod","oracleType","priceOracle","strikePriceIsZero","instrumentType","baseAsset","commonInResponse","isOption","isTermFuture","isPerpFuture","expirationTimestamp","currentTimestamp","_callee3$","_context3","getDerivativeMetadata","m","eq","BN","parseHxroInstrumentType","find","enabled","pythOracle","pyth","equals","_objectSpread","baseAssetIndex","add","Date","now","optionType","OptionType","Call","Put","strikePrice","_x6","_x7","_x8","expiringCall","expiringPut","recurringCall","recurringPut","Error"],"mappings":"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"}