@@ -5,33 +5,47 @@ pragma solidity ^0.8.0;
55import {ScriptUtils} from "./utils/ScriptUtils.s.sol " ;
66
77contract EulerEarnFactoryDeployer is ScriptUtils {
8- function run () public broadcast returns (address eulerEarnfactory ) {
8+ function run () public broadcast returns (address eulerEarnfactory , address eulerEarnPublicAllocator ) {
99 string memory inputScriptFileName = "21_EulerEarnFactory_input.json " ;
1010 string memory outputScriptFileName = "21_EulerEarnFactory_output.json " ;
1111 string memory json = getScriptFile (inputScriptFileName);
1212 address evc = vm.parseJsonAddress (json, ".evc " );
1313 address permit2 = vm.parseJsonAddress (json, ".permit2 " );
1414 address perspective = vm.parseJsonAddress (json, ".perspective " );
1515
16- eulerEarnfactory = execute (evc, permit2, perspective);
16+ ( eulerEarnfactory, eulerEarnPublicAllocator) = execute (evc, permit2, perspective);
1717
1818 string memory object;
1919 object = vm.serializeAddress ("factory " , "eulerEarnfactory " , eulerEarnfactory);
20+ object = vm.serializeAddress ("publicAllocator " , "eulerEarnPublicAllocator " , eulerEarnPublicAllocator);
2021
2122 vm.writeJson (object, string .concat (vm.projectRoot (), "/script/ " , outputScriptFileName));
2223 }
2324
24- function deploy (address evc , address permit2 , address perspective ) public broadcast returns (address factory ) {
25- factory = execute (evc, permit2, perspective);
25+ function deploy (address evc , address permit2 , address perspective )
26+ public
27+ broadcast
28+ returns (address factory , address publicAllocator )
29+ {
30+ (factory, publicAllocator) = execute (evc, permit2, perspective);
2631 }
2732
28- function execute (address evc , address permit2 , address perspective ) public returns (address factory ) {
33+ function execute (address evc , address permit2 , address perspective )
34+ public
35+ returns (address factory , address publicAllocator )
36+ {
2937 bytes memory bytecode = abi.encodePacked (
3038 vm.getCode ("out-euler-earn/EulerEarnFactory.sol/EulerEarnFactory.json " ),
3139 abi.encode (getDeployer (), evc, permit2, perspective)
3240 );
3341 assembly {
3442 factory := create (0 , add (bytecode, 0x20 ), mload (bytecode))
3543 }
44+
45+ bytecode =
46+ abi.encodePacked (vm.getCode ("out-euler-earn/PublicAllocator.sol/PublicAllocator.json " ), abi.encode (evc));
47+ assembly {
48+ publicAllocator := create (0 , add (bytecode, 0x20 ), mload (bytecode))
49+ }
3650 }
3751}
0 commit comments