{"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;AAEO,IAAM,6BAA6B,IAAI,GAAG,GAAS;AAEnD,iBAAiB,aAAiB,cAAkB,gBAAwB;AACjF,SAAO,YAAY,IAAI,YAAY,EAAE,IAAI,cAAc,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,cAAc;AAC5F;AAEO,kBAAkB,aAAiB,cAAkB,gBAAwB;AAClF,SAAO,YAAY,IAAI,YAAY,EAAE,IAAI,cAAc;AACzD;AAEO,oBAAc;AAAA,SACZ,WAAW,QAAY,cAAsB;AAClD,WAAO,QAAQ,QAAQ,cAAc,0BAA0B;AAAA,EACjE;AAAA,SACO,YAAY,QAAY,iBAAyB;AACtD,WAAO,SAAS,QAAQ,iBAAiB,0BAA0B;AAAA,EACrE;AAAA,SACO,QAAQ,QAAY,aAAqB;AAC9C,WAAO,SAAS,QAAQ,aAAa,0BAA0B;AAAA,EACjE;AACF;","names":[]}