// Source: contracts/interfaces/IAxelarAmplifierGatewayAuth.sol pragma solidity ^0.8.0; // SPDX-License-Identifier: MIT // File contracts/types/WeightedMultisigTypes.sol /** * @notice This struct represents the weighted signer * @param signer The address of the weighted signer * @param weight The weight of the weighted singer */ struct WeightedSigner { address signer; uint128 weight; } /** * @notice This struct represents the weighted signers payload * @param signers The list of weighted signers * @param threshold The threshold for the weighted signers * @param nonce The nonce to distinguish different weighted signer sets */ struct WeightedSigners { WeightedSigner[] signers; uint128 threshold; bytes32 nonce; } /** * @notice This struct represents a proof for a message from the weighted signers * @param signers The weighted signers * @param signatures The list of signatures */ struct Proof { WeightedSigners signers; bytes[] signatures; } // File contracts/interfaces/IAxelarAmplifierGatewayAuth.sol interface IAxelarAmplifierGatewayAuth { /** * @notice This function takes messageHash and proof data and reverts if proof is invalid * @param dataHash The hash of the message that was signed * @param proof The data containing signers with signatures * @return isLatestSigners True if provided signers are the current ones */ function validateProof(bytes32 dataHash, Proof calldata proof) external view returns (bool isLatestSigners); /** * @notice This function rotates the current signers with a new set * @param newSigners The data containing the new signers and their weights */ function rotateSigners(WeightedSigners calldata newSigners) external; }