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