{
  "name": "Whalers",
  "symbol": "WHALE",
  "names": {
    "en": "Whalers",
    "zh-CN": "捕鲸者",
    "vi": "Thợ Săn Cá Voi",
    "ja": "ホエーラーズ",
    "ko": "웨일러스",
    "th": "นักล่าวาฬ",
    "id": "Pemburu Paus"
  },
  "description_i18n": {
    "en": "2,000 agentic NFTs on BNB Chain. Open to every wallet: humans, bots and AI agents. Vintage whaling-era portraits, drawn and stored 100% on-chain.",
    "zh-CN": "BNB Chain 上的 2,000 个智能体 NFT，向所有钱包开放：真人、机器人和 AI 智能体都能铸造。 复古捕鲸时代风格肖像，100% 链上生成并存储。",
    "vi": "2.000 NFT agentic trên BNB Chain. Mở cho mọi ví: người dùng, bot và AI agent. Chân dung phong cách thời săn cá voi cổ điển, được vẽ và lưu trữ 100% on-chain.",
    "ja": "BNB Chain上の2,000体のエージェント型NFT。人間、ボット、AIエージェント、すべてのウォレットに開かれています。 古き捕鯨時代のポートレートを、100%オンチェーンで描画・保存。",
    "ko": "BNB Chain의 에이전틱 NFT 2,000개. 사람, 봇, AI 에이전트 등 모든 지갑에 열려 있습니다. 옛 포경 시대 감성의 초상화를 100% 온체인으로 그리고 저장합니다.",
    "th": "NFT แบบเอเจนต์ 2,000 ชิ้นบน BNB Chain เปิดให้ทุกกระเป๋า ทั้งคน บอท และเอเจนต์ AI ภาพเหมือนสไตล์ยุคล่าวาฬวินเทจ วาดและจัดเก็บบนเชน 100%",
    "id": "2.000 NFT agentik di BNB Chain. Terbuka untuk semua dompet: manusia, bot, dan agen AI. Potret bergaya era perburuan paus klasik, digambar dan disimpan 100% on-chain."
  },
  "chain": "BNB Smart Chain",
  "chainId": 56,
  "standard": "ERC-721 (+ERC-2981, ERC-4906, ERC-165)",
  "contract": "0x94F4986cCe62334e49fe56745E3e40c236D5BAA0",
  "contract_status": "Deployed and source-verified (Sourcify exact match).",
  "deploy_tx": "0xa53eb8a629d07249c7ea4ef29d3e980efc452b12be5e6ac239fd8f2b84fa8f65",
  "deploy_block": 130874760,
  "verification": {
    "sourcify": "https://repo.sourcify.dev/56/0x94F4986cCe62334e49fe56745E3e40c236D5BAA0",
    "bscscan": "https://bscscan.com/address/0x94F4986cCe62334e49fe56745E3e40c236D5BAA0#code"
  },
  "agent_prompt": {
    "en": "Mint Whalers NFTs for me on BNB Chain.\n- Network: BNB Chain mainnet, chain ID 56\n- Contract: 0x94F4986cCe62334e49fe56745E3e40c236D5BAA0 (verified on Sourcify)\n- Function: mint(uint256 quantity), selector 0xa0712d68\n- Quantity: [1-5] (max 5 per wallet in total)\n- Value: exactly 286000000000000 wei × quantity (0.000286 BNB each). Any other amount reverts. No refunds.\n- Mint opens at Unix 1793534400 = 1 Nov 2026 20:00 Asia/Shanghai. Before that it reverts with \"Mint not started\".\n- First check mintedBy(my address) and totalMinted() so you don't exceed 5 or the 2,000 supply.\n- Show me the total in BNB and the gas, send the transaction from my wallet, then give me the tx hash and my token IDs.\nFull spec: https://whalers.pages.dev/mint.json and https://whalers.pages.dev/llms.txt",
    "zh-CN": "请帮我在 BNB Chain 上铸造 Whalers（捕鲸者）NFT。\n- 网络：BNB Chain 主网，chain ID 56\n- 合约：0x94F4986cCe62334e49fe56745E3e40c236D5BAA0（已在 Sourcify 验证）\n- 函数：mint(uint256 quantity)，selector 0xa0712d68\n- 数量：[1-5]（每个钱包累计最多 5 个）\n- 金额：必须正好是 286000000000000 wei × 数量（每个 0.000286 BNB）。其他任何金额都会 revert（交易失败）。不退款。\n- 铸造开始时间：Unix 1793534400 = 1 Nov 2026 20:00 Asia/Shanghai（北京时间）。在此之前会 revert，错误信息为 \"Mint not started\"。\n- 先查询 mintedBy(我的地址) 和 totalMinted()，确保不超过 5 个，也不超过 2,000 的总量。\n- 先告诉我 BNB 总额和 gas 费用，然后从我的钱包发送交易，最后给我交易哈希（tx hash）和我的 token ID。\n完整说明：https://whalers.pages.dev/mint.json 和 https://whalers.pages.dev/llms.txt",
    "vi": "Hãy mint NFT Whalers cho tôi trên BNB Chain.\n- Mạng: BNB Chain mainnet, chain ID 56\n- Hợp đồng: 0x94F4986cCe62334e49fe56745E3e40c236D5BAA0 (đã xác minh trên Sourcify)\n- Hàm: mint(uint256 quantity), selector 0xa0712d68\n- Số lượng: [1-5] (tối đa 5 cho mỗi ví, tính tổng cộng)\n- Giá trị: chính xác 286000000000000 wei × số lượng (0.000286 BNB mỗi NFT). Mọi số tiền khác đều bị revert. Không hoàn tiền.\n- Mint mở lúc Unix 1793534400 = 1 Nov 2026 20:00 Asia/Shanghai. Trước thời điểm đó giao dịch bị revert với \"Mint not started\".\n- Trước tiên hãy kiểm tra mintedBy(địa chỉ của tôi) và totalMinted() để không vượt quá 5 hoặc tổng cung 2,000.\n- Cho tôi xem tổng số BNB và phí gas, gửi giao dịch từ ví của tôi, rồi đưa tôi tx hash và các token ID của tôi.\nThông số đầy đủ: https://whalers.pages.dev/mint.json và https://whalers.pages.dev/llms.txt",
    "ja": "BNB Chain で Whalers（ホエーラーズ）NFT をミントしてください。\n- ネットワーク：BNB Chain メインネット、chain ID 56\n- コントラクト：0x94F4986cCe62334e49fe56745E3e40c236D5BAA0（Sourcify で検証済み）\n- 関数：mint(uint256 quantity)、selector 0xa0712d68\n- 数量：[1-5]（1 ウォレットあたり合計最大 5）\n- 送金額：ちょうど 286000000000000 wei × 数量（1 枚 0.000286 BNB）。それ以外の金額はリバートします。返金はありません。\n- ミント開始：Unix 1793534400 = 1 Nov 2026 20:00 Asia/Shanghai。それより前は \"Mint not started\" でリバートします。\n- まず mintedBy(私のアドレス) と totalMinted() を確認し、5 枚または総供給量 2,000 を超えないようにしてください。\n- BNB の合計額とガス代を見せてから、私のウォレットからトランザクションを送信し、tx ハッシュと私のトークン ID を教えてください。\n詳細仕様：https://whalers.pages.dev/mint.json と https://whalers.pages.dev/llms.txt",
    "ko": "BNB Chain에서 Whalers(웨일러스) NFT를 민팅해 주세요.\n- 네트워크: BNB Chain 메인넷, chain ID 56\n- 컨트랙트: 0x94F4986cCe62334e49fe56745E3e40c236D5BAA0 (Sourcify에서 검증됨)\n- 함수: mint(uint256 quantity), selector 0xa0712d68\n- 수량: [1-5] (지갑당 총 최대 5개)\n- 금액: 정확히 286000000000000 wei × 수량 (개당 0.000286 BNB). 다른 금액은 모두 revert됩니다. 환불은 없습니다.\n- 민팅 시작: Unix 1793534400 = 1 Nov 2026 20:00 Asia/Shanghai. 그 전에는 \"Mint not started\"로 revert됩니다.\n- 먼저 mintedBy(내 주소)와 totalMinted()를 확인해서 5개 또는 총 공급량 2,000개를 넘지 않게 해 주세요.\n- BNB 총액과 가스비를 보여 준 다음, 내 지갑에서 트랜잭션을 보내고 tx 해시와 내 토큰 ID를 알려 주세요.\n전체 사양: https://whalers.pages.dev/mint.json 및 https://whalers.pages.dev/llms.txt",
    "th": "ช่วยมินต์ NFT Whalers ให้ฉันบน BNB Chain\n- เครือข่าย: BNB Chain mainnet, chain ID 56\n- สัญญา: 0x94F4986cCe62334e49fe56745E3e40c236D5BAA0 (ยืนยันแล้วบน Sourcify)\n- ฟังก์ชัน: mint(uint256 quantity), selector 0xa0712d68\n- จำนวน: [1-5] (สูงสุด 5 ต่อกระเป๋า นับรวมทั้งหมด)\n- มูลค่า: ต้องเป็น 286000000000000 wei × จำนวน พอดี (ชิ้นละ 0.000286 BNB) จำนวนอื่นจะ revert ทั้งหมด ไม่มีการคืนเงิน\n- เปิดมินต์เวลา Unix 1793534400 = 1 Nov 2026 20:00 Asia/Shanghai ก่อนหน้านั้นจะ revert ด้วยข้อความ \"Mint not started\"\n- ตรวจสอบ mintedBy(ที่อยู่ของฉัน) และ totalMinted() ก่อน เพื่อไม่ให้เกิน 5 หรือเกินซัพพลาย 2,000\n- แสดงยอดรวมเป็น BNB และค่า gas ให้ฉันดู ส่งธุรกรรมจากกระเป๋าของฉัน แล้วแจ้ง tx hash และ token ID ของฉัน\nสเปกฉบับเต็ม: https://whalers.pages.dev/mint.json และ https://whalers.pages.dev/llms.txt",
    "id": "Mint NFT Whalers untuk saya di BNB Chain.\n- Jaringan: BNB Chain mainnet, chain ID 56\n- Kontrak: 0x94F4986cCe62334e49fe56745E3e40c236D5BAA0 (terverifikasi di Sourcify)\n- Fungsi: mint(uint256 quantity), selector 0xa0712d68\n- Jumlah: [1-5] (maks. 5 per dompet secara total)\n- Nilai: tepat 286000000000000 wei × jumlah (0.000286 BNB per NFT). Jumlah lain akan revert. Tidak ada pengembalian dana.\n- Mint dibuka pada Unix 1793534400 = 1 Nov 2026 20:00 Asia/Shanghai. Sebelum itu transaksi revert dengan \"Mint not started\".\n- Periksa dulu mintedBy(alamat saya) dan totalMinted() agar tidak melebihi 5 atau suplai 2,000.\n- Tunjukkan total dalam BNB dan gas-nya, kirim transaksi dari dompet saya, lalu berikan tx hash dan token ID saya.\nSpesifikasi lengkap: https://whalers.pages.dev/mint.json dan https://whalers.pages.dev/llms.txt"
  },
  "agent_prompt_note": "Paste agent_prompt[lang] into a wallet agent (e.g. Binance Agentic Wallet) or any .ai agent. No Agent ID or allowlist is needed; any wallet or agent on BNB Chain can mint.",
  "mint": {
    "function": "mint(uint256)",
    "selector": "0xa0712d68",
    "argument": "quantity (1 to 5)",
    "payable": true,
    "price_wei": "286000000000000",
    "price_bnb": "0.000286",
    "value_rule": "msg.value must equal exactly 286000000000000 * quantity, otherwise it reverts with \"Wrong price\"",
    "value_table_wei": {
      "1": "286000000000000",
      "2": "572000000000000",
      "3": "858000000000000",
      "4": "1144000000000000",
      "5": "1430000000000000"
    },
    "max_per_tx": 5,
    "max_per_wallet": 5,
    "max_supply": 2000,
    "start_time_unix": 1793534400,
    "start_time": "2026-11-01T20:00:00+08:00",
    "start_time_text": "1 Nov 2026 20:00 Asia/Shanghai (Beijing time)",
    "open_to": "Any address, including smart-contract wallets and AI agents. No allowlist, no tx.origin check.",
    "calldata_example_qty1": "0xa0712d680000000000000000000000000000000000000000000000000000000000000001",
    "closes": "Minting closes for good once commitReveal() has been called (sell-out, or the 7-day deadline below).",
    "revert_reasons": [
      "Mint not started",
      "Mint closed",
      "Bad quantity",
      "Sold out",
      "Wallet limit",
      "Wrong price",
      "Payout failed"
    ]
  },
  "reveal": {
    "summary": "Trustless delayed reveal. No rarity exists at mint; every token shows the same sealed scroll until reveal. Anyone can call both steps (value 0).",
    "unrevealed_image": "https://whalers.pages.dev/unrevealed.svg",
    "unrevealed_traits": [
      {
        "trait_type": "Status",
        "value": "Unrevealed"
      }
    ],
    "step1": {
      "function": "commitReveal()",
      "selector": "0x9d7b3f2d",
      "calldata": "0x9d7b3f2d",
      "value": "0",
      "allowed_when": "totalMinted() == 2000, or block.timestamp >= 1794139200 (8 Nov 2026 20:00 Asia/Shanghai = MINT_START + 7 days)",
      "effect": "revealBlock = block.number + 5; minting closes. Re-commit is allowed if the reveal was not done within 256 blocks after revealBlock.",
      "reverts": [
        "Already revealed",
        "Not eligible",
        "Already committed"
      ]
    },
    "step2": {
      "function": "reveal()",
      "selector": "0xa475b5dd",
      "calldata": "0xa475b5dd",
      "value": "0",
      "allowed_when": "block.number > revealBlock and blockhash(revealBlock) is still available (at most 256 blocks, about 2 minutes on BNB Chain)",
      "effect": "seed = blockhash(revealBlock); offset = seed % 2000; emits Revealed(offset) and ERC-4906 BatchMetadataUpdate(1, totalMinted())",
      "reverts": [
        "Already revealed",
        "Too early",
        "Reveal expired"
      ]
    },
    "status_view": {
      "function": "revealStatus()",
      "selector": "0x263e4f5e",
      "returns": "(uint256 phase, uint256 blockNow, uint256 revealBlock, bool canCommit, bool canReveal); phase 0 = minting/not committed, 1 = committed, 2 = commit expired (re-commit), 3 = revealed"
    },
    "events": {
      "RevealCommitted(uint256,address)": "0x503e182212b4e19f40bee95ce3decdeb587cdcbd83f55f8a014778eb88486fcd",
      "Revealed(uint256)": "0x15120e52505e619cbf6c2af910d5cf7f9ee1befa55801b078c33e93880b2d609",
      "BatchMetadataUpdate(uint256,uint256)": "0x6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c"
    },
    "honest_risk": "The one BNB Chain validator that produces block revealBlock could try to influence the seed (choose block contents, or skip its slot). A committer could also wait out the 256-block window and re-commit. Anyone can call reveal() as soon as it is allowed, which closes both windows; a single honest caller is enough."
  },
  "views": {
    "totalMinted()": "0xa2309ff8",
    "totalSupply()": "0x18160ddd",
    "mintedBy(address)": "0x3cef28d2",
    "mintPrice()": "0x6817c76c",
    "MINT_START()": "0xc6374d0c",
    "revealStatus()": "0x263e4f5e",
    "revealBlock()": "0x66bb81c7",
    "revealed()": "0x51830227",
    "revealSeed()": "0x32c2f7f8",
    "revealOffset()": "0x2097ac3b",
    "REVEAL_DEADLINE()": "0x26e05dd4",
    "REVEAL_DELAY()": "0xa7bc4e30",
    "traitsOf(uint256)": "0x5efab6e4 (reverts \"Not revealed\" before reveal)",
    "tokenURI(uint256)": "0xc87b56dd",
    "contractURI()": "0xe8a3d485",
    "ownerOf(uint256)": "0x6352211e",
    "royaltyInfo(uint256,uint256)": "0x2a55205a"
  },
  "rarity": {
    "method": "fixed 2000-slot deck, shuffled once at reveal (Feistel permutation + cycle-walking); token i gets slot permute((i + offset) % 2000)",
    "deck_totals": {
      "Common": 900,
      "Uncommon": 600,
      "Rare": 300,
      "Epic": 150,
      "Legendary": 50
    },
    "note": "Totals are exact if all 2000 mint. If the deadline path is used, minted tokens draw from the same shuffled deck, so tier shares stay close to the deck odds. Nothing about rarity is knowable or re-rollable inside a mint transaction.",
    "other_traits": "keccak256(seed, tokenId)"
  },
  "payout": "0x5ec628f3339B1fEC2e8572a5b307932cC3bCdd1a",
  "royalty_bps": 500,
  "control": "No owner, no admin, no pause, no proxy, no upgrade.",
  "metadata": "Fully on-chain SVG; tokenURI and contractURI return data:application/json;base64",
  "rpc": [
    "https://bsc-dataseed.bnbchain.org",
    "https://bsc-dataseed1.defibit.io",
    "https://bsc-dataseed1.ninicoin.io",
    "https://bsc-rpc.publicnode.com",
    "https://bsc.drpc.org"
  ],
  "explorer": "https://bscscan.com/address/0x94F4986cCe62334e49fe56745E3e40c236D5BAA0",
  "tx_templates": [
    {
      "quantity": 1,
      "chainId": 56,
      "to": "0x94F4986cCe62334e49fe56745E3e40c236D5BAA0",
      "value": "286000000000000",
      "value_hex": "0x1041d9067e000",
      "data": "0xa0712d680000000000000000000000000000000000000000000000000000000000000001"
    },
    {
      "quantity": 2,
      "chainId": 56,
      "to": "0x94F4986cCe62334e49fe56745E3e40c236D5BAA0",
      "value": "572000000000000",
      "value_hex": "0x2083b20cfc000",
      "data": "0xa0712d680000000000000000000000000000000000000000000000000000000000000002"
    },
    {
      "quantity": 3,
      "chainId": 56,
      "to": "0x94F4986cCe62334e49fe56745E3e40c236D5BAA0",
      "value": "858000000000000",
      "value_hex": "0x30c58b137a000",
      "data": "0xa0712d680000000000000000000000000000000000000000000000000000000000000003"
    },
    {
      "quantity": 4,
      "chainId": 56,
      "to": "0x94F4986cCe62334e49fe56745E3e40c236D5BAA0",
      "value": "1144000000000000",
      "value_hex": "0x41076419f8000",
      "data": "0xa0712d680000000000000000000000000000000000000000000000000000000000000004"
    },
    {
      "quantity": 5,
      "chainId": 56,
      "to": "0x94F4986cCe62334e49fe56745E3e40c236D5BAA0",
      "value": "1430000000000000",
      "value_hex": "0x51493d2076000",
      "data": "0xa0712d680000000000000000000000000000000000000000000000000000000000000005"
    }
  ],
  "urls": {
    "site": "https://whalers.pages.dev",
    "mint_json": "https://whalers.pages.dev/mint.json",
    "llms_txt": "https://whalers.pages.dev/llms.txt",
    "llms_full_txt": "https://whalers.pages.dev/llms-full.txt",
    "abi": "https://whalers.pages.dev/abi.json",
    "status": "https://whalers.pages.dev/status.json",
    "agent_card": "https://whalers.pages.dev/.well-known/agent.json"
  },
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "numerator",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "denominator",
          "type": "uint256"
        }
      ],
      "name": "ERC2981InvalidDefaultRoyalty",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "ERC2981InvalidDefaultRoyaltyReceiver",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "numerator",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "denominator",
          "type": "uint256"
        }
      ],
      "name": "ERC2981InvalidTokenRoyalty",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "ERC2981InvalidTokenRoyaltyReceiver",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC721IncorrectOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721InsufficientApproval",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "approver",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidApprover",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidOperator",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidReceiver",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidSender",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonexistentToken",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_fromTokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_toTokenId",
          "type": "uint256"
        }
      ],
      "name": "BatchMetadataUpdate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "revealBlock",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "RevealCommitted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "offset",
          "type": "uint256"
        }
      ],
      "name": "Revealed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MAX_PER_TX",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_PER_WALLET",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_SUPPLY",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINT_START",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PAYOUT",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRICE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REVEAL_DEADLINE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REVEAL_DELAY",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ROYALTY_BPS",
      "outputs": [
        {
          "internalType": "uint96",
          "name": "",
          "type": "uint96"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "commitReveal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "contractURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "quantity",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mintPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "mintedBy",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "reveal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "revealBlock",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "revealOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "revealSeed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "revealStatus",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "phase",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "blockNow",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "commitBlock",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "canCommit",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "canReveal",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "revealed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "salePrice",
          "type": "uint256"
        }
      ],
      "name": "royaltyInfo",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalMinted",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "traitsOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "rarity",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "whale",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "body",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "bg",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "acc",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "eyes",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ]
}
