@@ -112,11 +112,20 @@ func (c FeeCalculator) getFee(taker common.Address) *big.Int {
112112 return new (big.Int ).SetInt64 (Base10000 + resolverFee + integratorFee )
113113}
114114
115+ func (c FeeCalculator ) getWhitelistFee () * big.Int {
116+ resolverFee , integratorFee := c .GetWhitelistFees ()
117+ return new (big.Int ).SetInt64 (Base10000 + resolverFee + integratorFee )
118+ }
119+
115120// GetTakingAmount https://github.com/1inch/limit-order-sdk/blob/1793d32bd36c6cfea909caafbc15e8023a033249/src/limit-order/extensions/fee-taker/fee-calculator.ts#L13
116121func (c FeeCalculator ) GetTakingAmount (taker common.Address , orderTakingAmount * big.Int ) * big.Int {
117122 return util .MulDiv (orderTakingAmount , c .getFee (taker ), big .NewInt (Base10000 ), util .Ceil )
118123}
119124
125+ func (c FeeCalculator ) GetTakingAmountWhitelist (orderTakingAmount * big.Int ) * big.Int {
126+ return util .MulDiv (orderTakingAmount , c .getWhitelistFee (), big .NewInt (Base10000 ), util .Ceil )
127+ }
128+
120129// GetMakingAmount https://github.com/1inch/limit-order-sdk/blob/1793d32bd36c6cfea909caafbc15e8023a033249/src/limit-order/extensions/fee-taker/fee-calculator.ts#L23
121130func (c FeeCalculator ) GetMakingAmount (taker common.Address , orderMakingAmount * big.Int ) * big.Int {
122131 return util .MulDiv (orderMakingAmount , big .NewInt (Base10000 ), c .getFee (taker ), util .Floor )
@@ -134,6 +143,13 @@ func (c FeeCalculator) GetFeesForTaker(taker common.Address) (int64, int64) {
134143 return resolverFee , int64 (c .fees .Integrator .Fee )
135144}
136145
146+ func (c FeeCalculator ) GetWhitelistFees () (int64 , int64 ) {
147+ discountNumerator := Base10000 - c .fees .Resolver .WhitelistDiscount
148+ resolverFee := int64 (discountNumerator ) * int64 (c .fees .Resolver .Fee ) / Base10000
149+
150+ return resolverFee , int64 (c .fees .Integrator .Fee )
151+ }
152+
137153// GetResolverFee which resolver pays to resolver fee receiver
138154func (c FeeCalculator ) GetResolverFee (taker common.Address , orderTakingAmount * big.Int ) * big.Int {
139155 takingAmount := c .GetTakingAmount (taker , orderTakingAmount )
0 commit comments