@etherisc/gif-next 0.0.2-ead1eb0-841 → 0.0.2-eadf4ad-932
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/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +80 -80
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +97 -58
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.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/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +2 -2
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.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 +24 -24
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +69 -30
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.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/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.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/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +44 -44
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +79 -40
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +48 -48
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +81 -42
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +4 -4
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -29
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +10 -10
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +90 -51
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +8 -8
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +90 -51
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +30 -30
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +77 -38
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +6 -6
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +66 -27
- 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 +73 -13
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +153 -51
- 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 +93 -25
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +48 -95
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +170 -68
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +72 -28
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +363 -76
- 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/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.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/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +43 -14
- 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/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- 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/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +4 -4
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/distribution/DistributionService.sol +8 -6
- package/contracts/distribution/DistributionServiceManager.sol +9 -6
- package/contracts/instance/InstanceService.sol +9 -16
- package/contracts/instance/InstanceServiceManager.sol +10 -20
- package/contracts/pool/BundleService.sol +13 -11
- package/contracts/pool/BundleServiceManager.sol +9 -18
- package/contracts/pool/PoolService.sol +12 -11
- package/contracts/pool/PoolServiceManager.sol +9 -18
- package/contracts/product/ApplicationService.sol +6 -5
- package/contracts/product/ApplicationServiceManager.sol +9 -6
- package/contracts/product/ClaimService.sol +6 -5
- package/contracts/product/ClaimServiceManager.sol +9 -6
- package/contracts/product/PolicyService.sol +6 -4
- package/contracts/product/PolicyServiceManager.sol +9 -21
- package/contracts/product/PricingService.sol +6 -5
- package/contracts/product/PricingServiceManager.sol +9 -18
- package/contracts/product/ProductService.sol +6 -4
- package/contracts/product/ProductServiceManager.sol +9 -21
- package/contracts/registry/IRegistry.sol +19 -12
- package/contracts/registry/IRegistryService.sol +22 -30
- package/contracts/registry/Registry.sol +40 -36
- package/contracts/registry/RegistryAccessManager.sol +39 -123
- package/contracts/registry/RegistryService.sol +22 -76
- package/contracts/registry/RegistryServiceManager.sol +21 -9
- package/contracts/registry/ReleaseManager.sol +243 -189
- package/contracts/shared/ComponentService.sol +0 -9
- package/contracts/shared/ProxyManager.sol +26 -0
- package/contracts/staking/StakingService.sol +7 -4
- package/contracts/staking/{StakeingServiceManager.sol → StakingServiceManager.sol} +8 -5
- package/contracts/type/RoleId.sol +10 -3
- package/package.json +1 -1
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +0 -628
@@ -11,15 +11,18 @@ contract ClaimServiceManager is ProxyManager {
|
|
11
11
|
|
12
12
|
/// @dev initializes proxy manager with service implementation
|
13
13
|
constructor(
|
14
|
-
address
|
15
|
-
|
14
|
+
address authority,
|
15
|
+
address registryAddress,
|
16
|
+
bytes32 salt
|
17
|
+
)
|
16
18
|
ProxyManager(registryAddress)
|
17
19
|
{
|
18
|
-
ClaimService svc = new ClaimService();
|
19
|
-
bytes memory data = abi.encode(registryAddress, address(this));
|
20
|
-
IVersionable versionable =
|
20
|
+
ClaimService svc = new ClaimService{salt: salt}();
|
21
|
+
bytes memory data = abi.encode(registryAddress, address(this), authority);
|
22
|
+
IVersionable versionable = deployDetermenistic(
|
21
23
|
address(svc),
|
22
|
-
data
|
24
|
+
data,
|
25
|
+
salt);
|
23
26
|
|
24
27
|
_claimService = ClaimService(address(versionable));
|
25
28
|
}
|
@@ -61,11 +61,13 @@ contract PolicyService is
|
|
61
61
|
virtual override
|
62
62
|
initializer
|
63
63
|
{
|
64
|
-
|
65
|
-
|
66
|
-
|
64
|
+
(
|
65
|
+
address registryAddress,,
|
66
|
+
//address managerAddress
|
67
|
+
address authority
|
68
|
+
) = abi.decode(data, (address, address, address));
|
67
69
|
|
68
|
-
initializeService(registryAddress,
|
70
|
+
initializeService(registryAddress, authority, owner);
|
69
71
|
|
70
72
|
VersionPart majorVersion = getVersion().toMajorPart();
|
71
73
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
@@ -14,32 +14,20 @@ contract PolicyServiceManager is ProxyManager {
|
|
14
14
|
|
15
15
|
/// @dev initializes proxy manager with product service implementation
|
16
16
|
constructor(
|
17
|
-
address
|
18
|
-
|
17
|
+
address authority,
|
18
|
+
address registryAddress,
|
19
|
+
bytes32 salt
|
20
|
+
)
|
19
21
|
ProxyManager(registryAddress)
|
20
22
|
{
|
21
|
-
PolicyService svc = new PolicyService();
|
22
|
-
bytes memory data = abi.encode(registryAddress, address(this));
|
23
|
-
IVersionable versionable =
|
23
|
+
PolicyService svc = new PolicyService{salt: salt}();
|
24
|
+
bytes memory data = abi.encode(registryAddress, address(this), authority);
|
25
|
+
IVersionable versionable = deployDetermenistic(
|
24
26
|
address(svc),
|
25
|
-
data
|
27
|
+
data,
|
28
|
+
salt);
|
26
29
|
|
27
30
|
_policyService = PolicyService(address(versionable));
|
28
|
-
|
29
|
-
// Registry registry = Registry(registryAddress);
|
30
|
-
// address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
|
31
|
-
// RegistryService registryService = RegistryService(registryServiceAddress);
|
32
|
-
// TODO this must have a role or own nft to register service
|
33
|
-
//registryService.registerService(_productService);
|
34
|
-
|
35
|
-
// TODO no nft to link yet
|
36
|
-
// link ownership of instance service manager ot nft owner of instance service
|
37
|
-
//_linkToNftOwnable(
|
38
|
-
// address(registryAddress),
|
39
|
-
// address(_productService));
|
40
|
-
|
41
|
-
// implies that after this constructor call only upgrade functionality is available
|
42
|
-
// _isDeployed = true;
|
43
31
|
}
|
44
32
|
|
45
33
|
//--- view functions ----------------------------------------------------//
|
@@ -45,12 +45,13 @@ contract PricingService is
|
|
45
45
|
virtual override
|
46
46
|
initializer()
|
47
47
|
{
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
48
|
+
(
|
49
|
+
address registryAddress,,
|
50
|
+
//address managerAddress
|
51
|
+
address authority
|
52
|
+
) = abi.decode(data, (address, address, address));
|
52
53
|
|
53
|
-
initializeService(registryAddress,
|
54
|
+
initializeService(registryAddress, authority, owner);
|
54
55
|
registerInterface(type(IPricingService).interfaceId);
|
55
56
|
|
56
57
|
_distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
@@ -12,31 +12,22 @@ contract PricingServiceManager is ProxyManager {
|
|
12
12
|
|
13
13
|
PricingService private _pricingService;
|
14
14
|
|
15
|
-
/// @dev initializes proxy manager with
|
15
|
+
/// @dev initializes proxy manager with pricing service implementation and deploys instance
|
16
16
|
constructor(
|
17
|
-
address
|
17
|
+
address authority,
|
18
|
+
address registryAddress,
|
19
|
+
bytes32 salt
|
18
20
|
)
|
19
21
|
ProxyManager(registryAddress)
|
20
22
|
{
|
21
|
-
PricingService pricingSrv = new PricingService();
|
22
|
-
bytes memory data = abi.encode(registryAddress, address(this));
|
23
|
-
IVersionable versionable =
|
23
|
+
PricingService pricingSrv = new PricingService{salt: salt}();
|
24
|
+
bytes memory data = abi.encode(registryAddress, address(this), authority);
|
25
|
+
IVersionable versionable = deployDetermenistic(
|
24
26
|
address(pricingSrv),
|
25
|
-
data
|
27
|
+
data,
|
28
|
+
salt);
|
26
29
|
|
27
30
|
_pricingService = PricingService(address(versionable));
|
28
|
-
|
29
|
-
// TODO `thi` must have a role or own nft to register service
|
30
|
-
//Registry registry = Registry(registryAddress);
|
31
|
-
//address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _distributionService.getMajorVersion());
|
32
|
-
//RegistryService registryService = RegistryService(registryServiceAddress);
|
33
|
-
//registryService.registerService(_distributionService);
|
34
|
-
|
35
|
-
// TODO no nft to link yet
|
36
|
-
// link ownership of instance service manager ot nft owner of instance service
|
37
|
-
//_linkToNftOwnable(
|
38
|
-
// address(registryAddress),
|
39
|
-
// address(_distributionService));
|
40
31
|
}
|
41
32
|
|
42
33
|
//--- view functions ----------------------------------------------------//
|
@@ -56,11 +56,13 @@ contract ProductService is ComponentService, IProductService {
|
|
56
56
|
initializer
|
57
57
|
virtual override
|
58
58
|
{
|
59
|
-
|
60
|
-
|
61
|
-
|
59
|
+
(
|
60
|
+
address registryAddress,,
|
61
|
+
//address managerAddress
|
62
|
+
address authority
|
63
|
+
) = abi.decode(data, (address, address, address));
|
62
64
|
|
63
|
-
initializeService(registryAddress,
|
65
|
+
initializeService(registryAddress, authority, owner);
|
64
66
|
|
65
67
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
|
66
68
|
|
@@ -14,32 +14,20 @@ contract ProductServiceManager is ProxyManager {
|
|
14
14
|
|
15
15
|
/// @dev initializes proxy manager with product service implementation
|
16
16
|
constructor(
|
17
|
-
address
|
18
|
-
|
17
|
+
address authority,
|
18
|
+
address registryAddress,
|
19
|
+
bytes32 salt
|
20
|
+
)
|
19
21
|
ProxyManager(registryAddress)
|
20
22
|
{
|
21
|
-
ProductService svc = new ProductService();
|
22
|
-
bytes memory data = abi.encode(registryAddress, address(this));
|
23
|
-
IVersionable versionable =
|
23
|
+
ProductService svc = new ProductService{salt: salt}();
|
24
|
+
bytes memory data = abi.encode(registryAddress, address(this), authority);
|
25
|
+
IVersionable versionable = deployDetermenistic(
|
24
26
|
address(svc),
|
25
|
-
data
|
27
|
+
data,
|
28
|
+
salt);
|
26
29
|
|
27
30
|
_productService = ProductService(address(versionable));
|
28
|
-
|
29
|
-
// Registry registry = Registry(registryAddress);
|
30
|
-
// address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
|
31
|
-
// RegistryService registryService = RegistryService(registryServiceAddress);
|
32
|
-
// TODO this must have a role or own nft to register service
|
33
|
-
//registryService.registerService(_productService);
|
34
|
-
|
35
|
-
// TODO no nft to link yet
|
36
|
-
// link ownership of instance service manager ot nft owner of instance service
|
37
|
-
//_linkToNftOwnable(
|
38
|
-
// address(registryAddress),
|
39
|
-
// address(_productService));
|
40
|
-
|
41
|
-
// implies that after this constructor call only upgrade functionality is available
|
42
|
-
// _isDeployed = true;
|
43
31
|
}
|
44
32
|
|
45
33
|
//--- view functions ----------------------------------------------------//
|
@@ -7,6 +7,7 @@ import {NftId} from "../type/NftId.sol";
|
|
7
7
|
import {ObjectType} from "../type/ObjectType.sol";
|
8
8
|
import {VersionPart} from "../type/Version.sol";
|
9
9
|
import {Timestamp} from "../type/Timestamp.sol";
|
10
|
+
import {RoleId} from "../type/RoleId.sol";
|
10
11
|
|
11
12
|
interface IRegistry is IERC165 {
|
12
13
|
|
@@ -14,20 +15,20 @@ interface IRegistry is IERC165 {
|
|
14
15
|
event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
|
15
16
|
|
16
17
|
// registerService()
|
17
|
-
error
|
18
|
-
error
|
18
|
+
error ErrorRegistryCallerNotReleaseManager();
|
19
|
+
error ErrorRegistryDomainZero(address service);
|
20
|
+
error ErrorRegistryDomainAlreadyRegistered(address service, VersionPart version, ObjectType domain);
|
19
21
|
|
20
22
|
// register()
|
21
|
-
error
|
22
|
-
error ServiceRegistration();
|
23
|
+
error ErrorRegistryCallerNotRegistryService();
|
23
24
|
|
24
25
|
// registerWithCustomTypes()
|
25
|
-
error
|
26
|
+
error ErrorRegistryCoreTypeRegistration();
|
26
27
|
|
27
28
|
// _register()
|
28
|
-
error
|
29
|
-
error
|
30
|
-
error
|
29
|
+
error ErrorRegistryParentAddressZero();
|
30
|
+
error ErrorRegistryTypesCombinationInvalid(ObjectType objectType, ObjectType parentType);
|
31
|
+
error ErrorRegistryContractAlreadyRegistered(address objectAddress);
|
31
32
|
|
32
33
|
struct ObjectInfo {
|
33
34
|
NftId nftId;
|
@@ -37,13 +38,17 @@ interface IRegistry is IERC165 {
|
|
37
38
|
address objectAddress;
|
38
39
|
address initialOwner;
|
39
40
|
bytes data;
|
40
|
-
}
|
41
|
-
|
41
|
+
}
|
42
|
+
|
42
43
|
|
43
44
|
struct ReleaseInfo {
|
45
|
+
VersionPart version;
|
46
|
+
address[] addresses;
|
47
|
+
RoleId[][] serviceRoles;
|
48
|
+
RoleId[][] functionRoles;
|
49
|
+
bytes4[][][] selectors;
|
44
50
|
ObjectType[] domains;
|
45
|
-
Timestamp
|
46
|
-
//Timestamp updatedAt;
|
51
|
+
Timestamp activatedAt;
|
47
52
|
}
|
48
53
|
|
49
54
|
function registerService(
|
@@ -95,6 +100,8 @@ interface IRegistry is IERC165 {
|
|
95
100
|
|
96
101
|
function getReleaseManagerAddress() external view returns (address);
|
97
102
|
|
103
|
+
function getReleaseAccessManagerAddress(VersionPart version) external view returns (address);
|
104
|
+
|
98
105
|
function getChainNftAddress() external view returns (address);
|
99
106
|
|
100
107
|
function getOwner() external view returns (address);
|
@@ -15,36 +15,28 @@ import {IComponent} from "../shared/IComponent.sol";
|
|
15
15
|
interface IRegistryService is
|
16
16
|
IService
|
17
17
|
{
|
18
|
-
error
|
19
|
-
|
20
|
-
|
21
|
-
error
|
22
|
-
error
|
23
|
-
error
|
24
|
-
error
|
25
|
-
|
26
|
-
|
27
|
-
error
|
28
|
-
error
|
29
|
-
error
|
30
|
-
error
|
31
|
-
error
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
function getFunctionConfigs()
|
41
|
-
external
|
42
|
-
pure
|
43
|
-
returns(
|
44
|
-
FunctionConfig[] memory config
|
45
|
-
);
|
46
|
-
|
47
|
-
// TODO used by service -> add owner arg
|
18
|
+
error ErrorRegistryServiceNotRegistryOwner();
|
19
|
+
|
20
|
+
error ErrorRegistryServiceNotService(address notService);
|
21
|
+
error ErrorRegistryServiceNotInstance(address notInstance);
|
22
|
+
error ErrorRegistryServiceNotProduct(address notProduct);
|
23
|
+
error ErrorRegistryServiceNotPool(address notPool);
|
24
|
+
error ErrorRegistryServiceNotDistribution(address notDistribution);
|
25
|
+
|
26
|
+
error ErrorRegistryServiceRegisterableAddressInvalid(IRegisterable registerable, address found);
|
27
|
+
error ErrorRegistryServiceRegisterableTypeInvalid(IRegisterable registerable, ObjectType expected, ObjectType found);
|
28
|
+
error ErrorRegistryServiceRegisterableOwnerInvalid(IRegisterable registerable, address expected, address found);
|
29
|
+
error ErrorRegistryServiceRegisterableOwnerZero(IRegisterable registerable);
|
30
|
+
error ErrorRegistryServiceRegisterableOwnerRegistered(IRegisterable registerable, address owner);
|
31
|
+
error ErrorRegistryServiceRegisterableSelfRegistration(IRegisterable registerable);
|
32
|
+
|
33
|
+
error ErrorRegistryServiceObjectTypeInvalid(ObjectType expected, ObjectType found);
|
34
|
+
error ErrorRegistryServiceObjectOwnerRegistered(ObjectType objectType, address owner);
|
35
|
+
error ErrorRegistryServiceObjectOwnerZero(ObjectType objectType);
|
36
|
+
|
37
|
+
error ErrorRegistryServiceInvalidInitialOwner(address initialOwner);
|
38
|
+
error ErrorRegistryServiceInvalidAddress(address registerableAddress);
|
39
|
+
|
48
40
|
function registerInstance(IRegisterable instance, address owner)
|
49
41
|
external returns(IRegistry.ObjectInfo memory info);
|
50
42
|
|
@@ -48,14 +48,14 @@ contract Registry is
|
|
48
48
|
|
49
49
|
modifier onlyRegistryService() {
|
50
50
|
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
51
|
-
revert
|
51
|
+
revert ErrorRegistryCallerNotRegistryService();
|
52
52
|
}
|
53
53
|
_;
|
54
54
|
}
|
55
55
|
|
56
56
|
modifier onlyReleaseManager() {
|
57
57
|
if(msg.sender != address(_releaseManager)) {
|
58
|
-
revert
|
58
|
+
revert ErrorRegistryCallerNotReleaseManager();
|
59
59
|
}
|
60
60
|
_;
|
61
61
|
}
|
@@ -84,7 +84,16 @@ contract Registry is
|
|
84
84
|
onlyReleaseManager
|
85
85
|
returns(NftId nftId)
|
86
86
|
{
|
87
|
+
address service = info.objectAddress;
|
87
88
|
/* must be guaranteed by release manager
|
89
|
+
if(service == address(0)) {
|
90
|
+
revert();
|
91
|
+
}
|
92
|
+
|
93
|
+
if(version.eqz()) {
|
94
|
+
revert();
|
95
|
+
}
|
96
|
+
|
88
97
|
if(info.objectType != SERVICE()) {
|
89
98
|
revert();
|
90
99
|
}
|
@@ -94,11 +103,15 @@ contract Registry is
|
|
94
103
|
info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
|
95
104
|
*/
|
96
105
|
|
97
|
-
if(
|
98
|
-
revert
|
106
|
+
if(domain.eqz()) {
|
107
|
+
revert ErrorRegistryDomainZero(service);
|
99
108
|
}
|
100
109
|
|
101
|
-
_service[version][domain]
|
110
|
+
if(_service[version][domain] > address(0)) {
|
111
|
+
revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
|
112
|
+
}
|
113
|
+
|
114
|
+
_service[version][domain] = service;
|
102
115
|
|
103
116
|
nftId = _register(info);
|
104
117
|
|
@@ -113,23 +126,17 @@ contract Registry is
|
|
113
126
|
ObjectType objectType = info.objectType;
|
114
127
|
ObjectType parentType = _info[info.parentNftId].objectType;
|
115
128
|
|
116
|
-
// TODO do not need it here -> SERVICE is no longer part of _coreContractCombinations
|
117
|
-
// no service registrations
|
118
|
-
if(objectType == SERVICE()) {
|
119
|
-
revert ServiceRegistration();
|
120
|
-
}
|
121
|
-
|
122
129
|
// only valid core types combinations
|
123
130
|
if(info.objectAddress == address(0))
|
124
131
|
{
|
125
132
|
if(_coreObjectCombinations[objectType][parentType] == false) {
|
126
|
-
revert
|
133
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
127
134
|
}
|
128
135
|
}
|
129
136
|
else
|
130
137
|
{
|
131
138
|
if(_coreContractCombinations[objectType][parentType] == false) {
|
132
|
-
revert
|
139
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
133
140
|
}
|
134
141
|
}
|
135
142
|
|
@@ -145,7 +152,7 @@ contract Registry is
|
|
145
152
|
ObjectType parentType = _info[info.parentNftId].objectType;
|
146
153
|
|
147
154
|
if(_coreTypes[objectType]) {
|
148
|
-
revert
|
155
|
+
revert ErrorRegistryCoreTypeRegistration();
|
149
156
|
}
|
150
157
|
|
151
158
|
if(
|
@@ -153,7 +160,7 @@ contract Registry is
|
|
153
160
|
parentType == REGISTRY() ||
|
154
161
|
parentType == SERVICE()
|
155
162
|
) {
|
156
|
-
revert
|
163
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
157
164
|
}
|
158
165
|
|
159
166
|
_register(info);
|
@@ -189,10 +196,6 @@ contract Registry is
|
|
189
196
|
return _chainNft.totalSupply();
|
190
197
|
}
|
191
198
|
|
192
|
-
function getReleaseManagerAddress() external view returns (address) {
|
193
|
-
return address(_releaseManager);
|
194
|
-
}
|
195
|
-
|
196
199
|
function getNftId() external view returns (NftId nftId) {
|
197
200
|
return _registryNftId;
|
198
201
|
}
|
@@ -244,10 +247,15 @@ contract Registry is
|
|
244
247
|
VersionPart releaseVersion
|
245
248
|
) external view returns (address service)
|
246
249
|
{
|
247
|
-
// TODO how can I get service address while release is not validated/activated ?!! -> user will check validity of release on its own
|
248
|
-
//if(_releaseManager.isValidRelease(releaseVersion)) {
|
249
250
|
service = _service[releaseVersion][serviceDomain];
|
250
|
-
|
251
|
+
}
|
252
|
+
|
253
|
+
function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
|
254
|
+
return address(_releaseManager.getReleaseAccessManager(version));
|
255
|
+
}
|
256
|
+
|
257
|
+
function getReleaseManagerAddress() external view returns (address) {
|
258
|
+
return address(_releaseManager);
|
251
259
|
}
|
252
260
|
|
253
261
|
function getChainNftAddress() external view override returns (address) {
|
@@ -287,7 +295,7 @@ contract Registry is
|
|
287
295
|
// special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
|
288
296
|
// special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
|
289
297
|
if(parentAddress == address(0)) {
|
290
|
-
revert
|
298
|
+
revert ErrorRegistryParentAddressZero();
|
291
299
|
}
|
292
300
|
|
293
301
|
address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
|
@@ -302,7 +310,7 @@ contract Registry is
|
|
302
310
|
address contractAddress = info.objectAddress;
|
303
311
|
|
304
312
|
if(_nftIdByAddress[contractAddress].gtz()) {
|
305
|
-
revert
|
313
|
+
revert ErrorRegistryContractAlreadyRegistered(contractAddress);
|
306
314
|
}
|
307
315
|
|
308
316
|
_nftIdByAddress[contractAddress] = nftId;
|
@@ -437,30 +445,26 @@ contract Registry is
|
|
437
445
|
_coreTypes[PRODUCT()] = true;
|
438
446
|
_coreTypes[POOL()] = true;
|
439
447
|
_coreTypes[DISTRIBUTION()] = true;
|
448
|
+
_coreTypes[DISTRIBUTOR()] = true;
|
449
|
+
_coreTypes[ORACLE()] = true;
|
440
450
|
_coreTypes[POLICY()] = true;
|
441
451
|
_coreTypes[BUNDLE()] = true;
|
442
452
|
_coreTypes[STAKE()] = true;
|
443
|
-
|
444
|
-
// registry as parent, ONLY registry owner
|
445
|
-
//_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
|
446
|
-
_coreContractCombinations[TOKEN()][REGISTRY()] = true;
|
447
|
-
//_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
|
448
453
|
|
449
|
-
// registry as parent, ONLY approved
|
450
454
|
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
451
|
-
|
452
|
-
// instance as parent, ONLY approved
|
453
455
|
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
454
456
|
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
455
457
|
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
456
458
|
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
457
459
|
|
458
|
-
|
460
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
461
|
+
if(registryId == _chainNft.GLOBAL_REGISTRY_ID())
|
462
|
+
{// we are global registry
|
463
|
+
_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
|
464
|
+
}
|
459
465
|
|
460
|
-
|
466
|
+
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
461
467
|
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
462
|
-
|
463
|
-
// pool as parent, ONLY approved
|
464
468
|
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
465
469
|
_coreObjectCombinations[STAKE()][POOL()] = true;
|
466
470
|
}
|