{
 "chain": {
  "chainId": 56,
  "name": "BNB Smart Chain",
  "nativeCurrency": "BNB",
  "rpc": "https://rpc-bsc.48.club"
 },
 "contracts": {
  "agentIdRegistry": "0x60B9262456dE011F7d15a54CdD8c48bAaa8B022F",
  "marketplace": "0x4b9B8fd6361A9E1BaA0705fa77252F14dC54C10A",
  "nft": "0x6C90D2302bF0a9DaaF453f3Af2CD79f3C9B79CF8"
 },
 "marketplace": {
  "floorRatchet": "The market tracks its cheapest active listing (the floor). When the floor listing sells and its price is above minPrice, minPrice automatically rises to that sale price (event MinPriceUpdated with ratchet=true). minPrice never falls on its own; list() and setPrice() revert below minPrice for every seller. The market owner can override minPrice manually at any time via setMinPrice.",
  "functions": {
   "approve": "setApprovalForAll(marketplace, true) \u2014 selector 0xa22cb465, one time per wallet",
   "buy": "buy(uint256 tokenId) payable \u2014 selector 0xd96a094a, send exactly the listing price; REVERTS while tradingOpen() is false (buying unlocks at sold out)",
   "cancel": "cancel(uint256 tokenId) \u2014 selector 0x40e58ee5, free; re-listing later pays the listing fee again",
   "getListing": "getListing(uint256) returns (seller, price) \u2014 selector 0x107a274a",
   "list": "list(uint256 tokenId, uint256 price) payable \u2014 selector 0x50fd7367, send exactly listingFeeWei as value (the fee recipient lists with value 0); price must be >= minPrice() once a minimum exists",
   "minPrice": "minPrice() \u2014 selector 0xe45be8eb, current market minimum price in wei (starts at 0, only rises via floor-sale ratchet or owner override)",
   "setPrice": "setPrice(uint256 tokenId, uint256 newPrice) \u2014 selector 0xf7d97577, free, must stay >= minPrice()",
   "tradingOpen": "tradingOpen() \u2014 selector 0xffb54a99, true once publicMinted() reaches 1,980"
  },
  "listingFeeWei": "142000000000000",
  "listingsExpire": false,
  "listingsOpenFrom": "launch (list() is always open, even before trading unlocks)",
  "minPrice": "starts at 0; ratchets up automatically on floor sales once trading opens (see floorRatchet)",
  "royalty": "5% (EIP-2981) to the creator on every sale",
  "tradingOpensAt": "sold out \u2014 buying unlocks when the NFT contract's publicMinted() reaches 1,980 of 1,980; there is no time-based fallback"
 },
 "metadataBase": "https://emberforge-b9w.pages.dev/",
 "mint": {
  "checks": {
   "difficultyBitsSelector": "0x249379ad",
   "hasMintedSelector": "0x38e21cce",
   "publicMintedSelector": "0xa4f4f8af",
   "registryBalanceOfSelector": "0x70a08231",
   "totalMintedSelector": "0xa2309ff8"
  },
  "function": "mint(uint256 nonce)",
  "gate": "Agent ID required: registry balanceOf(caller) > 0 \u2014 Agentic Wallet only",
  "maxPerWallet": 1,
  "note": "This is a proof-of-work mint. Find a nonce such that keccak256(abi.encodePacked(yourAddress, nonce)) has at least difficultyBits() leading zero bits, then call mint(nonce). Difficulty phases (by publicMinted): phase 1 = 24 bits (0-499), phase 2 = 27 bits (500-999), phase 3 = 30 bits (1,000-1,499), phase 4 = 33 bits (1,500-1,979). Token IDs are assigned in mint order, skipping the 20 reserve ids pre-minted to the creator (reserve ids are fixed in the NFT constructor at deploy). Your tokenId is in the ForgeMinted event of your mint transaction. Artwork is revealed through the metadata after mint.",
  "price": "0 (free, gas only, plus your own proof-of-work)",
  "publicSupply": 1980,
  "selector": "0xa0712d68",
  "totalSupply": 2000
 },
 "project": "Emberforge",
 "status": "LIVE \u2014 contracts deployed 2026-11-02; mint open",
 "symbol": "EMBER",
 "tagline": "Forged, not given \u2014 a free proof-of-work relic collection whose market floor only moves up",
 "website": "https://emberforge-site.pages.dev"
}