Files
smom-dbis-138/script/deploy/WireDBISRailPostDeploy.s.sol

90 lines
3.1 KiB
Solidity
Raw Normal View History

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "forge-std/Script.sol";
import "../../contracts/dbis/DBIS_ParticipantRegistry.sol";
import "../../contracts/dbis/DBIS_GRU_MintController.sol";
import "../../contracts/dbis/StablecoinReferenceRegistry.sol";
/**
* @title WireDBISRailPostDeploy
* @notice Post-deploy wiring: stablecoin registry, optional GRU token, seed participants.
* @dev Env: PRIVATE_KEY; contract addresses from deploy report or env DBIS_* vars.
*/
contract WireDBISRailPostDeploy is Script {
function run() external {
uint256 pk = vm.envUint("PRIVATE_KEY");
address admin = vm.envOr("ADMIN_ADDRESS", vm.addr(pk));
address stableRegAddr = vm.envAddress("DBIS_STABLECOIN_REGISTRY");
address mintCtrlAddr = vm.envAddress("DBIS_GRU_MINT_CONTROLLER");
address participantRegAddr = vm.envAddress("DBIS_PARTICIPANT_REGISTRY");
StablecoinReferenceRegistry stableReg = StablecoinReferenceRegistry(stableRegAddr);
DBIS_GRU_MintController mintController = DBIS_GRU_MintController(mintCtrlAddr);
DBIS_ParticipantRegistry participantReg = DBIS_ParticipantRegistry(participantRegAddr);
vm.startBroadcast(pk);
_registerStablecoin(
stableReg,
vm.envAddress("CUSDT_ADDRESS"),
"cUSDT",
admin
);
_registerStablecoin(
stableReg,
vm.envAddress("CUSDC_ADDRESS"),
"cUSDC",
admin
);
address gruToken = vm.envOr("DBIS_GRU_MINTABLE_TOKEN", address(0));
if (gruToken != address(0)) {
mintController.setGruToken(gruToken);
}
bytes32 participantId = keccak256("OMNL-OPERATOR");
DBIS_ParticipantRegistry.Participant memory existing = participantReg.getParticipant(participantId);
if (existing.participantId == bytes32(0)) {
address[] memory wallets = new address[](1);
wallets[0] = admin;
bytes32[] memory tags = new bytes32[](0);
participantReg.registerParticipant(
DBIS_ParticipantRegistry.Participant({
participantId: participantId,
legalName: "OMNL Fineract Operator",
jurisdiction: "MULTI",
entityType: DBIS_ParticipantRegistry.EntityType.OPERATOR,
status: DBIS_ParticipantRegistry.Status.ACTIVE,
policyTags: tags,
operationalWallets: wallets
})
);
}
vm.stopBroadcast();
}
function _registerStablecoin(
StablecoinReferenceRegistry reg,
address token,
string memory symbol,
address pauseAuthority
) private {
if (token == address(0)) return;
StablecoinReferenceRegistry.StablecoinEntry memory existing = reg.getEntry(token);
if (existing.exists) return;
reg.register(
token,
symbol,
"DBIS",
"compliant_stable",
"omnl_redeem",
"EXPLORER_TOKEN_LIST_CROSSCHECK",
1,
pauseAuthority
);
}
}