@@ -4,6 +4,7 @@ import type { SkybridgeParams, SkybridgeStatus } from '../common-params';
44import type { SkybridgeResource } from '../resources' ;
55import { fromApiCoin , SkybridgeCoin } from '../coins' ;
66import { SkybridgeBridge } from '../bridges' ;
7+ import { estimateSwapRewards } from '../generic-rewards' ;
78
89type ServerReturnType < R extends SkybridgeResource , M extends SkybridgeMode > = {
910 items : Array <
@@ -41,12 +42,14 @@ type ReturnType<R extends SkybridgeResource, M extends SkybridgeMode> = Pick<
4142 | 'feeCurrency'
4243 | 'addressSending'
4344 | 'isSkypoolsSwap'
45+ | 'rebalanceRewards'
4446> & {
4547 txDepositId : SkybridgeParams < R , M > [ 'txDepositId' ] | null ;
4648 txReceivingId : SkybridgeParams < R , M > [ 'txReceivingId' ] | null ;
4749} ;
4850
4951const bridgeCache = new Map < string , SkybridgeBridge > ( ) ;
52+ const rebalanceRewardsCache = new Map < string , string > ( ) ;
5053
5154export const getDetails = async < R extends SkybridgeResource , M extends SkybridgeMode > ( {
5255 resource,
@@ -109,6 +112,22 @@ export const getDetails = async <R extends SkybridgeResource, M extends Skybridg
109112 throw new Error ( `"${ hash } " is not a withdrawal, it is a swap.` ) ;
110113 }
111114
115+ const rebalanceRewards : string = await ( async ( ) => {
116+ const cache = rebalanceRewardsCache . get ( hash ) ;
117+ if ( cache ) return cache ;
118+
119+ const swapRewardsResult = await estimateSwapRewards ( {
120+ context,
121+ amountDesired : result . data . amountIn ,
122+ currencyDeposit : fromApiCoin ( { bridge : result . bridge , coin : result . data . currencyIn as any } ) ,
123+ currencyReceiving : fromApiCoin ( { bridge : result . bridge , coin : result . data . currencyOut as any } ) ,
124+ } ) ;
125+
126+ rebalanceRewardsCache . set ( hash , swapRewardsResult . amountReceiving ) ;
127+ return swapRewardsResult . amountReceiving ;
128+ } ) ( ) ;
129+
130+
112131 return ( {
113132 addressReceiving : result . data . addressOut ,
114133 addressDeposit : result . data . addressDeposit ,
@@ -128,6 +147,7 @@ export const getDetails = async <R extends SkybridgeResource, M extends Skybridg
128147 coin : ( result . data . feeCurrency as any ) || null ,
129148 } ) ,
130149 feeTotal : result . data . fee ,
150+ rebalanceRewards,
131151 isSkypoolsSwap : resource === 'swap' && result . data . skypools === true ,
132152 } as unknown ) as ReturnType < R , M > ;
133153} ;
0 commit comments