@@ -21,21 +21,22 @@ export type V3MigrationSlice = {
2121 selectedMigrationBorrowAssets : Record < string , boolean > ;
2222 migrationServiceInstances : Record < string , V3MigrationHelperService > ;
2323 timestamp : number ;
24+ approvalPermitsForMigrationAssets : Array < Approval > ;
2425 // ACTIONS
2526 generatePermitPayloadForMigrationAsset : (
2627 approval : Approval & {
2728 deadline : string ;
2829 }
2930 ) => Promise < string > ;
30- getApprovePermitsForSelectedAssets : ( ) => Approval [ ] ;
31+ getApprovePermitsForSelectedAssets : ( ) => Promise < Approval [ ] > ;
3132 toggleMigrationSelectedSupplyAsset : ( assetName : string ) => void ;
3233 toggleMigrationSelectedBorrowAsset : ( assetName : string ) => void ;
3334 getMigratorAddress : ( ) => string ;
3435 getMigrationServiceInstance : ( ) => V3MigrationHelperService ;
3536 migrateWithPermits : (
3637 signature : SignatureLike [ ] ,
3738 deadline : BigNumberish
38- ) => EthereumTransactionTypeExtended [ ] ;
39+ ) => Promise < EthereumTransactionTypeExtended [ ] > ;
3940 migrateWithoutPermits : ( ) => Promise < EthereumTransactionTypeExtended [ ] > ;
4041 _testMigration : ( ) => void ;
4142 // migrateSelectedPositions: () => void;
@@ -52,12 +53,14 @@ export const createV3MigrationSlice: StateCreator<
5253 selectedMigrationBorrowAssets : { } ,
5354 migrationServiceInstances : { } ,
5455 timestamp : 0 ,
56+ approvalPermitsForMigrationAssets : [ ] ,
5557 generatePermitPayloadForMigrationAsset : async ( { amount, underlyingAsset, deadline } ) => {
5658 const user = get ( ) . account ;
5759 const { getTokenData } = new ERC20Service ( get ( ) . jsonRpcProvider ( ) ) ;
58- const { name , decimals } = await getTokenData ( underlyingAsset ) ;
59- const convertedAmount = valueToWei ( amount , decimals ) ;
60+
61+ const { name } = await getTokenData ( underlyingAsset ) ;
6062 const chainId = get ( ) . currentChainId ;
63+ console . log ( name , 'name' ) ;
6164
6265 const erc20_2612Service = new ERC20_2612Service ( get ( ) . jsonRpcProvider ( ) ) ;
6366
@@ -68,12 +71,6 @@ export const createV3MigrationSlice: StateCreator<
6871
6972 const typeData = {
7073 types : {
71- EIP712Domain : [
72- { name : 'name' , type : 'string' } ,
73- { name : 'version' , type : 'string' } ,
74- { name : 'chainId' , type : 'uint256' } ,
75- { name : 'verifyingContract' , type : 'address' } ,
76- ] ,
7774 Permit : [
7875 { name : 'owner' , type : 'address' } ,
7976 { name : 'spender' , type : 'address' } ,
@@ -92,7 +89,7 @@ export const createV3MigrationSlice: StateCreator<
9289 message : {
9390 owner : user ,
9491 spender : get ( ) . getMigratorAddress ( ) ,
95- value : convertedAmount ,
92+ value : amount ,
9693 nonce,
9794 deadline,
9895 } ,
@@ -121,19 +118,26 @@ export const createV3MigrationSlice: StateCreator<
121118 } )
122119 ) ;
123120 } ,
124- getApprovePermitsForSelectedAssets : ( ) => {
121+ getApprovePermitsForSelectedAssets : async ( ) => {
125122 const timestamp = dayjs ( ) . unix ( ) ;
126- set ( { timestamp } ) ;
127- return selectedUserReservesForMigration ( get ( ) , timestamp ) . map (
128- ( { reserve, underlyingBalance } ) : Approval => {
129- return {
130- // TODO: should we allow spending of exact ammount of the reserver?
131- amount : underlyingBalance ,
132- underlyingAsset : reserve . aTokenAddress ,
133- permitType : 'MIGRATOR' ,
134- } ;
135- }
123+ const approvalPermitsForMigrationAssets = await Promise . all (
124+ selectedUserReservesForMigration ( get ( ) , timestamp ) . map (
125+ async ( { reserve, underlyingBalance } ) : Promise < Approval > => {
126+ const { getTokenData } = new ERC20Service ( get ( ) . jsonRpcProvider ( ) ) ;
127+ const { name, decimals } = await getTokenData ( reserve . aTokenAddress ) ;
128+ const amount = ( Number ( underlyingBalance ) + 100 ) . toString ( ) ;
129+ const convertedAmount = valueToWei ( amount , decimals ) ;
130+ return {
131+ // TODO: should we allow spending of exact ammount of the reserver?
132+ amount : convertedAmount ,
133+ underlyingAsset : reserve . aTokenAddress ,
134+ permitType : 'MIGRATOR' ,
135+ } ;
136+ }
137+ )
136138 ) ;
139+ set ( { approvalPermitsForMigrationAssets } ) ;
140+ return approvalPermitsForMigrationAssets ;
137141 } ,
138142 migrateWithoutPermits : ( ) => {
139143 const timestamp = dayjs ( ) . unix ( ) ;
@@ -142,12 +146,14 @@ export const createV3MigrationSlice: StateCreator<
142146 aToken : string ;
143147 deadline : number ;
144148 amount : string ;
149+ underlyingAsset : string ;
145150 } [ ] = selectedUserReservesForMigration ( get ( ) , timestamp ) . map (
146- ( { reserve , underlyingBalance } ) => {
151+ ( { underlyingAsset , underlyingBalance, reserve } ) => {
147152 const deadline = Math . floor ( Date . now ( ) / 1000 + 3600 ) ;
148153 return {
149- amount : underlyingBalance ,
154+ amount : constants . MaxUint256 . toString ( ) ,
150155 aToken : reserve . aTokenAddress ,
156+ underlyingAsset : underlyingAsset ,
151157 // TODO: fow how long to approve?
152158 deadline,
153159 } ;
@@ -156,20 +162,26 @@ export const createV3MigrationSlice: StateCreator<
156162 const user = get ( ) . account ;
157163 return get ( ) . getMigrationServiceInstance ( ) . migrateNoBorrow ( { assets, user } ) ;
158164 } ,
159- migrateWithPermits : ( signatures : SignatureLike [ ] , deadline : BigNumberish ) => {
160- const selectedReservers = selectedUserReservesForMigration ( get ( ) , get ( ) . timestamp ) ;
161- const permits = selectedReservers . map ( ( { reserve } , index ) => ( {
162- aToken : reserve . aTokenAddress ,
163- value : constants . MaxUint256 . toString ( ) ,
164- deadline,
165- signedPermit : signatures [ index ] ,
166- } ) ) ;
165+ migrateWithPermits : async ( signatures : SignatureLike [ ] , deadline : BigNumberish ) => {
166+ const permits = await Promise . all (
167+ get ( ) . approvalPermitsForMigrationAssets . map ( async ( { amount, underlyingAsset } , index ) => {
168+ return {
169+ signedPermit : signatures [ index ] ,
170+ deadline,
171+ aToken : underlyingAsset ,
172+ value : amount ,
173+ } ;
174+ } )
175+ ) ;
167176 // branch out into flashloan or migrate no borrow
168177 // move that to separate instance and save cache the Migrator instance
169- console . log ( permits , 'permits' ) ;
170178 const migratorHelperInstance = get ( ) . getMigrationServiceInstance ( ) ;
171179 const user = get ( ) . account ;
172- const assets = permits . map ( ( permit ) => permit . aToken ) ;
180+ const assets = selectedUserReservesForMigration ( get ( ) , get ( ) . timestamp ) . map (
181+ ( reserve ) => reserve . underlyingAsset
182+ ) ;
183+ await get ( ) . _testMigration ( ) ;
184+ console . log ( assets ) ;
173185 return migratorHelperInstance . migrateNoBorrowWithPermits ( {
174186 user,
175187 assets,
@@ -194,8 +206,15 @@ export const createV3MigrationSlice: StateCreator<
194206 return newMigratorInstance ;
195207 } ,
196208 _testMigration : async ( ) => {
197- const someAddress = await get ( ) . getMigrationServiceInstance ( ) . testDeployment ( ) ;
198- console . log ( someAddress , 'someAddress' ) ;
209+ const currentTimestamp = dayjs ( ) . unix ( ) ;
210+ const selectedReservers = selectedUserReservesForMigration ( get ( ) , currentTimestamp ) ;
211+ const mappedAddresses = await Promise . all (
212+ selectedReservers . map ( ( reserve ) =>
213+ get ( ) . getMigrationServiceInstance ( ) . testDeployment ( reserve . underlyingAsset )
214+ )
215+ ) ;
216+
217+ console . log ( mappedAddresses ) ;
199218 } ,
200219 } ;
201220} ;
0 commit comments