// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.19;

import { DeployBase } from "./DeployBase.sol";

/**
 * @title DeployBaseMainnet
 * @notice Deployment script for Base mainnet
 * @dev Run with: forge script script/DeployBaseMainnet.sol --rpc-url $BASE_RPC --broadcast --verify
 * @dev IMPORTANT: Review all parameters carefully before mainnet deployment
 */
contract DeployBaseMainnet is DeployBase {
    constructor() {
        // Base mainnet configuration
        //
        // feeDest — production fee-destination (a team-controlled contract on Base mainnet).
        // This address has contract bytecode on Base mainnet, so
        // LiquidityManager.setFeeDestination() will set feeDestinationLocked=true
        // on the first call (see LiquidityManager.sol line 154). That is the
        // intended production path — once set to a contract, changes are locked.
        //
        // NOTE: FitnessEvaluator.t.sol intentionally uses a *different* FEE_DEST
        // (0x8A91...9383) because on a mainnet fork the locking behaviour breaks
        // snapshot/revert test cycles.  The test address is NOT a production value.
        // See FitnessEvaluator.t.sol:146-150 for the full rationale.
        feeDest = 0xf6a3eef9088A255c32b6aD2025f83E57291D9011;

        weth = 0x4200000000000000000000000000000000000006; // WETH on Base
        v3Factory = 0x33128a8fC17869897dcE68Ed026d694621f6FDfD; // Uniswap V3 Factory on Base

        // Deploy fresh Optimizer (UUPS proxy)
        optimizer = address(0);
    }
}
