{"sources":{"BoostClaim.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\n/// @title BoostClaim (BOOST) — ERC-20 on BSC with a staircase sale.\n/// 1,000 shares of 1,000,000 BOOST each (1B total supply, locked in the\n/// contract). Two permit-gated free lanes (Agent ID 100 / verified-X 100),\n/// 800 paid shares whose price climbs +10% of base every 10 shares\n/// distributed across ALL paths. Referral bonus: 1 free share per 10 paid\n/// shares routed through a referrer, drawn from the paid pool.\n/// Waitlist phase: Agent ID wallets may register() for free until\n/// earlyStart; registered wallets enter 30 minutes before the public sale.\n/// No admin functions. Sale proceeds go straight to the treasury.\ninterface IAgentRegistry {\n    function balanceOf(address account) external view returns (uint256);\n}\n\ncontract BoostClaim {\n    string public constant name = \"BoostClaim\";\n    string public constant symbol = \"BOOST\";\n    uint8 public constant decimals = 18;\n\n    uint256 public constant TOTAL_SHARES = 1000;\n    uint256 public constant SHARE = 1_000_000 * 10 ** 18; // BOOST per share\n    uint256 public constant TOTAL_SUPPLY = 1_000_000_000 * 10 ** 18;\n    uint256 public constant MAX_PER_TX = 20;\n\n    address public immutable registry;\n    address public immutable treasury;\n    address public immutable gateSigner;\n    uint256 public immutable agentCap;\n    uint256 public immutable xCap;\n    uint256 public immutable paidCap;\n    uint256 public immutable basePriceWei;\n    uint256 public immutable stepUpWei;\n    uint256 public immutable priceCapWei;\n    uint256 public immutable earlyStart;\n    uint256 public immutable saleStart;\n    uint256 public immutable saleEnd;\n\n    // ---- waitlist state ----\n    mapping(address => bool) public registered;\n    uint256 public registeredCount;\n\n    // ---- sale state ----\n    uint256 public totalOut; // shares distributed, all paths\n    uint256 public agentFreeUsed;\n    uint256 public xFreeUsed;\n    uint256 public paidSold;\n    uint256 public referralMintedTotal;\n\n    mapping(address => bool) public agentClaimed;\n    mapping(address => bool) public xClaimed;\n    mapping(bytes32 => bool) public handleUsed;\n    mapping(address => uint256) public referralUnits;   // paid shares bought via this referrer\n    mapping(address => uint256) public referralMinted;  // reward shares already minted\n\n    // ---- ERC-20 state ----\n    mapping(address => uint256) private _balances;\n    mapping(address => mapping(address => uint256)) private _allowances;\n\n    // ---- EIP-712 ----\n    bytes32 private immutable _domainSeparator;\n    bytes32 private constant CLAIM_TYPEHASH =\n        keccak256(\"Claim(address wallet,uint8 lane,bytes32 handle,uint256 deadline)\");\n\n    bool private _lock;\n    modifier lock() {\n        require(!_lock, \"reentrant\");\n        _lock = true;\n        _;\n        _lock = false;\n    }\n\n    event Transfer(address indexed from, address indexed to, uint256 value);\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n    event Registered(address indexed wallet);\n    event Claimed(address indexed wallet, uint8 lane);\n    event Bought(address indexed wallet, uint256 qty, address referrer, uint256 costWei);\n    event ReferralReward(address indexed referrer, uint256 totalRewarded);\n\n    constructor(\n        address registry_,\n        address treasury_,\n        address gateSigner_,\n        uint256 agentCap_,\n        uint256 xCap_,\n        uint256 paidCap_,\n        uint256 basePriceWei_,\n        uint256 stepUpWei_,\n        uint256 priceCapWei_,\n        uint256 earlyStart_,\n        uint256 saleStart_,\n        uint256 saleEnd_\n    ) {\n        require(registry_ != address(0) && treasury_ != address(0) && gateSigner_ != address(0), \"zero addr\");\n        require(earlyStart_ < saleStart_ && saleStart_ < saleEnd_, \"bad window\");\n        require(agentCap_ + xCap_ + paidCap_ <= TOTAL_SHARES, \"caps exceed supply\");\n        require(basePriceWei_ > 0 && priceCapWei_ >= basePriceWei_, \"bad prices\");\n        registry = registry_;\n        treasury = treasury_;\n        gateSigner = gateSigner_;\n        agentCap = agentCap_;\n        xCap = xCap_;\n        paidCap = paidCap_;\n        basePriceWei = basePriceWei_;\n        stepUpWei = stepUpWei_;\n        priceCapWei = priceCapWei_;\n        earlyStart = earlyStart_;\n        saleStart = saleStart_;\n        saleEnd = saleEnd_;\n        _balances[address(this)] = TOTAL_SUPPLY;\n        emit Transfer(address(0), address(this), TOTAL_SUPPLY);\n        _domainSeparator = keccak256(abi.encode(\n            keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n            keccak256(bytes(\"BoostClaim\")),\n            keccak256(bytes(\"1\")),\n            block.chainid,\n            address(this)\n        ));\n    }\n\n    receive() external payable {\n        (bool ok, ) = treasury.call{value: msg.value}(\"\");\n        require(ok, \"forward failed\");\n    }\n\n    // ================= views =================\n    function totalSupply() external pure returns (uint256) {\n        return TOTAL_SUPPLY;\n    }\n\n    function balanceOf(address w) public view returns (uint256) {\n        return _balances[w];\n    }\n\n    function sharesOf(address w) external view returns (uint256) {\n        return _balances[w] / SHARE;\n    }\n\n    function saleOpen() public view returns (bool) {\n        return block.timestamp >= earlyStart && block.timestamp < saleEnd;\n    }\n\n    function publicOpen() public view returns (bool) {\n        return block.timestamp >= saleStart && block.timestamp < saleEnd;\n    }\n\n    /// Access gate: nothing before earlyStart; between earlyStart and\n    /// saleStart only waitlist-registered wallets; from saleStart everyone.\n    function _checkAccess() internal view {\n        uint256 t = block.timestamp;\n        require(t >= earlyStart && t < saleEnd, \"sale closed\");\n        if (t < saleStart) {\n            require(registered[msg.sender], \"waitlist only\");\n        }\n    }\n\n    // ================= waitlist =================\n    /// Free, Agent ID holders only, once per wallet. Open from deployment\n    /// until earlyStart; registered wallets board 30 minutes early.\n    function register() external {\n        require(block.timestamp < earlyStart, \"registration closed\");\n        require(!registered[msg.sender], \"already registered\");\n        require(IAgentRegistry(registry).balanceOf(msg.sender) > 0, \"no agent id\");\n        registered[msg.sender] = true;\n        registeredCount++;\n        emit Registered(msg.sender);\n    }\n\n    /// Price of the share distributed at position `outCount` (0-based).\n    function priceAt(uint256 outCount) public view returns (uint256) {\n        uint256 p = basePriceWei + stepUpWei * (outCount / 10);\n        return p > priceCapWei ? priceCapWei : p;\n    }\n\n    function priceNow() public view returns (uint256) {\n        return priceAt(totalOut);\n    }\n\n    function currentStep() public view returns (uint256) {\n        return totalOut / 10;\n    }\n\n    /// Total cost in wei of buying `n` shares right now, priced per unit.\n    function quote(uint256 n) public view returns (uint256 total) {\n        for (uint256 i = 0; i < n; i++) {\n            total += priceAt(totalOut + i);\n        }\n    }\n\n    function status() external view returns (\n        uint256 totalOut_, uint256 agentUsed_, uint256 xUsed_,\n        uint256 paidSold_, uint256 referralMinted_, uint256 step_,\n        uint256 priceWei_, uint256 endTime_, uint256 registeredCount_,\n        uint256 earlyStart_\n    ) {\n        return (totalOut, agentFreeUsed, xFreeUsed, paidSold,\n                referralMintedTotal, totalOut / 10, priceNow(), saleEnd,\n                registeredCount, earlyStart);\n    }\n\n    function walletInfo(address w) external view returns (bool agentUsed, bool xUsed, uint256 boostBalance) {\n        return (agentClaimed[w], xClaimed[w], _balances[w]);\n    }\n\n    // ================= free lanes =================\n    function _verifyPermit(uint8 lane, bytes32 handle, uint256 deadline, bytes calldata sig) internal view {\n        require(block.timestamp <= deadline, \"permit expired\");\n        bytes32 digest = keccak256(abi.encodePacked(\n            \"\\x19\\x01\", _domainSeparator,\n            keccak256(abi.encode(CLAIM_TYPEHASH, msg.sender, lane, handle, deadline))\n        ));\n        require(sig.length == 65, \"bad sig\");\n        bytes32 r; bytes32 s; uint8 v;\n        assembly {\n            r := calldataload(sig.offset)\n            s := calldataload(add(sig.offset, 32))\n            v := byte(0, calldataload(add(sig.offset, 64)))\n        }\n        address signer = ecrecover(digest, v, r, s);\n        require(signer != address(0) && signer == gateSigner, \"bad permit\");\n    }\n\n    function claimAgent(bytes32 handle, uint256 deadline, bytes calldata sig) external lock {\n        _checkAccess();\n        require(agentFreeUsed < agentCap, \"agent quota gone\");\n        require(!agentClaimed[msg.sender], \"agent free used\");\n        require(!handleUsed[handle], \"handle used\");\n        require(IAgentRegistry(registry).balanceOf(msg.sender) > 0, \"no agent id\");\n        _verifyPermit(1, handle, deadline, sig);\n        agentClaimed[msg.sender] = true;\n        handleUsed[handle] = true;\n        agentFreeUsed++;\n        _distribute(msg.sender, 1);\n        emit Claimed(msg.sender, 1);\n    }\n\n    function claimX(bytes32 handle, uint256 deadline, bytes calldata sig) external lock {\n        _checkAccess();\n        require(xFreeUsed < xCap, \"x quota gone\");\n        require(!xClaimed[msg.sender], \"x free used\");\n        require(!handleUsed[handle], \"handle used\");\n        _verifyPermit(2, handle, deadline, sig);\n        xClaimed[msg.sender] = true;\n        handleUsed[handle] = true;\n        xFreeUsed++;\n        _distribute(msg.sender, 1);\n        emit Claimed(msg.sender, 2);\n    }\n\n    // ================= paid + referral =================\n    function buy(uint256 n, address referrer) external payable lock {\n        _checkAccess();\n        require(n >= 1 && n <= MAX_PER_TX, \"bad qty\");\n        require(paidSold + referralMintedTotal + n <= paidCap, \"paid pool gone\");\n        uint256 cost = quote(n);\n        require(msg.value >= cost, \"underpaid\");\n        paidSold += n;\n        _distribute(msg.sender, n);\n        emit Bought(msg.sender, n, referrer, cost);\n        if (referrer != address(0) && referrer != msg.sender) {\n            referralUnits[referrer] += n;\n            uint256 due = referralUnits[referrer] / 10 - referralMinted[referrer];\n            while (due > 0) {\n                if (paidSold + referralMintedTotal >= paidCap) break;\n                if (totalOut >= TOTAL_SHARES) break;\n                referralMinted[referrer]++;\n                referralMintedTotal++;\n                _distribute(referrer, 1);\n                emit ReferralReward(referrer, referralMinted[referrer]);\n                due--;\n            }\n        }\n        (bool ok, ) = treasury.call{value: cost}(\"\");\n        require(ok, \"treasury failed\");\n        if (msg.value > cost) {\n            (bool ok2, ) = msg.sender.call{value: msg.value - cost}(\"\");\n            require(ok2, \"refund failed\");\n        }\n    }\n\n    // ================= distribution =================\n    function _distribute(address to, uint256 shares) internal {\n        totalOut += shares;\n        require(totalOut <= TOTAL_SHARES, \"sold out\");\n        uint256 amount = shares * SHARE;\n        _balances[address(this)] -= amount;\n        _balances[to] += amount;\n        emit Transfer(address(this), to, amount);\n    }\n\n    // ================= ERC-20 =================\n    function allowance(address owner, address spender) external view returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    function approve(address spender, uint256 amount) external returns (bool) {\n        _allowances[msg.sender][spender] = amount;\n        emit Approval(msg.sender, spender, amount);\n        return true;\n    }\n\n    function transfer(address to, uint256 amount) external returns (bool) {\n        _transfer(msg.sender, to, amount);\n        return true;\n    }\n\n    function transferFrom(address from, address to, uint256 amount) external returns (bool) {\n        uint256 allowed = _allowances[from][msg.sender];\n        require(allowed >= amount, \"allowance\");\n        if (allowed != type(uint256).max) {\n            _allowances[from][msg.sender] = allowed - amount;\n        }\n        _transfer(from, to, amount);\n        return true;\n    }\n\n    function _transfer(address from, address to, uint256 amount) internal {\n        require(to != address(0), \"zero to\");\n        require(_balances[from] >= amount, \"balance\");\n        _balances[from] -= amount;\n        _balances[to] += amount;\n        emit Transfer(from, to, amount);\n    }\n}\n"}},"abi":[{"type":"constructor","inputs":[{"name":"registry_","type":"address","internalType":"address"},{"name":"treasury_","type":"address","internalType":"address"},{"name":"gateSigner_","type":"address","internalType":"address"},{"name":"agentCap_","type":"uint256","internalType":"uint256"},{"name":"xCap_","type":"uint256","internalType":"uint256"},{"name":"paidCap_","type":"uint256","internalType":"uint256"},{"name":"basePriceWei_","type":"uint256","internalType":"uint256"},{"name":"stepUpWei_","type":"uint256","internalType":"uint256"},{"name":"priceCapWei_","type":"uint256","internalType":"uint256"},{"name":"earlyStart_","type":"uint256","internalType":"uint256"},{"name":"saleStart_","type":"uint256","internalType":"uint256"},{"name":"saleEnd_","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"name":"Approval","type":"event","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Bought","type":"event","inputs":[{"name":"wallet","type":"address","indexed":true,"internalType":"address"},{"name":"qty","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"referrer","type":"address","indexed":false,"internalType":"address"},{"name":"costWei","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Claimed","type":"event","inputs":[{"name":"wallet","type":"address","indexed":true,"internalType":"address"},{"name":"lane","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"name":"ReferralReward","type":"event","inputs":[{"name":"referrer","type":"address","indexed":true,"internalType":"address"},{"name":"totalRewarded","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Registered","type":"event","inputs":[{"name":"wallet","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"Transfer","type":"event","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"MAX_PER_TX","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"SHARE","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"TOTAL_SHARES","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"TOTAL_SUPPLY","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"agentCap","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"agentClaimed","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"agentFreeUsed","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"allowance","type":"function","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"approve","type":"function","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"balanceOf","type":"function","inputs":[{"name":"w","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"basePriceWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"buy","type":"function","inputs":[{"name":"n","type":"uint256","internalType":"uint256"},{"name":"referrer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"name":"claimAgent","type":"function","inputs":[{"name":"handle","type":"bytes32","internalType":"bytes32"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"sig","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"claimX","type":"function","inputs":[{"name":"handle","type":"bytes32","internalType":"bytes32"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"sig","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"currentStep","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"decimals","type":"function","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"name":"earlyStart","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"gateSigner","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"handleUsed","type":"function","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"name","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"paidCap","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"paidSold","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"priceAt","type":"function","inputs":[{"name":"outCount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"priceCapWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"priceNow","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"publicOpen","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"quote","type":"function","inputs":[{"name":"n","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"referralMinted","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"referralMintedTotal","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"referralUnits","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"register","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"registered","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"registeredCount","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"registry","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"saleEnd","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"saleOpen","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"saleStart","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"sharesOf","type":"function","inputs":[{"name":"w","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"status","type":"function","inputs":[],"outputs":[{"name":"totalOut_","type":"uint256","internalType":"uint256"},{"name":"agentUsed_","type":"uint256","internalType":"uint256"},{"name":"xUsed_","type":"uint256","internalType":"uint256"},{"name":"paidSold_","type":"uint256","internalType":"uint256"},{"name":"referralMinted_","type":"uint256","internalType":"uint256"},{"name":"step_","type":"uint256","internalType":"uint256"},{"name":"priceWei_","type":"uint256","internalType":"uint256"},{"name":"endTime_","type":"uint256","internalType":"uint256"},{"name":"registeredCount_","type":"uint256","internalType":"uint256"},{"name":"earlyStart_","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"stepUpWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"symbol","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"totalOut","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalSupply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"name":"transfer","type":"function","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"transferFrom","type":"function","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"name":"treasury","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"walletInfo","type":"function","inputs":[{"name":"w","type":"address","internalType":"address"}],"outputs":[{"name":"agentUsed","type":"bool","internalType":"bool"},{"name":"xUsed","type":"bool","internalType":"bool"},{"name":"boostBalance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"xCap","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"xClaimed","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"xFreeUsed","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"receive","stateMutability":"payable"}],"matchId":"59096774","creationMatch":"exact_match","runtimeMatch":"exact_match","verifiedAt":"2026-11-11T10:32:29Z","match":"exact_match","chainId":"56","address":"0xc6D5961Ab6499Ce214f210e29d36C3e04040770e"}