11import { constants } from "ethers" ;
22import { task , types } from "hardhat/config" ;
3- import { Address , parseEther } from "viem" ;
3+ import { Address , parseEther , encodeAbiParameters } from "viem" ;
44
55export default task ( "optimized-vault:add" )
66 . addParam ( "vaultAddress" , "Address of the vault to add" , undefined , types . string )
@@ -47,23 +47,25 @@ task("optimized-vault:deploy")
4747
4848 const asset = await viem . getContractAt ( "IERC20MetadataUpgradeable" , assetAddress ) ;
4949 const symbol = await asset . read . symbol ( ) ;
50- const optimizedVaultDep = await deployments . deploy ( `OptimizedAPRVault_${ symbol } _${ assetAddress } ` , {
51- contract : "OptimizedAPRVaultBase" ,
52- from : deployer ,
53- log : true ,
54- waitConfirmations : 1 ,
55- args : [ ]
56- } ) ;
57- if ( optimizedVaultDep . transactionHash ) {
58- await publicClient . waitForTransactionReceipt ( { hash : optimizedVaultDep . transactionHash as Address } ) ;
59- }
60- console . log ( "OptimizedAPRVault: " , optimizedVaultDep . address ) ;
61-
62- const fees = {
63- deposit : 0 ,
64- withdrawal : 0 ,
65- management : 0 ,
66- performance : parseEther ( "0.05" ) // 1e18 == 100%, 5e16 = 5%
50+ // const optimizedVaultDep = await deployments.deploy(`OptimizedAPRVault_${symbol}_${assetAddress}`, {
51+ // contract: "OptimizedAPRVaultBase",
52+ // from: deployer,
53+ // log: true,
54+ // waitConfirmations: 1,
55+ // args: []
56+ // });
57+ // if (optimizedVaultDep.transactionHash) {
58+ // await publicClient.waitForTransactionReceipt({ hash: optimizedVaultDep.transactionHash as Address });
59+ // }
60+ // console.log("OptimizedAPRVault: ", optimizedVaultDep.address);
61+
62+ type Fee = { deposit : bigint ; withdrawal : bigint ; management : bigint ; performance : bigint } ;
63+
64+ const fees : Fee = {
65+ deposit : BigInt ( 0 ) ,
66+ withdrawal : BigInt ( 0 ) ,
67+ management : BigInt ( 0 ) ,
68+ performance : BigInt ( parseEther ( "0.05" ) . toString ( ) ) , // Ensure parseEther outputs BigInt
6769 } ;
6870
6971 // start with an even allocations distribution
@@ -84,11 +86,11 @@ task("optimized-vault:deploy")
8486 if ( remainder > BigInt ( 0 ) ) {
8587 adapters [ adapters . length - 1 ] . allocation = adapters [ adapters . length - 1 ] . allocation + remainder ;
8688 }
87-
88- const tenAdapters = adapters . concat (
89+ type Adapter = { adapter : string ; allocation : bigint } ;
90+ const tenAdapters : Adapter [ ] = adapters . concat (
8991 new Array ( 10 - adapters . length ) . fill ( {
9092 adapter : constants . AddressZero ,
91- allocation : 0
93+ allocation : BigInt ( 0 )
9294 } )
9395 ) ;
9496 const flywheelLogic = await deployments . deploy ( "IonicFlywheel_Implementation" , {
@@ -103,29 +105,40 @@ task("optimized-vault:deploy")
103105 "OptimizedVaultsRegistry" ,
104106 ( await deployments . get ( "OptimizedVaultsRegistry" ) ) . address as Address
105107 ) ;
106- const vaultFirstExtDep = await deployments . deploy ( "OptimizedAPRVaultFirstExtension" , {
107- from : deployer ,
108- log : true ,
109- waitConfirmations : 1 ,
110- args : [ ]
111- } ) ;
112- const vaultSecondExtDep = await deployments . deploy ( "OptimizedAPRVaultSecondExtension" , {
113- from : deployer ,
114- log : true ,
115- waitConfirmations : 1 ,
116- args : [ ]
117- } ) ;
118- const values = [
108+ // const vaultFirstExtDep = await deployments.deploy("OptimizedAPRVaultFirstExtension", {
109+ // from: deployer,
110+ // log: true,
111+ // waitConfirmations: 1,
112+ // args: []
113+ // });
114+ // const vaultSecondExtDep = await deployments.deploy("OptimizedAPRVaultSecondExtension", {
115+ // from: deployer,
116+ // log: true,
117+ // waitConfirmations: 1,
118+ // args: []
119+ // });
120+ const values : [
121+ string ,
122+ Adapter [ ] , // Matches "tuple(address adapter, uint64 allocation)[10]"
123+ number , // Matches "uint8"
124+ Fee , // Matches "tuple(uint64, ...)"
125+ string , // Matches "address"
126+ bigint , // Matches "uint256"
127+ string , // Matches "address"
128+ string // Matches "address"
129+ ] = [
119130 assetAddress ,
120131 tenAdapters , // initial adapters
121132 adapters . length , // adapters count
122133 fees ,
123134 deployer , // fee recipient
124- constants . MaxUint256 , // deposit limit
135+ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn , // deposit limit
125136 registry . address ,
126137 flywheelLogic . address
127138 ] ;
128- const initData = new viem . utils . AbiCoder ( ) . encode (
139+ console . log ( values ) ;
140+
141+ const initData = encodeAbiParameters (
129142 [
130143 "address" ,
131144 "tuple(address adapter, uint64 allocation)[10]" ,
@@ -141,10 +154,9 @@ task("optimized-vault:deploy")
141154
142155 console . log ( `initializing with values ${ JSON . stringify ( values ) } ` ) ;
143156
144- const optimizedVault = await viem . getContractAt ( "OptimizedAPRVaultBase" , optimizedVaultDep . address , deployer ) ;
157+ const optimizedVault = await viem . getContractAt ( "OptimizedAPRVaultBase" , optimizedVaultDep . address as Address ) ;
145158
146- const tx = await optimizedVault . initialize ( [ vaultFirstExtDep . address , vaultSecondExtDep . address ] , initData ) ;
147- await tx . wait ( ) ;
159+ const tx = await optimizedVault . write . initialize ( [ vaultFirstExtDep . address , vaultSecondExtDep . address ] , initData ) ;
148160 console . log ( `initialized the vault at ${ optimizedVault . address } ` ) ;
149161
150162 await run ( "optimized-vault:add" , {
0 commit comments