mirror of
https://github.com/luxfi/uma.git
synced 2026-10-30 15:14:44 +00:00
59 lines
2.3 KiB
Solidity
59 lines
2.3 KiB
Solidity
// SPDX-License-Identifier: AGPL-3.0-only
|
|
pragma solidity ^0.8.0;
|
|
|
|
/**
|
|
* @title Interface for a registry of contracts and contract creators.
|
|
*/
|
|
interface RegistryInterface {
|
|
/**
|
|
* @notice Registers a new contract.
|
|
* @dev Only authorized contract creators can call this method.
|
|
* @param parties an array of addresses who become parties in the contract.
|
|
* @param contractAddress defines the address of the deployed contract.
|
|
*/
|
|
function registerContract(address[] calldata parties, address contractAddress) external;
|
|
|
|
/**
|
|
* @notice Returns whether the contract has been registered with the registry.
|
|
* @dev If it is registered, it is an authorized participant in the UMA system.
|
|
* @param contractAddress address of the contract.
|
|
* @return bool indicates whether the contract is registered.
|
|
*/
|
|
function isContractRegistered(address contractAddress) external view returns (bool);
|
|
|
|
/**
|
|
* @notice Returns a list of all contracts that are associated with a particular party.
|
|
* @param party address of the party.
|
|
* @return an array of the contracts the party is registered to.
|
|
*/
|
|
function getRegisteredContracts(address party) external view returns (address[] memory);
|
|
|
|
/**
|
|
* @notice Returns all registered contracts.
|
|
* @return all registered contract addresses within the system.
|
|
*/
|
|
function getAllRegisteredContracts() external view returns (address[] memory);
|
|
|
|
/**
|
|
* @notice Adds a party to the calling contract.
|
|
* @dev msg.sender must be the contract to which the party member is added.
|
|
* @param party address to be added to the contract.
|
|
*/
|
|
function addPartyToContract(address party) external;
|
|
|
|
/**
|
|
* @notice Removes a party member to the calling contract.
|
|
* @dev msg.sender must be the contract to which the party member is added.
|
|
* @param party address to be removed from the contract.
|
|
*/
|
|
function removePartyFromContract(address party) external;
|
|
|
|
/**
|
|
* @notice checks if an address is a party in a contract.
|
|
* @param party party to check.
|
|
* @param contractAddress address to check against the party.
|
|
* @return bool indicating if the address is a party of the contract.
|
|
*/
|
|
function isPartyMemberOfContract(address party, address contractAddress) external view returns (bool);
|
|
}
|