@etherisc/gif-next 0.0.2-7b86057-523 → 0.0.2-7bdebe2-893
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/README.md +8 -13
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +315 -98
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +668 -141
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +241 -60
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +438 -86
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +489 -163
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +250 -137
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +626 -189
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +427 -178
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1562 -814
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +227 -213
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1119 -785
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +463 -167
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +418 -230
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +439 -379
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +355 -104
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +197 -169
- 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/KeyValueStore.sol/KeyValueStore.json +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +58 -75
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- 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/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1092 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +672 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +527 -338
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +344 -93
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1400 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +760 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1282 -256
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +430 -87
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +619 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +279 -264
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +743 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +800 -159
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +159 -274
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +701 -118
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +71 -160
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +338 -412
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +299 -128
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1062 -198
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +384 -89
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +231 -223
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +298 -95
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +34 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +70 -193
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +47 -15
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +182 -232
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +287 -94
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +128 -37
- 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/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -29
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +71 -160
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +100 -33
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +283 -76
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +115 -58
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +172 -160
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +115 -58
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +190 -210
- 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/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
- 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/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- 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/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- 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/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/Component.sol +134 -78
- package/contracts/components/Distribution.sol +190 -57
- package/contracts/components/IComponent.sol +62 -15
- package/contracts/components/IDistributionComponent.sol +39 -15
- package/contracts/components/IPoolComponent.sol +84 -31
- package/contracts/components/IProductComponent.sol +3 -2
- package/contracts/components/Pool.sol +223 -148
- package/contracts/components/Product.sol +221 -115
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/instance/BundleManager.sol +10 -9
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +51 -19
- package/contracts/instance/IInstanceService.sol +33 -11
- package/contracts/instance/Instance.sol +143 -94
- package/contracts/instance/InstanceAccessManager.sol +389 -160
- package/contracts/instance/InstanceReader.sol +85 -12
- package/contracts/instance/InstanceService.sol +273 -224
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +28 -32
- package/contracts/instance/base/KeyValueStore.sol +13 -36
- package/contracts/instance/base/Lifecycle.sol +26 -6
- package/contracts/instance/module/IAccess.sol +22 -16
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +41 -9
- package/contracts/instance/module/ISetup.sol +7 -20
- package/contracts/instance/service/ApplicationService.sol +356 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +224 -132
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +444 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +344 -19
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +78 -0
- package/contracts/instance/service/IBundleService.sol +93 -22
- package/contracts/instance/service/IClaimService.sol +90 -0
- package/contracts/instance/service/IDistributionService.sol +87 -0
- package/contracts/instance/service/IPolicyService.sol +36 -50
- package/contracts/instance/service/IPoolService.sol +106 -3
- package/contracts/instance/service/PolicyService.sol +166 -346
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +312 -19
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductService.sol +35 -58
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +5 -2
- package/contracts/registry/IRegistryService.sol +12 -11
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +43 -28
- package/contracts/registry/RegistryService.sol +70 -50
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +32 -40
- package/contracts/registry/TokenRegistry.sol +16 -12
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +40 -0
- package/contracts/shared/IRegisterable.sol +3 -3
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +6 -4
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +64 -85
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -27
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +32 -20
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +80 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +75 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +13 -5
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +11 -6
- package/contracts/types/PayoutId.sol +82 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +16 -9
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +7 -2
- package/contracts/types/Timestamp.sol +18 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +3 -3
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
@@ -2,6 +2,7 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
|
+
import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
|
5
6
|
|
6
7
|
import {Instance} from "./Instance.sol";
|
7
8
|
import {IInstance} from "./IInstance.sol";
|
@@ -9,43 +10,48 @@ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
|
9
10
|
import {IInstanceService} from "./IInstanceService.sol";
|
10
11
|
import {InstanceReader} from "./InstanceReader.sol";
|
11
12
|
import {BundleManager} from "./BundleManager.sol";
|
13
|
+
import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
|
12
14
|
import {IRegistry} from "../registry/IRegistry.sol";
|
13
15
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
14
|
-
import {ChainNft} from "../registry/ChainNft.sol";
|
15
16
|
import {Service} from "../../contracts/shared/Service.sol";
|
16
|
-
import {IService} from "../shared/IService.sol";
|
17
17
|
import {NftId} from "../../contracts/types/NftId.sol";
|
18
18
|
import {RoleId} from "../types/RoleId.sol";
|
19
|
-
import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, POLICY_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
|
20
|
-
import {ObjectType, INSTANCE, BUNDLE, POLICY, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
|
21
|
-
import {IDistributionComponent} from "../components/IDistributionComponent.sol";
|
22
|
-
import {IPoolComponent} from "../components/IPoolComponent.sol";
|
23
|
-
import {IProductComponent} from "../components/IProductComponent.sol";
|
19
|
+
import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../types/RoleId.sol";
|
20
|
+
import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
|
24
21
|
|
25
|
-
contract InstanceService is
|
22
|
+
contract InstanceService is
|
23
|
+
Service,
|
24
|
+
IInstanceService
|
25
|
+
{
|
26
26
|
|
27
|
+
// TODO update to real hash when instance is stable
|
28
|
+
bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
|
29
|
+
|
30
|
+
IRegistryService internal _registryService;
|
31
|
+
address internal _masterOzAccessManager;
|
27
32
|
address internal _masterInstanceAccessManager;
|
28
33
|
address internal _masterInstance;
|
29
34
|
address internal _masterInstanceReader;
|
30
35
|
address internal _masterInstanceBundleManager;
|
31
36
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
modifier onlyInstanceOwner(NftId instanceNftId) {
|
36
|
-
IRegistry registry = getRegistry();
|
37
|
-
ChainNft chainNft = registry.getChainNft();
|
38
|
-
|
39
|
-
if( msg.sender != chainNft.ownerOf(instanceNftId.toInt())) {
|
40
|
-
revert ErrorInstanceServiceNotInstanceOwner(msg.sender, instanceNftId);
|
37
|
+
modifier onlyInstanceOwner(NftId instanceNftId) {
|
38
|
+
if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
|
39
|
+
revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
|
41
40
|
}
|
42
41
|
_;
|
43
42
|
}
|
44
|
-
|
43
|
+
// TODO check service domain?
|
44
|
+
// TODO check release version?
|
45
45
|
modifier onlyRegisteredService() {
|
46
|
-
|
47
|
-
|
48
|
-
|
46
|
+
if (! getRegistry().isRegisteredService(msg.sender)) {
|
47
|
+
revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
|
48
|
+
}
|
49
|
+
_;
|
50
|
+
}
|
51
|
+
// TODO check release version?
|
52
|
+
modifier onlyComponent() {
|
53
|
+
if (! getRegistry().isRegisteredComponent(msg.sender)) {
|
54
|
+
revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
|
49
55
|
}
|
50
56
|
_;
|
51
57
|
}
|
@@ -53,92 +59,117 @@ contract InstanceService is Service, IInstanceService {
|
|
53
59
|
function createInstanceClone()
|
54
60
|
external
|
55
61
|
returns (
|
56
|
-
InstanceAccessManager clonedAccessManager,
|
57
62
|
Instance clonedInstance,
|
58
|
-
NftId clonedInstanceNftId
|
59
|
-
InstanceReader clonedInstanceReader,
|
60
|
-
BundleManager clonedBundleManager
|
63
|
+
NftId clonedInstanceNftId
|
61
64
|
)
|
62
65
|
{
|
63
66
|
address instanceOwner = msg.sender;
|
64
|
-
|
65
|
-
|
66
|
-
NftId registryNftId = registry.getNftId(registryAddress);
|
67
|
-
address registryServiceAddress = registry.getServiceAddress(REGISTRY(), getMajorVersion());
|
68
|
-
IRegistryService registryService = IRegistryService(registryServiceAddress);
|
67
|
+
AccessManagerUpgradeableInitializeable clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
|
68
|
+
Clones.clone(_masterOzAccessManager));
|
69
69
|
|
70
|
-
// initially
|
71
|
-
// This will allow the instance service to bootstrap the authorizations of the instance
|
72
|
-
//
|
73
|
-
|
74
|
-
|
70
|
+
// initially grants ADMIN_ROLE to this (being the instance service).
|
71
|
+
// This will allow the instance service to bootstrap the authorizations of the instance.
|
72
|
+
// Instance service will not use oz access manager directlly but through instance access manager instead
|
73
|
+
// Instance service will renounce ADMIN_ROLE when bootstraping is finished
|
74
|
+
clonedOzAccessManager.initialize(address(this));
|
75
75
|
|
76
76
|
clonedInstance = Instance(Clones.clone(_masterInstance));
|
77
|
-
clonedInstance.initialize(
|
77
|
+
clonedInstance.initialize(
|
78
|
+
address(clonedOzAccessManager),
|
79
|
+
address(getRegistry()),
|
80
|
+
instanceOwner);
|
78
81
|
|
79
|
-
clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
80
|
-
clonedInstanceReader.initialize(
|
82
|
+
InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
83
|
+
clonedInstanceReader.initialize(address(clonedInstance));
|
81
84
|
clonedInstance.setInstanceReader(clonedInstanceReader);
|
82
85
|
|
83
|
-
clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
|
84
|
-
clonedBundleManager.initialize(address(
|
86
|
+
BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
|
87
|
+
clonedBundleManager.initialize(address(clonedInstance));
|
85
88
|
clonedInstance.setBundleManager(clonedBundleManager);
|
86
89
|
|
90
|
+
InstanceAccessManager clonedInstanceAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
|
91
|
+
clonedOzAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAccessManager), 0);
|
92
|
+
clonedInstanceAccessManager.initialize(address(clonedInstance));
|
93
|
+
clonedInstance.setInstanceAccessManager(clonedInstanceAccessManager);
|
94
|
+
|
87
95
|
// TODO amend setters with instance specific , policy manager ...
|
88
96
|
|
89
|
-
_grantInitialAuthorizations(
|
97
|
+
_grantInitialAuthorizations(clonedInstanceAccessManager, clonedInstance, clonedBundleManager, instanceOwner);
|
90
98
|
|
91
|
-
|
92
|
-
// TODO: use a role less powerful than admin, maybe INSTANCE_ADMIN (does not exist yet)
|
93
|
-
clonedAccessManager.grantRole(ADMIN_ROLE(), instanceOwner);
|
94
|
-
clonedAccessManager.revokeRole(ADMIN_ROLE(), address(this));
|
99
|
+
clonedOzAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
|
95
100
|
|
96
|
-
IRegistry.ObjectInfo memory info =
|
101
|
+
IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
|
97
102
|
clonedInstanceNftId = info.nftId;
|
98
|
-
// clonedInstance.linkToRegisteredNftId();
|
99
103
|
|
100
|
-
emit LogInstanceCloned(
|
104
|
+
emit LogInstanceCloned(
|
105
|
+
address(clonedOzAccessManager),
|
106
|
+
address(clonedInstanceAccessManager),
|
107
|
+
address(clonedInstance),
|
108
|
+
address(clonedBundleManager),
|
109
|
+
address(clonedInstanceReader),
|
110
|
+
clonedInstanceNftId);
|
101
111
|
}
|
102
112
|
|
103
|
-
function _grantInitialAuthorizations(
|
104
|
-
|
105
|
-
|
113
|
+
function _grantInitialAuthorizations(
|
114
|
+
InstanceAccessManager clonedAccessManager,
|
115
|
+
Instance clonedInstance,
|
116
|
+
BundleManager clonedBundleManager,
|
117
|
+
address instanceOwner)
|
118
|
+
internal
|
119
|
+
{
|
120
|
+
_createCoreAndGifRoles(clonedAccessManager);
|
121
|
+
_createCoreTargets(clonedAccessManager, clonedInstance, clonedBundleManager);
|
106
122
|
_grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
|
107
123
|
_grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
|
108
124
|
_grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
|
125
|
+
_grantApplicationServiceAuthorizations(clonedAccessManager, clonedInstance);
|
109
126
|
_grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
|
127
|
+
_grantClaimServiceAuthorizations(clonedAccessManager, clonedInstance);
|
110
128
|
_grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
|
111
129
|
_grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
|
130
|
+
_grantInstanceOwnerAuthorizations(clonedAccessManager, instanceOwner);
|
112
131
|
}
|
113
132
|
|
114
|
-
function
|
115
|
-
|
116
|
-
|
117
|
-
clonedAccessManager.
|
118
|
-
|
119
|
-
clonedAccessManager.
|
120
|
-
clonedAccessManager.
|
121
|
-
clonedAccessManager.
|
122
|
-
clonedAccessManager.
|
123
|
-
clonedAccessManager.
|
124
|
-
clonedAccessManager.
|
133
|
+
function _createCoreAndGifRoles(InstanceAccessManager clonedAccessManager) internal {
|
134
|
+
// default roles controlled by ADMIN_ROLE -> core roles
|
135
|
+
// all set/granted only once during cloning (the only exception is INSTANCE_OWNER_ROLE, hooked to instance nft)
|
136
|
+
clonedAccessManager.createCoreRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
|
137
|
+
clonedAccessManager.createCoreRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
|
138
|
+
clonedAccessManager.createCoreRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
|
139
|
+
clonedAccessManager.createCoreRole(APPLICATION_SERVICE_ROLE(), "ApplicationServiceRole");
|
140
|
+
clonedAccessManager.createCoreRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
|
141
|
+
clonedAccessManager.createCoreRole(CLAIM_SERVICE_ROLE(), "ClaimServiceRole");
|
142
|
+
clonedAccessManager.createCoreRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
|
143
|
+
clonedAccessManager.createCoreRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
|
144
|
+
// default roles controlled by INSTANCE_OWNER_ROLE -> gif roles
|
145
|
+
clonedAccessManager.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole", INSTANCE_OWNER_ROLE());
|
146
|
+
clonedAccessManager.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole", INSTANCE_OWNER_ROLE());
|
147
|
+
clonedAccessManager.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole", INSTANCE_OWNER_ROLE());
|
125
148
|
}
|
126
149
|
|
127
|
-
function
|
128
|
-
clonedAccessManager.
|
129
|
-
clonedAccessManager.
|
130
|
-
clonedAccessManager.
|
150
|
+
function _createCoreTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
151
|
+
clonedAccessManager.createCoreTarget(address(clonedAccessManager), "InstanceAccessManager");
|
152
|
+
clonedAccessManager.createCoreTarget(address(clonedInstance), "Instance");
|
153
|
+
clonedAccessManager.createCoreTarget(address(clonedBundleManager), "BundleManager");
|
131
154
|
}
|
132
155
|
|
133
156
|
function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
134
157
|
// configure authorization for distribution service on instance
|
135
|
-
|
136
|
-
address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), getMajorVersion());
|
158
|
+
address distributionServiceAddress = getRegistry().getServiceAddress(DISTRIBUTION(), getVersion().toMajorPart());
|
137
159
|
clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
|
138
|
-
bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](
|
160
|
+
bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
|
139
161
|
instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
|
140
162
|
instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
|
141
|
-
|
163
|
+
instanceDistributionServiceSelectors[2] = clonedInstance.createDistributorType.selector;
|
164
|
+
instanceDistributionServiceSelectors[3] = clonedInstance.updateDistributorType.selector;
|
165
|
+
instanceDistributionServiceSelectors[4] = clonedInstance.updateDistributorTypeState.selector;
|
166
|
+
instanceDistributionServiceSelectors[5] = clonedInstance.createDistributor.selector;
|
167
|
+
instanceDistributionServiceSelectors[6] = clonedInstance.updateDistributor.selector;
|
168
|
+
instanceDistributionServiceSelectors[7] = clonedInstance.updateDistributorState.selector;
|
169
|
+
instanceDistributionServiceSelectors[8] = clonedInstance.createReferral.selector;
|
170
|
+
instanceDistributionServiceSelectors[9] = clonedInstance.updateReferral.selector;
|
171
|
+
instanceDistributionServiceSelectors[10] = clonedInstance.updateReferralState.selector;
|
172
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
142
173
|
"Instance",
|
143
174
|
instanceDistributionServiceSelectors,
|
144
175
|
DISTRIBUTION_SERVICE_ROLE());
|
@@ -146,12 +177,12 @@ contract InstanceService is Service, IInstanceService {
|
|
146
177
|
|
147
178
|
function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
148
179
|
// configure authorization for pool service on instance
|
149
|
-
address poolServiceAddress =
|
180
|
+
address poolServiceAddress = getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart());
|
150
181
|
clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
|
151
182
|
bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
|
152
183
|
instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
|
153
184
|
instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
|
154
|
-
clonedAccessManager.
|
185
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
155
186
|
"Instance",
|
156
187
|
instancePoolServiceSelectors,
|
157
188
|
POOL_SERVICE_ROLE());
|
@@ -159,7 +190,7 @@ contract InstanceService is Service, IInstanceService {
|
|
159
190
|
|
160
191
|
function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
161
192
|
// configure authorization for product service on instance
|
162
|
-
address productServiceAddress =
|
193
|
+
address productServiceAddress = getRegistry().getServiceAddress(PRODUCT(), getVersion().toMajorPart());
|
163
194
|
clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
|
164
195
|
bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
|
165
196
|
instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
|
@@ -167,34 +198,71 @@ contract InstanceService is Service, IInstanceService {
|
|
167
198
|
instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
|
168
199
|
instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
|
169
200
|
instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
|
170
|
-
clonedAccessManager.
|
201
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
171
202
|
"Instance",
|
172
203
|
instanceProductServiceSelectors,
|
173
204
|
PRODUCT_SERVICE_ROLE());
|
174
205
|
}
|
175
206
|
|
207
|
+
function _grantApplicationServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
208
|
+
// configure authorization for application services on instance
|
209
|
+
address applicationServiceAddress = getRegistry().getServiceAddress(APPLICATION(), getVersion().toMajorPart());
|
210
|
+
clonedAccessManager.grantRole(APPLICATION_SERVICE_ROLE(), applicationServiceAddress);
|
211
|
+
bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
|
212
|
+
instanceApplicationServiceSelectors[0] = clonedInstance.createApplication.selector;
|
213
|
+
instanceApplicationServiceSelectors[1] = clonedInstance.updateApplication.selector;
|
214
|
+
instanceApplicationServiceSelectors[2] = clonedInstance.updateApplicationState.selector;
|
215
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
216
|
+
"Instance",
|
217
|
+
instanceApplicationServiceSelectors,
|
218
|
+
APPLICATION_SERVICE_ROLE());
|
219
|
+
}
|
220
|
+
|
176
221
|
function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
177
|
-
// configure authorization for policy
|
178
|
-
address policyServiceAddress =
|
179
|
-
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(),
|
180
|
-
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](
|
181
|
-
instancePolicyServiceSelectors[0] = clonedInstance.
|
182
|
-
instancePolicyServiceSelectors[1] = clonedInstance.
|
183
|
-
|
184
|
-
clonedAccessManager.setTargetFunctionRole(
|
222
|
+
// configure authorization for policy services on instance
|
223
|
+
address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart());
|
224
|
+
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), policyServiceAddress);
|
225
|
+
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
|
226
|
+
instancePolicyServiceSelectors[0] = clonedInstance.updatePolicy.selector;
|
227
|
+
instancePolicyServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
|
228
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
185
229
|
"Instance",
|
186
230
|
instancePolicyServiceSelectors,
|
187
231
|
POLICY_SERVICE_ROLE());
|
188
232
|
}
|
189
233
|
|
234
|
+
function _grantClaimServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
235
|
+
// configure authorization for claim/payout services on instance
|
236
|
+
address claimServiceAddress = getRegistry().getServiceAddress(CLAIM(), getVersion().toMajorPart());
|
237
|
+
clonedAccessManager.grantRole(CLAIM_SERVICE_ROLE(), claimServiceAddress);
|
238
|
+
|
239
|
+
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](1);
|
240
|
+
instancePolicyServiceSelectors[0] = clonedInstance.updatePolicyClaims.selector;
|
241
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
242
|
+
"Instance",
|
243
|
+
instancePolicyServiceSelectors,
|
244
|
+
CLAIM_SERVICE_ROLE());
|
245
|
+
|
246
|
+
bytes4[] memory instanceClaimServiceSelectors = new bytes4[](4);
|
247
|
+
instanceClaimServiceSelectors[0] = clonedInstance.createClaim.selector;
|
248
|
+
instanceClaimServiceSelectors[1] = clonedInstance.updateClaim.selector;
|
249
|
+
instanceClaimServiceSelectors[2] = clonedInstance.createPayout.selector;
|
250
|
+
instanceClaimServiceSelectors[3] = clonedInstance.updatePayout.selector;
|
251
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
252
|
+
"Instance",
|
253
|
+
instanceClaimServiceSelectors,
|
254
|
+
CLAIM_SERVICE_ROLE());
|
255
|
+
}
|
256
|
+
|
190
257
|
function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
191
258
|
// configure authorization for bundle service on instance
|
192
|
-
address bundleServiceAddress =
|
259
|
+
address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getVersion().toMajorPart());
|
193
260
|
clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
|
194
|
-
bytes4[] memory instanceBundleServiceSelectors = new bytes4[](
|
261
|
+
bytes4[] memory instanceBundleServiceSelectors = new bytes4[](3);
|
195
262
|
instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
|
196
263
|
instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
|
197
|
-
|
264
|
+
instanceBundleServiceSelectors[2] = clonedInstance.updateBundleState.selector;
|
265
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
198
266
|
"Instance",
|
199
267
|
instanceBundleServiceSelectors,
|
200
268
|
BUNDLE_SERVICE_ROLE());
|
@@ -206,117 +274,165 @@ contract InstanceService is Service, IInstanceService {
|
|
206
274
|
bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
|
207
275
|
bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
|
208
276
|
bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
|
209
|
-
clonedAccessManager.
|
277
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
210
278
|
"BundleManager",
|
211
279
|
bundleManagerBundleServiceSelectors,
|
212
280
|
BUNDLE_SERVICE_ROLE());
|
213
281
|
}
|
214
282
|
|
215
283
|
function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
216
|
-
// configure authorization for instance service on instance
|
217
|
-
address instanceServiceAddress =
|
284
|
+
// configure authorization for instance service on instance
|
285
|
+
address instanceServiceAddress = getRegistry().getServiceAddress(INSTANCE(), getVersion().toMajorPart());
|
218
286
|
clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
|
219
287
|
bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
|
220
288
|
instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
|
221
|
-
clonedAccessManager.
|
289
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
222
290
|
"Instance",
|
223
291
|
instanceInstanceServiceSelectors,
|
224
292
|
INSTANCE_SERVICE_ROLE());
|
225
293
|
|
226
|
-
|
227
|
-
|
228
|
-
clonedAccessManager.
|
294
|
+
// configure authorizations for instance service on instance access manager
|
295
|
+
bytes4[] memory accessManagerInstanceServiceSelectors = new bytes4[](3);
|
296
|
+
accessManagerInstanceServiceSelectors[0] = clonedAccessManager.createGifTarget.selector;
|
297
|
+
accessManagerInstanceServiceSelectors[1] = clonedAccessManager.setTargetLocked.selector;
|
298
|
+
accessManagerInstanceServiceSelectors[2] = clonedAccessManager.setCoreTargetFunctionRole.selector;
|
299
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
229
300
|
"InstanceAccessManager",
|
230
|
-
|
301
|
+
accessManagerInstanceServiceSelectors,
|
231
302
|
INSTANCE_SERVICE_ROLE());
|
232
303
|
}
|
233
304
|
|
305
|
+
function _grantInstanceOwnerAuthorizations(InstanceAccessManager clonedAccessManager, address instanceOwner) internal {
|
306
|
+
// configure authorization for instance owner on instance access manager
|
307
|
+
// instance owner role is granted/revoked ONLY by INSTANCE_ROLE
|
308
|
+
bytes4[] memory accessManagerInstanceOwnerSelectors = new bytes4[](3);
|
309
|
+
accessManagerInstanceOwnerSelectors[0] = clonedAccessManager.createRole.selector;
|
310
|
+
accessManagerInstanceOwnerSelectors[1] = clonedAccessManager.createTarget.selector;
|
311
|
+
accessManagerInstanceOwnerSelectors[2] = clonedAccessManager.setTargetFunctionRole.selector;
|
312
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
313
|
+
"InstanceAccessManager",
|
314
|
+
accessManagerInstanceOwnerSelectors,
|
315
|
+
INSTANCE_OWNER_ROLE());
|
316
|
+
}
|
317
|
+
|
318
|
+
|
234
319
|
function setAndRegisterMasterInstance(address instanceAddress)
|
235
320
|
external
|
236
321
|
onlyOwner
|
237
322
|
returns(NftId masterInstanceNftId)
|
238
323
|
{
|
239
|
-
|
240
|
-
|
241
|
-
|
324
|
+
if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
|
325
|
+
if(_masterOzAccessManager != address(0)) { revert ErrorInstanceServiceMasterOzAccessManagerAlreadySet(); }
|
326
|
+
if(_masterInstanceAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
|
327
|
+
if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
|
242
328
|
|
243
|
-
|
329
|
+
if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
|
244
330
|
|
245
331
|
IInstance instance = IInstance(instanceAddress);
|
246
|
-
InstanceAccessManager
|
247
|
-
address
|
332
|
+
InstanceAccessManager instanceAccessManager = instance.getInstanceAccessManager();
|
333
|
+
address instanceAccessManagerAddress = address(instanceAccessManager);
|
248
334
|
InstanceReader instanceReader = instance.getInstanceReader();
|
249
335
|
address instanceReaderAddress = address(instanceReader);
|
250
336
|
BundleManager bundleManager = instance.getBundleManager();
|
251
337
|
address bundleManagerAddress = address(bundleManager);
|
252
338
|
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
339
|
+
if(instanceAccessManagerAddress == address(0)) { revert ErrorInstanceServiceInstanceAccessManagerZero(); }
|
340
|
+
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
|
341
|
+
if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
|
257
342
|
|
258
|
-
|
259
|
-
|
260
|
-
|
343
|
+
if(instance.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
|
344
|
+
if(bundleManager.authority() != instance.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
|
345
|
+
if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
|
346
|
+
if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
|
261
347
|
|
262
|
-
|
348
|
+
_masterOzAccessManager = instance.authority();
|
349
|
+
_masterInstanceAccessManager = instanceAccessManagerAddress;
|
263
350
|
_masterInstance = instanceAddress;
|
264
351
|
_masterInstanceReader = instanceReaderAddress;
|
265
352
|
_masterInstanceBundleManager = bundleManagerAddress;
|
266
353
|
|
267
|
-
IRegistryService registryService = IRegistryService(getRegistry().getServiceAddress(REGISTRY(), getMajorVersion()));
|
268
354
|
IInstance masterInstance = IInstance(_masterInstance);
|
269
|
-
IRegistry.ObjectInfo memory info =
|
355
|
+
IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
|
270
356
|
masterInstanceNftId = info.nftId;
|
271
|
-
|
272
|
-
// masterInstance.linkToRegisteredNftId();
|
273
357
|
}
|
274
358
|
|
275
359
|
function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
|
276
|
-
|
277
|
-
|
278
|
-
|
360
|
+
if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
|
361
|
+
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
|
362
|
+
if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
|
279
363
|
|
280
364
|
InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
|
281
|
-
|
365
|
+
if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
|
282
366
|
|
283
367
|
_masterInstanceReader = instanceReaderAddress;
|
284
368
|
}
|
285
369
|
|
286
|
-
|
287
|
-
|
370
|
+
function upgradeInstanceReader(NftId instanceNftId)
|
371
|
+
external
|
372
|
+
onlyInstanceOwner(instanceNftId)
|
373
|
+
{
|
288
374
|
IRegistry registry = getRegistry();
|
289
375
|
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
290
376
|
Instance instance = Instance(instanceInfo.objectAddress);
|
291
|
-
address owner = instance.getOwner();
|
292
|
-
|
293
|
-
if (msg.sender != owner) {
|
294
|
-
revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
|
295
|
-
}
|
296
377
|
|
297
378
|
InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
298
|
-
upgradedInstanceReaderClone.initialize(address(
|
379
|
+
upgradedInstanceReaderClone.initialize(address(instance));
|
299
380
|
instance.setInstanceReader(upgradedInstanceReaderClone);
|
300
381
|
}
|
301
382
|
|
302
|
-
function getMasterInstanceReader() external view returns (address) {
|
303
|
-
return _masterInstanceReader;
|
304
|
-
}
|
305
383
|
|
306
|
-
|
307
|
-
|
384
|
+
// all gif targets MUST be childs of instanceNftId
|
385
|
+
function createGifTarget(
|
386
|
+
NftId instanceNftId,
|
387
|
+
address targetAddress,
|
388
|
+
string memory targetName,
|
389
|
+
bytes4[][] memory selectors,
|
390
|
+
RoleId[] memory roles
|
391
|
+
)
|
392
|
+
external
|
393
|
+
onlyRegisteredService
|
394
|
+
{
|
395
|
+
(
|
396
|
+
IInstance instance, // or instanceInfo
|
397
|
+
// or targetInfo
|
398
|
+
) = _validateInstanceAndComponent(instanceNftId, targetAddress);
|
399
|
+
|
400
|
+
InstanceAccessManager accessManager = instance.getInstanceAccessManager();
|
401
|
+
accessManager.createGifTarget(targetAddress, targetName);
|
402
|
+
// set proposed target config
|
403
|
+
// TODO restriction: for gif targets can set only once and only here?
|
404
|
+
// assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
|
405
|
+
for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++)
|
406
|
+
{
|
407
|
+
accessManager.setCoreTargetFunctionRole(targetName, selectors[roleIdx], roles[roleIdx]);
|
408
|
+
}
|
308
409
|
}
|
309
410
|
|
310
|
-
|
311
|
-
|
411
|
+
|
412
|
+
// TODO called by component, but target can be component helper...so needs target name
|
413
|
+
// TODO check that targetName associated with component...how???
|
414
|
+
function setComponentLocked(bool locked) onlyComponent external {
|
415
|
+
|
416
|
+
address componentAddress = msg.sender;
|
417
|
+
IRegistry registry = getRegistry();
|
418
|
+
NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
|
419
|
+
|
420
|
+
IInstance instance = IInstance(
|
421
|
+
registry.getObjectInfo(
|
422
|
+
instanceNftId).objectAddress);
|
423
|
+
|
424
|
+
instance.getInstanceAccessManager().setTargetLocked(
|
425
|
+
componentAddress,
|
426
|
+
locked);
|
312
427
|
}
|
313
428
|
|
314
|
-
|
315
|
-
|
429
|
+
|
430
|
+
function getMasterInstanceReader() external view returns (address) {
|
431
|
+
return _masterInstanceReader;
|
316
432
|
}
|
317
433
|
|
318
434
|
// From IService
|
319
|
-
function getDomain() public pure override
|
435
|
+
function getDomain() public pure override returns(ObjectType) {
|
320
436
|
return INSTANCE();
|
321
437
|
}
|
322
438
|
|
@@ -329,107 +445,40 @@ contract InstanceService is Service, IInstanceService {
|
|
329
445
|
initializer
|
330
446
|
virtual override
|
331
447
|
{
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
// owner is InstanceServiceManager deployer
|
337
|
-
_initializeService(registryAddress, owner);
|
338
|
-
|
339
|
-
_registerInterface(type(IInstanceService).interfaceId);
|
340
|
-
}
|
448
|
+
(
|
449
|
+
address registryAddress,
|
450
|
+
address initialOwner
|
451
|
+
) = abi.decode(data, (address, address));
|
341
452
|
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
}
|
453
|
+
_registryService = IRegistryService(
|
454
|
+
IRegistry(registryAddress).getServiceAddress(
|
455
|
+
REGISTRY(),
|
456
|
+
getVersion().toMajorPart()));
|
347
457
|
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
353
|
-
accessManager.createGifTarget(targetAddress, targetName);
|
458
|
+
// TODO while InstanceService is not deployed in InstanceServiceManager constructor
|
459
|
+
// owner is InstanceServiceManager deployer
|
460
|
+
initializeService(registryAddress, address(0), owner);
|
461
|
+
registerInterface(type(IInstanceService).interfaceId);
|
354
462
|
}
|
355
463
|
|
356
|
-
function grantDistributionDefaultPermissions(NftId instanceNftId, address distributionAddress, string memory distributionName) external onlyRegisteredService {
|
357
|
-
IRegistry registry = getRegistry();
|
358
|
-
IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionAddress);
|
359
|
-
|
360
|
-
if (distributionInfo.objectType != DISTRIBUTION()) {
|
361
|
-
revert ErrorInstanceServiceInvalidComponentType(distributionAddress, DISTRIBUTION(), distributionInfo.objectType);
|
362
|
-
}
|
363
|
-
|
364
|
-
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
365
|
-
Instance instance = Instance(instanceInfo.objectAddress);
|
366
|
-
InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
|
367
|
-
|
368
|
-
bytes4[] memory fctSelectors = new bytes4[](1);
|
369
|
-
fctSelectors[0] = IDistributionComponent.setFees.selector;
|
370
|
-
instanceAccessManager.setTargetFunctionRole(distributionName, fctSelectors, DISTRIBUTION_OWNER_ROLE());
|
371
|
-
|
372
|
-
bytes4[] memory fctSelectors2 = new bytes4[](2);
|
373
|
-
fctSelectors2[0] = IDistributionComponent.processSale.selector;
|
374
|
-
fctSelectors2[1] = IDistributionComponent.processRenewal.selector;
|
375
|
-
instanceAccessManager.setTargetFunctionRole(distributionName, fctSelectors2, PRODUCT_SERVICE_ROLE());
|
376
|
-
}
|
377
464
|
|
378
|
-
function
|
465
|
+
function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
|
466
|
+
internal
|
467
|
+
view
|
468
|
+
returns (IInstance instance, NftId componentNftId)
|
469
|
+
{
|
379
470
|
IRegistry registry = getRegistry();
|
380
|
-
IRegistry.ObjectInfo memory poolInfo = registry.getObjectInfo(poolAddress);
|
381
|
-
|
382
|
-
if (poolInfo.objectType != POOL()) {
|
383
|
-
revert ErrorInstanceServiceInvalidComponentType(poolAddress, POOL(), poolInfo.objectType);
|
384
|
-
}
|
385
|
-
|
386
471
|
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
bytes4[] memory fctSelectors = new bytes4[](1);
|
391
|
-
fctSelectors[0] = IPoolComponent.setFees.selector;
|
392
|
-
instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors, POOL_OWNER_ROLE());
|
393
|
-
|
394
|
-
bytes4[] memory fctSelectors2 = new bytes4[](1);
|
395
|
-
fctSelectors2[0] = IPoolComponent.underwrite.selector;
|
396
|
-
instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors2, POLICY_SERVICE_ROLE());
|
397
|
-
}
|
398
|
-
|
399
|
-
function grantProductDefaultPermissions(NftId instanceNftId, address productAddress, string memory productName) external onlyRegisteredService {
|
400
|
-
IRegistry registry = getRegistry();
|
401
|
-
IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productAddress);
|
402
|
-
|
403
|
-
if (productInfo.objectType != PRODUCT()) {
|
404
|
-
revert ErrorInstanceServiceInvalidComponentType(productAddress, PRODUCT(), productInfo.objectType);
|
472
|
+
if(instanceInfo.objectType != INSTANCE()) {
|
473
|
+
revert ErrorInstanceServiceNotInstance(instanceNftId);
|
405
474
|
}
|
406
475
|
|
407
|
-
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
408
|
-
Instance instance = Instance(instanceInfo.objectAddress);
|
409
|
-
InstanceAccessManager instanceAccessManager = InstanceAccessManager(instance.authority());
|
410
|
-
|
411
|
-
bytes4[] memory fctSelectors = new bytes4[](1);
|
412
|
-
fctSelectors[0] = IProductComponent.setFees.selector;
|
413
|
-
instanceAccessManager.setTargetFunctionRole(productName, fctSelectors, PRODUCT_OWNER_ROLE());
|
414
|
-
}
|
415
|
-
|
416
|
-
function setTargetLocked(string memory targetName, bool locked) external {
|
417
|
-
address componentAddress = msg.sender;
|
418
|
-
IRegistry registry = getRegistry();
|
419
476
|
IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
|
420
|
-
if
|
421
|
-
revert
|
477
|
+
if(componentInfo.parentNftId != instanceNftId) {
|
478
|
+
revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
|
422
479
|
}
|
423
480
|
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
address instanceAddress = registry.getObjectInfo(componentInfo.parentNftId).objectAddress;
|
428
|
-
IInstance instance = IInstance(instanceAddress);
|
429
|
-
|
430
|
-
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
431
|
-
accessManager.setTargetClosed(targetName, locked);
|
481
|
+
instance = Instance(instanceInfo.objectAddress);
|
482
|
+
componentNftId = componentInfo.nftId;
|
432
483
|
}
|
433
|
-
|
434
|
-
}
|
435
|
-
|
484
|
+
}
|