Contract Interface, ABI, & Functions
UPDATED Oct 06, 2026
Contract Addresses
official-contract-addresses.md
Full ABIs can be found in our published npmjs package. These condensed interfaces contain the most important functions for integrating with the Kintsu core protocol.
StakedMonad Condensed Interface
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.26;
interface StakedMonad {
struct Node {
uint64 id;
uint96 weight;
uint96 staked;
}
struct UnlockRequest {
/// @dev Number of shares the user will receive if the request is cancelled
uint96 shares;
/// @dev Value of the underlying asset that will be received upon redemption
uint96 spotValue;
/// @dev When this batch is submitted, redemption is available after withdraw delay
uint40 batchId;
/// @dev Store the exitFee (expressed in basis points) used for processing
uint16 exitFeeInBips;
}
/**
* @notice View all unique node ids in their current order
* @dev The order is not guaranteed to remain constant between calls
* @dev The order is not guaranteed to correlate to a position in `getNodes()`
*/
function getNodeIds() external view returns (uint256[] memory);
/**
* @notice View all nodes in their current order
* @dev The order is not guaranteed to remain constant between calls
*/
function getNodes() external view returns (Node[] memory);
/// @notice View a node by its unique node id
function viewNodeByNodeId(uint64 nodeId) external view returns (Node memory node);
/**
* @notice Converts MON into LST shares at the current block timestamp
* @dev `totalShares()` accounts for both minted and mintable shares
*/
function convertToShares(uint96 assets) external view returns (uint96 shares);
/**
* @notice Converts LST shares into MON at the current block timestamp
* @notice Does not apply exit fee
* @dev `totalShares()` accounts for both minted and mintable shares
*/
function convertToAssets(uint96 shares) external view returns (uint96 assets);
/**
* @notice Shares that could exist at the current block timestamp
* @notice Includes both minted and mintable shares
*/
function totalShares() external view returns (uint96);
function getAllUserUnlockRequests(address user) external view returns (UnlockRequest[] memory);
function getExitFeeBips() external view returns (uint16);
function getManagementFeeBips() external view returns (uint16);
/// @notice Shares that could be minted by the protocol at the current block timestamp
function getMintableProtocolShares() external view returns (uint96 shares);
function calculateStakeDeltas(uint96 newTotalStaked) external view returns (
uint96 totalExcess,
uint96 totalDeficit,
uint96[] memory nodeExcesses,
uint96[] memory nodeDeficits
);
/**
* @notice Deposit asset into the protocol and receive shares to represent your position
* @notice Deposit amount must be specified by `msg.value`
* @param minShares - Minimum quantity of shares that must be minted to prevent front running
* @param receiver - Recipient of the minted shares
* @return shares - Quantity of shares minted
*/
function deposit(uint96 minShares, address receiver) external payable returns (uint96 shares);
/*
* @notice Step 1 of 2 in process of withdrawing assets
* @notice Transfers `shares` to the vault contract
* @notice Unlock is batched into current batch request
* @notice Applies exit fee if present
*/
function requestUnlock(uint96 shares, uint96 minSpotValue) external returns (uint96 spotValue);
/**
* @notice Allow user to cancel their unlock request
* @notice Most users will have 1 concurrent unlock request (`unlockIndex` == 0) but advanced users may have more
* @notice Must be done before the associated batch is submitted
* @dev Order of unlock requests is not guaranteed between cancellations
*/
function cancelUnlockRequest(uint256 unlockIndex) external;
/**
* @notice Step 2 of 2 in process of withdrawing assets
* @notice Associated batch must have been submitted and the cooldown period elapsed
* @dev Might need to first call `sweep()` to make funds available
* @dev Deletes the caller's unlock request
*/
function redeem(uint256 unlockIndex, address payable receiver) external returns (uint96 assets);
/**
* @notice Processes deposit and withdrawal requests and allocates MON according to Registry weights
* @dev Might need to first call `sweep()`
* @dev For a net ingress batch, the amount bonded may be less than the requested amount due to integer arithmetic.
* The remaining amount, or 'dust' is scheduled to be bonded in the next batch.
* @dev For a net egress batch, the amount unbonded may be less than the requested amount due to integer arithmetic.
* The remaining amount, or 'dust' is scheduled to be unbonded in the next batch.
* In this scenario, `totalPooled` is temporarily increased by this dust amount to account for the assets
* that were requested to be unbonded but were not unbonded from nodes, ensuring they remain trackable
* in the pool for the next attempt.
*/
function submitBatch() external;
/**
* @notice Withdraws MON from completed un-delegations
* @notice Stores withdrawn funds in the contract to fund redemptions
* @dev Required number of epochs must have passed since calling `undelegate`
* @dev All withdrawals must be valid and complete or none will
*/
function sweep(uint64[] memory nodeIds, uint8 maxWithdrawsPerNode) external;
/**
* @notice Withdraws MON from completed un-delegations of disabled nodes
* @notice Adds withdrawn funds into the current batch to be redelegated
* @dev Required number of epochs must have passed since calling `undelegate`
* @dev All withdrawals must be valid and complete or none will
*/
function sweepForced(uint64[] memory nodeIds) external;
/**
* @notice Claims all claimable rewards and adds them to the next batch
* @dev Specifying an invalid node id will revert
*/
function compound(uint64[] memory nodeIds) external;
/**
* @notice Allows external funds to be added without minting shares
* @dev Restricts usage when total pooled is below a threshold to prevent share inflation attacks
* @param benefactor - Address used for tracking who is responsible for the contribution
*/
function contributeToPool(address benefactor) external payable;
}
StakedMonad contract ABI
[
{
"type": "constructor",
"inputs": [],
"stateMutability": "nonpayable"
},
{
"type": "receive",
"stateMutability": "payable"
},
{
"type": "function",
"name": "DEFAULT_ADMIN_ROLE",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "MINIMUM_CONTRIBUTE_THRESHOLD",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "ROLE_ADD_NODE",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "ROLE_DISABLE_NODE",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "ROLE_FEE_CLAIMER",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "ROLE_FEE_EXEMPTION",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "ROLE_FEE_SETTER",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "ROLE_PAUSE",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "ROLE_REMOVE_NODE",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "ROLE_UPDATE_WEIGHTS",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "ROLE_UPGRADE",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "UPGRADE_INTERFACE_VERSION",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "addNode",
"inputs": [
{
"name": "nodeId",
"type": "uint64",
"internalType": "uint64"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "allowance",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "approve",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "balanceOf",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "batchDepositRequests",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "assets",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "shares",
"type": "uint96",
"internalType": "uint96"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "batchSubmissions",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "submissionEpoch",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "activationEpoch",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "batchWithdrawRequests",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "assets",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "shares",
"type": "uint96",
"internalType": "uint96"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "calculateStakeDeltas",
"inputs": [
{
"name": "newTotalStaked",
"type": "uint96",
"internalType": "uint96"
}
],
"outputs": [
{
"name": "totalExcess",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "totalDeficit",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "nodeExcesses",
"type": "uint96[]",
"internalType": "uint96[]"
},
{
"name": "nodeDeficits",
"type": "uint96[]",
"internalType": "uint96[]"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "cancelUnlockRequest",
"inputs": [
{
"name": "unlockIndex",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "claimProtocolFees",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "compound",
"inputs": [
{
"name": "nodeIds",
"type": "uint64[]",
"internalType": "uint64[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "contributeToPool",
"inputs": [
{
"name": "benefactor",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "function",
"name": "convertToAssets",
"inputs": [
{
"name": "shares",
"type": "uint96",
"internalType": "uint96"
}
],
"outputs": [
{
"name": "assets",
"type": "uint96",
"internalType": "uint96"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "convertToShares",
"inputs": [
{
"name": "assets",
"type": "uint96",
"internalType": "uint96"
}
],
"outputs": [
{
"name": "shares",
"type": "uint96",
"internalType": "uint96"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "currentBatchId",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint40",
"internalType": "uint40"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "decimals",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "deposit",
"inputs": [
{
"name": "minShares",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "shares",
"type": "uint96",
"internalType": "uint96"
}
],
"stateMutability": "payable"
},
{
"type": "function",
"name": "disableNode",
"inputs": [
{
"name": "nodeId",
"type": "uint64",
"internalType": "uint64"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "getAllUserUnlockRequests",
"inputs": [
{
"name": "user",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "tuple[]",
"internalType": "struct StakedMonad.UnlockRequest[]",
"components": [
{
"name": "shares",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "spotValue",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "batchId",
"type": "uint40",
"internalType": "uint40"
},
{
"name": "exitFeeInBips",
"type": "uint16",
"internalType": "uint16"
}
]
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getDelegator",
"inputs": [
{
"name": "val_id",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "delegator",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "stake",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "acc_reward_per_token",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "rewards",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "delta_stake",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "next_delta_stake",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "delta_epoch",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "next_delta_epoch",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "getExitFeeBips",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getManagementFeeBips",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getMintableProtocolShares",
"inputs": [],
"outputs": [
{
"name": "shares",
"type": "uint96",
"internalType": "uint96"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getNodeIds",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256[]",
"internalType": "uint256[]"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getNodes",
"inputs": [],
"outputs": [
{
"name": "",
"type": "tuple[]",
"internalType": "struct Registry.Node[]",
"components": [
{
"name": "id",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "weight",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "staked",
"type": "uint96",
"internalType": "uint96"
}
]
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getRoleAdmin",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getWithdrawIds",
"inputs": [
{
"name": "val_id",
"type": "uint64",
"internalType": "uint64"
}
],
"outputs": [
{
"name": "",
"type": "uint8[]",
"internalType": "uint8[]"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getWithdrawIdsSize",
"inputs": [
{
"name": "val_id",
"type": "uint64",
"internalType": "uint64"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "grantRole",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "hasRole",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "initialize",
"inputs": [
{
"name": "admin",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "function",
"name": "isExitFeeExempt",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "isForceWithdrawPending",
"inputs": [
{
"name": "val_id",
"type": "uint64",
"internalType": "uint64"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "isNodeDisabled",
"inputs": [
{
"name": "",
"type": "uint64",
"internalType": "uint64"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "name",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "nodes",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "id",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "weight",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "staked",
"type": "uint96",
"internalType": "uint96"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "pause",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "paused",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "proxiableUUID",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "redeem",
"inputs": [
{
"name": "unlockIndex",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "receiver",
"type": "address",
"internalType": "address payable"
}
],
"outputs": [
{
"name": "assets",
"type": "uint96",
"internalType": "uint96"
}
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "removeNode",
"inputs": [
{
"name": "nodeId",
"type": "uint64",
"internalType": "uint64"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "renounceRole",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "callerConfirmation",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "requestUnlock",
"inputs": [
{
"name": "shares",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "minSpotValue",
"type": "uint96",
"internalType": "uint96"
}
],
"outputs": [
{
"name": "spotValue",
"type": "uint96",
"internalType": "uint96"
}
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "revokeRole",
"inputs": [
{
"name": "role",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setExitFee",
"inputs": [
{
"name": "newFee",
"type": "uint16",
"internalType": "uint16"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setExitFeeExemption",
"inputs": [
{
"name": "user",
"type": "address",
"internalType": "address"
},
{
"name": "isExempt",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setManagementFee",
"inputs": [
{
"name": "newFee",
"type": "uint16",
"internalType": "uint16"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "submitBatch",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "supportsInterface",
"inputs": [
{
"name": "interfaceId",
"type": "bytes4",
"internalType": "bytes4"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "sweep",
"inputs": [
{
"name": "nodeIds",
"type": "uint64[]",
"internalType": "uint64[]"
},
{
"name": "maxWithdrawsPerNode",
"type": "uint8",
"internalType": "uint8"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "sweepForced",
"inputs": [
{
"name": "nodeIds",
"type": "uint64[]",
"internalType": "uint64[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "symbol",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "totalPooled",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint96",
"internalType": "uint96"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "totalShares",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint96",
"internalType": "uint96"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "totalSupply",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "totalWeight",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "transfer",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "transferFrom",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "unbondDisableNode",
"inputs": [
{
"name": "nodeId",
"type": "uint64",
"internalType": "uint64"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "unpause",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "updateWeights",
"inputs": [
{
"name": "weightDeltas",
"type": "tuple[]",
"internalType": "struct Registry.WeightDelta[]",
"components": [
{
"name": "nodeId",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "delta",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "isIncreasing",
"type": "bool",
"internalType": "bool"
}
]
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "upgradeToAndCall",
"inputs": [
{
"name": "newImplementation",
"type": "address",
"internalType": "address"
},
{
"name": "data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "function",
"name": "userUnlockRequests",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "shares",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "spotValue",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "batchId",
"type": "uint40",
"internalType": "uint40"
},
{
"name": "exitFeeInBips",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "viewNodeByNodeId",
"inputs": [
{
"name": "nodeId",
"type": "uint64",
"internalType": "uint64"
}
],
"outputs": [
{
"name": "node",
"type": "tuple",
"internalType": "struct Registry.Node",
"components": [
{
"name": "id",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "weight",
"type": "uint96",
"internalType": "uint96"
},
{
"name": "staked",
"type": "uint96",
"internalType": "uint96"
}
]
}
],
"stateMutability": "view"
},
{
"type": "event",
"name": "Approval",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "Contribution",
"inputs": [
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "benefactor",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "event",
"name": "ExitFeeAdjusted",
"inputs": [
{
"name": "newFee",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "FeesWithdrawn",
"inputs": [
{
"name": "managementFeeShares",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "exitFeeShares",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "Initialized",
"inputs": [
{
"name": "version",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
}
],
"anonymous": false
},
{
"type": "event",
"name": "ManagementFeeAdjusted",
"inputs": [
{
"name": "newFee",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "NodeAdded",
"inputs": [
{
"name": "nodeId",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
},
{
"name": "index",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "NodeDisabled",
"inputs": [
{
"name": "nodeId",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
}
],
"anonymous": false
},
{
"type": "event",
"name": "NodeRemoved",
"inputs": [
{
"name": "nodeId",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
}
],
"anonymous": false
},
{
"type": "event",
"name": "NodeUpdated",
"inputs": [
{
"name": "nodeId",
"type": "uint64",
"indexed": true,
"internalType": "uint64"
},
{
"name": "newWeight",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "Paused",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "event",
"name": "RoleAdminChanged",
"inputs": [
{
"name": "role",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "previousAdminRole",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "newAdminRole",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
}
],
"anonymous": false
},
{
"type": "event",
"name": "RoleGranted",
"inputs": [
{
"name": "role",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "sender",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "event",
"name": "RoleRevoked",
"inputs": [
{
"name": "role",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "sender",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "event",
"name": "Transfer",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "UnlockCancelled",
"inputs": [
{
"name": "staker",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "unlockId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "UnlockRedeemed",
"inputs": [
{
"name": "staker",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "unlockId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "UnlockRequested",
"inputs": [
{
"name": "staker",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "unlockId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "shares",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "spotValue",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "toll",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "Unpaused",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "event",
"name": "Upgraded",
"inputs": [
{
"name": "implementation",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "error",
"name": "AccessControlBadConfirmation",
"inputs": []
},
{
"type": "error",
"name": "AccessControlUnauthorizedAccount",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "neededRole",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"type": "error",
"name": "ActiveNode",
"inputs": []
},
{
"type": "error",
"name": "AddressEmptyCode",
"inputs": [
{
"name": "target",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "BatchNotSubmitted",
"inputs": []
},
{
"type": "error",
"name": "CancellationWindowClosed",
"inputs": []
},
{
"type": "error",
"name": "DepositOverflow",
"inputs": []
},
{
"type": "error",
"name": "DisabledNode",
"inputs": []
},
{
"type": "error",
"name": "DuplicateNode",
"inputs": []
},
{
"type": "error",
"name": "ERC1967InvalidImplementation",
"inputs": [
{
"name": "implementation",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "ERC1967NonPayable",
"inputs": []
},
{
"type": "error",
"name": "ERC20InsufficientAllowance",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "allowance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"type": "error",
"name": "ERC20InsufficientBalance",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"name": "balance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"type": "error",
"name": "ERC20InvalidApprover",
"inputs": [
{
"name": "approver",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "ERC20InvalidReceiver",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "ERC20InvalidSender",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "ERC20InvalidSpender",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "EmptyBatch",
"inputs": []
},
{
"type": "error",
"name": "EnforcedPause",
"inputs": []
},
{
"type": "error",
"name": "ExpectedPause",
"inputs": []
},
{
"type": "error",
"name": "FailedCall",
"inputs": []
},
{
"type": "error",
"name": "FeeTooLarge",
"inputs": []
},
{
"type": "error",
"name": "InsufficientPendingWithdrawals",
"inputs": []
},
{
"type": "error",
"name": "InvalidInitialization",
"inputs": []
},
{
"type": "error",
"name": "InvalidNode",
"inputs": []
},
{
"type": "error",
"name": "MaxPendingWithdrawals",
"inputs": []
},
{
"type": "error",
"name": "MinimumBatchDelay",
"inputs": []
},
{
"type": "error",
"name": "MinimumContributeThreshold",
"inputs": []
},
{
"type": "error",
"name": "MinimumDeposit",
"inputs": []
},
{
"type": "error",
"name": "MinimumUnlock",
"inputs": []
},
{
"type": "error",
"name": "NoChange",
"inputs": []
},
{
"type": "error",
"name": "NotInitializing",
"inputs": []
},
{
"type": "error",
"name": "PendingWithdrawals",
"inputs": []
},
{
"type": "error",
"name": "PrecompileCallFailed",
"inputs": []
},
{
"type": "error",
"name": "TransferFailed",
"inputs": []
},
{
"type": "error",
"name": "UUPSUnauthorizedCallContext",
"inputs": []
},
{
"type": "error",
"name": "UUPSUnsupportedProxiableUUID",
"inputs": [
{
"name": "slot",
"type": "bytes32",
"internalType": "bytes32"
}
]
},
{
"type": "error",
"name": "WithdrawDelay",
"inputs": []
},
{
"type": "error",
"name": "ZeroTotalWeight",
"inputs": []
}
]