// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import {Script, console} from "forge-std/Script.sol"; import {CCIPSender} from "../contracts/ccip/CCIPSender.sol"; /** * @title DeployCCIPSender * @notice Deploy CCIPSender contract for cross-chain messaging */ contract DeployCCIPSender is Script { function run() external { uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); address deployer = vm.addr(deployerPrivateKey); // Load environment variables address ccipRouter = vm.envAddress("CCIP_ROUTER_ADDRESS"); address oracleAggregator = vm.envAddress("ORACLE_AGGREGATOR_ADDRESS"); address feeToken = vm.envOr("LINK_TOKEN_ADDRESS", address(0)); // Use LINK if available, else native ETH console.log("Deploying CCIPSender with deployer:", vm.toString(deployer)); console.log("CCIP Router:", vm.toString(ccipRouter)); console.log("Oracle Aggregator:", vm.toString(oracleAggregator)); console.log("Fee Token:", vm.toString(feeToken)); vm.startBroadcast(deployerPrivateKey); CCIPSender sender = new CCIPSender(ccipRouter, oracleAggregator, feeToken); console.log("CCIPSender deployed at:", vm.toString(address(sender))); vm.stopBroadcast(); console.log("\n=== Deployment Summary ==="); console.log("CCIPSender:", vm.toString(address(sender))); console.log("CCIP Router:", vm.toString(ccipRouter)); } }