Reads
The complete read surface, by contract. All are view and cost nothing.
PloutoRegistry
function ponsFactory() external view returns (address);function ponsFeeEscrow() external view returns (address);function expectedLauncher() external view returns (address);function revenueRouter() external view returns (address);function gravityStaking() external view returns (address);function buybackExecutor() external view returns (address);function reserve() external view returns (address);function ploutoToken() external view returns (address);function ploutoCurve() external view returns (address);function initialized() external view returns (bool);function protocolWired() external view returns (bool);function owner() external view returns (address);initialized() is the gate every integration should check first. It returns ploutoToken != address(0).
PloutoRevenueRouter
function totalRevenueClaimed() external view returns (uint256);function totalRevenueRouted() external view returns (uint256);function unallocatedRevenue() external view returns (uint256);function totalSentToBuybacks() external view returns (uint256);function totalSentToStakers() external view returns (uint256);function totalSentToReserve() external view returns (uint256); function totalDonationsReceived() external view returns (uint256);function unallocatedDonations() external view returns (uint256); function pendingInEscrow() external view returns (uint256);function localBalances() external view returns (uint256 total, uint256 revenueUnallocated, uint256 donationsUnallocated); function routesLength() external view returns (uint256);function getRoute(uint256 index) external view returns (RouteRecord);function splitBps() external pure returns (uint256 buyback, uint256 staker, uint256 reserve_, uint256 total);GravityStaking
function totalStaked() external view returns (uint256);function totalWeight() external view returns (uint256);function totalRewardsReceived() external view returns (uint256);function totalRewardsClaimed() external view returns (uint256);function accRewardPerWeight() external view returns (uint256);function pendingUndistributed() external view returns (uint256);function outstandingRewards() external view returns (uint256); function getPosition(uint256 id) external view returns (Position);function positionsOf(address owner) external view returns (uint256[]);function positionCountOf(address o) external view returns (uint256);function pendingRewards(uint256 id) external view returns (uint256);function pendingRewardsOf(address o) external view returns (uint256); function multiplierFor(uint64 duration) external pure returns (uint256);function paused() external view returns (bool);function emergencyMode() external view returns (bool);BuybackExecutor
function buybackBudget() external view returns (uint256);function totalBudgetReceived() external view returns (uint256);function totalEthSpent() external view returns (uint256);function totalPloutoRetiredByProtocol() external view returns (uint256);function totalPloutoBurned() external view returns (uint256);function totalPloutoSentToDead() external view returns (uint256);function executionCount() external view returns (uint256); function maxEthPerExecution() external view returns (uint256);function maxBudgetShareBps() external view returns (uint256);function maxPriceImpactBps() external view returns (uint256);function minEthPerExecution() external view returns (uint256); function retiredSupply() external view returns (uint256);function estimatedCirculatingSupply() external view returns (uint256);function currentPhase() external view returns (uint8); function poolKeyFor(address token) external view returns (PoolKey);function poolId(address token) external view returns (bytes32);function poolSqrtPriceX96(address token) external view returns (uint160); function executionsLength() external view returns (uint256);function getExecution(uint256 index) external view returns (Execution);PloutoReserve
function balance() external view returns (uint256);function totalRevenueReceived() external view returns (uint256);function totalDonationsReceived() external view returns (uint256);function totalEthWithdrawn() external view returns (uint256);function depositCount() external view returns (uint256);function nextWithdrawalId() external view returns (uint256);function getDeposit(uint256 i) external view returns (Deposit);function getWithdrawal(uint256 id) external view returns (Withdrawal); function TIMELOCK_DELAY() external view returns (uint256);function EXECUTION_WINDOW() external view returns (uint256);Note that nextWithdrawalId() starts at 1, so the proposal count is nextWithdrawalId() - 1.
Batching
Every one of these is a view, so batch them:
const results = await client.multicall({ contracts: [ {address: router, abi: ploutoRevenueRouterAbi, functionName: 'totalRevenueClaimed'}, {address: router, abi: ploutoRevenueRouterAbi, functionName: 'totalRevenueRouted'}, {address: staking, abi: gravityStakingAbi, functionName: 'totalStaked'}, {address: executor, abi: buybackExecutorAbi, functionName: 'totalPloutoRetiredByProtocol'}, ],});The interface batches roughly twenty reads per refresh this way.