Application
AppManager Invariants
Role Management Invariants
- There will always be a SuperAdmin
- When grantRole is called directly on the AppManager contract the transaction will be reverted.
- When renounceRole is called by the Super Admin the transaction will be reverted.
- When addAppAdministrator is called by an account other than the Super Admin the transaction will be reverted.
- When addAppAdministrator is called with an address of 0 the transaction will be reverted.
- If addAppAdministrator is not reverted the AppAdministrator event will be emitted.
- When renounceRole is called with argument APP_ADMIN_ROLE the AppAdministrator event will be emitted.
- When addRuleAdministrator is called by an account other other than an App Admin the transaction will be reverted.
- When addRuleAdministrator is called with an address of 0 the transaction will be reverted.
- If addRuleAdministrator is not reverted the RuleAdmin event will be emitted.
- When renounceRole is called with argument RULE_ADMIN_ROLE the RuleAdministrator event will be emitted.
- When addRiskAdmin is called by an account other than an App Admin the transaction will be reverted.
- When addRiskAdmin is called with an address of 0 the transaction will be reverted.
- If addRiskAdmin is not reverted the RiskAdmin event will be emitted.
- When renounceRole is called with argument RISK_ADMIN_ROLE the RiskAdmin event will be emitted.
- When addTreasuryAccount is called by an account other than an App Admin the transaction will be reverted.
- When addTreasuryAccount is called with an address of 0 the transaction will be reverted.
- If addTreasuryAccount is not reverted the TreasuryAccount event will be emitted.
- When renounceRole is called with argument TREASURY_ACCOUNT the TreasuryAccount event will be emitted.
- When addAccessLevelAdmin is called by an account other than an App Admin the transaction will be reverted.
- When addAccessLevelAdmin is called with an address of 0 the transaction will be reverted.
- If addAccessLevelAdmin is not reverted the AccessLevelAdmin event will be emitted.
- When renounceRole is called with argument ACCESS_LEVEL_ADMIN_ROLE the AccessLevelAdmin event will be emitted.
Access Level Invariants
- If addAccessLevel is called by an account that is not an Access Level Admin the transaction will be reverted.
- If addAccessLevelToMultipleAccounts is called by an account that is not an Access Level Admin the transaction will be reverted.
- If addMultipleAccessLevels is called by an account that is not an Access Level Admin the transaction will be reverted.
- If removeAccessLevel is called by an account that is not an Access Level Admin the transaction will be reverted.
Risk Score Invariants
- If addRiskScore is called by an account that is not a Risk Admin the transaction will be reverted.
- If addRiskScoreToMultipleAccounts is called by an account that is not a Risk Admin the transaction will be reverted.
- If addMultipleRiskScores is called by an account that is not a Risk Admin the transaction will be reverted.
- If removeRiskScore is called by an account that is not a Risk Admin the transaction will be reverted.
Pause Rule Invariants
- If addPauseRule is called by an account that is not a Rule Admin the transaction will be reverted.
- If removePauseRule is called by an account that is not a Rule Admin the transaction will be reverted.
- If activatePauseRuleCheck is called by an account that is not a Rule Admin the transaction will be reverted.
Tags Invariants
- If addTag is called by an account that is not an App Admin the transaction will be reverted.
- If addTagToMultipleAccounts is called by an account that is not an App Admin the transaction will be reverted.
- If addMultipleTagToMultipleAccounts is called by an account that is not an App Admin the transaction will be reverted.
- If removeTag is called by an account that is not an App Admin the transaction will be reverted.
Providers
- If proposeRiskScoresProvider is called with an address of 0 the transaction will be reverted.
- If proposeRiskScoresProvider is called by an account that is not an App Admin the transaction will be reverted.
- If proposeTagsProvider is called with an address of 0 the transaction will be reverted.
- If proposeTagsProvider is called by an account that is not an App Admin the transaction will be reverted.
- If proposePauseRulesProvider is called with an address of 0 the transaction will be reverted.
- If proposePauseRulesProvider is called by an account that is not an App Admin the transaction will be reverted.
- If proposeAccessLevelsProvider is called with an address of 0 the transaction will be reverted.
- If proposeAccessLevelsProvider is called by an account that is not an App Admin the transaction will be reverted.
Registration
- If isRegisteredHandler returns false for an address, calling checkApplicationRules from the address will result in the transaction being reverted.
- If registerToken is called with an address of 0 the transaction will be reverted.
- If registerToken is called by an account that is not an App Admin the transaction will be reverted.
- If deregisterToken is called with the address of a token that is not registered, the transaction will be reverted.
- If deregisterToken is called by an account that is not an App Admin the transaction will be reverted.
- If deregisterToken is not reverted the RemoveFromRegistry event will be emitted.
Trading Rule Allow List
- If approveAddressToTradingRuleAllowlist is called by an account that is not an App Admin the transaction will be reverted.
- If an address that has not been previously added is passed in along with a false for isApproved the transaction will be reverted.
- If an address that is already approved is passed in along with a true for isApproved the transaction will be reverted.
- If approveAddressToTradingRuleAllowList is not reverted the TradingRuleAddressAllowList event will be emitted.
- If setNewApplicationHandlerAddress is called with an address of 0 the transaction will be reverted.
- If setNewApplicationHandlerAddress is called by an account that is not an App Admin the transaction will be reverted.
- If setNewApplicationHandlerAddress is not reverted the HandlerConnected event will be emitted.
- If setAppName is called by an account that is not an App Admin the transaction will be reverted.
- If proposeDataContractMigration is called by an account that is not an App Admin the transaction will be reverted.
- If proposeDataContractMigation is not reverted the AppManagerDataUpgradeProposed event is emitted.
New Data Provider
- When confirmNewDataProvider is called with a provider type of TAG and is not reverted, the TagProviderSet event will be emitted.
- When confirmNewDataProvider is called with a provider type of RISK_SCORE and is not reverted, the RiskProviderSet event will be emitted.
- When confirmNewDataProvider is called with a provider type of ACCESS_LEVEL and is not reverted, the AccessLevelProviderSet event will be emitted.
- When confirmNewDataProvider is called with a provider type of PAUSE_RULE and is not reverted, the PauseRuleProviderSet event will be emitted.
Data Migration
- If confirmDataContractMigration is called by an account that is not an App Admin the transaction will be reverted.
- If confirmDataContractMigration is not reverted the DataContractsMigrated event is emitted.
App Manager Upgrade
- If confirmAppManager is called by an account that is not an App Admin the transaction will be reverted.