-
Notifications
You must be signed in to change notification settings - Fork 395
Expand file tree
/
Copy pathAggregationModePaymentServiceDeployer.s.sol
More file actions
51 lines (41 loc) · 2.28 KB
/
AggregationModePaymentServiceDeployer.s.sol
File metadata and controls
51 lines (41 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
pragma solidity ^0.8.12;
import {AggregationModePaymentService} from "../../src/core/AggregationModePaymentService.sol";
import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
import "forge-std/Script.sol";
import "forge-std/StdJson.sol";
contract AggregationModePaymentServiceDeployer is Script {
function run(string memory configPath, string memory outputPath) external returns (address, address) {
string memory configData = vm.readFile(configPath);
address owner = stdJson.readAddress(configData, ".permissions.paymentServiceOwner");
address admin = stdJson.readAddress(configData, ".permissions.paymentServiceAdmin");
address recipient = stdJson.readAddress(configData, ".permissions.recipient");
uint256 amountToPay = stdJson.readUint(configData, ".amounts.amountToPayInWei");
uint256 paymentExpirationTimeSeconds = stdJson.readUint(configData, ".amounts.paymentExpirationTimeSeconds");
uint256 subscriptionLimit = stdJson.readUint(configData, ".amounts.subscriptionLimit");
uint256 maxSubscriptionTimeAhead = stdJson.readUint(configData, ".amounts.maxSubscriptionTimeAhead");
vm.startBroadcast();
AggregationModePaymentService implementation = new AggregationModePaymentService();
ERC1967Proxy proxy = new ERC1967Proxy(
address(implementation),
abi.encodeWithSignature(
"initialize(address,address,address,uint256,uint256,uint256,uint256)",
owner,
admin,
recipient,
amountToPay,
paymentExpirationTimeSeconds,
subscriptionLimit,
maxSubscriptionTimeAhead
)
);
vm.stopBroadcast();
string memory addresses = "addresses";
vm.serializeAddress(addresses, "aggregationModePaymentService", address(proxy));
string memory addressesStr =
vm.serializeAddress(addresses, "aggregationModePaymentServiceImplementation", address(implementation));
string memory parentObject = "parent";
string memory finalJson = vm.serializeString(parentObject, "addresses", addressesStr);
vm.writeJson(finalJson, outputPath);
return (address(proxy), address(implementation));
}
}