// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; /** * @title Interface for a `VoteWeigher`-type contract. * @author Layr Labs, Inc. * @notice Note that `NUMBER_OF_QUORUMS` is expected to remain constant, as suggested by its uppercase formatting. */ interface IVoteWeigher { /** * @notice This function computes the total weight of the @param operator in the quorum @param quorumNumber. * @dev returns zero in the case that `quorumNumber` is greater than or equal to `NUMBER_OF_QUORUMS` */ function weightOfOperator(address operator, uint256 quorumNumber) external returns (uint96); /// @notice Number of quorums that are being used by the middleware. function NUMBER_OF_QUORUMS() external view returns (uint256); /** * @notice This defines the earnings split between different quorums. Mapping is quorumNumber => BIPS which the quorum earns, out of the total earnings. * @dev The sum of all entries, i.e. sum(quorumBips[0] through quorumBips[NUMBER_OF_QUORUMS - 1]) should *always* be 10,000! */ function quorumBips(uint256 quorumNumber) external view returns (uint256); }