{"version":3,"file":"helpers.mjs","sources":["../../../../src/plugins/protocolModule/helpers.ts"],"sourcesContent":["import { COption } from '@convergence-rfq/beet';\nimport { CustomOptionalF64, CustomOptionalPubkey } from '@convergence-rfq/rfq';\nimport { PublicKey } from '@solana/web3.js';\nimport { baseAssetsCache } from './cache';\nimport { Convergence } from '@/Convergence';\n\nexport const toCustomOptionalF64 = (\n  input: COption<number>\n): CustomOptionalF64 => {\n  if (input !== null) {\n    return {\n      __kind: 'Some',\n      value: input,\n    };\n  }\n  return {\n    __kind: 'None',\n  };\n};\n\nexport const toCustomOptionalPubkey = (\n  input: COption<PublicKey>\n): CustomOptionalPubkey => {\n  if (input !== null) {\n    return {\n      __kind: 'Some',\n      value: input,\n    };\n  }\n  return {\n    __kind: 'None',\n  };\n};\n\nexport const findVacantBaseAssetIndex = async (cvg: Convergence) => {\n  await baseAssetsCache.clear(); // clear the cache to use up-to-date base assets\n\n  const getRandomNumber = (min: number, max: number) => {\n    const minCeiled = Math.ceil(min);\n    const maxFloored = Math.floor(max);\n    return Math.floor(Math.random() * (maxFloored - minCeiled) + minCeiled); // The maximum is exclusive and the minimum is inclusive\n  };\n  let elementsToSkip = getRandomNumber(0, 100);\n\n  const existingBaseAssets = await cvg.protocol().getBaseAssets();\n  const existing = existingBaseAssets\n    .map((el) => el.index)\n    .sort((a, b) => a - b);\n\n  let nextExistingIndex = 0;\n  for (let i = 0; i < 2 ** 16; i++) {\n    const nextExisting =\n      nextExistingIndex < existing.length ? existing[nextExistingIndex] : null;\n    if (i === nextExisting) {\n      nextExistingIndex++;\n    } else if (elementsToSkip > 0) {\n      elementsToSkip--;\n    } else {\n      return i;\n    }\n  }\n\n  throw new Error('Failed to find a vacant base asset index');\n};\n"],"names":["findVacantBaseAssetIndex","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","cvg","getRandomNumber","elementsToSkip","existingBaseAssets","existing","nextExistingIndex","i","nextExisting","wrap","_callee$","_context","prev","next","baseAssetsCache","clear","min","max","minCeiled","Math","ceil","maxFloored","floor","random","protocol","getBaseAssets","sent","map","el","index","sort","a","b","pow","length","abrupt","Error","stop","_x","apply","arguments"],"mappings":"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"}