diff --git a/src/v0.8/core/filecoin/Filecoin.sol b/src/v0.8/core/filecoin/Filecoin.sol index ddc6b77c..4e2c1514 100644 --- a/src/v0.8/core/filecoin/Filecoin.sol +++ b/src/v0.8/core/filecoin/Filecoin.sol @@ -38,7 +38,7 @@ import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/U /// @title Filecoin contract Filecoin is Initializable, UUPSUpgradeable, IFilecoin, RolesModifiers { FilecoinType.Network public network; - IRoles private roles; + IRoles public roles; /// @dev This empty reserved space is put in place to allow future versions to add new uint256[32] private __gap; @@ -142,4 +142,9 @@ contract Filecoin is Initializable, UUPSUpgradeable, IFilecoin, RolesModifiers { /// @dev mock the filecoin claim data // solhint-disable-next-line function setMockClaimData(uint64 claimId, bytes memory _data) external {} + + /// @notice Set the Roles contract. + function setRoles(address _roles) external onlyRole(roles, RolesType.DEFAULT_ADMIN_ROLE) { + roles = IRoles(_roles); + } } diff --git a/src/v0.8/interfaces/core/IFilecoin.sol b/src/v0.8/interfaces/core/IFilecoin.sol index f6a7278b..b4e5f787 100644 --- a/src/v0.8/interfaces/core/IFilecoin.sol +++ b/src/v0.8/interfaces/core/IFilecoin.sol @@ -19,6 +19,7 @@ pragma solidity ^0.8.21; import {FilecoinType} from "src/v0.8/types/FilecoinType.sol"; +import {IRoles} from "src/v0.8/interfaces/core/IRoles.sol"; /// @title IFilplus interface IFilecoin { @@ -43,4 +44,11 @@ interface IFilecoin { /// @dev mock the filecoin claim data function setMockClaimData(uint64 claimId, bytes memory _data) external; + + /// @notice Set the Roles contract. + function setRoles(address _roles) external ; + + /// @notice Get the Roles contract. + /// @return Roles contract address. + function roles() external view returns (IRoles); } diff --git a/src/v0.8/mocks/core/filecoin/MockFilecoin.sol b/src/v0.8/mocks/core/filecoin/MockFilecoin.sol index 86930519..e3637c75 100644 --- a/src/v0.8/mocks/core/filecoin/MockFilecoin.sol +++ b/src/v0.8/mocks/core/filecoin/MockFilecoin.sol @@ -32,7 +32,7 @@ contract MockFilecoin is IFilecoin, RolesModifiers { - IRoles private roles; + IRoles public roles; FilecoinType.DealState private mockDealState; //bytes private mockClaimData; mapping(uint64 => bytes) private mockClaimData; //matchingId=>Matchedstore @@ -86,4 +86,7 @@ contract MockFilecoin is ) external view override returns (bytes memory) { return mockClaimData[claimId]; } + + /// @notice Set the Roles contract. + function setRoles(address _roles) external {} }