# aipalu Agent guide Network chainId: 56 Deployment: configured — verify bytecode and chain before use Token: 0x52081008bD3EEb7291f607b3AcD35033C778401e Lottery: 0x29EB833aa75c815A7D386B9EB81DEFA262e870f4 ## Direct RPC reads (no website login required) Use a trusted BSC JSON-RPC endpoint; public fallback: https://bsc-dataseed.bnbchain.org . Never embed private RPC credentials in shared prompts. Verify eth_chainId equals the manifest chainId and eth_getCode is nonempty at both configured addresses. If NOT DEPLOYED, stop; never substitute sample addresses. The public BSC fallback is only for chainId 56, not local development or testnet. Use eth_blockNumber once and the same block tag for all eth_call reads needed for a quote. Encode/decode calls with the generated ABI below (ethers Interface or viem encodeFunctionData/decodeFunctionResult); eth_call returns ABI-encoded hex, not human token units. Token reads: mintEnabled(), launched(), registrar(), freeMinted(), paidMinted(), freeClaimed(address), paidCount(address), FREE_SHARES(), PAID_SHARES(), MAX_SHARES_PER_WALLET(), MINT_PRICE(), SHARE(), pair(). Registrar: balanceOf(address) returns uint256; require >0 for Mint. Call the registrar returned by the token, not a guessed registry. Read the sender's BNB via eth_getBalance for payment plus gas. Lottery reads: currentRoundId(), roundEndsAt(), roundTickets(), availablePool(), nextRoundToSettle(), completedRounds(), roundDeadline(uint256), pools(uint256), ticketsInRound(uint256), deployer(), totalPaid(), pendingOf(address), ticketsOf(uint256,address), getRounds(uint256,uint256). Token amounts use 18 decimals; BNB values are wei. Current round getters describe the current time window, not the oldest unsettled round. Due backlog = currentRoundId - nextRoundToSettle when nextRoundToSettle > 0; use roundDeadline(nextRoundToSettle) and the latest block timestamp for settlement eligibility. An RPC error is not a zero balance or proof of ineligibility. ## Generated contract ABI Token: [{"inputs":[{"internalType":"address","name":"initialProjectWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidState","type":"error"},{"inputs":[],"name":"MintClosed","type":"error"},{"inputs":[],"name":"NoAgent","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"PaymentFailed","type":"error"},{"inputs":[],"name":"PoolRejected","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"TransfersClosed","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"supply","type":"uint256"}],"name":"Launched","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"lottery","type":"address"}],"name":"LotteryConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"MintEnabledChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"free","type":"bool"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previous","type":"address"},{"indexed":true,"internalType":"address","name":"next","type":"address"}],"name":"ProjectWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnb","type":"uint256"}],"name":"TaxProcessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BSC_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BSC_INFINITY_VAULT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BSC_POOL_MANAGER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BSC_REGISTRAR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BSC_ROUTER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BSC_WBNB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FREE_SHARES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SHARES_PER_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAID_SHARES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SHARE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TAX_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SHARES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flushRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"freeClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freeMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"infinityVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lottery","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryPending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"paidCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paidMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"projectPending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registrar","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"rejects","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserves","outputs":[{"internalType":"uint256","name":"tokenReserve","type":"uint256"},{"internalType":"uint256","name":"bnbReserve","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"setLottery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setMintEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"next","type":"address"}],"name":"setProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxTokens","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":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wbnb","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}] Lottery: [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidRecipient","type":"error"},{"inputs":[],"name":"InvalidState","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"PaymentFailed","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Funded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"status","type":"uint8"}],"name":"RoundSettled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"roundId","type":"uint256"},{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"count","type":"uint256"}],"name":"TicketsIssued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"MAX_TICKETS_PER_BUY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ROUND_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TICKET_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"availablePool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"completedRounds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRoundId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"beforeId","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"getRounds","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"settledAt","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"uint256","name":"winningTicket","type":"uint256"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"}],"internalType":"struct AipaluLottery.Round[]","name":"result","type":"tuple[]"},{"internalType":"uint256","name":"nextCursor","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"deployer_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nextRoundToSettle","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"},{"internalType":"uint256","name":"bnbValue","type":"uint256"}],"name":"onBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pendingOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pools","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"retryPrizePayout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"roundDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"roundEndsAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"roundTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rounds","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"settledAt","type":"uint256"},{"internalType":"address","name":"winner","type":"address"},{"internalType":"uint256","name":"winningTicket","type":"uint256"},{"internalType":"uint256","name":"totalTickets","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint8","name":"status","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"settle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"syncDonations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ticketsInRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"ticketsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUnsettledPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}] ## Mint rules Total: 20,000 user shares, split into independent quotas of 10,000 free and 10,000 paid shares, open concurrently. Each eligible wallet may mint at most ten shares in total. Read freeMinted, paidMinted, freeClaimed and paidCount reliably before quoting, using same-block contract reads for transaction previews. freeRemaining=10000-freeMinted; paidRemaining=10000-paidMinted; walletMinted=(freeClaimed?1:0)+paidCount; freeQuantity=(!freeClaimed && freeRemaining>0)?1:0; maximumQuantity=min(10-walletMinted,paidRemaining+freeQuantity). mint(quantity) accepts 1..maximumQuantity shares. paidQuantity=quantity-freeQuantity; exact value=paidQuantity*1500000000000000 wei. While free quota remains, an unused wallet receives one free share and pays for the rest; first mint of ten costs 0.0135 BNB. After free quota is exhausted, a new wallet can pay for all ten shares (0.015 BNB). After paid quota is exhausted, an unused eligible wallet may still claim one free share if available. Gas is always required. Category limits cannot substitute for each other. A race for the final free share invalidates the old value: revert and requote, never silently increase payment. Reject stale quotes or changed quotas; simulate before confirmation. Each user share receives 10,000,000 AIPALU. Only paid shares mint another 10,000,000 per share into the official token/WBNB pool with their payment; free shares do not add liquidity. Never send BNB directly expecting Mint. Mint requires balanceOf(sender)>0 at the registrar returned by Token.registrar(). Mint is disabled by default; the Token owner must enable it before participation. Before quoting or submitting Mint, require Token.mintEnabled() == true and Token.launched() == false. launch permanently closes all Mint. Unissued shares are never minted afterward. All launch paths require successful paid liquidity. Automatic launch occurs when all 20,000 shares are minted. Exhaustion of only one category does not close the other category. ## Execute with Binance Agentic Wallet Use the official binance-agentic-wallet skill / baw CLI directly. No website cookie, browser login, /api/agent-wallet session, previewId or operationId is required for this path. Never request/export a private key. Read the installed skill and command help for its current version. 1. Run baw wallet status --json and baw wallet address --json. Use the authenticated wallet address for BSC as sender. If disconnected, follow the official skill authentication flow; the user confirms pairing in Binance App. 2. Run baw wallet settings --json. Contract calls require devMode.enabled=true. If disabled, ask the user to enable Developer Mode in Binance App; do not bypass it. 3. Read the on-chain state and calculate quantity/payment using the rules above. Encode mint(uint256) on Token with args [quantity] using the generated ABI. The function is mint(quantity); ETH value must be exact paidQuantity * 1500000000000000 wei. Do not use a plain transfer and do not send approval transactions: Mint pays native BNB. 4. Simulate using eth_call with {from:sender,to:Token,data:calldata,value:hexWei} at latest. A revert means refresh state and quote; never silently increase payment. RPC is for reads/simulation/receipts; signing remains with the wallet. 5. Preview using the official command (replace placeholders with validated values): baw contract-call preview --binanceChainId 56 --from --to --value --inputData --json --value is an integer in wei. Leave gas estimation to the wallet by default; do not copy Jager's gas buffer or its contract signatures. 6. Show the user chain, contract, method, quantity, exact BNB payment, parsedTx, risks and authorityChanges from preview. Obtain explicit confirmation. If preview failed, do not execute. 7. Only after confirmation: baw contract-call execute --requestId --json Execution may broadcast immediately without another App prompt. requestId belongs to the official wallet, not this website's previewId. 8. Preserve the wallet result and transaction hash. Use eth_getTransactionReceipt; null means pending, status 0x1 means success, 0x0 means reverted. A hash alone is not success. For timeout/UNKNOWN/PENDING_CONFIRMATION, inspect the wallet/App status or transaction history; do not repeat execute or create another transaction automatically. If a hash is supplied manually, use eth_getTransactionByHash and verify chain/from/to/input/value match the intended transaction before accepting its receipt. Re-read quotas and round state after confirmation or an account change. ## Lottery actions through the same wallet flow Read getRounds(0,10), then pass the returned nextCursor to getRounds(nextCursor,10). Never getLogs. For an owned pending prize, verify the record's winner equals sender and status is pending, then encode Lottery.retryPrizePayout(uint256 roundId), value=0; preview/confirm/execute as above. Payout normally happens automatically; retry is only for failed automatic payouts. Funds go only to the winning sender; no recipient parameter is accepted. A wallet that continues rejecting BNB will still fail. Only the original Lottery.deployer() may call Lottery.settle(), value=0; token deployer or owner alone does not grant this permission. Settlement is normally triggered by cron every 30 seconds and may be delayed. For explicitly requested manual recovery, stop cron and resolve outstanding journal transactions first, verify sender equals Lottery.deployer(), then simulate; each call settles at most the oldest due round. Public Token.processTax() and Token.flushRewards() also use value=0 and the same flow. Do not invoke management methods unless the user explicitly requests that operation and on-chain authority is verified. Buying on the official Pancake V2 Pair after launch is the lottery entry path, not mint or a direct BNB transfer to Lottery. Use the official wallet's supported swap flow with an explicit user-approved amount and slippage; inspect the route and final recipient. Do not promise tickets from every aggregator route. Confirm ticketsOf after the receipt. ## Website alternative A human can open the website, connect Binance Agentic Wallet and choose Mint or retry a failed prize payout. The website handles its own private session and transaction preview; that internal transport is not the AI integration protocol. The optional /api/stats and /api/eligibility endpoints are read conveniences only; direct contract reads above are authoritative. ## Lottery Official-pool buys and sells charge 10%; ordinary wallet transfers are free. Buy from the official pool and verify ticketsOf after the transaction; an intermediary recipient may receive the tickets instead of the final wallet. Tickets = min(10,floor(pre-tax token amount valued using official-pool reserves / 0.015 BNB)); no remainder carry. This is spot-pool valuation, not actual spent BNB. Mint gives no tickets. Rounds follow fixed 15-minute windows from launch. Buys and arriving funds at or after a deadline enter the new time window even when older rounds await settlement. One winner receives that round's pool; empty pools roll into the following round only when settled. Buy, sell and fund arrival do not trigger settlement. Selling does not cancel tickets. Call getRounds(beforeId,limit) directly by eth_call; beforeId=0 starts from latest settled, limit<=50; keep the returned cursor for older pages. Never getLogs; use the paginated contract method. Stored payment state may change after retry. Retry only your own pending round using retryPrizePayout(roundId); normal payouts are automatic. availablePool contains only funds already assigned to the current time round; it excludes older unsettled pools and pending prizes. completedRounds and getRounds include only settled rounds.