// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import {Script, console} from "forge-std/Script.sol"; import {AtomicCwUsdcUsdcPurchase} from "../../contracts/x402/AtomicCwUsdcUsdcPurchase.sol"; contract DeployAtomicCwUsdcUsdcPurchase is Script { address internal constant POLYGON_CWUSDC_V2 = 0x7476a64B37732698b9f729fdB373a7B65e9677e9; address internal constant POLYGON_USDC = 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359; function run() external returns (AtomicCwUsdcUsdcPurchase purchase) { uint256 pk = vm.envUint("PRIVATE_KEY"); address deployer = vm.addr(pk); address treasury = vm.envOr("X402_POLYGON_ATOMIC_TREASURY", vm.envOr("SERVER_WALLET_ADDRESS", deployer)); address owner = vm.envOr("X402_POLYGON_ATOMIC_OWNER", deployer); console.log("Deployer:", deployer); console.log("cWUSDC_V2:", POLYGON_CWUSDC_V2); console.log("USDC:", POLYGON_USDC); console.log("Treasury:", treasury); console.log("Owner:", owner); vm.startBroadcast(pk); purchase = new AtomicCwUsdcUsdcPurchase(POLYGON_CWUSDC_V2, POLYGON_USDC, treasury, owner); vm.stopBroadcast(); console.log("AtomicCwUsdcUsdcPurchase:", address(purchase)); console.log("Contract treasury:", purchase.treasury()); } }