{"version":3,"sources":["../../../src/vaults/deposit/utils.ts"],"sourcesContent":["import { DEFAULT_DEPOSIT_SLIPPAGE } from \"../../constants\";\nimport { WAD } from \"../../utils/bigint\";\n\n/**\n * Calculates the minimum amount of tokens to mint based on deposit amount, rate, and slippage\n * @param depositAmount The amount being deposited (in base units)\n * @param rate The current exchange rate between deposit and mint tokens\n * @param vaultTokenDecimals The number of precision decimals of the vault token\n * @param slippage The maximum acceptable slippage as a decimal (e.g., 0.01 for 1%)\n * @returns The minimum amount of tokens that should be minted accounting for slippage in vault token precision decimals\n */\nconst calculateMinimumMint = (\n  depositAmount: bigint, // In deposit token decimals\n  rate: bigint, // In deposit token decimals\n  vaultTokenDecimals: number, // The number of precision decimals of the vault token\n  slippage?: number // In bps (e.g., 50 for 0.5%) = 50 / 10000 = 0.005 = 0.5%\n): bigint => {\n  const slippageValue = slippage ?? DEFAULT_DEPOSIT_SLIPPAGE;\n  // Convert bps to WAD format (multiply by WAD/10000)\n  const slippageAsBigInt = (BigInt(slippageValue) * WAD.bigint) / BigInt(10000);\n\n  // Calculate ideal mint amount without slippage\n  const minimumMint = (depositAmount * WAD.bigint) / rate;\n\n  // Calculate the amount to subtract for slippage tolerance\n  const slippageAmount = (minimumMint * slippageAsBigInt) / WAD.bigint;\n\n  // Return mint amount minus slippage buffer\n  if (vaultTokenDecimals > 18) {\n    return (\n      (minimumMint - slippageAmount) *\n      BigInt(10) ** (BigInt(vaultTokenDecimals) - BigInt(18))\n    );\n  }\n  return (\n    (minimumMint - slippageAmount) /\n    BigInt(10) ** (BigInt(18) - BigInt(vaultTokenDecimals))\n  );\n};\n\nexport { calculateMinimumMint };\n"],"mappings":"AAAA,SAAS,gCAAgC;AACzC,SAAS,WAAW;AAUpB,MAAM,uBAAuB,CAC3B,eACA,MACA,oBACA,aACW;AACX,QAAM,gBAAgB,YAAY;AAElC,QAAM,mBAAoB,OAAO,aAAa,IAAI,IAAI,SAAU,OAAO,GAAK;AAG5E,QAAM,cAAe,gBAAgB,IAAI,SAAU;AAGnD,QAAM,iBAAkB,cAAc,mBAAoB,IAAI;AAG9D,MAAI,qBAAqB,IAAI;AAC3B,YACG,cAAc,kBACf,OAAO,EAAE,MAAM,OAAO,kBAAkB,IAAI,OAAO,EAAE;AAAA,EAEzD;AACA,UACG,cAAc,kBACf,OAAO,EAAE,MAAM,OAAO,EAAE,IAAI,OAAO,kBAAkB;AAEzD;","names":[]}