{"sources":{"src/MonadGuildBazaar.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\n\ninterface IAgentIdRegistryD2 {\n    function balanceOf(address owner) external view returns (uint256);\n}\n\ninterface IERC165D2 {\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n\ninterface IERC721ReceiverD2 {\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n\n/// @title MonadGuildBazaar (MGBZ)\n/// @notice Autonomous Agent Operative Guild with Built-in Zero-Approval Bazaar,\n///         On-Chain Job Board, Real-Time Payroll Dividends, and Every-5th Bounty Jackpot.\n/// @dev Selector Architecture:\n///      - Free Initiate Quota (360 passes for .ai holders): call freeMint(), claim(), or mint() with 0 BNB.\n///      - Paid Prime Operative (0.0008 BNB): call mint(uint256) (0xa0712d68) or enlistPrime(uint256).\n///        Grants 2x Payroll Shares + triggers 85% of bountyJackpotPool on every 5th paid operative!\ncontract MonadGuildBazaar is IERC165D2 {\n    string public constant name = \"Monad Guild Bazaar\";\n    string public constant symbol = \"MGBZ\";\n\n    address public constant AGENT_ID_REGISTRY = 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F;\n\n    uint256 public constant PRICE = 0.0008 ether;\n    uint256 public constant PRIME_PRICE = 0.0008 ether;\n    uint256 public constant MIN_HIRE_FEE = 0.0002 ether;\n    uint256 public constant MAX_SUPPLY = 5000;\n    uint256 public constant FREE_SUPPLY = 360;\n    uint256 public constant MAX_FREE_SUPPLY = 360;\n    uint256 public constant MAX_PAID_SUPPLY = 4640;\n    uint256 public constant MAX_FREE_PER_WALLET = 1;\n    uint256 public constant MAX_PER_WALLET = 30;\n    uint256 public constant MAX_PER_TX = 15;\n\n    uint256 public constant GUILD_TREASURY_WEI = 0.00044 ether; // 55%\n    uint256 public constant BOUNTY_JACKPOT_WEI = 0.0002 ether;  // 25%\n    uint256 public constant PAYROLL_POOL_WEI = 0.00016 ether;   // 20%\n    uint256 public constant BOUNTY_MILESTONE = 5;\n    uint256 public constant BOUNTY_WIN_BPS = 8500;\n    uint256 public constant TAIL_TIMEOUT = 12 hours;\n    uint256 private constant MAGNITUDE = 1e18;\n\n    address public immutable GUILD_TREASURY;\n    address public immutable PAYEE;\n    address public immutable OWNER;\n\n    uint256 public totalSupply;\n    uint256 public freeMinted;\n    uint256 public paidMinted;\n\n    uint256 public accPayrollPerShare;\n    uint256 public totalPayrollShares;\n    uint256 public totalPayrollDistributed;\n    uint256 public totalPayrollClaimed;\n    uint256 public undistributedPayrollReserve;\n\n    uint256 public bountyJackpotPool;\n    uint256 public totalBountyJackpotPaid;\n    address public lastPrimeBuyer;\n    uint256 public lastPrimeTimestamp;\n\n    uint256 public totalBazaarTrades;\n    uint256 public totalBazaarVolume;\n    uint256 public totalHires;\n    uint256 public totalHireVolume;\n    uint256 public activeListingCount;\n\n    mapping(uint256 => address) private _owners;\n    mapping(address => uint256) private _balances;\n    mapping(uint256 => address) private _tokenApprovals;\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n    mapping(address => uint256) public freeClaimed;\n    mapping(address => uint256) public paidMintedBy;\n    mapping(address => uint256) public holderPayrollShares;\n    mapping(address => int256) private _magnifiedPayrollCorrections;\n    mapping(address => uint256) public withdrawnPayroll;\n\n    mapping(uint256 => bool) public isPrimeOperative;\n    mapping(uint256 => bool) public isVerifiedAgent;\n    mapping(uint256 => uint16) public tokenPayrollShares;\n    mapping(uint256 => uint32) public jobsCompleted;\n    mapping(uint256 => uint256) public listingPrice;\n\n    mapping(address => uint256) public claimablePayout;\n    uint256 public totalEscrowedPayouts;\n\n    uint256 private _locked = 1;\n\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n    event OperativeEnlisted(address indexed member, uint256 indexed tokenId, bool isPrime, uint16 shares);\n    event BountyJackpotTriggered(address indexed winner, uint256 indexed primeIndex, uint256 reward, uint256 nextPool);\n    event OperativeListed(uint256 indexed tokenId, address indexed seller, uint256 price);\n    event OperativeUnlisted(uint256 indexed tokenId, address indexed seller);\n    event OperativePurchased(uint256 indexed tokenId, address indexed seller, address indexed buyer, uint256 price);\n    event OperativeHired(uint256 indexed tokenId, address indexed client, address indexed worker, uint256 fee, string brief);\n    event PayrollClaimed(address indexed member, uint256 amount);\n    event TailBountySwept(address indexed sweeper, uint256 sweeperShare, uint256 treasuryShare);\n    event PayoutEscrowed(address indexed beneficiary, uint256 amount);\n    event PayoutWithdrawn(address indexed beneficiary, address indexed recipient, uint256 amount);\n\n    modifier nonReentrant() {\n        require(_locked == 1, \"MGBZ: reentrant\");\n        _locked = 2;\n        _;\n        _locked = 1;\n    }\n\n    constructor(address _treasury) {\n        require(_treasury != address(0), \"MGBZ: zero treasury\");\n        GUILD_TREASURY = _treasury;\n        PAYEE = _treasury;\n        OWNER = _treasury;\n    }\n\n    function owner() external view returns (address) {\n        return OWNER;\n    }\n\n    function mintPrice() external pure returns (uint256) {\n        return PRICE;\n    }\n\n    function price() external pure returns (uint256) {\n        return PRICE;\n    }\n\n    function totalMinted() external view returns (uint256) {\n        return totalSupply;\n    }\n\n    function mintOpen() external view returns (bool) {\n        return totalSupply < MAX_SUPPLY;\n    }\n\n    function freeRemaining() external view returns (uint256) {\n        return freeMinted >= FREE_SUPPLY ? 0 : FREE_SUPPLY - freeMinted;\n    }\n\n    function primesUntilNextBounty() external view returns (uint256) {\n        uint256 rem = paidMinted % BOUNTY_MILESTONE;\n        return rem == 0 ? BOUNTY_MILESTONE : BOUNTY_MILESTONE - rem;\n    }\n\n    function hasAgentId(address account) public view returns (bool) {\n        return _checkAgentId(account);\n    }\n\n    function canReceiveFree(address account) public view returns (bool) {\n        return freeMinted < FREE_SUPPLY && freeClaimed[account] == 0 && _checkAgentId(account);\n    }\n\n    function quote(address, uint256 qty) external pure returns (uint256) {\n        return qty * PRICE;\n    }\n\n    /// @notice 12-dimension Guild & Bazaar telemetry summary (HIRELINGS-compatible).\n    function stats()\n        external\n        view\n        returns (\n            uint256 minted,\n            uint256 maxSupply_,\n            uint256 freeMinted_,\n            uint256 paidMinted_,\n            uint256 primePrice_,\n            uint256 jackpotPool_,\n            uint256 payrollShares_,\n            uint256 bazaarTrades_,\n            uint256 bazaarVolume_,\n            uint256 hires_,\n            uint256 hireVolume_,\n            uint256 activeListings_\n        )\n    {\n        return (\n            totalSupply,\n            MAX_SUPPLY,\n            freeMinted,\n            paidMinted,\n            PRICE,\n            bountyJackpotPool,\n            totalPayrollShares,\n            totalBazaarTrades,\n            totalBazaarVolume,\n            totalHires,\n            totalHireVolume,\n            activeListingCount\n        );\n    }\n\n    // =========================================================================\n    // Selector-Decoupled Entrypoints\n    // 1. Free-compatible 0-arg routes: freeMint(), claim(), freeClaim(), mint()\n    // 2. Strictly Paid 1-arg routes: mint(uint256) (0xa0712d68), enlistPrime(uint256)\n    // =========================================================================\n\n    function freeMint() external payable nonReentrant {\n        _handleZeroArgEntry(msg.sender);\n    }\n\n    function claim() external payable nonReentrant {\n        _handleZeroArgEntry(msg.sender);\n    }\n\n    function freeClaim() external payable nonReentrant {\n        _handleZeroArgEntry(msg.sender);\n    }\n\n    function mint() external payable nonReentrant {\n        _handleZeroArgEntry(msg.sender);\n    }\n\n    function freeMint(uint256 count) external payable nonReentrant {\n        if (msg.value == 0) {\n            require(count == 1, \"MGBZ: 1 free max\");\n            _enlistFreeInitiate(msg.sender);\n        } else {\n            _enlistPaidPrime(msg.sender, count);\n        }\n    }\n\n    function claim(uint256 count) external payable nonReentrant {\n        if (msg.value == 0) {\n            require(count == 1, \"MGBZ: 1 free max\");\n            _enlistFreeInitiate(msg.sender);\n        } else {\n            _enlistPaidPrime(msg.sender, count);\n        }\n    }\n\n    /// @notice Primary task-card selector (0xa0712d68): Strictly Paid Prime Operative enlistment.\n    function mint(uint256 count) external payable nonReentrant {\n        _enlistPaidPrime(msg.sender, count);\n    }\n\n    function enlistPrime(uint256 count) external payable nonReentrant {\n        _enlistPaidPrime(msg.sender, count);\n    }\n\n    function buyGold(uint256 count) external payable nonReentrant {\n        _enlistPaidPrime(msg.sender, count);\n    }\n\n    function mintTo(address to, uint256 count) external payable nonReentrant {\n        require(to != address(0), \"MGBZ: zero recipient\");\n        if (msg.value == 0 && count == 1) {\n            _enlistFreeInitiate(to);\n        } else {\n            _enlistPaidPrime(to, count);\n        }\n    }\n\n    function _handleZeroArgEntry(address recipient) internal {\n        if (msg.value >= PRICE) {\n            _enlistPaidPrime(recipient, 1);\n        } else {\n            require(msg.value == 0, \"MGBZ: invalid value\");\n            _enlistFreeInitiate(recipient);\n        }\n    }\n\n    function _enlistFreeInitiate(address recipient) internal {\n        require(totalSupply + 1 <= MAX_SUPPLY, \"MGBZ: sold out\");\n        require(freeMinted < FREE_SUPPLY, \"MGBZ: free quota full\");\n        require(freeClaimed[recipient] == 0, \"MGBZ: already claimed\");\n        require(_balances[recipient] + 1 <= MAX_PER_WALLET, \"MGBZ: wallet cap\");\n\n        bool agent = _checkAgentId(recipient) || (recipient != msg.sender && _checkAgentId(msg.sender));\n        require(agent, \"MGBZ: .ai Agent ID required\");\n\n        freeClaimed[recipient] = 1;\n        freeMinted += 1;\n\n        _mintOperative(recipient, false, 0, true);\n    }\n\n    function _enlistPaidPrime(address recipient, uint256 count) internal {\n        require(count > 0 && count <= MAX_PER_TX, \"MGBZ: invalid count\");\n        require(totalSupply + count <= MAX_SUPPLY, \"MGBZ: sold out\");\n        require(paidMinted + count <= MAX_PAID_SUPPLY, \"MGBZ: prime cap full\");\n        require(_balances[recipient] + count <= MAX_PER_WALLET, \"MGBZ: wallet cap\");\n\n        uint256 cost = count * PRICE;\n        require(msg.value >= cost, \"MGBZ: insufficient payment\");\n\n        bool agent = _checkAgentId(recipient) || (recipient != msg.sender && _checkAgentId(msg.sender));\n        uint16 sharesPerToken = agent ? 3 : 2; // Verified .ai agents earn 3x Payroll Shares!\n\n        paidMintedBy[recipient] += count;\n        lastPrimeBuyer = recipient;\n        lastPrimeTimestamp = block.timestamp;\n\n        uint256 guildTreasuryCut = count * GUILD_TREASURY_WEI;\n        uint256 bountyWon = 0;\n\n        for (uint256 i = 0; i < count; i++) {\n            paidMinted += 1;\n\n            _creditPayrollPool(PAYROLL_POOL_WEI);\n            _mintOperative(recipient, true, sharesPerToken, agent);\n\n            bountyJackpotPool += BOUNTY_JACKPOT_WEI;\n            if (paidMinted % BOUNTY_MILESTONE == 0) {\n                uint256 prize = (bountyJackpotPool * BOUNTY_WIN_BPS) / 10000;\n                bountyJackpotPool -= prize;\n                bountyWon += prize;\n                totalBountyJackpotPaid += prize;\n                emit BountyJackpotTriggered(recipient, paidMinted, prize, bountyJackpotPool);\n            }\n        }\n\n        _safeDeliverBnb(GUILD_TREASURY, guildTreasuryCut);\n\n        uint256 refund = msg.value - cost;\n        uint256 totalReturn = bountyWon + refund;\n        if (totalReturn > 0) {\n            address returnTo = bountyWon > 0 ? recipient : msg.sender;\n            _safeDeliverBnb(returnTo, totalReturn);\n        }\n    }\n\n    function _mintOperative(\n        address to,\n        bool isPrime,\n        uint16 shares,\n        bool agentFlag\n    ) internal {\n        uint256 tokenId = totalSupply + 1;\n        totalSupply = tokenId;\n\n        _owners[tokenId] = to;\n        _balances[to] += 1;\n\n        isPrimeOperative[tokenId] = isPrime;\n        isVerifiedAgent[tokenId] = agentFlag;\n        tokenPayrollShares[tokenId] = shares;\n\n        if (shares > 0) {\n            _addPayrollShares(to, shares);\n        }\n\n        emit Transfer(address(0), to, tokenId);\n        emit OperativeEnlisted(to, tokenId, isPrime, shares);\n    }\n\n    function _creditPayrollPool(uint256 amount) internal {\n        if (amount == 0) return;\n        if (totalPayrollShares > 0) {\n            uint256 poolAdd = amount + undistributedPayrollReserve;\n            undistributedPayrollReserve = 0;\n            accPayrollPerShare += (poolAdd * MAGNITUDE) / totalPayrollShares;\n            totalPayrollDistributed += poolAdd;\n        } else {\n            undistributedPayrollReserve += amount;\n        }\n    }\n\n    function _addPayrollShares(address account, uint256 delta) internal {\n        totalPayrollShares += delta;\n        holderPayrollShares[account] += delta;\n        _magnifiedPayrollCorrections[account] -= int256(accPayrollPerShare * delta);\n    }\n\n    function _removePayrollShares(address account, uint256 delta) internal {\n        totalPayrollShares -= delta;\n        holderPayrollShares[account] -= delta;\n        _magnifiedPayrollCorrections[account] += int256(accPayrollPerShare * delta);\n    }\n\n    // =========================================================================\n    // Built-In Zero-Approval Bazaar (list / unlist / buy) & Agent Job Board\n    // =========================================================================\n\n    function list(uint256 tokenId, uint256 priceWei) external nonReentrant {\n        require(ownerOf(tokenId) == msg.sender, \"MGBZ: not owner\");\n        require(priceWei >= 0.0001 ether, \"MGBZ: price too low\");\n        if (listingPrice[tokenId] == 0) {\n            activeListingCount += 1;\n        }\n        listingPrice[tokenId] = priceWei;\n        emit OperativeListed(tokenId, msg.sender, priceWei);\n    }\n\n    function unlist(uint256 tokenId) external nonReentrant {\n        require(ownerOf(tokenId) == msg.sender, \"MGBZ: not owner\");\n        require(listingPrice[tokenId] > 0, \"MGBZ: not listed\");\n        listingPrice[tokenId] = 0;\n        activeListingCount -= 1;\n        emit OperativeUnlisted(tokenId, msg.sender);\n    }\n\n    function buy(uint256 tokenId) external payable nonReentrant {\n        uint256 ask = listingPrice[tokenId];\n        require(ask > 0, \"MGBZ: not listed\");\n        address seller = ownerOf(tokenId);\n        require(seller != msg.sender, \"MGBZ: self buy\");\n        require(_balances[msg.sender] + 1 <= MAX_PER_WALLET, \"MGBZ: wallet cap\");\n        require(msg.value >= ask, \"MGBZ: insufficient payment\");\n\n        listingPrice[tokenId] = 0;\n        activeListingCount -= 1;\n\n        uint256 treasuryFee = (ask * 250) / 10000; // 2.5%\n        uint256 payrollFee = (ask * 250) / 10000;  // 2.5%\n        uint256 sellerProceeds = ask - treasuryFee - payrollFee;\n\n        _creditPayrollPool(payrollFee);\n        _executeInternalTransfer(seller, msg.sender, tokenId);\n\n        // Bazaar trade promotes Initiate Operative to +1 Payroll Share!\n        if (tokenPayrollShares[tokenId] == 0) {\n            tokenPayrollShares[tokenId] = 1;\n            _addPayrollShares(msg.sender, 1);\n        }\n\n        totalBazaarTrades += 1;\n        totalBazaarVolume += ask;\n\n        _safeDeliverBnb(GUILD_TREASURY, treasuryFee);\n        _safeDeliverBnb(seller, sellerProceeds);\n\n        if (msg.value > ask) {\n            _safeDeliverBnb(msg.sender, msg.value - ask);\n        }\n\n        emit OperativePurchased(tokenId, seller, msg.sender, ask);\n    }\n\n    /// @notice Hire an operative on-chain: 75% to operative owner, 15% to payroll pool, 10% to Guild Treasury.\n    function hire(uint256 tokenId, string calldata brief) external payable nonReentrant {\n        address worker = ownerOf(tokenId);\n        require(msg.value >= MIN_HIRE_FEE, \"MGBZ: fee below minimum\");\n        require(bytes(brief).length <= 140, \"MGBZ: brief too long\");\n\n        uint256 treasuryCut = (msg.value * 1000) / 10000; // 10%\n        uint256 payrollCut = (msg.value * 1500) / 10000;  // 15%\n        uint256 workerPay = msg.value - treasuryCut - payrollCut;\n\n        jobsCompleted[tokenId] += 1;\n        totalHires += 1;\n        totalHireVolume += msg.value;\n\n        _creditPayrollPool(payrollCut);\n        _safeDeliverBnb(GUILD_TREASURY, treasuryCut);\n        _safeDeliverBnb(worker, workerPay);\n\n        emit OperativeHired(tokenId, msg.sender, worker, msg.value, brief);\n    }\n\n    // =========================================================================\n    // Payroll Dividend & Tail Claims\n    // =========================================================================\n\n    function accumulativePayrollOf(address account) public view returns (uint256) {\n        int256 mag = int256(accPayrollPerShare * holderPayrollShares[account]) + _magnifiedPayrollCorrections[account];\n        if (mag <= 0) return 0;\n        return uint256(mag) / MAGNITUDE;\n    }\n\n    function claimablePayroll(address account) public view returns (uint256) {\n        uint256 accum = accumulativePayrollOf(account);\n        uint256 withdrawn = withdrawnPayroll[account];\n        return accum > withdrawn ? accum - withdrawn : 0;\n    }\n\n    function claimableDividend(address account) external view returns (uint256) {\n        return claimablePayroll(account);\n    }\n\n    function claimPayroll() public nonReentrant {\n        uint256 claimable = claimablePayroll(msg.sender);\n        require(claimable > 0, \"MGBZ: zero payroll\");\n        withdrawnPayroll[msg.sender] += claimable;\n        totalPayrollClaimed += claimable;\n        _safeDeliverBnb(msg.sender, claimable);\n        emit PayrollClaimed(msg.sender, claimable);\n    }\n\n    function claimDividend() external {\n        claimPayroll();\n    }\n\n    function claimTailBounty() external nonReentrant {\n        require(lastPrimeTimestamp > 0 && block.timestamp >= lastPrimeTimestamp + TAIL_TIMEOUT, \"MGBZ: tail active\");\n        uint256 pool = bountyJackpotPool + undistributedPayrollReserve;\n        require(pool > 0, \"MGBZ: empty tail\");\n        bountyJackpotPool = 0;\n        undistributedPayrollReserve = 0;\n\n        address sweeper = lastPrimeBuyer != address(0) ? lastPrimeBuyer : GUILD_TREASURY;\n        uint256 sweeperHalf = pool / 2;\n        uint256 treasuryHalf = pool - sweeperHalf;\n\n        _safeDeliverBnb(sweeper, sweeperHalf);\n        _safeDeliverBnb(GUILD_TREASURY, treasuryHalf);\n        emit TailBountySwept(sweeper, sweeperHalf, treasuryHalf);\n    }\n\n    // =========================================================================\n    // Bounded-Gas Safe Delivery + Pull Escrow\n    // =========================================================================\n\n    function _safeDeliverBnb(address to, uint256 amount) internal {\n        if (amount == 0) return;\n        bool ok;\n        assembly {\n            ok := call(50000, to, amount, 0, 0, 0, 0)\n        }\n        if (!ok) {\n            claimablePayout[to] += amount;\n            totalEscrowedPayouts += amount;\n            emit PayoutEscrowed(to, amount);\n        }\n    }\n\n    function withdrawPayout() external nonReentrant {\n        uint256 amt = claimablePayout[msg.sender];\n        require(amt > 0, \"MGBZ: no payout\");\n        claimablePayout[msg.sender] = 0;\n        totalEscrowedPayouts -= amt;\n        (bool ok, ) = payable(msg.sender).call{value: amt}(\"\");\n        require(ok, \"MGBZ: withdraw failed\");\n        emit PayoutWithdrawn(msg.sender, msg.sender, amt);\n    }\n\n    function withdrawPayoutTo(address recipient) external nonReentrant {\n        require(recipient != address(0), \"MGBZ: zero recipient\");\n        uint256 amt = claimablePayout[msg.sender];\n        require(amt > 0, \"MGBZ: no payout\");\n        claimablePayout[msg.sender] = 0;\n        totalEscrowedPayouts -= amt;\n        (bool ok, ) = payable(recipient).call{value: amt}(\"\");\n        require(ok, \"MGBZ: withdraw failed\");\n        emit PayoutWithdrawn(msg.sender, recipient, amt);\n    }\n\n    function flushPayout(address beneficiary) external nonReentrant {\n        uint256 amt = claimablePayout[beneficiary];\n        require(amt > 0, \"MGBZ: no payout\");\n        claimablePayout[beneficiary] = 0;\n        totalEscrowedPayouts -= amt;\n        (bool ok, ) = payable(beneficiary).call{value: amt}(\"\");\n        require(ok, \"MGBZ: flush failed\");\n        emit PayoutWithdrawn(beneficiary, beneficiary, amt);\n    }\n\n    function _checkAgentId(address account) internal view returns (bool) {\n        if (account == address(0)) return false;\n        (bool ok, bytes memory data) = AGENT_ID_REGISTRY.staticcall(\n            abi.encodeWithSelector(IAgentIdRegistryD2.balanceOf.selector, account)\n        );\n        if (!ok || data.length < 32) return false;\n        return abi.decode(data, (uint256)) > 0;\n    }\n\n    // =========================================================================\n    // ERC-721 Standard\n    // =========================================================================\n\n    function supportsInterface(bytes4 interfaceId) public pure override returns (bool) {\n        return\n            interfaceId == 0x01ffc9a7 ||\n            interfaceId == 0x80ac58cd ||\n            interfaceId == 0x5b5e139f ||\n            interfaceId == 0x2a55205a;\n    }\n\n    function royaltyInfo(uint256, uint256 salePrice) external view returns (address, uint256) {\n        return (GUILD_TREASURY, (salePrice * 500) / 10000);\n    }\n\n    function balanceOf(address holder) public view returns (uint256) {\n        require(holder != address(0), \"MGBZ: zero address\");\n        return _balances[holder];\n    }\n\n    function ownerOf(uint256 tokenId) public view returns (address) {\n        address holder = _owners[tokenId];\n        require(holder != address(0), \"MGBZ: nonexistent token\");\n        return holder;\n    }\n\n    function approve(address to, uint256 tokenId) external {\n        address holder = ownerOf(tokenId);\n        require(msg.sender == holder || _operatorApprovals[holder][msg.sender], \"MGBZ: not authorized\");\n        _tokenApprovals[tokenId] = to;\n        emit Approval(holder, to, tokenId);\n    }\n\n    function getApproved(uint256 tokenId) public view returns (address) {\n        ownerOf(tokenId);\n        return _tokenApprovals[tokenId];\n    }\n\n    function setApprovalForAll(address operator, bool approved) external {\n        require(operator != msg.sender, \"MGBZ: approve to caller\");\n        _operatorApprovals[msg.sender][operator] = approved;\n        emit ApprovalForAll(msg.sender, operator, approved);\n    }\n\n    function isApprovedForAll(address holder, address operator) public view returns (bool) {\n        return _operatorApprovals[holder][operator];\n    }\n\n    function transferFrom(address from, address to, uint256 tokenId) public {\n        address holder = ownerOf(tokenId);\n        require(holder == from, \"MGBZ: wrong from\");\n        require(to != address(0), \"MGBZ: zero recipient\");\n        require(\n            msg.sender == holder ||\n                _tokenApprovals[tokenId] == msg.sender ||\n                _operatorApprovals[holder][msg.sender],\n            \"MGBZ: not authorized\"\n        );\n        require(_balances[to] + 1 <= MAX_PER_WALLET, \"MGBZ: wallet cap\");\n\n        if (listingPrice[tokenId] > 0) {\n            listingPrice[tokenId] = 0;\n            activeListingCount -= 1;\n        }\n\n        _executeInternalTransfer(from, to, tokenId);\n    }\n\n    function _executeInternalTransfer(address from, address to, uint256 tokenId) internal {\n        delete _tokenApprovals[tokenId];\n        _balances[from] -= 1;\n        _balances[to] += 1;\n        _owners[tokenId] = to;\n\n        uint16 sh = tokenPayrollShares[tokenId];\n        if (sh > 0 && from != to) {\n            _removePayrollShares(from, sh);\n            _addPayrollShares(to, sh);\n        }\n\n        emit Transfer(from, to, tokenId);\n    }\n\n    function safeTransferFrom(address from, address to, uint256 tokenId) external {\n        safeTransferFrom(from, to, tokenId, \"\");\n    }\n\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public {\n        transferFrom(from, to, tokenId);\n        if (to.code.length > 0) {\n            try IERC721ReceiverD2(to).onERC721Received(msg.sender, from, tokenId, data) returns (bytes4 retval) {\n                require(retval == IERC721ReceiverD2.onERC721Received.selector, \"MGBZ: unsafe receiver\");\n            } catch {\n                revert(\"MGBZ: unsafe receiver\");\n            }\n        }\n    }\n\n    // =========================================================================\n    // Swiss International Typographic Grid SVG (Ivory Paper + Black + Orange)\n    // =========================================================================\n\n    function contractURI() external view returns (string memory) {\n        string memory json = string.concat(\n            '{\"name\":\"Monad Guild Bazaar\",\"description\":\"Autonomous AI Operative Guild with Built-in Zero-Approval Bazaar (list/buy), On-Chain Job Board (hire), Real-Time Payroll Dividends (20%), and Every-5th Prime Operative Bounty Jackpot (25%). Free Initiate passes via freeMint()/claim(); Paid Prime Operatives (0.0008 BNB) via mint(uint256).\",\"seller_fee_basis_points\":500,\"fee_recipient\":\"',\n            _toHexAddr(GUILD_TREASURY),\n            '\"}'\n        );\n        return string.concat(\"data:application/json;base64,\", _b64(bytes(json)));\n    }\n\n    function tokenURI(uint256 tokenId) external view returns (string memory) {\n        require(_owners[tokenId] != address(0), \"MGBZ: nonexistent token\");\n        bool prime = isPrimeOperative[tokenId];\n        uint16 shares = tokenPayrollShares[tokenId];\n        uint32 jobs = jobsCompleted[tokenId];\n\n        string memory rank = prime ? \"PRIME OPERATIVE\" : \"GUILD INITIATE\";\n        string memory svg = _buildSwissSvg(tokenId, prime, shares, jobs, rank);\n        string memory attrs = _buildGuildAttrs(prime, shares, jobs, isVerifiedAgent[tokenId]);\n\n        string memory json = string.concat(\n            '{\"name\":\"Monad Operative #',\n            _u2s(tokenId),\n            \" [\",\n            rank,\n            ']\",\"description\":\"Autonomous Operative License in the Monad Guild Bazaar. Trade zero-approval via list()/buy(), hire via hire(), claim real-time BNB payroll via claimPayroll(). Every 5th Paid Prime Operative wins 85% of the Bounty Jackpot Pool.\",\"image\":\"data:image/svg+xml;base64,',\n            _b64(bytes(svg)),\n            '\",\"attributes\":',\n            attrs,\n            \"}\"\n        );\n        return string.concat(\"data:application/json;base64,\", _b64(bytes(json)));\n    }\n\n    function _buildSwissSvg(\n        uint256 tokenId,\n        bool prime,\n        uint16 shares,\n        uint32 jobs,\n        string memory rank\n    ) internal view returns (string memory) {\n        string memory stampColor = prime ? \"#ff3b00\" : \"#111111\";\n\n        string memory p1 = string.concat(\n            '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 400 400\" width=\"400\" height=\"400\">',\n            '<rect width=\"400\" height=\"400\" fill=\"#f7f5f0\"/>',\n            '<rect x=\"18\" y=\"18\" width=\"364\" height=\"364\" fill=\"none\" stroke=\"#111111\" stroke-width=\"3\"/>',\n            '<line x1=\"18\" y1=\"82\" x2=\"382\" y2=\"82\" stroke=\"#111111\" stroke-width=\"2\"/>',\n            '<line x1=\"18\" y1=\"305\" x2=\"382\" y2=\"305\" stroke=\"#111111\" stroke-width=\"2\"/>'\n        );\n\n        string memory p2 = string.concat(\n            '<rect x=\"255\" y=\"30\" width=\"112\" height=\"38\" fill=\"',\n            stampColor,\n            '\"/>',\n            '<text x=\"311\" y=\"54\" text-anchor=\"middle\" fill=\"#f7f5f0\" font-family=\"monospace\" font-size=\"11\" font-weight=\"bold\">',\n            prime ? \"PRIME // 2-3X\" : \"INITIATE\",\n            \"</text>\",\n            '<text x=\"32\" y=\"55\" fill=\"#111111\" font-family=\"monospace\" font-size=\"15\" font-weight=\"bold\">MONAD GUILD BAZAAR</text>'\n        );\n\n        string memory p3 = string.concat(\n            '<text x=\"32\" y=\"138\" fill=\"#555555\" font-family=\"monospace\" font-size=\"12\">LICENSE CLASS // ',\n            rank,\n            \"</text>\",\n            '<text x=\"32\" y=\"198\" fill=\"#111111\" font-family=\"monospace\" font-size=\"34\" font-weight=\"bold\">OP-#',\n            _u2s(tokenId),\n            \"</text>\",\n            '<text x=\"32\" y=\"248\" fill=\"',\n            stampColor,\n            '\" font-family=\"monospace\" font-size=\"14\" font-weight=\"bold\">PAYROLL SHARES: ',\n            _u2s(shares),\n            \" | JOBS: \",\n            _u2s(jobs),\n            \"</text>\"\n        );\n\n        string memory p4 = string.concat(\n            '<text x=\"32\" y=\"340\" fill=\"#111111\" font-family=\"monospace\" font-size=\"12\">BOUNTY JACKPOT: ',\n            _weiToMilliBnb(bountyJackpotPool),\n            \" mBNB</text>\",\n            '<text x=\"32\" y=\"364\" fill=\"#555555\" font-family=\"monospace\" font-size=\"11\">PRIME MINTED: ',\n            _u2s(paidMinted),\n            \" | BAZAAR TRADES: \",\n            _u2s(totalBazaarTrades),\n            \"</text></svg>\"\n        );\n\n        return string.concat(p1, p2, p3, p4);\n    }\n\n    function _buildGuildAttrs(\n        bool prime,\n        uint16 shares,\n        uint32 jobs,\n        bool agent\n    ) internal pure returns (string memory) {\n        return string.concat(\n            '[{\"trait_type\":\"Operative Class\",\"value\":\"',\n            prime ? \"Prime Operative\" : \"Guild Initiate\",\n            '\"},{\"trait_type\":\"Payroll Shares\",\"value\":',\n            _u2s(shares),\n            '},{\"trait_type\":\"Jobs Completed\",\"value\":',\n            _u2s(jobs),\n            '},{\"trait_type\":\"Agent Credential\",\"value\":\"',\n            agent ? \"Verified .ai Agent\" : \"External Member\",\n            '\"}]'\n        );\n    }\n\n    function _weiToMilliBnb(uint256 w) internal pure returns (string memory) {\n        uint256 m = w / 1e12;\n        return string.concat(_u2s(m / 1000), \".\", _pad3(m % 1000));\n    }\n\n    function _pad3(uint256 v) internal pure returns (string memory) {\n        if (v < 10) return string.concat(\"00\", _u2s(v));\n        if (v < 100) return string.concat(\"0\", _u2s(v));\n        return _u2s(v);\n    }\n\n    function _u2s(uint256 value) internal pure returns (string memory) {\n        if (value == 0) return \"0\";\n        uint256 temp = value;\n        uint256 digits;\n        while (temp != 0) {\n            digits++;\n            temp /= 10;\n        }\n        bytes memory buffer = new bytes(digits);\n        while (value != 0) {\n            digits -= 1;\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n            value /= 10;\n        }\n        return string(buffer);\n    }\n\n    function _toHexAddr(address a) internal pure returns (string memory) {\n        bytes20 b = bytes20(a);\n        bytes16 hexSymbols = \"0123456789abcdef\";\n        bytes memory str = new bytes(42);\n        str[0] = \"0\";\n        str[1] = \"x\";\n        for (uint256 i = 0; i < 20; i++) {\n            str[2 + i * 2] = hexSymbols[uint8(b[i] >> 4)];\n            str[3 + i * 2] = hexSymbols[uint8(b[i] & 0x0f)];\n        }\n        return string(str);\n    }\n\n    function _b64(bytes memory data) internal pure returns (string memory) {\n        if (data.length == 0) return \"\";\n        string memory table = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n        uint256 encodedLen = 4 * ((data.length + 2) / 3);\n        string memory result = new string(encodedLen);\n        assembly {\n            let tablePtr := add(table, 1)\n            let resultPtr := add(result, 32)\n            for {\n                let dataPtr := data\n                let endPtr := add(data, mload(data))\n            } lt(dataPtr, endPtr) {\n\n            } {\n                dataPtr := add(dataPtr, 3)\n                let input := mload(dataPtr)\n                mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F))))\n                resultPtr := add(resultPtr, 1)\n                mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F))))\n                resultPtr := add(resultPtr, 1)\n                mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F))))\n                resultPtr := add(resultPtr, 1)\n                mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F))))\n                resultPtr := add(resultPtr, 1)\n            }\n            switch mod(mload(data), 3)\n            case 1 {\n                mstore8(sub(resultPtr, 1), 0x3d)\n                mstore8(sub(resultPtr, 2), 0x3d)\n            }\n            case 2 {\n                mstore8(sub(resultPtr, 1), 0x3d)\n            }\n        }\n        return result;\n    }\n\n    receive() external payable {}\n}\n"}},"abi":[{"type":"constructor","inputs":[{"name":"_treasury","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"name":"Approval","type":"event","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"name":"ApprovalForAll","type":"event","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"name":"BountyJackpotTriggered","type":"event","inputs":[{"name":"winner","type":"address","indexed":true,"internalType":"address"},{"name":"primeIndex","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"reward","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"nextPool","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"OperativeEnlisted","type":"event","inputs":[{"name":"member","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"isPrime","type":"bool","indexed":false,"internalType":"bool"},{"name":"shares","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"name":"OperativeHired","type":"event","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"client","type":"address","indexed":true,"internalType":"address"},{"name":"worker","type":"address","indexed":true,"internalType":"address"},{"name":"fee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"brief","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"name":"OperativeListed","type":"event","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"OperativePurchased","type":"event","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"OperativeUnlisted","type":"event","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"seller","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"PayoutEscrowed","type":"event","inputs":[{"name":"beneficiary","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"PayoutWithdrawn","type":"event","inputs":[{"name":"beneficiary","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"PayrollClaimed","type":"event","inputs":[{"name":"member","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"TailBountySwept","type":"event","inputs":[{"name":"sweeper","type":"address","indexed":true,"internalType":"address"},{"name":"sweeperShare","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"treasuryShare","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Transfer","type":"event","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"name":"AGENT_ID_REGISTRY","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"BOUNTY_JACKPOT_WEI","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"BOUNTY_MILESTONE","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"BOUNTY_WIN_BPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"FREE_SUPPLY","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"GUILD_TREASURY","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"GUILD_TREASURY_WEI","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"MAX_FREE_PER_WALLET","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"MAX_FREE_SUPPLY","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"MAX_PAID_SUPPLY","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"MAX_PER_TX","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"MAX_PER_WALLET","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"MAX_SUPPLY","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"MIN_HIRE_FEE","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"OWNER","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"PAYEE","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"PAYROLL_POOL_WEI","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"PRICE","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"PRIME_PRICE","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"TAIL_TIMEOUT","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"accPayrollPerShare","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"accumulativePayrollOf","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"activeListingCount","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"approve","type":"function","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"balanceOf","type":"function","inputs":[{"name":"holder","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"bountyJackpotPool","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"buy","type":"function","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"name":"buyGold","type":"function","inputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"name":"canReceiveFree","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"claim","type":"function","inputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"name":"claim","type":"function","inputs":[],"outputs":[],"stateMutability":"payable"},{"name":"claimDividend","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"claimPayroll","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"claimTailBounty","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"claimableDividend","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"claimablePayout","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"claimablePayroll","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"contractURI","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"enlistPrime","type":"function","inputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"name":"flushPayout","type":"function","inputs":[{"name":"beneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"freeClaim","type":"function","inputs":[],"outputs":[],"stateMutability":"payable"},{"name":"freeClaimed","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"freeMint","type":"function","inputs":[],"outputs":[],"stateMutability":"payable"},{"name":"freeMint","type":"function","inputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"name":"freeMinted","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"freeRemaining","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"getApproved","type":"function","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"hasAgentId","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"hire","type":"function","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"brief","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"name":"holderPayrollShares","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"isApprovedForAll","type":"function","inputs":[{"name":"holder","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"isPrimeOperative","type":"function","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"isVerifiedAgent","type":"function","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"jobsCompleted","type":"function","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"name":"lastPrimeBuyer","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"lastPrimeTimestamp","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"list","type":"function","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"priceWei","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"listingPrice","type":"function","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"mint","type":"function","inputs":[],"outputs":[],"stateMutability":"payable"},{"name":"mint","type":"function","inputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"name":"mintOpen","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"mintPrice","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"name":"mintTo","type":"function","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"count","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"name":"name","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"owner","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"ownerOf","type":"function","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"paidMinted","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"paidMintedBy","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"price","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"name":"primesUntilNextBounty","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"quote","type":"function","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"qty","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"name":"royaltyInfo","type":"function","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"safeTransferFrom","type":"function","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"safeTransferFrom","type":"function","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setApprovalForAll","type":"function","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"stats","type":"function","inputs":[],"outputs":[{"name":"minted","type":"uint256","internalType":"uint256"},{"name":"maxSupply_","type":"uint256","internalType":"uint256"},{"name":"freeMinted_","type":"uint256","internalType":"uint256"},{"name":"paidMinted_","type":"uint256","internalType":"uint256"},{"name":"primePrice_","type":"uint256","internalType":"uint256"},{"name":"jackpotPool_","type":"uint256","internalType":"uint256"},{"name":"payrollShares_","type":"uint256","internalType":"uint256"},{"name":"bazaarTrades_","type":"uint256","internalType":"uint256"},{"name":"bazaarVolume_","type":"uint256","internalType":"uint256"},{"name":"hires_","type":"uint256","internalType":"uint256"},{"name":"hireVolume_","type":"uint256","internalType":"uint256"},{"name":"activeListings_","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"supportsInterface","type":"function","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"name":"symbol","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"tokenPayrollShares","type":"function","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"name":"tokenURI","type":"function","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"totalBazaarTrades","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalBazaarVolume","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalBountyJackpotPaid","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalEscrowedPayouts","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalHireVolume","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalHires","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalMinted","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalPayrollClaimed","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalPayrollDistributed","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalPayrollShares","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalSupply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"transferFrom","type":"function","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"undistributedPayrollReserve","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"unlist","type":"function","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"withdrawPayout","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"withdrawPayoutTo","type":"function","inputs":[{"name":"recipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"withdrawnPayroll","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"receive","stateMutability":"payable"}],"matchId":"57676057","creationMatch":"exact_match","runtimeMatch":"exact_match","verifiedAt":"2026-10-30T12:25:22Z","match":"exact_match","chainId":"56","address":"0xC1D663228E26ae651C84aa38bce2fB468E52ec8E"}