{"version":3,"sources":["../../../../src/raydium/cpmm/curve/fee.ts"],"sourcesContent":["import BN from \"bn.js\";\n\nexport const FEE_RATE_DENOMINATOR_VALUE = new BN(1_000_000);\n\nexport function ceilDiv(tokenAmount: BN, feeNumerator: BN, feeDenominator: BN): BN {\n  return tokenAmount.mul(feeNumerator).add(feeDenominator).sub(new BN(1)).div(feeDenominator);\n}\n\nexport function floorDiv(tokenAmount: BN, feeNumerator: BN, feeDenominator: BN): BN {\n  return tokenAmount.mul(feeNumerator).div(feeDenominator);\n}\n\nexport class CpmmFee {\n  static tradingFee(amount: BN, tradeFeeRate: BN): BN {\n    return ceilDiv(amount, tradeFeeRate, FEE_RATE_DENOMINATOR_VALUE);\n  }\n  static protocolFee(amount: BN, protocolFeeRate: BN): BN {\n    return floorDiv(amount, protocolFeeRate, FEE_RATE_DENOMINATOR_VALUE);\n  }\n  static fundFee(amount: BN, fundFeeRate: BN): BN {\n    return floorDiv(amount, fundFeeRate, FEE_RATE_DENOMINATOR_VALUE);\n  }\n}\n"],"mappings":"AAAA,qBAEO,GAAM,GAA6B,GAAI,GAAG,GAAS,EAEnD,WAAiB,EAAiB,EAAkB,EAAwB,CACjF,MAAO,GAAY,IAAI,CAAY,EAAE,IAAI,CAAc,EAAE,IAAI,GAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAc,CAC5F,CAEO,WAAkB,EAAiB,EAAkB,EAAwB,CAClF,MAAO,GAAY,IAAI,CAAY,EAAE,IAAI,CAAc,CACzD,CAEO,WAAc,OACZ,YAAW,EAAY,EAAsB,CAClD,MAAO,GAAQ,EAAQ,EAAc,CAA0B,CACjE,OACO,aAAY,EAAY,EAAyB,CACtD,MAAO,GAAS,EAAQ,EAAiB,CAA0B,CACrE,OACO,SAAQ,EAAY,EAAqB,CAC9C,MAAO,GAAS,EAAQ,EAAa,CAA0B,CACjE,CACF","names":[]}