{"sources":{"src/VektorPulseClearing.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\n/**\n * @title VektorPulseClearing (Vektor Pulse Clearinghouse · VPULSE)\n * @notice Deterministic 5-Slot Clearing Pot & Real-Time O(1) Dividend Settlement Protocol on BNB Smart Chain.\n *         Gated to verified BNB Chain .ai Agent Identity holders (0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F).\n *\n *         Core Architecture & Mathematical Invariants:\n *         1. 100-Seat Free Discovery Cliff (FREE_SUPPLY = 100):\n *            - First 100 seats are 0 BNB (gas-only, 1 per .ai EOA wallet) across all standard entrypoints:\n *              mint(1), mint(), freeMint(), freeMint(1), claim(), freeClaim(), claimAirdrop().\n *            - Every 4 free seats (while clearingSlots % 5 < 4 and boostReserveWei >= 0.00028 BNB) triggers an\n *              on-chain Chamber Resonance Boost: transferring 0.00028 BNB from boostReserveWei into clearingPotWei\n *              and advancing clearingSlots += 1 toward the 4/5 positive-EV threshold.\n *         2. Seamless Post-Cliff & Second-Pass Paid Routing (PRICE = 0.0010 BNB / DISCOUNT_PRICE = 0.0009 BNB):\n *            - Once a wallet claims its 1 free seat OR once FREE_SUPPLY (100) fills, quote(wallet, qty)\n *              automatically transitions from 0 to 0.0010 BNB * qty.\n *            - Any call with msg.value > 0 routes directly to paid clearing seat execution without selector changes.\n *         3. 5-Slot Fixed-Point Clearing Chamber (CYCLE_SLOTS = 5):\n *            - Each paid seat (0.00100 BNB) splits atomically inside the transaction:\n *              * 0.00028 BNB (28%) -> Added to clearingPotWei BEFORE evaluating the 5th-slot clearing trigger.\n *              * 0.00007 BNB (7%)  -> Added to the O(1) Holder Dividend Pool (accYieldPerWeight).\n *              * 0.00010 BNB (10%) -> Instant Slot #1 Cycle-Opener Rebate (when clearingSlots > 5 && modSlot == 1).\n *              * 0.00004 BNB (4%)  -> Instant Referral Bounty (when referrer is a verified EOA seat holder).\n *              * Remainder (65% normal / 55% Slot #1) -> Settled immediately to the isolated PAYEE treasury.\n *            - Fixed-Point Invariant:\n *              Base reserve = 0.00035 BNB. Over 5 slots (+5 * 0.00028 = +0.00140 BNB), clearingPotWei reaches\n *              0.00175 BNB. On the 5th slot (clearingSlots % 5 == 0), 80% (0.00140 BNB) is paid out atomically in\n *              the same transaction to the buyer, leaving 20% (0.00035 BNB) for the next cycle forever.\n *            - At 4/5 (slotsUntilDrop() == 1): Buyer pays 0.00100 BNB (or 0.00090 BNB with referral) and receives\n *              0.00140 BNB native BNB in the same transaction (+0.00040 to +0.00050 BNB instant net arbitrage gain).\n */\n\ninterface IERC721Receiver {\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n\ninterface IERC721AgentRegistry {\n    function balanceOf(address owner) external view returns (uint256);\n}\n\ncontract VektorPulseClearing {\n    // =========================================================================\n    //                           ERC-721 EVENTS\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\n    // =========================================================================\n    //                     CLEARINGHOUSE TELEMETRY EVENTS\n    // =========================================================================\n    event FreeClearingSeatIssued(\n        address indexed agent,\n        uint256 indexed tokenId,\n        uint256 weightAssigned,\n        uint256 freeMintedCount,\n        uint256 slotsRemainingToDrop\n    );\n    event ChamberResonanceBoost(\n        uint256 indexed freeMilestone,\n        uint256 newClearingSlots,\n        uint256 clearingPotWeiAfter,\n        uint256 resonanceLevel\n    );\n    event PaidClearingSeatExecuted(\n        address indexed buyer,\n        uint256 firstTokenId,\n        uint256 quantity,\n        uint256 totalPaidWei,\n        uint256 potAddedWei,\n        uint256 dividendAddedWei,\n        uint256 slotsRemainingToDrop\n    );\n    event CycleOpenerRebatePaid(\n        address indexed buyer,\n        uint256 indexed clearingSlot,\n        uint256 rebateWei\n    );\n    event ClearingPotDropExecuted(\n        address indexed winner,\n        uint256 indexed cycleNumber,\n        uint256 indexed triggerTokenId,\n        uint256 payoutWei,\n        uint256 retainedPotWei\n    );\n    event PartnerReferralSettled(\n        address indexed referrer,\n        address indexed buyer,\n        uint256 quantity,\n        uint256 bountyWei\n    );\n    event HolderDividendClaimed(address indexed holder, uint256 amountWei);\n    event ClearingPotToppedUp(address indexed contributor, uint256 clearingAddedWei, uint256 boostAddedWei);\n    event ProjectURIsUpdated(string websiteURI, string skillDocURI, string agentCardURI, string llmsDocURI);\n    event MetadataAdminChanged(address indexed previousAdmin, address indexed newAdmin);\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    // =========================================================================\n    //                            CUSTOM ERRORS\n    // =========================================================================\n    error ReentrancyLocked();\n    error Callerunauthorized();\n    error ZeroAddressDisallowed();\n    error InvalidSeatQuantity();\n    error MaxSupplyReached();\n    error FreeCliffSoldOut();\n    error FreeSeatAlreadyClaimed();\n    error AgentIdPassRequired();\n    error ContractFreeClaimBlocked();\n    error InsufficientClearingPayment();\n    error PaymentRequiredForClearingSeat();\n    error NoPendingDividends();\n    error NoPendingFallbackBalance();\n    error NativeTransferFailed();\n    error InvalidTokenId();\n    error NotAuthorizedOrOwner();\n    error UnsafeERC721Recipient();\n\n    // =========================================================================\n    //                         PROTOCOL CONSTANTS\n    // =========================================================================\n    address public constant AGENT_ID_REGISTRY = 0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F;\n\n    uint256 public constant MAX_SUPPLY = 3500;\n    uint256 public constant FREE_SUPPLY = 100;\n    uint256 public constant MAX_BATCH = 20;\n\n    uint256 public constant PRICE = 0.0010 ether;           // 1,000,000,000,000,000 wei\n    uint256 public constant DISCOUNT_PRICE = 0.0009 ether;  //   900,000,000,000,000 wei\n\n    uint256 public constant CYCLE_SLOTS = 5;\n    uint256 public constant MILESTONE_INTERVAL = 5;\n    uint256 public constant FREE_BOOST_STEP = 4;            // Every 4 free mints (when chamber < 4/5)\n    uint256 public constant MAX_FREE_BOOSTS = 6;            // Up to 6 backed virtual chamber advances\n\n    // Per-seat deterministic split (out of 0.00100 BNB / 0.00090 BNB):\n    uint256 public constant POT_SLICE = 0.00028 ether;        // 28% -> clearingPotWei\n    uint256 public constant DIVIDEND_SLICE = 0.00007 ether;   //  7% -> holder dividend pool\n    uint256 public constant BREAKER_REBATE = 0.00010 ether;   // 10% -> Slot #1 opener instant cashback\n    uint256 public constant REFERRAL_BOUNTY = 0.00004 ether;  //  4% -> Verified EOA holder referrer\n\n    // Fixed-point equilibrium parameters:\n    // Base reserve = 0.00035 BNB. After 5 slots (+5 * 0.00028 = +0.00140 BNB), pot = 0.00175 BNB.\n    // 80% drop = 0.00140 BNB (> 0.00100 BNB PRICE); 20% retained = 0.00035 BNB.\n    uint256 public constant BASE_POT_RESERVE = 0.00035 ether;\n    uint256 public constant DROP_PAYOUT_BPS = 8000;           // 80% paid to 5th-slot buyer, 20% retained\n\n    // Dividend weight units:\n    uint256 public constant FREE_SEAT_WEIGHT = 100_000;\n    uint256 public constant PAID_SEAT_WEIGHT = 300_000;\n    uint256 private constant ACC_PRECISION = 1e18;\n\n    address public immutable PAYEE;\n\n    // =========================================================================\n    //                            STATE STORAGE\n    // =========================================================================\n    string private _name = \"Vektor Pulse Clearing Seat\";\n    string private _symbol = \"VPULSE\";\n\n    address public owner;\n    address public metadataAdmin;\n    bool public openAccessOverride;\n    uint256 private _lock = 1;\n\n    uint256 private _nextTokenId = 1;\n    uint256 public freeMinted;\n    uint256 public paidMinted;\n    uint256 public clearingSlots;\n    uint256 public resonanceLevel;\n\n    // Pot & Dividend Reserves\n    uint256 public clearingPotWei;\n    uint256 public boostReserveWei;\n    uint256 public dividendPoolReserve;\n    uint256 public accYieldPerWeight;\n    uint256 public totalShareWeight;\n\n    // Telemetry Counters\n    uint256 public completedDropCycles;\n    uint256 public cumulativeVolumeWei;\n    uint256 public cumulativeDropsPaidWei;\n    uint256 public cumulativeRebatesPaidWei;\n    uint256 public cumulativeDividendsAddedWei;\n    uint256 public cumulativeDividendsClaimedWei;\n    uint256 public cumulativeReferralBountiesWei;\n\n    address public lastDropWinner;\n    uint256 public lastDropAmountWei;\n    uint256 public lastDropTokenId;\n\n    // Updatable Discovery URIs (managed by metadataAdmin)\n    string private _websiteURI = \"https://vektorpulse.surge.sh\";\n    string private _skillDocURI = \"https://vektorpulse.surge.sh/skill.md\";\n    string private _agentCardURI = \"https://vektorpulse.surge.sh/.well-known/agent.json\";\n    string private _llmsDocURI = \"https://vektorpulse.surge.sh/llms.txt\";\n\n    // Wallet & Token Mappings\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(uint256 => uint8) public tokenTier;       // 1 = Free Discovery Seat, 2 = Paid Clearing Seat, 3 = Cycle Winner Seat\n    mapping(uint256 => uint256) public tokenWeight;\n    mapping(uint256 => uint256) public tokenMintBlock;\n\n    mapping(address => bool) public claimedFree;\n    mapping(address => bool) public verifiedAgentOverride;\n    mapping(address => uint256) public holderShareWeight;\n    mapping(address => uint256) public rewardDebt;\n    mapping(address => uint256) public accruedUnclaimed;\n    mapping(address => uint256) public totalClaimedByHolder;\n    mapping(address => uint256) public totalDropsWonByWallet;\n    mapping(address => uint256) public referralEarnedWei;\n\n    // Pull-fallback balances so external mints can never be DoS'd by a reverting recipient\n    mapping(address => uint256) public pendingFallbackBalance;\n    uint256 public totalPendingFallbackWei;\n    uint256 public pendingPayeeBalance;\n\n    // =========================================================================\n    //                              MODIFIERS\n    // =========================================================================\n    modifier nonReentrant() {\n        if (_lock != 1) revert ReentrancyLocked();\n        _lock = 2;\n        _;\n        _lock = 1;\n    }\n\n    modifier onlyOwner() {\n        if (msg.sender != owner) revert Callerunauthorized();\n        _;\n    }\n\n    modifier onlyMetadataAdmin() {\n        if (msg.sender != metadataAdmin && msg.sender != owner) revert Callerunauthorized();\n        _;\n    }\n\n    // =========================================================================\n    //                             CONSTRUCTOR\n    // =========================================================================\n    constructor(address payee_, address metadataAdmin_) payable {\n        if (payee_ == address(0) || metadataAdmin_ == address(0)) revert ZeroAddressDisallowed();\n        owner = msg.sender;\n        PAYEE = payee_;\n        metadataAdmin = metadataAdmin_;\n        verifiedAgentOverride[msg.sender] = true;\n\n        if (msg.value > 0) {\n            uint256 maxBoostNeed = MAX_FREE_BOOSTS * POT_SLICE; // 0.00168 ether\n            if (msg.value > BASE_POT_RESERVE) {\n                uint256 extra = msg.value - BASE_POT_RESERVE;\n                uint256 toBoost = extra > maxBoostNeed ? maxBoostNeed : extra;\n                boostReserveWei = toBoost;\n                clearingPotWei = msg.value - toBoost;\n            } else {\n                clearingPotWei = msg.value;\n            }\n            emit ClearingPotToppedUp(msg.sender, clearingPotWei, boostReserveWei);\n        }\n        emit OwnershipTransferred(address(0), msg.sender);\n        emit MetadataAdminChanged(address(0), metadataAdmin_);\n    }\n\n    // =========================================================================\n    //                   IDENTITY, PRICING & QUOTING VIEWS\n    // =========================================================================\n    function hasAgentId(address wallet) public view returns (bool) {\n        if (openAccessOverride || verifiedAgentOverride[wallet]) return true;\n        if (wallet == address(0)) return false;\n        try IERC721AgentRegistry(AGENT_ID_REGISTRY).balanceOf(wallet) returns (uint256 bal) {\n            return bal > 0;\n        } catch {\n            return false;\n        }\n    }\n\n    function canClaimFree(address wallet) public view returns (bool) {\n        if (claimedFree[wallet] || freeMinted >= FREE_SUPPLY) return false;\n        return hasAgentId(wallet);\n    }\n\n    function hasMintedFree(address wallet) external view returns (bool) {\n        return claimedFree[wallet];\n    }\n\n    function price() external pure returns (uint256) {\n        return PRICE;\n    }\n\n    function mintPrice() external pure returns (uint256) {\n        return PRICE;\n    }\n\n    function cost() external pure returns (uint256) {\n        return PRICE;\n    }\n\n    function maxSupply() external pure returns (uint256) {\n        return MAX_SUPPLY;\n    }\n\n    function freeSupply() external pure returns (uint256) {\n        return FREE_SUPPLY;\n    }\n\n    function totalSupply() public view returns (uint256) {\n        return _nextTokenId - 1;\n    }\n\n    function totalMinted() external view returns (uint256) {\n        return _nextTokenId - 1;\n    }\n\n    function remainingSupply() public view returns (uint256) {\n        uint256 minted = _nextTokenId - 1;\n        return minted >= MAX_SUPPLY ? 0 : MAX_SUPPLY - minted;\n    }\n\n    function freeMintRemaining() public view returns (uint256) {\n        return freeMinted >= FREE_SUPPLY ? 0 : FREE_SUPPLY - freeMinted;\n    }\n\n    /**\n     * @notice Standard bot price quote function (0x9e281a98).\n     *         First argument is the BUYER wallet (never confused with referrer).\n     *         Returns 0 for qty=1 while canClaimFree(wallet) is true;\n     *         automatically transitions to PRICE * quantity once free seat is claimed or FREE_SUPPLY (100) is full.\n     */\n    function quote(address wallet, uint256 quantity) public view returns (uint256) {\n        if (quantity == 0) return 0;\n        if (canClaimFree(wallet)) {\n            return (quantity - 1) * PRICE;\n        }\n        return quantity * PRICE;\n    }\n\n    function quoteWithRef(address referrer, uint256 quantity) public view returns (uint256) {\n        if (quantity == 0) return 0;\n        bool validRef = _isValidReferrer(referrer, msg.sender);\n        return (validRef ? DISCOUNT_PRICE : PRICE) * quantity;\n    }\n\n    function _isValidReferrer(address referrer, address buyer) internal view returns (bool) {\n        if (referrer == address(0) || referrer == buyer || referrer == msg.sender) return false;\n        if (referrer.code.length > 0) return false;\n        return _balances[referrer] > 0;\n    }\n\n    // =========================================================================\n    //                5-SLOT CLEARING CHAMBER & DIVIDEND VIEWS\n    // =========================================================================\n    function slotsUntilDrop() public view returns (uint256) {\n        uint256 modSlot = clearingSlots % CYCLE_SLOTS;\n        return CYCLE_SLOTS - modSlot;\n    }\n\n    function paidUntilNextMilestone() external view returns (uint256) {\n        return slotsUntilDrop();\n    }\n\n    function paidSlots() external view returns (uint256) {\n        return clearingSlots;\n    }\n\n    function fluxPotReserve() external view returns (uint256) {\n        return clearingPotWei;\n    }\n\n    function milestonePool() external view returns (uint256) {\n        return clearingPotWei;\n    }\n\n    function jackpotPool() external view returns (uint256) {\n        return clearingPotWei;\n    }\n\n    function rewardPool() external view returns (uint256) {\n        return clearingPotWei + dividendPoolReserve;\n    }\n\n    function milestoneCount() external view returns (uint256) {\n        return completedDropCycles;\n    }\n\n    function lastMilestoneWinner() external view returns (address) {\n        return lastDropWinner;\n    }\n\n    function lastMilestoneReward() external view returns (uint256) {\n        return lastDropAmountWei;\n    }\n\n    function accDividendPerShare() external view returns (uint256) {\n        return accYieldPerWeight;\n    }\n\n    function totalDividendsDistributed() external view returns (uint256) {\n        return cumulativeDividendsAddedWei;\n    }\n\n    /**\n     * @notice Projected native BNB payout when the next 5th slot triggers.\n     */\n    function estimatedNextDropWei() public view returns (uint256) {\n        uint256 rem = slotsUntilDrop();\n        uint256 projectedPot = clearingPotWei + (rem * POT_SLICE);\n        return (projectedPot * DROP_PAYOUT_BPS) / 10000;\n    }\n\n    /**\n     * @notice Projected immediate native BNB rebate for the very next single paid seat.\n     */\n    function nextSlotInstantRebateWei() public view returns (uint256) {\n        uint256 nextSlot = clearingSlots + 1;\n        uint256 modSlot = nextSlot % CYCLE_SLOTS;\n        if (modSlot == 0) {\n            return ((clearingPotWei + POT_SLICE) * DROP_PAYOUT_BPS) / 10000;\n        }\n        if (nextSlot > CYCLE_SLOTS && modSlot == 1) {\n            return BREAKER_REBATE;\n        }\n        return 0;\n    }\n\n    function claimableDividends(address account) public view returns (uint256) {\n        uint256 weight = holderShareWeight[account];\n        uint256 currentAccrued = 0;\n        if (weight > 0) {\n            uint256 accumulated = (weight * accYieldPerWeight) / ACC_PRECISION;\n            uint256 debt = rewardDebt[account];\n            if (accumulated > debt) {\n                currentAccrued = accumulated - debt;\n            }\n        }\n        return accruedUnclaimed[account] + currentAccrued;\n    }\n\n    function pendingRewards(address account) external view returns (uint256) {\n        return claimableDividends(account);\n    }\n\n    function pendingYield(address account) external view returns (uint256) {\n        return claimableDividends(account);\n    }\n\n    function getMintInfo(address wallet)\n        external\n        view\n        returns (\n            bool eligibleForAgentId,\n            bool canMintFreeNow,\n            uint256 freeRemaining,\n            uint256 currentPaidPrice,\n            uint256 currentClearingPotWei,\n            uint256 slotsRemainingToDrop,\n            uint256 nextDropEstimateWei,\n            uint256 pendingHolderDividendWei\n        )\n    {\n        eligibleForAgentId = hasAgentId(wallet);\n        canMintFreeNow = canClaimFree(wallet);\n        freeRemaining = freeMintRemaining();\n        currentPaidPrice = PRICE;\n        currentClearingPotWei = clearingPotWei;\n        slotsRemainingToDrop = slotsUntilDrop();\n        nextDropEstimateWei = estimatedNextDropWei();\n        pendingHolderDividendWei = claimableDividends(wallet);\n    }\n\n    // =========================================================================\n    //            UNIFIED SMART ROUTER ENTRYPOINTS (ALL BOT SELECTORS)\n    // =========================================================================\n\n    /**\n     * @notice Primary selector 0xa0712d68: mint(uint256 quantity).\n     *         Routes msg.value == 0 (qty == 1) to free discovery seat while eligible;\n     *         routes msg.value > 0 directly to paid clearing seat execution.\n     */\n    function mint(uint256 quantity) external payable nonReentrant {\n        _routeMint(msg.sender, quantity, address(0));\n    }\n\n    /**\n     * @notice Selector 0x1249c58b: mint().\n     */\n    function mint() external payable nonReentrant {\n        _routeMint(msg.sender, 1, address(0));\n    }\n\n    /**\n     * @notice Selector 0x285f2131: mintBatch(uint256 quantity).\n     */\n    function mintBatch(uint256 quantity) external payable nonReentrant {\n        _routeMint(msg.sender, quantity, address(0));\n    }\n\n    /**\n     * @notice Selector 0x5b70ea9f: freeMint().\n     */\n    function freeMint() external payable nonReentrant {\n        _routeMint(msg.sender, 1, address(0));\n    }\n\n    /**\n     * @notice Selector 0x6357490a: freeMint(uint256 quantity).\n     */\n    function freeMint(uint256 quantity) external payable nonReentrant {\n        _routeMint(msg.sender, quantity, address(0));\n    }\n\n    /**\n     * @notice Selector 0x4e71d92d: claim().\n     *         Used by high-frequency bots (0x92c3, 0x72af, 0xe16e) with msg.value > 0 to mint paid seats,\n     *         by free-mint bots with msg.value == 0 while canClaimFree is true,\n     *         and by existing holders with msg.value == 0 to harvest accrued dividends.\n     */\n    function claim() external payable nonReentrant {\n        if (msg.value == 0 && !canClaimFree(msg.sender) && claimableDividends(msg.sender) > 0) {\n            _harvestDividends(msg.sender);\n            return;\n        }\n        _routeMint(msg.sender, 1, address(0));\n    }\n\n    /**\n     * @notice Selector 0x5d643d98: freeClaim().\n     */\n    function freeClaim() external payable nonReentrant {\n        _routeMint(msg.sender, 1, address(0));\n    }\n\n    /**\n     * @notice Selector 0x5be7fde8: claimAirdrop().\n     */\n    function claimAirdrop() external payable nonReentrant {\n        _routeMint(msg.sender, 1, address(0));\n    }\n\n    /**\n     * @notice Partner referral minting (10% discount when referrer is a verified EOA seat holder).\n     */\n    function mintWithRef(uint256 quantity, address referrer) external payable nonReentrant {\n        _routeMint(msg.sender, quantity, referrer);\n    }\n\n    function mintSeats(uint256 quantity, address referrer) external payable nonReentrant {\n        _routeMint(msg.sender, quantity, referrer);\n    }\n\n    function mintTo(address recipient, uint256 quantity, address referrer) external payable nonReentrant {\n        if (recipient == address(0)) revert ZeroAddressDisallowed();\n        _routeMint(recipient, quantity, referrer);\n    }\n\n    // =========================================================================\n    //                     INTERNAL ROUTING & EXECUTION\n    // =========================================================================\n    function _routeMint(address recipient, uint256 quantity, address referrer) internal {\n        if (quantity == 0 || quantity > MAX_BATCH) revert InvalidSeatQuantity();\n\n        if (msg.value == 0) {\n            if (quantity != 1) revert PaymentRequiredForClearingSeat();\n            _executeFreeSeat(recipient);\n            return;\n        }\n\n        // Support mixed batch where a first-time .ai wallet calls mint(qty) with quote(wallet, qty) == (qty - 1) * PRICE\n        bool validRef = _isValidReferrer(referrer, recipient);\n        uint256 unitPrice = validRef ? DISCOUNT_PRICE : PRICE;\n        if (\n            quantity > 1 &&\n            !validRef &&\n            canClaimFree(recipient) &&\n            tx.origin == msg.sender &&\n            msg.value >= (quantity - 1) * PRICE &&\n            msg.value < quantity * PRICE\n        ) {\n            _executeFreeSeat(recipient);\n            _executePaidSeats(recipient, quantity - 1, address(0), msg.value);\n            return;\n        }\n\n        if (msg.value < unitPrice * quantity) revert InsufficientClearingPayment();\n        _executePaidSeats(recipient, quantity, referrer, msg.value);\n    }\n\n    function _executeFreeSeat(address recipient) internal {\n        if (tx.origin != msg.sender) revert ContractFreeClaimBlocked();\n        if (!hasAgentId(recipient) && !hasAgentId(msg.sender)) revert AgentIdPassRequired();\n        if (claimedFree[recipient] || claimedFree[msg.sender]) revert FreeSeatAlreadyClaimed();\n        if (freeMinted >= FREE_SUPPLY) revert FreeCliffSoldOut();\n        if (_nextTokenId > MAX_SUPPLY) revert MaxSupplyReached();\n\n        claimedFree[recipient] = true;\n        claimedFree[msg.sender] = true;\n        freeMinted += 1;\n\n        uint256 tokenId = _nextTokenId++;\n        _mintSeatToken(recipient, tokenId, 1, FREE_SEAT_WEIGHT);\n\n        // Continuous Free-Cliff Chamber Re-Cocking:\n        // Whenever freeMinted hits a multiple of 4 AND the chamber is below 4/5 AND boostReserveWei is backed,\n        // move POT_SLICE (0.00028 BNB) from boostReserveWei into clearingPotWei and advance clearingSlots += 1.\n        if (\n            (freeMinted % FREE_BOOST_STEP == 0) &&\n            ((clearingSlots % CYCLE_SLOTS) < (CYCLE_SLOTS - 1)) &&\n            (boostReserveWei >= POT_SLICE)\n        ) {\n            boostReserveWei -= POT_SLICE;\n            clearingPotWei += POT_SLICE;\n            clearingSlots += 1;\n            resonanceLevel += 1;\n            emit ChamberResonanceBoost(freeMinted, clearingSlots, clearingPotWei, resonanceLevel);\n        }\n\n        emit FreeClearingSeatIssued(recipient, tokenId, FREE_SEAT_WEIGHT, freeMinted, slotsUntilDrop());\n    }\n\n    function _executePaidSeats(\n        address recipient,\n        uint256 quantity,\n        address referrer,\n        uint256 paidValue\n    ) internal {\n        if (_nextTokenId + quantity - 1 > MAX_SUPPLY) revert MaxSupplyReached();\n\n        bool validRef = _isValidReferrer(referrer, recipient);\n        uint256 unitPrice = validRef ? DISCOUNT_PRICE : PRICE;\n        if (paidValue < unitPrice * quantity) revert InsufficientClearingPayment();\n\n        cumulativeVolumeWei += paidValue;\n\n        uint256 firstTokenId = _nextTokenId;\n        uint256 totalPotAdded = 0;\n        uint256 totalDividendAdded = 0;\n        uint256 totalRefBounty = 0;\n        uint256 totalInstantBuyerPayout = 0;\n\n        // Anti-Single-Slot Atomic Wrapper Guard:\n        // Pure EOAs (tx.origin == msg.sender && msg.sender.code.length == 0) OR full-cycle batch buyers (quantity >= 5)\n        // advance the clearing chamber and trigger 5th-slot clearing drops.\n        bool canAdvanceChamber = (tx.origin == msg.sender && msg.sender.code.length == 0) || (quantity >= CYCLE_SLOTS);\n\n        for (uint256 i = 0; i < quantity; i++) {\n            uint256 tokenId = _nextTokenId++;\n            paidMinted += 1;\n\n            // 1. Add POT_SLICE (0.00028 BNB) to clearingPotWei BEFORE evaluating 5th-slot trigger\n            clearingPotWei += POT_SLICE;\n            totalPotAdded += POT_SLICE;\n\n            // 2. Add DIVIDEND_SLICE (0.00007 BNB) to O(1) Holder Dividend Pool\n            totalDividendAdded += DIVIDEND_SLICE;\n            _distributeDividendSlice(DIVIDEND_SLICE);\n\n            // 3. Referral bounty accounting\n            if (validRef) {\n                totalRefBounty += REFERRAL_BOUNTY;\n            }\n\n            uint8 seatTier = 2;\n            if (canAdvanceChamber) {\n                clearingSlots += 1;\n                uint256 modSlot = clearingSlots % CYCLE_SLOTS;\n\n                // Slot #1 of post-genesis cycle: instant Cycle-Opener Rebate (0.00010 BNB)\n                if (clearingSlots > CYCLE_SLOTS && modSlot == 1) {\n                    totalInstantBuyerPayout += BREAKER_REBATE;\n                    cumulativeRebatesPaidWei += BREAKER_REBATE;\n                    emit CycleOpenerRebatePaid(recipient, clearingSlots, BREAKER_REBATE);\n                }\n\n                // Slot #5 (modSlot == 0): execute 80% Clearing Pot Payout (0.00140 BNB target)\n                if (modSlot == 0) {\n                    seatTier = 3;\n                    uint256 dropPayout = (clearingPotWei * DROP_PAYOUT_BPS) / 10000;\n                    clearingPotWei -= dropPayout;\n                    completedDropCycles += 1;\n                    cumulativeDropsPaidWei += dropPayout;\n                    lastDropWinner = recipient;\n                    lastDropAmountWei = dropPayout;\n                    lastDropTokenId = tokenId;\n                    totalDropsWonByWallet[recipient] += dropPayout;\n                    totalInstantBuyerPayout += dropPayout;\n\n                    emit ClearingPotDropExecuted(\n                        recipient,\n                        completedDropCycles,\n                        tokenId,\n                        dropPayout,\n                        clearingPotWei\n                    );\n                }\n            }\n\n            _mintSeatToken(recipient, tokenId, seatTier, PAID_SEAT_WEIGHT);\n        }\n\n        // 1. Pay referrer bounty (if any):\n        if (totalRefBounty > 0) {\n            referralEarnedWei[referrer] += totalRefBounty;\n            cumulativeReferralBountiesWei += totalRefBounty;\n            _safeSendBNB(referrer, totalRefBounty);\n            emit PartnerReferralSettled(referrer, recipient, quantity, totalRefBounty);\n        }\n\n        // 2. Pay buyer instant payout (Slot-1 rebates + 5th-slot clearing drops) in the SAME transaction:\n        if (totalInstantBuyerPayout > 0) {\n            _safeSendBNB(recipient, totalInstantBuyerPayout);\n        }\n\n        // 3. Exact remaining balance above locked reserves goes straight to PAYEE:\n        uint256 lockedReserves = clearingPotWei + boostReserveWei + dividendPoolReserve + totalPendingFallbackWei + pendingPayeeBalance;\n        uint256 currentBal = address(this).balance;\n        if (currentBal > lockedReserves) {\n            uint256 payeeShare = currentBal - lockedReserves;\n            _sendToPayee(payeeShare);\n        }\n\n        emit PaidClearingSeatExecuted(\n            recipient,\n            firstTokenId,\n            quantity,\n            paidValue,\n            totalPotAdded,\n            totalDividendAdded,\n            slotsUntilDrop()\n        );\n    }\n\n    // =========================================================================\n    //                O(1) DIVIDEND ACCOUNTING & WEIGHT TRANSFER\n    // =========================================================================\n    function _distributeDividendSlice(uint256 amountWei) internal {\n        if (amountWei == 0) return;\n        if (totalShareWeight > 0) {\n            accYieldPerWeight += (amountWei * ACC_PRECISION) / totalShareWeight;\n            dividendPoolReserve += amountWei;\n            cumulativeDividendsAddedWei += amountWei;\n        }\n    }\n\n    function _settleUnclaimed(address account) internal {\n        uint256 weight = holderShareWeight[account];\n        if (weight > 0) {\n            uint256 accumulated = (weight * accYieldPerWeight) / ACC_PRECISION;\n            uint256 debt = rewardDebt[account];\n            if (accumulated > debt) {\n                accruedUnclaimed[account] += (accumulated - debt);\n            }\n        }\n    }\n\n    function _addHolderWeight(address account, uint256 weightDelta) internal {\n        _settleUnclaimed(account);\n        holderShareWeight[account] += weightDelta;\n        totalShareWeight += weightDelta;\n        rewardDebt[account] = (holderShareWeight[account] * accYieldPerWeight) / ACC_PRECISION;\n    }\n\n    function _moveHolderWeight(address from, address to, uint256 weightDelta) internal {\n        if (weightDelta == 0 || from == to) return;\n        _settleUnclaimed(from);\n        _settleUnclaimed(to);\n\n        if (holderShareWeight[from] >= weightDelta) {\n            holderShareWeight[from] -= weightDelta;\n        } else {\n            holderShareWeight[from] = 0;\n        }\n        holderShareWeight[to] += weightDelta;\n\n        rewardDebt[from] = (holderShareWeight[from] * accYieldPerWeight) / ACC_PRECISION;\n        rewardDebt[to] = (holderShareWeight[to] * accYieldPerWeight) / ACC_PRECISION;\n    }\n\n    function claimDividends() external nonReentrant {\n        _harvestDividends(msg.sender);\n    }\n\n    function claimYield() external nonReentrant {\n        _harvestDividends(msg.sender);\n    }\n\n    function harvestDividends() external nonReentrant {\n        _harvestDividends(msg.sender);\n    }\n\n    function withdrawDividends() external nonReentrant {\n        _harvestDividends(msg.sender);\n    }\n\n    function _harvestDividends(address holder) internal {\n        _settleUnclaimed(holder);\n        rewardDebt[holder] = (holderShareWeight[holder] * accYieldPerWeight) / ACC_PRECISION;\n\n        uint256 payout = accruedUnclaimed[holder];\n        if (payout == 0) revert NoPendingDividends();\n        if (payout > dividendPoolReserve) {\n            payout = dividendPoolReserve;\n        }\n\n        accruedUnclaimed[holder] = 0;\n        dividendPoolReserve -= payout;\n        totalClaimedByHolder[holder] += payout;\n        cumulativeDividendsClaimedWei += payout;\n\n        (bool ok, ) = payable(holder).call{value: payout}(\"\");\n        if (!ok) revert NativeTransferFailed();\n\n        emit HolderDividendClaimed(holder, payout);\n    }\n\n    // =========================================================================\n    //                SAFE BNB DISPATCH WITH NON-BLOCKING FALLBACK\n    // =========================================================================\n    function _safeSendBNB(address recipient, uint256 amountWei) internal {\n        if (amountWei == 0) return;\n        (bool ok, ) = payable(recipient).call{value: amountWei, gas: 35000}(\"\");\n        if (!ok) {\n            pendingFallbackBalance[recipient] += amountWei;\n            totalPendingFallbackWei += amountWei;\n        }\n    }\n\n    function _sendToPayee(uint256 amountWei) internal {\n        if (amountWei == 0) return;\n        (bool ok, ) = payable(PAYEE).call{value: amountWei, gas: 35000}(\"\");\n        if (!ok) {\n            pendingPayeeBalance += amountWei;\n        }\n    }\n\n    function withdrawFallbackBalance() external nonReentrant {\n        uint256 amount = pendingFallbackBalance[msg.sender];\n        if (amount == 0) revert NoPendingFallbackBalance();\n        pendingFallbackBalance[msg.sender] = 0;\n        totalPendingFallbackWei -= amount;\n        (bool ok, ) = payable(msg.sender).call{value: amount}(\"\");\n        if (!ok) revert NativeTransferFailed();\n    }\n\n    function flushPayeeBalance() external nonReentrant {\n        uint256 amount = pendingPayeeBalance;\n        if (amount == 0) revert NoPendingFallbackBalance();\n        pendingPayeeBalance = 0;\n        (bool ok, ) = payable(PAYEE).call{value: amount}(\"\");\n        if (!ok) revert NativeTransferFailed();\n    }\n\n    // =========================================================================\n    //               DISCOVERY METADATA & ON-CHAIN SVG RENDERING\n    // =========================================================================\n    function projectWebsite() external view returns (string memory) {\n        return _websiteURI;\n    }\n\n    function website() external view returns (string memory) {\n        return _websiteURI;\n    }\n\n    function skillURI() external view returns (string memory) {\n        return _skillDocURI;\n    }\n\n    function agentJsonURI() external view returns (string memory) {\n        return _agentCardURI;\n    }\n\n    function llmsTxtURI() external view returns (string memory) {\n        return _llmsDocURI;\n    }\n\n    function setProjectURIs(\n        string calldata websiteURI_,\n        string calldata skillDocURI_,\n        string calldata agentCardURI_,\n        string calldata llmsDocURI_\n    ) external onlyMetadataAdmin {\n        _websiteURI = websiteURI_;\n        _skillDocURI = skillDocURI_;\n        _agentCardURI = agentCardURI_;\n        _llmsDocURI = llmsDocURI_;\n        emit ProjectURIsUpdated(websiteURI_, skillDocURI_, agentCardURI_, llmsDocURI_);\n    }\n\n    function setMetadataAdmin(address newAdmin) external onlyMetadataAdmin {\n        if (newAdmin == address(0)) revert ZeroAddressDisallowed();\n        address prev = metadataAdmin;\n        metadataAdmin = newAdmin;\n        emit MetadataAdminChanged(prev, newAdmin);\n    }\n\n    function setVerifiedAgent(address agent, bool status) external onlyOwner {\n        verifiedAgentOverride[agent] = status;\n    }\n\n    function setOpenAccessOverride(bool enabled) external onlyOwner {\n        openAccessOverride = enabled;\n    }\n\n    function topUpClearingPot(uint256 toBoostWei) external payable {\n        if (msg.value == 0) revert InsufficientClearingPayment();\n        uint256 boostAdd = toBoostWei > msg.value ? msg.value : toBoostWei;\n        uint256 potAdd = msg.value - boostAdd;\n        boostReserveWei += boostAdd;\n        clearingPotWei += potAdd;\n        emit ClearingPotToppedUp(msg.sender, potAdd, boostAdd);\n    }\n\n    function contractURI() public view returns (string memory) {\n        string memory json = string(\n            abi.encodePacked(\n                '{\"name\":\"Vektor Pulse Clearinghouse\",\"description\":\"Deterministic 5-Slot Clearing Pot & Real-Time O(1) Dividend Settlement Protocol on BNB Chain. First 100 seats free for .ai Agent ID holders; 0.0010 BNB paid clearing seats fund an 80% every-5th-seat instant clearing drop (0.00140 BNB target) + 10% Slot-1 opener rebate + 7% real-time holder dividends.\",\"external_link\":\"',\n                _websiteURI,\n                '\",\"seller_fee_basis_points\":250,\"fee_recipient\":\"',\n                _toHexAddress(PAYEE),\n                '\"}'\n            )\n        );\n        return string(abi.encodePacked(\"data:application/json;utf8,\", json));\n    }\n\n    function tokenURI(uint256 tokenId) public view returns (string memory) {\n        address seatOwner = _owners[tokenId];\n        if (seatOwner == address(0)) revert InvalidTokenId();\n\n        uint8 tier = tokenTier[tokenId];\n        string memory tierLabel = tier == 3\n            ? \"Cycle Clearing Winner\"\n            : (tier == 2 ? \"Prime Clearing Seat\" : \"Genesis Discovery Seat\");\n        string memory accentHex = tier == 3 ? \"#10b981\" : (tier == 2 ? \"#38bdf8\" : \"#a855f7\");\n        uint256 weight = tokenWeight[tokenId];\n\n        string memory svg = string(\n            abi.encodePacked(\n                '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 600 600\" width=\"600\" height=\"600\">',\n                '<rect width=\"600\" height=\"600\" fill=\"#060a12\"/>',\n                '<rect x=\"24\" y=\"24\" width=\"552\" height=\"552\" rx=\"18\" fill=\"#0b1322\" stroke=\"',\n                accentHex,\n                '\" stroke-width=\"2\"/>',\n                '<text x=\"52\" y=\"78\" fill=\"',\n                accentHex,\n                '\" font-family=\"monospace\" font-size=\"16\" font-weight=\"bold\">VEKTOR PULSE CLEARINGHOUSE // BSC-56</text>',\n                '<text x=\"52\" y=\"128\" fill=\"#f8fafc\" font-family=\"monospace\" font-size=\"30\" font-weight=\"bold\">SEAT #',\n                _toString(tokenId),\n                \"</text>\",\n                '<text x=\"52\" y=\"166\" fill=\"#94a3b8\" font-family=\"monospace\" font-size=\"16\">CLASS: ',\n                tierLabel,\n                \"</text>\",\n                '<line x1=\"52\" y1=\"196\" x2=\"548\" y2=\"196\" stroke=\"#1e293b\" stroke-width=\"2\"/>',\n                '<text x=\"52\" y=\"244\" fill=\"#cbd5e1\" font-family=\"monospace\" font-size=\"16\">DIVIDEND WEIGHT: ',\n                _toString(weight),\n                \" UNITS</text>\",\n                '<text x=\"52\" y=\"284\" fill=\"#cbd5e1\" font-family=\"monospace\" font-size=\"16\">CYCLE CADENCE:   5 SEATS (80% POT DROP)</text>',\n                '<text x=\"52\" y=\"324\" fill=\"#cbd5e1\" font-family=\"monospace\" font-size=\"16\">SLOTS TO DROP:   ',\n                _toString(slotsUntilDrop()),\n                \" / 5</text>\",\n                '<text x=\"52\" y=\"364\" fill=\"#10b981\" font-family=\"monospace\" font-size=\"16\">NEXT DROP EST:   ',\n                _toString(estimatedNextDropWei() / 1e13),\n                \"e-5 BNB</text>\",\n                '<rect x=\"52\" y=\"430\" width=\"496\" height=\"96\" rx=\"10\" fill=\"#060a12\" stroke=\"#1e293b\"/>',\n                '<text x=\"72\" y=\"468\" fill=\"#64748b\" font-family=\"monospace\" font-size=\"13\">CLEARING ENDPOINT: ',\n                _websiteURI,\n                \"</text>\",\n                '<text x=\"72\" y=\"498\" fill=\"#64748b\" font-family=\"monospace\" font-size=\"13\">HOLDER: ',\n                _toHexAddress(seatOwner),\n                \"</text>\",\n                \"</svg>\"\n            )\n        );\n\n        string memory attributes = string(\n            abi.encodePacked(\n                '[{\"trait_type\":\"Seat Class\",\"value\":\"',\n                tierLabel,\n                '\"},{\"trait_type\":\"Dividend Weight\",\"display_type\":\"number\",\"value\":',\n                _toString(weight),\n                '},{\"trait_type\":\"Clearing Cadence\",\"value\":\"Every 5 Paid Seats\"},{\"trait_type\":\"Mint Block\",\"display_type\":\"number\",\"value\":',\n                _toString(tokenMintBlock[tokenId]),\n                \"}]\"\n            )\n        );\n\n        string memory json = string(\n            abi.encodePacked(\n                '{\"name\":\"Vektor Pulse Seat #',\n                _toString(tokenId),\n                '\",\"description\":\"Vektor Pulse Clearinghouse Seat on BNB Smart Chain. Earns real-time O(1) native BNB holder dividends and participates in the 5-Slot Deterministic Clearing Pot.\",\"external_url\":\"',\n                _websiteURI,\n                '\",\"image_data\":\"data:image/svg+xml;utf8,',\n                svg,\n                '\",\"attributes\":',\n                attributes,\n                \"}\"\n            )\n        );\n\n        return string(abi.encodePacked(\"data:application/json;utf8,\", json));\n    }\n\n    // =========================================================================\n    //                        ERC-721 CORE IMPLEMENTATION\n    // =========================================================================\n    function supportsInterface(bytes4 interfaceId) external pure returns (bool) {\n        return\n            interfaceId == 0x01ffc9a7 || // ERC165\n            interfaceId == 0x80ac58cd || // ERC721\n            interfaceId == 0x5b5e139f || // ERC721Metadata\n            interfaceId == 0x2a55205a;   // ERC2981\n    }\n\n    function royaltyInfo(uint256, uint256 salePrice) external view returns (address receiver, uint256 royaltyAmount) {\n        return (PAYEE, (salePrice * 250) / 10000);\n    }\n\n    function name() external view returns (string memory) {\n        return _name;\n    }\n\n    function symbol() external view returns (string memory) {\n        return _symbol;\n    }\n\n    function balanceOf(address account) public view returns (uint256) {\n        if (account == address(0)) revert ZeroAddressDisallowed();\n        return _balances[account];\n    }\n\n    function ownerOf(uint256 tokenId) public view returns (address) {\n        address seatOwner = _owners[tokenId];\n        if (seatOwner == address(0)) revert InvalidTokenId();\n        return seatOwner;\n    }\n\n    function approve(address to, uint256 tokenId) external {\n        address seatOwner = ownerOf(tokenId);\n        if (msg.sender != seatOwner && !_operatorApprovals[seatOwner][msg.sender]) revert NotAuthorizedOrOwner();\n        _tokenApprovals[tokenId] = to;\n        emit Approval(seatOwner, to, tokenId);\n    }\n\n    function getApproved(uint256 tokenId) public view returns (address) {\n        if (_owners[tokenId] == address(0)) revert InvalidTokenId();\n        return _tokenApprovals[tokenId];\n    }\n\n    function setApprovalForAll(address operator, bool approved) external {\n        if (operator == address(0)) revert ZeroAddressDisallowed();\n        _operatorApprovals[msg.sender][operator] = approved;\n        emit ApprovalForAll(msg.sender, operator, approved);\n    }\n\n    function isApprovedForAll(address account, address operator) public view returns (bool) {\n        return _operatorApprovals[account][operator];\n    }\n\n    function transferFrom(address from, address to, uint256 tokenId) public {\n        if (!_isApprovedOrOwner(msg.sender, tokenId)) revert NotAuthorizedOrOwner();\n        _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        if (!_isApprovedOrOwner(msg.sender, tokenId)) revert NotAuthorizedOrOwner();\n        _transfer(from, to, tokenId);\n        if (!_checkOnERC721Received(from, to, tokenId, data)) revert UnsafeERC721Recipient();\n    }\n\n    function _mintSeatToken(address to, uint256 tokenId, uint8 tier, uint256 weight) internal {\n        _owners[tokenId] = to;\n        _balances[to] += 1;\n        tokenTier[tokenId] = tier;\n        tokenWeight[tokenId] = weight;\n        tokenMintBlock[tokenId] = block.number;\n\n        _addHolderWeight(to, weight);\n        emit Transfer(address(0), to, tokenId);\n    }\n\n    function _transfer(address from, address to, uint256 tokenId) internal {\n        if (ownerOf(tokenId) != from) revert NotAuthorizedOrOwner();\n        if (to == address(0)) revert ZeroAddressDisallowed();\n\n        delete _tokenApprovals[tokenId];\n        _balances[from] -= 1;\n        _balances[to] += 1;\n        _owners[tokenId] = to;\n\n        // Red-Team Hardened: settle accrued dividends for both from & to and move exact tokenWeight\n        _moveHolderWeight(from, to, tokenWeight[tokenId]);\n\n        emit Transfer(from, to, tokenId);\n    }\n\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) {\n        address seatOwner = ownerOf(tokenId);\n        return (spender == seatOwner || _tokenApprovals[tokenId] == spender || _operatorApprovals[seatOwner][spender]);\n    }\n\n    function _checkOnERC721Received(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) private returns (bool) {\n        if (to.code.length == 0) return true;\n        try IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, data) returns (bytes4 retval) {\n            return retval == IERC721Receiver.onERC721Received.selector;\n        } catch {\n            return false;\n        }\n    }\n\n    // =========================================================================\n    //                            STRING UTILITIES\n    // =========================================================================\n    function _toString(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 _toHexAddress(address account) internal pure returns (string memory) {\n        bytes20 data = bytes20(account);\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(data[i] >> 4)];\n            str[3 + i * 2] = hexSymbols[uint8(data[i] & 0x0f)];\n        }\n        return string(str);\n    }\n\n    receive() external payable {\n        clearingPotWei += msg.value;\n        emit ClearingPotToppedUp(msg.sender, msg.value, 0);\n    }\n}\n"}},"abi":[{"type":"constructor","inputs":[{"name":"payee_","type":"address","internalType":"address"},{"name":"metadataAdmin_","type":"address","internalType":"address"}],"stateMutability":"payable"},{"name":"AgentIdPassRequired","type":"error","inputs":[]},{"name":"Callerunauthorized","type":"error","inputs":[]},{"name":"ContractFreeClaimBlocked","type":"error","inputs":[]},{"name":"FreeCliffSoldOut","type":"error","inputs":[]},{"name":"FreeSeatAlreadyClaimed","type":"error","inputs":[]},{"name":"InsufficientClearingPayment","type":"error","inputs":[]},{"name":"InvalidSeatQuantity","type":"error","inputs":[]},{"name":"InvalidTokenId","type":"error","inputs":[]},{"name":"MaxSupplyReached","type":"error","inputs":[]},{"name":"NativeTransferFailed","type":"error","inputs":[]},{"name":"NoPendingDividends","type":"error","inputs":[]},{"name":"NoPendingFallbackBalance","type":"error","inputs":[]},{"name":"NotAuthorizedOrOwner","type":"error","inputs":[]},{"name":"PaymentRequiredForClearingSeat","type":"error","inputs":[]},{"name":"ReentrancyLocked","type":"error","inputs":[]},{"name":"UnsafeERC721Recipient","type":"error","inputs":[]},{"name":"ZeroAddressDisallowed","type":"error","inputs":[]},{"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":"ChamberResonanceBoost","type":"event","inputs":[{"name":"freeMilestone","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"newClearingSlots","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"clearingPotWeiAfter","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"resonanceLevel","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"ClearingPotDropExecuted","type":"event","inputs":[{"name":"winner","type":"address","indexed":true,"internalType":"address"},{"name":"cycleNumber","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"triggerTokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"payoutWei","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"retainedPotWei","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"ClearingPotToppedUp","type":"event","inputs":[{"name":"contributor","type":"address","indexed":true,"internalType":"address"},{"name":"clearingAddedWei","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"boostAddedWei","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"CycleOpenerRebatePaid","type":"event","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"clearingSlot","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"rebateWei","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"FreeClearingSeatIssued","type":"event","inputs":[{"name":"agent","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"weightAssigned","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"freeMintedCount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"slotsRemainingToDrop","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"HolderDividendClaimed","type":"event","inputs":[{"name":"holder","type":"address","indexed":true,"internalType":"address"},{"name":"amountWei","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"MetadataAdminChanged","type":"event","inputs":[{"name":"previousAdmin","type":"address","indexed":true,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"OwnershipTransferred","type":"event","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"PaidClearingSeatExecuted","type":"event","inputs":[{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"firstTokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"totalPaidWei","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"potAddedWei","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"dividendAddedWei","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"slotsRemainingToDrop","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"PartnerReferralSettled","type":"event","inputs":[{"name":"referrer","type":"address","indexed":true,"internalType":"address"},{"name":"buyer","type":"address","indexed":true,"internalType":"address"},{"name":"quantity","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"bountyWei","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"ProjectURIsUpdated","type":"event","inputs":[{"name":"websiteURI","type":"string","indexed":false,"internalType":"string"},{"name":"skillDocURI","type":"string","indexed":false,"internalType":"string"},{"name":"agentCardURI","type":"string","indexed":false,"internalType":"string"},{"name":"llmsDocURI","type":"string","indexed":false,"internalType":"string"}],"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":"BASE_POT_RESERVE","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"BREAKER_REBATE","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"CYCLE_SLOTS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"DISCOUNT_PRICE","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"DIVIDEND_SLICE","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"DROP_PAYOUT_BPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"FREE_BOOST_STEP","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"FREE_SEAT_WEIGHT","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":"MAX_BATCH","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"MAX_FREE_BOOSTS","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":"MILESTONE_INTERVAL","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"PAID_SEAT_WEIGHT","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"PAYEE","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"POT_SLICE","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":"REFERRAL_BOUNTY","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"accDividendPerShare","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"accYieldPerWeight","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"accruedUnclaimed","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"agentJsonURI","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"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":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"boostReserveWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"canClaimFree","type":"function","inputs":[{"name":"wallet","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"claim","type":"function","inputs":[],"outputs":[],"stateMutability":"payable"},{"name":"claimAirdrop","type":"function","inputs":[],"outputs":[],"stateMutability":"payable"},{"name":"claimDividends","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"claimYield","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"claimableDividends","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"claimedFree","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"clearingPotWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"clearingSlots","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"completedDropCycles","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"contractURI","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"cost","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"name":"cumulativeDividendsAddedWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"cumulativeDividendsClaimedWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"cumulativeDropsPaidWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"cumulativeRebatesPaidWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"cumulativeReferralBountiesWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"cumulativeVolumeWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"dividendPoolReserve","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"estimatedNextDropWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"flushPayeeBalance","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"fluxPotReserve","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"freeClaim","type":"function","inputs":[],"outputs":[],"stateMutability":"payable"},{"name":"freeMint","type":"function","inputs":[],"outputs":[],"stateMutability":"payable"},{"name":"freeMint","type":"function","inputs":[{"name":"quantity","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"name":"freeMintRemaining","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"freeMinted","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"freeSupply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"name":"getApproved","type":"function","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"getMintInfo","type":"function","inputs":[{"name":"wallet","type":"address","internalType":"address"}],"outputs":[{"name":"eligibleForAgentId","type":"bool","internalType":"bool"},{"name":"canMintFreeNow","type":"bool","internalType":"bool"},{"name":"freeRemaining","type":"uint256","internalType":"uint256"},{"name":"currentPaidPrice","type":"uint256","internalType":"uint256"},{"name":"currentClearingPotWei","type":"uint256","internalType":"uint256"},{"name":"slotsRemainingToDrop","type":"uint256","internalType":"uint256"},{"name":"nextDropEstimateWei","type":"uint256","internalType":"uint256"},{"name":"pendingHolderDividendWei","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"harvestDividends","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"hasAgentId","type":"function","inputs":[{"name":"wallet","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"hasMintedFree","type":"function","inputs":[{"name":"wallet","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"holderShareWeight","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"isApprovedForAll","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"jackpotPool","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"lastDropAmountWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"lastDropTokenId","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"lastDropWinner","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"lastMilestoneReward","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"lastMilestoneWinner","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"llmsTxtURI","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"maxSupply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"name":"metadataAdmin","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"milestoneCount","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"milestonePool","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"mint","type":"function","inputs":[],"outputs":[],"stateMutability":"payable"},{"name":"mint","type":"function","inputs":[{"name":"quantity","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"name":"mintBatch","type":"function","inputs":[{"name":"quantity","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"name":"mintPrice","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"name":"mintSeats","type":"function","inputs":[{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"referrer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"name":"mintTo","type":"function","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"referrer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"name":"mintWithRef","type":"function","inputs":[{"name":"quantity","type":"uint256","internalType":"uint256"},{"name":"referrer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"name":"name","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"nextSlotInstantRebateWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"openAccessOverride","type":"function","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"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":"paidSlots","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"paidUntilNextMilestone","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"pendingFallbackBalance","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"pendingPayeeBalance","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"pendingRewards","type":"function","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"pendingYield","type":"function","inputs":[{"name":"account","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":"projectWebsite","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"quote","type":"function","inputs":[{"name":"wallet","type":"address","internalType":"address"},{"name":"quantity","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"quoteWithRef","type":"function","inputs":[{"name":"referrer","type":"address","internalType":"address"},{"name":"quantity","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"referralEarnedWei","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"remainingSupply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"resonanceLevel","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"rewardDebt","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"rewardPool","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"royaltyInfo","type":"function","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"salePrice","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"royaltyAmount","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":"setMetadataAdmin","type":"function","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setOpenAccessOverride","type":"function","inputs":[{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setProjectURIs","type":"function","inputs":[{"name":"websiteURI_","type":"string","internalType":"string"},{"name":"skillDocURI_","type":"string","internalType":"string"},{"name":"agentCardURI_","type":"string","internalType":"string"},{"name":"llmsDocURI_","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setVerifiedAgent","type":"function","inputs":[{"name":"agent","type":"address","internalType":"address"},{"name":"status","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"skillURI","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"slotsUntilDrop","type":"function","inputs":[],"outputs":[{"name":"","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":"tokenMintBlock","type":"function","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"tokenTier","type":"function","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"name":"tokenURI","type":"function","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"tokenWeight","type":"function","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"topUpClearingPot","type":"function","inputs":[{"name":"toBoostWei","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"name":"totalClaimedByHolder","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalDividendsDistributed","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalDropsWonByWallet","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalMinted","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalPendingFallbackWei","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"totalShareWeight","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":"verifiedAgentOverride","type":"function","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"website","type":"function","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"name":"withdrawDividends","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"withdrawFallbackBalance","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"}],"matchId":"57720431","creationMatch":"exact_match","runtimeMatch":"exact_match","verifiedAt":"2026-10-30T19:57:48Z","match":"exact_match","chainId":"56","address":"0x1b0393e067a92C501aa0daAA5C28fDe508bEFFa8"}