diff --git a/contracts/TalentLayerPlatformID.sol b/contracts/TalentLayerPlatformID.sol index 710b90f5..6a72ebea 100644 --- a/contracts/TalentLayerPlatformID.sol +++ b/contracts/TalentLayerPlatformID.sol @@ -419,6 +419,7 @@ contract TalentLayerPlatformID is ERC721Upgradeable, AccessControlUpgradeable, U function addArbitrator(address _arbitrator, bool _isInternal) public onlyRole(DEFAULT_ADMIN_ROLE) { validArbitrators[address(_arbitrator)] = true; internalArbitrators[address(_arbitrator)] = _isInternal; + emit ArbitratorAdded(_arbitrator, _isInternal); } /** @@ -429,6 +430,7 @@ contract TalentLayerPlatformID is ERC721Upgradeable, AccessControlUpgradeable, U function removeArbitrator(address _arbitrator) public onlyRole(DEFAULT_ADMIN_ROLE) { validArbitrators[address(_arbitrator)] = false; internalArbitrators[address(_arbitrator)] = false; + emit ArbitratorRemoved(_arbitrator); } /** @@ -638,6 +640,19 @@ contract TalentLayerPlatformID is ERC721Upgradeable, AccessControlUpgradeable, U */ event OriginValidatedProposalFeeRateUpdated(uint256 platformId, uint16 originValidatedProposalFeeRate); + /** + * @notice Emit after the arbitrator is added + * @param arbitrator The address of the new arbitrator + * @param isInternal Boolean denoting if the arbitrator is internal (is part of TalentLayer) or not + */ + event ArbitratorAdded(address arbitrator, bool isInternal); + + /** + * @notice Emit after the arbitrator is removed + * @param arbitrator The address of the arbitrator + */ + event ArbitratorRemoved(address arbitrator); + /** * @notice Emit after the arbitrator is updated for a platform * @param platformId The Platform Id diff --git a/contracts/interfaces/ITalentLayerPlatformID.sol b/contracts/interfaces/ITalentLayerPlatformID.sol index 03ed73bb..8423fe40 100644 --- a/contracts/interfaces/ITalentLayerPlatformID.sol +++ b/contracts/interfaces/ITalentLayerPlatformID.sol @@ -76,4 +76,8 @@ interface ITalentLayerPlatformID is IERC721Upgradeable { event Mint(address indexed _platformOwnerAddress, uint256 _tokenId, string _platformName); event CidUpdated(uint256 indexed _tokenId, string _newCid); + + event ArbitratorAdded(address arbitrator, bool isInternal); + + event ArbitratorRemoved(address arbitrator); } diff --git a/test/batch/disputeResolution.ts b/test/batch/disputeResolution.ts index bb96e865..e468aacb 100644 --- a/test/batch/disputeResolution.ts +++ b/test/batch/disputeResolution.ts @@ -73,7 +73,13 @@ async function deployAndSetup( await talentLayerPlatformID.connect(deployer).mintForAddress(platformName, carol.address) // Add arbitrator to platform available arbitrators - await talentLayerPlatformID.connect(deployer).addArbitrator(talentLayerArbitrator.address, true) + expect( + await talentLayerPlatformID + .connect(deployer) + .addArbitrator(talentLayerArbitrator.address, true), + ) + .to.emit(talentLayerPlatformID, 'ArbitratorAdded') + .withArgs(talentLayerArbitrator.address, true) // Update platform arbitrator, and fee timeout await talentLayerPlatformID diff --git a/test/batch/fullWorkflow.ts b/test/batch/fullWorkflow.ts index 5469708c..5942aed7 100644 --- a/test/batch/fullWorkflow.ts +++ b/test/batch/fullWorkflow.ts @@ -377,9 +377,13 @@ describe('TalentLayer protocol global testing', function () { }) it('The deployer can add a new available arbitrator', async function () { - await talentLayerPlatformID - .connect(deployer) - .addArbitrator(talentLayerArbitrator.address, true) + expect( + await talentLayerPlatformID + .connect(deployer) + .addArbitrator(talentLayerArbitrator.address, true), + ) + .to.emit(talentLayerPlatformID, 'ArbitratorAdded') + .withArgs(talentLayerArbitrator.address, true) const isValid = await talentLayerPlatformID.validArbitrators(talentLayerArbitrator.address) expect(isValid).to.be.true @@ -441,7 +445,13 @@ describe('TalentLayer protocol global testing', function () { }) it('The deployer can remove an available arbitrator', async function () { - await talentLayerPlatformID.connect(deployer).removeArbitrator(talentLayerArbitrator.address) + expect( + await talentLayerPlatformID + .connect(deployer) + .removeArbitrator(talentLayerArbitrator.address), + ) + .to.emit(talentLayerPlatformID, 'ArbitratorRemoved') + .withArgs(talentLayerArbitrator.address) const isValid = await talentLayerPlatformID.validArbitrators(talentLayerArbitrator.address) expect(isValid).to.be.false