// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import {Script, console} from "forge-std/Script.sol"; import {DODOPMMProvider} from "../../contracts/liquidity/providers/DODOPMMProvider.sol"; import {DODOPMMIntegration} from "../../contracts/dex/DODOPMMIntegration.sol"; /** * @title RegisterDODOPools * @notice Register existing DODO PMM pools with DODOPMMProvider. * @dev Set DODO_PMM_PROVIDER_ADDRESS, DODO_PMM_INTEGRATION (or DODO_PMM_INTEGRATION_ADDRESS). * Pool addresses: POOL_CUSDTCUSDC, POOL_CUSDTUSDT, POOL_CUSDCUSDC (optional). * Token addresses read from integration if not in env. */ contract RegisterDODOPools is Script { function run() external { uint256 pk = vm.envUint("PRIVATE_KEY"); address providerAddr = vm.envAddress("DODO_PMM_PROVIDER_ADDRESS"); address integrationAddr = vm.envAddress("DODO_PMM_INTEGRATION"); if (integrationAddr == address(0)) integrationAddr = vm.envAddress("DODO_PMM_INTEGRATION_ADDRESS"); require(integrationAddr != address(0), "DODO_PMM_INTEGRATION not set"); DODOPMMIntegration integration = DODOPMMIntegration(integrationAddr); address cusdt = integration.compliantUSDT(); address cusdc = integration.compliantUSDC(); address usdt = integration.officialUSDT(); address usdc = integration.officialUSDC(); address poolCusdtCusdc = vm.envOr("POOL_CUSDTCUSDC", address(0)); address poolCusdtUsdt = vm.envOr("POOL_CUSDTUSDT", address(0)); address poolCusdcUsdc = vm.envOr("POOL_CUSDCUSDC", address(0)); DODOPMMProvider provider = DODOPMMProvider(providerAddr); vm.startBroadcast(pk); if (poolCusdtCusdc != address(0)) { provider.registerPool(cusdt, cusdc, poolCusdtCusdc); console.log("Registered cUSDT/cUSDC pool:", poolCusdtCusdc); } if (poolCusdtUsdt != address(0)) { provider.registerPool(cusdt, usdt, poolCusdtUsdt); console.log("Registered cUSDT/USDT pool:", poolCusdtUsdt); } if (poolCusdcUsdc != address(0)) { provider.registerPool(cusdc, usdc, poolCusdcUsdc); console.log("Registered cUSDC/USDC pool:", poolCusdcUsdc); } vm.stopBroadcast(); } }