@cobaltx/sdk-v2
Version:
An SDK for building applications on top of CobaltX.
2 lines • 2.23 kB
JavaScript
import r from"bn.js";var f=1e4;function x(e,n,o,d){if(n===void 0)return{amount:e,fee:void 0,expirationTime:void 0};let s=o.epoch<n.newerTransferFee.epoch?n.olderTransferFee:n.newerTransferFee,i=new r(s.maximumFee.toString()),u=o.epoch<n.newerTransferFee.epoch?(Number(n.newerTransferFee.epoch)*o.slotsInEpoch-o.absoluteSlot)*400/1e3:void 0;if(d)if(s.transferFeeBasisPoints===f){let a=new r(s.maximumFee.toString());return{amount:e.add(a),fee:a,expirationTime:u}}else{let a=F(e.mul(new r(f)),new r(f-s.transferFeeBasisPoints)),t=new r(s.maximumFee.toString()),m=a.sub(e).gt(t)?e.add(t):a,c=F(m.mul(new r(s.transferFeeBasisPoints)),new r(f)),w=c.gt(i)?i:c;return{amount:m,fee:w,expirationTime:u}}else{let a=F(e.mul(new r(s.transferFeeBasisPoints)),new r(f)),t=a.gt(i)?i:a;return{amount:e,fee:t,expirationTime:u}}}function h(e,n,o,d){if(n===void 0)return{amount:e,fee:void 0,expirationTime:void 0};let s={...n,olderTransferFee:{epoch:BigInt(n.olderTransferFee.epoch),maximumFee:BigInt(n.olderTransferFee.maximumFee),transferFeeBasisPoints:n.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(n.newerTransferFee.epoch),maximumFee:BigInt(n.newerTransferFee.maximumFee),transferFeeBasisPoints:n.newerTransferFee.transferFeeBasisPoints}},i=o.epoch<s.newerTransferFee.epoch?s.olderTransferFee:s.newerTransferFee,u=new r(i.maximumFee.toString()),a=o.epoch<s.newerTransferFee.epoch?(Number(s.newerTransferFee.epoch)*o.slotsInEpoch-o.absoluteSlot)*400/1e3:void 0;if(d)if(i.transferFeeBasisPoints===f){let t=new r(i.maximumFee.toString());return{amount:e.add(t),fee:t,expirationTime:a}}else{let t=F(e.mul(new r(f)),new r(f-i.transferFeeBasisPoints)),m=new r(i.maximumFee.toString()),c=t.sub(e).gt(m)?e.add(m):t,w=F(c.mul(new r(i.transferFeeBasisPoints)),new r(f)),T=w.gt(u)?u:w;return{amount:c,fee:T,expirationTime:a}}else{let t=F(e.mul(new r(i.transferFeeBasisPoints)),new r(f)),m=t.gt(u)?u:t;return{amount:e,fee:m,expirationTime:a}}}function b(e,n){return e===void 0?n:n===void 0?e:Math.min(e,n)}function F(e,n){let{div:o,mod:d}=e.divmod(n);return d.gt(new r(0))?o.add(new r(1)):o}export{F as BNDivCeil,x as getTransferAmountFee,h as getTransferAmountFeeV2,b as minExpirationTime};
//# sourceMappingURL=transfer.mjs.map