@etherisc/gif-next 0.0.2-9d3eab3-323 → 0.0.2-9f827bd-593
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +29 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +33 -102
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +29 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +33 -130
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +33 -113
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +13 -0
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +75 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +69 -603
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +221 -114
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2 -2
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +126 -229
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +26 -126
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +11 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +69 -24
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +16 -24
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +2 -2
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +36 -14
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +13 -21
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +23 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +107 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +223 -38
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +48 -20
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +36 -14
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +13 -21
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +36 -14
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +8 -8
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +72 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +85 -59
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +33 -23
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +14 -14
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +13 -13
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +89 -90
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +2 -2
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/BaseComponent.sol +35 -8
- package/contracts/components/Distribution.sol +1 -1
- package/contracts/components/IBaseComponent.sol +3 -0
- package/contracts/components/Pool.sol +1 -1
- package/contracts/components/Product.sol +1 -1
- package/contracts/instance/IInstance.sol +2 -0
- package/contracts/instance/IInstanceService.sol +9 -3
- package/contracts/instance/Instance.sol +9 -197
- package/contracts/instance/InstanceAccessManager.sol +92 -77
- package/contracts/instance/InstanceService.sol +115 -64
- package/contracts/instance/InstanceServiceManager.sol +5 -9
- package/contracts/instance/base/ComponentServiceBase.sol +21 -11
- package/contracts/instance/module/IAccess.sol +27 -17
- package/contracts/instance/service/BundleService.sol +15 -0
- package/contracts/instance/service/BundleServiceManager.sol +5 -9
- package/contracts/instance/service/ComponentOwnerService.sol +2 -2
- package/contracts/instance/service/DistributionService.sol +7 -8
- package/contracts/instance/service/DistributionServiceManager.sol +6 -10
- package/contracts/instance/service/IBundleService.sol +3 -6
- package/contracts/instance/service/IPolicyService.sol +7 -0
- package/contracts/instance/service/PolicyService.sol +58 -24
- package/contracts/instance/service/PoolService.sol +3 -1
- package/contracts/instance/service/PoolServiceManager.sol +5 -9
- package/contracts/instance/service/ProductService.sol +3 -1
- package/contracts/registry/IRegistry.sol +17 -3
- package/contracts/registry/IRegistryService.sol +1 -1
- package/contracts/registry/Registry.sol +30 -19
- package/contracts/registry/RegistryAccessManager.sol +27 -27
- package/contracts/registry/RegistryService.sol +8 -15
- package/contracts/registry/RegistryServiceManager.sol +4 -2
- package/contracts/registry/ReleaseManager.sol +83 -113
- package/contracts/registry/TokenRegistry.sol +4 -4
- package/contracts/types/RoleId.sol +6 -7
- package/package.json +1 -1
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
@@ -26,12 +26,9 @@ interface IBundleService is IService {
|
|
26
26
|
|
27
27
|
function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state) external;
|
28
28
|
|
29
|
-
function underwritePolicy(IInstance instanceNftId,
|
30
|
-
|
31
|
-
|
32
|
-
uint256 collateralAmount,
|
33
|
-
uint256 netPremium
|
34
|
-
) external;
|
29
|
+
function underwritePolicy(IInstance instanceNftId, NftId policyNftId, NftId bundleNftId, uint256 collateralAmount, uint256 netPremium) external;
|
30
|
+
|
31
|
+
function increaseBalance(IInstance instance, NftId bundleNftId, uint256 amount) external;
|
35
32
|
|
36
33
|
// function fundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
|
37
34
|
|
@@ -15,6 +15,13 @@ import {Fee} from "../../types/Fee.sol";
|
|
15
15
|
interface IPolicyService is IService {
|
16
16
|
|
17
17
|
error ErrorIPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
|
18
|
+
error ErrorIPolicyServicePremiumAlreadyPaid(NftId policyNftId, uint256 premiumPaidAmount);
|
19
|
+
error ErrorIPolicyServicePolicyNotActivated(NftId policyNftId);
|
20
|
+
error ErrorIPolicyServicePolicyAlreadyClosed(NftId policyNftId);
|
21
|
+
error ErrorIPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
|
22
|
+
error ErrorIPolicyServicePremiumNotFullyPaid(NftId policyNftId, uint256 premiumAmount, uint256 premiumPaidAmount);
|
23
|
+
error ErrorIPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
|
24
|
+
error ErrorIPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
|
18
25
|
|
19
26
|
function calculatePremium(
|
20
27
|
RiskId riskId,
|
@@ -20,11 +20,11 @@ import {TokenHandler} from "../../shared/TokenHandler.sol";
|
|
20
20
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
21
21
|
import {Versionable} from "../../shared/Versionable.sol";
|
22
22
|
|
23
|
-
import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
23
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
24
24
|
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
25
25
|
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
26
26
|
import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, BUNDLE} from "../../types/ObjectType.sol";
|
27
|
-
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
|
27
|
+
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
|
28
28
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
29
29
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
30
30
|
import {ReferralId} from "../../types/Referral.sol";
|
@@ -44,6 +44,7 @@ import {IBundleService} from "./IBundleService.sol";
|
|
44
44
|
|
45
45
|
contract PolicyService is ComponentServiceBase, IPolicyService {
|
46
46
|
using NftIdLib for NftId;
|
47
|
+
using TimestampLib for Timestamp;
|
47
48
|
|
48
49
|
IPoolService internal _poolService;
|
49
50
|
IBundleService internal _bundleService;
|
@@ -81,7 +82,7 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
81
82
|
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
82
83
|
product = Product(productInfo.objectAddress);
|
83
84
|
}
|
84
|
-
// TODO no access restrictions
|
85
|
+
// TODO: no access restrictions
|
85
86
|
function calculatePremium(
|
86
87
|
RiskId riskId,
|
87
88
|
uint256 sumInsuredAmount,
|
@@ -179,7 +180,7 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
179
180
|
ReferralId referralId
|
180
181
|
) external override returns (NftId policyNftId) {
|
181
182
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
182
|
-
// TODO add validations (see create bundle in pool service)
|
183
|
+
// TODO: add validations (see create bundle in pool service)
|
183
184
|
|
184
185
|
policyNftId = getRegistryService().registerPolicy(
|
185
186
|
IRegistry.ObjectInfo(
|
@@ -224,7 +225,7 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
224
225
|
instance.createPolicy(policyNftId, policyInfo);
|
225
226
|
instance.updatePolicyState(policyNftId, APPLIED());
|
226
227
|
|
227
|
-
// TODO add logging
|
228
|
+
// TODO: add logging
|
228
229
|
}
|
229
230
|
|
230
231
|
function _getAndVerifyUnderwritingSetup(
|
@@ -384,7 +385,7 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
384
385
|
}
|
385
386
|
}
|
386
387
|
|
387
|
-
// TODO add logging
|
388
|
+
// TODO: add logging
|
388
389
|
}
|
389
390
|
|
390
391
|
function calculateRequiredCollateral(UFixed collateralizationLevel, uint256 sumInsuredAmount) public pure override returns(uint256 collateralAmount) {
|
@@ -397,28 +398,30 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
397
398
|
// check caller is registered product
|
398
399
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
399
400
|
InstanceReader instanceReader = instance.getInstanceReader();
|
401
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
400
402
|
|
401
|
-
|
402
|
-
|
403
|
-
|
403
|
+
if (policyInfo.premiumPaidAmount == policyInfo.premiumAmount) {
|
404
|
+
revert ErrorIPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
405
|
+
}
|
404
406
|
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
407
|
+
uint256 unpaidPremiumAmount = policyInfo.premiumAmount - policyInfo.premiumPaidAmount;
|
408
|
+
|
409
|
+
uint256 netPremiumAmount = _processPremiumByTreasury(
|
410
|
+
instance,
|
411
|
+
productInfo.nftId,
|
412
|
+
policyNftId,
|
413
|
+
unpaidPremiumAmount);
|
410
414
|
|
411
|
-
|
412
|
-
// policyInfo.premiumPaidAmount += premiumAmount;
|
415
|
+
policyInfo.premiumPaidAmount += unpaidPremiumAmount;
|
413
416
|
|
414
|
-
|
417
|
+
_bundleService.increaseBalance(instance, policyInfo.bundleNftId, netPremiumAmount);
|
418
|
+
instance.updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
415
419
|
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
// }
|
420
|
+
if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
|
421
|
+
activate(policyNftId, activateAt);
|
422
|
+
}
|
420
423
|
|
421
|
-
// TODO add logging
|
424
|
+
// TODO: add logging
|
422
425
|
}
|
423
426
|
|
424
427
|
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
@@ -437,14 +440,45 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
437
440
|
|
438
441
|
instance.updatePolicy(policyNftId, policyInfo, ACTIVE());
|
439
442
|
|
440
|
-
// TODO add logging
|
443
|
+
// TODO: add logging
|
441
444
|
}
|
442
445
|
|
443
446
|
function close(
|
444
447
|
NftId policyNftId
|
445
448
|
) external override // solhint-disable-next-line no-empty-blocks
|
446
449
|
{
|
450
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
451
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
452
|
+
|
453
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
454
|
+
|
455
|
+
if (policyInfo.activatedAt.eqz()) {
|
456
|
+
revert ErrorIPolicyServicePolicyNotActivated(policyNftId);
|
457
|
+
}
|
458
|
+
|
459
|
+
StateId state = instanceReader.getPolicyState(policyNftId);
|
460
|
+
if (state != ACTIVE()) {
|
461
|
+
revert ErrorIPolicyServicePolicyNotActive(policyNftId, state);
|
462
|
+
}
|
463
|
+
|
464
|
+
if (policyInfo.closedAt.gtz()) {
|
465
|
+
revert ErrorIPolicyServicePolicyAlreadyClosed(policyNftId);
|
466
|
+
}
|
467
|
+
|
468
|
+
if (policyInfo.premiumAmount != policyInfo.premiumPaidAmount) {
|
469
|
+
revert ErrorIPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
|
470
|
+
}
|
471
|
+
|
472
|
+
if (policyInfo.openClaimsCount > 0) {
|
473
|
+
revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
474
|
+
}
|
475
|
+
|
476
|
+
if (policyInfo.expiredAt.lt(TimestampLib.blockTimestamp()) && policyInfo.payoutAmount < policyInfo.sumInsuredAmount) {
|
477
|
+
revert ErrorIPolicyServicePolicyHasNotExpired(policyNftId, policyInfo.expiredAt);
|
478
|
+
}
|
447
479
|
|
480
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
481
|
+
instance.updatePolicy(policyNftId, policyInfo, CLOSED());
|
448
482
|
}
|
449
483
|
|
450
484
|
function _getPoolNftId(
|
@@ -498,6 +532,6 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
498
532
|
}
|
499
533
|
}
|
500
534
|
|
501
|
-
// TODO add logging
|
535
|
+
// TODO: add logging
|
502
536
|
}
|
503
537
|
}
|
@@ -74,7 +74,7 @@ contract PoolService is
|
|
74
74
|
bytes memory data;
|
75
75
|
(info, data) = getRegistryService().registerPool(pool, poolOwner);
|
76
76
|
|
77
|
-
IInstance instance = _getInstance(info);
|
77
|
+
IInstance instance = _getInstance(info.parentNftId);
|
78
78
|
|
79
79
|
bool hasRole = getInstanceService().hasRole(
|
80
80
|
poolOwner,
|
@@ -88,6 +88,8 @@ contract PoolService is
|
|
88
88
|
poolNftId = info.nftId;
|
89
89
|
ISetup.PoolSetupInfo memory initialSetup = _decodeAndVerifyPoolSetup(data);
|
90
90
|
instance.createPoolSetup(poolNftId, initialSetup);
|
91
|
+
|
92
|
+
getInstanceService().createTarget(_getInstanceNftId(info), poolAddress, pool.getName());
|
91
93
|
}
|
92
94
|
|
93
95
|
function _decodeAndVerifyPoolSetup(bytes memory data) internal returns(ISetup.PoolSetupInfo memory setup)
|
@@ -6,8 +6,7 @@ import {ProxyManager} from "../../shared/ProxyManager.sol";
|
|
6
6
|
import {PoolService} from "./PoolService.sol";
|
7
7
|
import {Registry} from "../../registry/Registry.sol";
|
8
8
|
import {RegistryService} from "../../registry/RegistryService.sol";
|
9
|
-
import {
|
10
|
-
import {SERVICE} from "../../types/ObjectType.sol";
|
9
|
+
import {REGISTRY} from "../../types/ObjectType.sol";
|
11
10
|
|
12
11
|
contract PoolServiceManager is ProxyManager {
|
13
12
|
|
@@ -27,10 +26,10 @@ contract PoolServiceManager is ProxyManager {
|
|
27
26
|
|
28
27
|
_poolService = PoolService(address(versionable));
|
29
28
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
//
|
29
|
+
// TODO `this` must have a role or own nft to register service
|
30
|
+
//Registry registry = Registry(registryAddress);
|
31
|
+
//address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _poolService.getMajorVersion());
|
32
|
+
//RegistryService registryService = RegistryService(registryServiceAddress);
|
34
33
|
//registryService.registerService(_poolService);
|
35
34
|
|
36
35
|
// TODO no nft to link yet
|
@@ -38,9 +37,6 @@ contract PoolServiceManager is ProxyManager {
|
|
38
37
|
//_linkToNftOwnable(
|
39
38
|
// address(registryAddress),
|
40
39
|
// address(_poolService));
|
41
|
-
|
42
|
-
// implies that after this constructor call only upgrade functionality is available
|
43
|
-
_isDeployed = true;
|
44
40
|
}
|
45
41
|
|
46
42
|
//--- view functions ----------------------------------------------------//
|
@@ -83,7 +83,7 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
83
83
|
bytes memory data;
|
84
84
|
(info, data) = getRegistryService().registerProduct(product, productOwner);
|
85
85
|
|
86
|
-
IInstance instance = _getInstance(info);
|
86
|
+
IInstance instance = _getInstance(info.parentNftId);
|
87
87
|
bool hasRole = getInstanceService().hasRole(
|
88
88
|
productOwner,
|
89
89
|
PRODUCT_OWNER_ROLE(),
|
@@ -96,6 +96,8 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
96
96
|
productNftId = info.nftId;
|
97
97
|
ISetup.ProductSetupInfo memory initialSetup = _decodeAndVerifyProductSetup(data);
|
98
98
|
instance.createProductSetup(productNftId, initialSetup);
|
99
|
+
|
100
|
+
getInstanceService().createTarget(_getInstanceNftId(info), productAddress, product.getName());
|
99
101
|
}
|
100
102
|
|
101
103
|
function _decodeAndVerifyProductSetup(bytes memory data) internal returns(ISetup.ProductSetupInfo memory setup)
|
@@ -7,11 +7,12 @@ import {ChainNft} from "./ChainNft.sol";
|
|
7
7
|
import {NftId} from "../types/NftId.sol";
|
8
8
|
import {ObjectType} from "../types/ObjectType.sol";
|
9
9
|
import {VersionPart} from "../types/Version.sol";
|
10
|
+
import {Timestamp} from "../types/Timestamp.sol";
|
10
11
|
|
11
12
|
interface IRegistry is IERC165 {
|
12
13
|
|
13
14
|
event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
|
14
|
-
|
15
|
+
event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
|
15
16
|
|
16
17
|
// register()
|
17
18
|
error CallerNotRegistryService();
|
@@ -19,6 +20,7 @@ interface IRegistry is IERC165 {
|
|
19
20
|
|
20
21
|
// registerService()
|
21
22
|
error CallerNotReleaseManager();
|
23
|
+
error ServiceAlreadyRegistered(address service);
|
22
24
|
|
23
25
|
// _register()
|
24
26
|
error ZeroParentAddress();
|
@@ -36,7 +38,17 @@ interface IRegistry is IERC165 {
|
|
36
38
|
}// TODO delete nftId and initialOwner(if not used) from struct
|
37
39
|
// TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
|
38
40
|
|
39
|
-
|
41
|
+
struct ReleaseInfo {
|
42
|
+
ObjectType[] domains;
|
43
|
+
Timestamp createdAt;
|
44
|
+
//Timestamp updatedAt;
|
45
|
+
}
|
46
|
+
|
47
|
+
function registerService(
|
48
|
+
ObjectInfo memory serviceInfo,
|
49
|
+
VersionPart serviceVersion,
|
50
|
+
ObjectType serviceDomain
|
51
|
+
) external returns(NftId nftId);
|
40
52
|
|
41
53
|
function register(ObjectInfo memory info) external returns (NftId nftId);
|
42
54
|
|
@@ -46,6 +58,8 @@ interface IRegistry is IERC165 {
|
|
46
58
|
|
47
59
|
function getMajorVersion() external view returns (VersionPart);
|
48
60
|
|
61
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory);
|
62
|
+
|
49
63
|
function getObjectCount() external view returns (uint256);
|
50
64
|
|
51
65
|
function getNftId() external view returns (NftId nftId);
|
@@ -67,7 +81,7 @@ interface IRegistry is IERC165 {
|
|
67
81
|
function isRegisteredService(address contractAddress) external view returns (bool);
|
68
82
|
|
69
83
|
function getServiceAddress(
|
70
|
-
ObjectType
|
84
|
+
ObjectType serviceDomain,
|
71
85
|
VersionPart releaseVersion
|
72
86
|
) external view returns (address serviceAddress);
|
73
87
|
|
@@ -2,27 +2,23 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
|
5
|
-
import {NftId, toNftId, zeroNftId
|
6
|
-
import {
|
5
|
+
import {NftId, toNftId, zeroNftId} from "../types/NftId.sol";
|
6
|
+
import {VersionPart} from "../types/Version.sol";
|
7
7
|
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
|
8
8
|
|
9
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
10
|
-
import {IService} from "../shared/IService.sol";
|
11
9
|
import {ERC165} from "../shared/ERC165.sol";
|
12
10
|
|
13
11
|
import {ChainNft} from "./ChainNft.sol";
|
14
12
|
import {IRegistry} from "./IRegistry.sol";
|
15
|
-
import {IRegistryService} from "./IRegistryService.sol";
|
16
|
-
import {ITransferInterceptor} from "./ITransferInterceptor.sol";
|
17
13
|
import {ReleaseManager} from "./ReleaseManager.sol";
|
18
14
|
|
19
|
-
// IMPORTANT
|
15
|
+
// IMPORTANT
|
20
16
|
// Each NFT minted by registry is accosiated with:
|
21
17
|
// 1) NFT owner
|
22
18
|
// 2) registred contract OR object stored in registered (parent) contract
|
23
19
|
// Four registration flows:
|
24
|
-
// 1) IService address by release manager (SERVICE of
|
25
|
-
// 2) IService address by release manager (SERVICE of
|
20
|
+
// 1) IService address by release manager (SERVICE of domain SERVICE aka registry service aka release creation)
|
21
|
+
// 2) IService address by release manager (SERVICE of domain !SERVICE aka regular service)
|
26
22
|
// 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
|
27
23
|
// 4) state object by regular service (POLICY, BUNDLE, STAKE)
|
28
24
|
|
@@ -30,15 +26,15 @@ contract Registry is
|
|
30
26
|
ERC165,
|
31
27
|
IRegistry
|
32
28
|
{
|
33
|
-
uint256 public constant GIF_MAJOR_VERSION_AT_DEPLOYMENT = 3;
|
34
29
|
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
35
30
|
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
36
|
-
uint256 public constant REGISTRY_SERVICE_TOKEN_SEQUENCE_ID = 3;
|
37
31
|
string public constant EMPTY_URI = "";
|
38
32
|
|
39
33
|
mapping(NftId nftId => ObjectInfo info) internal _info;
|
40
34
|
mapping(address object => NftId nftId) internal _nftIdByAddress;
|
41
35
|
|
36
|
+
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) _service;
|
37
|
+
|
42
38
|
mapping(ObjectType objectType => mapping(
|
43
39
|
ObjectType parentType => bool)) internal _isValidContractCombination;
|
44
40
|
|
@@ -64,12 +60,9 @@ contract Registry is
|
|
64
60
|
_;
|
65
61
|
}
|
66
62
|
|
67
|
-
constructor(
|
63
|
+
constructor()
|
68
64
|
{
|
69
|
-
|
70
|
-
require(initialVersion.toInt() > 0, "Registry: initial version is 0");
|
71
|
-
|
72
|
-
_releaseManager = ReleaseManager(releaseManager);
|
65
|
+
_releaseManager = ReleaseManager(msg.sender);
|
73
66
|
|
74
67
|
// deploy NFT
|
75
68
|
_chainNft = new ChainNft(address(this));// adds 10kb to deployment size
|
@@ -84,7 +77,11 @@ contract Registry is
|
|
84
77
|
_registerInterface(type(IRegistry).interfaceId);
|
85
78
|
}
|
86
79
|
|
87
|
-
function registerService(
|
80
|
+
function registerService(
|
81
|
+
ObjectInfo memory info,
|
82
|
+
VersionPart version,
|
83
|
+
ObjectType domain
|
84
|
+
)
|
88
85
|
external
|
89
86
|
onlyReleaseManager
|
90
87
|
returns(NftId nftId)
|
@@ -95,7 +92,16 @@ contract Registry is
|
|
95
92
|
}
|
96
93
|
info.initialOwner = NFT_LOCK_ADDRESS <- if services are access managed
|
97
94
|
*/
|
95
|
+
|
96
|
+
if(_service[version][domain] > address(0)) {
|
97
|
+
revert ServiceAlreadyRegistered(info.objectAddress);
|
98
|
+
}
|
99
|
+
|
100
|
+
_service[version][domain] = info.objectAddress; // nftId;
|
101
|
+
|
98
102
|
nftId = _register(info);
|
103
|
+
|
104
|
+
emit LogServiceRegistration(version, domain);
|
99
105
|
}
|
100
106
|
|
101
107
|
function register(ObjectInfo memory info)
|
@@ -132,6 +138,11 @@ contract Registry is
|
|
132
138
|
return _releaseManager.getLatestVersion();
|
133
139
|
}
|
134
140
|
|
141
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory)
|
142
|
+
{
|
143
|
+
return _releaseManager.getReleaseInfo(version);
|
144
|
+
}
|
145
|
+
|
135
146
|
function getObjectCount() external view override returns (uint256) {
|
136
147
|
return _chainNft.totalSupply();
|
137
148
|
}
|
@@ -173,11 +184,11 @@ contract Registry is
|
|
173
184
|
}
|
174
185
|
|
175
186
|
function getServiceAddress(
|
176
|
-
ObjectType
|
187
|
+
ObjectType serviceDomain,
|
177
188
|
VersionPart releaseVersion
|
178
189
|
) external view returns (address)
|
179
190
|
{
|
180
|
-
return
|
191
|
+
return _service[releaseVersion][serviceDomain];
|
181
192
|
}
|
182
193
|
|
183
194
|
function getChainNft() external view override returns (ChainNft) {
|
@@ -4,15 +4,11 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
|
5
5
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
6
6
|
|
7
|
-
import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
|
8
7
|
import {RoleId, RoleIdLib,
|
9
8
|
REGISTRY_SERVICE_MANAGER_ROLE,
|
10
9
|
REGISTRY_SERVICE_ADMIN_ROLE,
|
11
10
|
RELEASE_MANAGER_ROLE} from "../types/RoleId.sol";
|
12
11
|
|
13
|
-
import {Registry} from "./Registry.sol";
|
14
|
-
import {IVersionable} from "../shared/IVersionable.sol";
|
15
|
-
import {IRegistryService} from "./IRegistryService.sol";
|
16
12
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
17
13
|
import {ReleaseManager} from "./ReleaseManager.sol";
|
18
14
|
|
@@ -37,9 +33,12 @@ import {ReleaseManager} from "./ReleaseManager.sol";
|
|
37
33
|
|
38
34
|
contract RegistryAccessManager is AccessManaged
|
39
35
|
{
|
40
|
-
|
36
|
+
error NotInitialized();
|
37
|
+
error AlreadyInitialized();
|
38
|
+
|
39
|
+
uint64 public constant UNIQUE_ROLE_ID_MIN = 1000000;
|
41
40
|
|
42
|
-
AccessManager private _accessManager;
|
41
|
+
AccessManager private immutable _accessManager;
|
43
42
|
address private _releaseManager;
|
44
43
|
address private _tokenRegistry;
|
45
44
|
|
@@ -48,15 +47,15 @@ contract RegistryAccessManager is AccessManaged
|
|
48
47
|
|
49
48
|
modifier onlyOnce() {
|
50
49
|
if(_isInitialized) {
|
51
|
-
revert();
|
52
|
-
}
|
50
|
+
revert AlreadyInitialized();
|
51
|
+
}
|
53
52
|
_;
|
54
53
|
_isInitialized = true;
|
55
54
|
}
|
56
55
|
|
57
56
|
modifier onlyInitialized() {
|
58
57
|
if(!_isInitialized) {
|
59
|
-
revert();
|
58
|
+
revert NotInitialized();
|
60
59
|
}
|
61
60
|
_;
|
62
61
|
}
|
@@ -67,7 +66,7 @@ contract RegistryAccessManager is AccessManaged
|
|
67
66
|
_accessManager = new AccessManager(address(this));
|
68
67
|
setAuthority(address(_accessManager));
|
69
68
|
|
70
|
-
_idNext =
|
69
|
+
_idNext = UNIQUE_ROLE_ID_MIN;
|
71
70
|
|
72
71
|
_configureAdminRoleInitial();
|
73
72
|
|
@@ -76,16 +75,16 @@ contract RegistryAccessManager is AccessManaged
|
|
76
75
|
_grantRole(REGISTRY_SERVICE_MANAGER_ROLE(), manager, 0);
|
77
76
|
}
|
78
77
|
|
79
|
-
// TODO need release manager authorization to configure roles for service functions and to grant those roles
|
80
78
|
function initialize(address releaseManager, address tokenRegistry)
|
81
79
|
external
|
82
80
|
restricted // GIF_ADMIN_ROLE
|
83
81
|
onlyOnce
|
84
82
|
{
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
83
|
+
require(
|
84
|
+
ReleaseManager(releaseManager).authority() == address(_accessManager),
|
85
|
+
"RegistryAccessManager: release manager authority is invalid");
|
86
|
+
require(tokenRegistry > address(0), "RegistryAccessManager: token registry is 0");
|
87
|
+
//require(tokenRegistry.authority() == address(_accessManager));
|
89
88
|
|
90
89
|
_releaseManager = releaseManager;
|
91
90
|
_tokenRegistry = tokenRegistry;
|
@@ -108,13 +107,14 @@ contract RegistryAccessManager is AccessManaged
|
|
108
107
|
onlyInitialized
|
109
108
|
returns(RoleId)
|
110
109
|
{
|
110
|
+
// TODO questionable check...
|
111
111
|
// target is not part of `runtime`
|
112
|
-
if(
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
{
|
112
|
+
//if(
|
113
|
+
// target == address(this) ||
|
114
|
+
// target == address(_accessManager) ||
|
115
|
+
// target == _releaseManager ||
|
116
|
+
// target == _tokenRegistry)
|
117
|
+
//{ return TargetInvalid(); }
|
118
118
|
|
119
119
|
RoleId roleId = _getNextRoleId();
|
120
120
|
|
@@ -154,14 +154,14 @@ contract RegistryAccessManager is AccessManaged
|
|
154
154
|
{
|
155
155
|
bytes4[] memory functionSelector = new bytes4[](1);
|
156
156
|
|
157
|
-
//
|
157
|
+
// for RegistryServiceProxyManager
|
158
158
|
// TODO upgrading with releaseManager.upgrade()->proxy.upgrade()???
|
159
159
|
//functionSelector[0] = RegistryServiceManager.upgrade.selector;
|
160
160
|
//_setTargetFunctionRole(address(this), functionSelector, REGISTRY_SERVICE_ADMIN_ROLE());
|
161
161
|
|
162
|
-
//
|
162
|
+
// for TokenRegistry
|
163
163
|
|
164
|
-
//
|
164
|
+
// for ReleaseManager
|
165
165
|
functionSelector[0] = ReleaseManager.createNextRelease.selector;
|
166
166
|
_setTargetFunctionRole(_releaseManager, functionSelector, REGISTRY_SERVICE_ADMIN_ROLE());
|
167
167
|
//functionSelector[0] = ReleaseManager.activateNextRelease.selector;
|
@@ -172,15 +172,15 @@ contract RegistryAccessManager is AccessManaged
|
|
172
172
|
{
|
173
173
|
bytes4[] memory functionSelector = new bytes4[](1);
|
174
174
|
|
175
|
-
//
|
175
|
+
// for TokenRegistry
|
176
176
|
functionSelector[0] = TokenRegistry.setActive.selector;
|
177
177
|
_setTargetFunctionRole(address(_tokenRegistry), functionSelector, REGISTRY_SERVICE_MANAGER_ROLE());
|
178
178
|
|
179
|
-
//
|
179
|
+
// for ReleaseManager
|
180
180
|
functionSelector[0] = ReleaseManager.registerService.selector;
|
181
181
|
_setTargetFunctionRole(_releaseManager, functionSelector, REGISTRY_SERVICE_MANAGER_ROLE());
|
182
182
|
|
183
|
-
// set
|
183
|
+
// set admin
|
184
184
|
_setRoleAdmin(REGISTRY_SERVICE_MANAGER_ROLE(), REGISTRY_SERVICE_ADMIN_ROLE());
|
185
185
|
}
|
186
186
|
|
@@ -156,7 +156,7 @@ contract RegistryService is
|
|
156
156
|
|
157
157
|
// From IService
|
158
158
|
function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
|
159
|
-
return
|
159
|
+
return REGISTRY();
|
160
160
|
}
|
161
161
|
|
162
162
|
// from Versionable
|
@@ -196,32 +196,25 @@ contract RegistryService is
|
|
196
196
|
|
197
197
|
// registerInstance() have no restriction
|
198
198
|
config[0].serviceDomain = INSTANCE();
|
199
|
-
config[0].selector =
|
200
|
-
config[0].selector[0] = RegistryService.registerInstance.selector;
|
199
|
+
config[0].selector = RegistryService.registerInstance.selector;
|
201
200
|
|
202
201
|
config[1].serviceDomain = POOL();
|
203
|
-
config[1].selector =
|
204
|
-
config[1].selector[0] = RegistryService.registerPool.selector;
|
202
|
+
config[1].selector = RegistryService.registerPool.selector;
|
205
203
|
|
206
204
|
config[2].serviceDomain = DISTRIBUTION();
|
207
|
-
config[2].selector =
|
208
|
-
config[2].selector[0] = RegistryService.registerDistribution.selector;
|
205
|
+
config[2].selector = RegistryService.registerDistribution.selector;
|
209
206
|
|
210
207
|
config[3].serviceDomain = PRODUCT();
|
211
|
-
config[3].selector =
|
212
|
-
config[3].selector[0] = RegistryService.registerProduct.selector;
|
208
|
+
config[3].selector = RegistryService.registerProduct.selector;
|
213
209
|
|
214
210
|
config[4].serviceDomain = POLICY();
|
215
|
-
config[4].selector =
|
216
|
-
config[4].selector[0] = RegistryService.registerPolicy.selector;
|
211
|
+
config[4].selector = RegistryService.registerPolicy.selector;
|
217
212
|
|
218
213
|
config[5].serviceDomain = BUNDLE();
|
219
|
-
config[5].selector =
|
220
|
-
config[5].selector[0] = RegistryService.registerBundle.selector;
|
214
|
+
config[5].selector = RegistryService.registerBundle.selector;
|
221
215
|
|
222
216
|
/*config[6].serviceDomain = STAKE();
|
223
|
-
config[6].selector =
|
224
|
-
config[6].selector[0] = RegistryService.registerStake.selector;*/
|
217
|
+
config[6].selector = RegistryService.registerStake.selector;*/
|
225
218
|
|
226
219
|
data = abi.encode(config);
|
227
220
|
}
|
@@ -17,7 +17,7 @@ contract RegistryServiceManager is
|
|
17
17
|
{
|
18
18
|
bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
|
19
19
|
|
20
|
-
RegistryService private immutable _registryService;
|
20
|
+
RegistryService private immutable _registryService;
|
21
21
|
|
22
22
|
/// @dev initializes proxy manager with registry service implementation and deploys registry
|
23
23
|
constructor(
|
@@ -25,6 +25,9 @@ contract RegistryServiceManager is
|
|
25
25
|
address registry) // used by implementation
|
26
26
|
ProxyManager()
|
27
27
|
{
|
28
|
+
require(initialAuthority > address(0), "RegistryServiceManager: initial authority is 0");
|
29
|
+
require(registry > address(0), "RegistryServiceManager: registry is 0");
|
30
|
+
|
28
31
|
// implementation's initializer func `data` argument
|
29
32
|
bytes memory initializationData = abi.encode(
|
30
33
|
initialAuthority,
|
@@ -35,7 +38,6 @@ contract RegistryServiceManager is
|
|
35
38
|
initializationData);
|
36
39
|
|
37
40
|
_registryService = RegistryService(address(versionable));
|
38
|
-
|
39
41
|
}
|
40
42
|
|
41
43
|
// from IRegisterable
|