@etherisc/gif-next 0.0.2-f4f92b3-338 → 0.0.2-f509abc-684
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 +73 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +270 -94
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +627 -157
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +122 -72
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +323 -102
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +325 -186
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +126 -144
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +552 -212
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +374 -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 +801 -434
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +194 -192
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +992 -782
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +441 -164
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +119 -221
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +371 -302
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +330 -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 +118 -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 +61 -78
- 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 +968 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +306 -315
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +305 -93
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1212 -252
- 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 +556 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +155 -240
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +711 -139
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +60 -286
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +81 -147
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +22 -169
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +185 -391
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +311 -127
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +222 -204
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +310 -90
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +142 -221
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +302 -90
- 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 +83 -174
- 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 +193 -216
- 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 +11 -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 +22 -169
- 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 +113 -164
- 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 +134 -221
- 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/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 +2 -2
- 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 +112 -83
- package/contracts/components/Distribution.sol +189 -53
- package/contracts/components/IComponent.sol +48 -17
- package/contracts/components/IDistributionComponent.sol +39 -15
- package/contracts/components/IPoolComponent.sol +84 -41
- package/contracts/components/IProductComponent.sol +3 -2
- package/contracts/components/Pool.sol +211 -153
- package/contracts/components/Product.sol +96 -61
- 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 +36 -4
- package/contracts/instance/Instance.sol +101 -43
- package/contracts/instance/InstanceAccessManager.sol +383 -159
- package/contracts/instance/InstanceReader.sol +7 -10
- package/contracts/instance/InstanceService.sol +262 -129
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +6 -6
- package/contracts/instance/base/KeyValueStore.sol +5 -2
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IAccess.sol +22 -16
- package/contracts/instance/module/IBundle.sol +2 -1
- package/contracts/instance/module/IComponents.sol +35 -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 +82 -39
- 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 +376 -15
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +30 -12
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +86 -0
- package/contracts/instance/service/IPolicyService.sol +27 -49
- package/contracts/instance/service/IPoolService.sol +17 -2
- package/contracts/instance/service/PolicyService.sol +148 -283
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +130 -19
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductService.sol +20 -11
- 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 +10 -8
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +43 -28
- package/contracts/registry/RegistryService.sol +69 -48
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +18 -28
- 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 +2 -0
- 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 +15 -17
- 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/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +1 -0
- 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
@@ -17,6 +17,7 @@ import {StateId} from "../types/StateId.sol";
|
|
17
17
|
|
18
18
|
import {IRegistry} from "../registry/IRegistry.sol";
|
19
19
|
import {IBundle} from "../instance/module/IBundle.sol";
|
20
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
20
21
|
import {IDistribution} from "../instance/module/IDistribution.sol";
|
21
22
|
import {IInstance} from "./IInstance.sol";
|
22
23
|
import {IKeyValueStore} from "../instance/base/IKeyValueStore.sol";
|
@@ -30,19 +31,15 @@ import {TimestampLib} from "../types/Timestamp.sol";
|
|
30
31
|
contract InstanceReader {
|
31
32
|
bool private _initialized;
|
32
33
|
|
33
|
-
IRegistry internal _registry;
|
34
34
|
IInstance internal _instance;
|
35
35
|
IKeyValueStore internal _store;
|
36
36
|
|
37
|
-
function initialize(address
|
37
|
+
function initialize(address instance) public {
|
38
38
|
require(!_initialized, "ERROR:CRD-000:ALREADY_INITIALIZED");
|
39
39
|
|
40
40
|
require(
|
41
|
-
address(
|
42
|
-
"ERROR:CRD-001:
|
43
|
-
|
44
|
-
|
45
|
-
_registry = IRegistry(registry);
|
41
|
+
address(instance) != address(0),
|
42
|
+
"ERROR:CRD-001:INSTANCE_ZERO");
|
46
43
|
|
47
44
|
_instance = IInstance(instance);
|
48
45
|
_store = IKeyValueStore(instance);
|
@@ -151,14 +148,14 @@ contract InstanceReader {
|
|
151
148
|
}
|
152
149
|
}
|
153
150
|
|
154
|
-
function
|
151
|
+
function getComponentInfo(NftId poolNftId)
|
155
152
|
public
|
156
153
|
view
|
157
|
-
returns (
|
154
|
+
returns (IComponents.ComponentInfo memory info)
|
158
155
|
{
|
159
156
|
bytes memory data = _store.getData(toPoolKey(poolNftId));
|
160
157
|
if (data.length > 0) {
|
161
|
-
return abi.decode(data, (
|
158
|
+
return abi.decode(data, (IComponents.ComponentInfo));
|
162
159
|
}
|
163
160
|
}
|
164
161
|
|
@@ -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,6 +10,7 @@ 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
16
|
import {ChainNft} from "../registry/ChainNft.sol";
|
@@ -16,11 +18,17 @@ import {Service} from "../../contracts/shared/Service.sol";
|
|
16
18
|
import {IService} from "../shared/IService.sol";
|
17
19
|
import {NftId} from "../../contracts/types/NftId.sol";
|
18
20
|
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
|
-
|
22
|
-
|
23
|
-
|
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";
|
23
|
+
import {IDistributionComponent} from "../components/IDistributionComponent.sol";
|
24
|
+
import {IPoolComponent} from "../components/IPoolComponent.sol";
|
25
|
+
import {IProductComponent} from "../components/IProductComponent.sol";
|
26
|
+
|
27
|
+
contract InstanceService is
|
28
|
+
Service,
|
29
|
+
IInstanceService
|
30
|
+
{
|
31
|
+
address internal _masterOzAccessManager;
|
24
32
|
address internal _masterInstanceAccessManager;
|
25
33
|
address internal _masterInstance;
|
26
34
|
address internal _masterInstanceReader;
|
@@ -29,20 +37,24 @@ contract InstanceService is Service, IInstanceService {
|
|
29
37
|
// TODO update to real hash when instance is stable
|
30
38
|
bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
|
31
39
|
|
32
|
-
modifier onlyInstanceOwner(NftId instanceNftId) {
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
if( msg.sender != chainNft.ownerOf(instanceNftId.toInt())) {
|
37
|
-
revert ErrorInstanceServiceNotInstanceOwner(msg.sender, instanceNftId);
|
40
|
+
modifier onlyInstanceOwner(NftId instanceNftId) {
|
41
|
+
if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
|
42
|
+
revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
|
38
43
|
}
|
39
44
|
_;
|
40
45
|
}
|
41
|
-
|
46
|
+
// TODO check service domain?
|
47
|
+
// TODO check release version?
|
42
48
|
modifier onlyRegisteredService() {
|
43
|
-
|
44
|
-
|
45
|
-
|
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);
|
46
58
|
}
|
47
59
|
_;
|
48
60
|
}
|
@@ -50,7 +62,8 @@ contract InstanceService is Service, IInstanceService {
|
|
50
62
|
function createInstanceClone()
|
51
63
|
external
|
52
64
|
returns (
|
53
|
-
|
65
|
+
AccessManagerUpgradeableInitializeable clonedOzAccessManager,
|
66
|
+
InstanceAccessManager clonedInstanceAccessManager,
|
54
67
|
Instance clonedInstance,
|
55
68
|
NftId clonedInstanceNftId,
|
56
69
|
InstanceReader clonedInstanceReader,
|
@@ -64,90 +77,126 @@ contract InstanceService is Service, IInstanceService {
|
|
64
77
|
address registryServiceAddress = registry.getServiceAddress(REGISTRY(), getMajorVersion());
|
65
78
|
IRegistryService registryService = IRegistryService(registryServiceAddress);
|
66
79
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
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));
|
72
88
|
|
73
89
|
clonedInstance = Instance(Clones.clone(_masterInstance));
|
74
|
-
clonedInstance.initialize(
|
90
|
+
clonedInstance.initialize(
|
91
|
+
address(clonedOzAccessManager),
|
92
|
+
registryAddress,
|
93
|
+
instanceOwner);
|
75
94
|
|
76
95
|
clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
77
|
-
clonedInstanceReader.initialize(
|
96
|
+
clonedInstanceReader.initialize(address(clonedInstance));
|
78
97
|
clonedInstance.setInstanceReader(clonedInstanceReader);
|
79
98
|
|
80
99
|
clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
|
81
|
-
clonedBundleManager.initialize(address(
|
100
|
+
clonedBundleManager.initialize(address(clonedInstance));
|
82
101
|
clonedInstance.setBundleManager(clonedBundleManager);
|
83
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
|
+
|
84
108
|
// TODO amend setters with instance specific , policy manager ...
|
85
109
|
|
86
|
-
_grantInitialAuthorizations(
|
110
|
+
_grantInitialAuthorizations(clonedInstanceAccessManager, clonedInstance, clonedBundleManager, instanceOwner);
|
87
111
|
|
88
|
-
|
89
|
-
// TODO: use a role less powerful than admin, maybe INSTANCE_ADMIN (does not exist yet)
|
90
|
-
clonedAccessManager.grantRole(ADMIN_ROLE(), instanceOwner);
|
91
|
-
clonedAccessManager.revokeRole(ADMIN_ROLE(), address(this));
|
112
|
+
clonedOzAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
|
92
113
|
|
93
114
|
IRegistry.ObjectInfo memory info = registryService.registerInstance(clonedInstance, instanceOwner);
|
94
115
|
clonedInstanceNftId = info.nftId;
|
95
116
|
// clonedInstance.linkToRegisteredNftId();
|
96
117
|
|
97
|
-
emit LogInstanceCloned(
|
118
|
+
emit LogInstanceCloned(
|
119
|
+
address(clonedOzAccessManager),
|
120
|
+
address(clonedInstanceAccessManager),
|
121
|
+
address(clonedInstance),
|
122
|
+
address(clonedBundleManager),
|
123
|
+
address(clonedInstanceReader),
|
124
|
+
clonedInstanceNftId);
|
98
125
|
}
|
99
126
|
|
100
|
-
function _grantInitialAuthorizations(
|
101
|
-
|
102
|
-
|
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);
|
103
136
|
_grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
|
104
137
|
_grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
|
105
138
|
_grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
|
139
|
+
_grantApplicationServiceAuthorizations(clonedAccessManager, clonedInstance);
|
106
140
|
_grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
|
141
|
+
_grantClaimServiceAuthorizations(clonedAccessManager, clonedInstance);
|
107
142
|
_grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
|
108
143
|
_grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
|
144
|
+
_grantInstanceOwnerAuthorizations(clonedAccessManager, instanceOwner);
|
109
145
|
}
|
110
146
|
|
111
|
-
function
|
112
|
-
|
113
|
-
|
114
|
-
clonedAccessManager.
|
115
|
-
|
116
|
-
clonedAccessManager.
|
117
|
-
clonedAccessManager.
|
118
|
-
clonedAccessManager.
|
119
|
-
clonedAccessManager.
|
120
|
-
clonedAccessManager.
|
121
|
-
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());
|
122
162
|
}
|
123
163
|
|
124
|
-
function
|
125
|
-
clonedAccessManager.
|
126
|
-
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");
|
127
168
|
}
|
128
169
|
|
129
170
|
function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
130
171
|
// configure authorization for distribution service on instance
|
131
|
-
|
132
|
-
address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), getMajorVersion());
|
172
|
+
address distributionServiceAddress = getRegistry().getServiceAddress(DISTRIBUTION(), getMajorVersion());
|
133
173
|
clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
|
134
|
-
bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](
|
174
|
+
bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
|
135
175
|
instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
|
136
176
|
instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
|
137
|
-
|
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(
|
138
187
|
"Instance",
|
139
188
|
instanceDistributionServiceSelectors,
|
140
|
-
DISTRIBUTION_SERVICE_ROLE());
|
189
|
+
DISTRIBUTION_SERVICE_ROLE());
|
141
190
|
}
|
142
191
|
|
143
192
|
function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
144
193
|
// configure authorization for pool service on instance
|
145
|
-
address poolServiceAddress =
|
194
|
+
address poolServiceAddress = getRegistry().getServiceAddress(POOL(), getMajorVersion());
|
146
195
|
clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
|
147
196
|
bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
|
148
197
|
instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
|
149
198
|
instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
|
150
|
-
clonedAccessManager.
|
199
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
151
200
|
"Instance",
|
152
201
|
instancePoolServiceSelectors,
|
153
202
|
POOL_SERVICE_ROLE());
|
@@ -155,7 +204,7 @@ contract InstanceService is Service, IInstanceService {
|
|
155
204
|
|
156
205
|
function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
157
206
|
// configure authorization for product service on instance
|
158
|
-
address productServiceAddress =
|
207
|
+
address productServiceAddress = getRegistry().getServiceAddress(PRODUCT(), getMajorVersion());
|
159
208
|
clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
|
160
209
|
bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
|
161
210
|
instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
|
@@ -163,34 +212,62 @@ contract InstanceService is Service, IInstanceService {
|
|
163
212
|
instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
|
164
213
|
instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
|
165
214
|
instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
|
166
|
-
clonedAccessManager.
|
215
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
167
216
|
"Instance",
|
168
217
|
instanceProductServiceSelectors,
|
169
218
|
PRODUCT_SERVICE_ROLE());
|
170
219
|
}
|
171
220
|
|
221
|
+
function _grantApplicationServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
222
|
+
// configure authorization for application services on instance
|
223
|
+
address applicationServiceAddress = getRegistry().getServiceAddress(APPLICATION(), getMajorVersion());
|
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
|
+
|
172
235
|
function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
173
|
-
// configure authorization for policy
|
174
|
-
address policyServiceAddress =
|
175
|
-
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(),
|
176
|
-
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](
|
177
|
-
instancePolicyServiceSelectors[0] = clonedInstance.
|
178
|
-
instancePolicyServiceSelectors[1] = clonedInstance.
|
179
|
-
|
180
|
-
clonedAccessManager.setTargetFunctionRole(
|
236
|
+
// configure authorization for policy services on instance
|
237
|
+
address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getMajorVersion());
|
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(
|
181
243
|
"Instance",
|
182
244
|
instancePolicyServiceSelectors,
|
183
245
|
POLICY_SERVICE_ROLE());
|
184
246
|
}
|
185
247
|
|
248
|
+
function _grantClaimServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
249
|
+
// configure authorization for claim/payout services on instance
|
250
|
+
address claimServiceAddress = getRegistry().getServiceAddress(CLAIM(), getMajorVersion());
|
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
|
+
|
186
262
|
function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
187
263
|
// configure authorization for bundle service on instance
|
188
|
-
address bundleServiceAddress =
|
264
|
+
address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getMajorVersion());
|
189
265
|
clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
|
190
|
-
bytes4[] memory instanceBundleServiceSelectors = new bytes4[](
|
266
|
+
bytes4[] memory instanceBundleServiceSelectors = new bytes4[](3);
|
191
267
|
instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
|
192
268
|
instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
|
193
|
-
|
269
|
+
instanceBundleServiceSelectors[2] = clonedInstance.updateBundleState.selector;
|
270
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
194
271
|
"Instance",
|
195
272
|
instanceBundleServiceSelectors,
|
196
273
|
BUNDLE_SERVICE_ROLE());
|
@@ -202,51 +279,82 @@ contract InstanceService is Service, IInstanceService {
|
|
202
279
|
bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
|
203
280
|
bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
|
204
281
|
bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
|
205
|
-
clonedAccessManager.
|
282
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
206
283
|
"BundleManager",
|
207
284
|
bundleManagerBundleServiceSelectors,
|
208
285
|
BUNDLE_SERVICE_ROLE());
|
209
286
|
}
|
210
287
|
|
211
288
|
function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
212
|
-
// configure authorization for instance service on instance
|
213
|
-
address instanceServiceAddress =
|
289
|
+
// configure authorization for instance service on instance
|
290
|
+
address instanceServiceAddress = getRegistry().getServiceAddress(INSTANCE(), getMajorVersion());
|
214
291
|
clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
|
215
292
|
bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
|
216
293
|
instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
|
217
|
-
clonedAccessManager.
|
294
|
+
clonedAccessManager.setCoreTargetFunctionRole(
|
218
295
|
"Instance",
|
219
296
|
instanceInstanceServiceSelectors,
|
220
297
|
INSTANCE_SERVICE_ROLE());
|
298
|
+
|
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(
|
305
|
+
"InstanceAccessManager",
|
306
|
+
accessManagerInstanceServiceSelectors,
|
307
|
+
INSTANCE_SERVICE_ROLE());
|
308
|
+
}
|
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());
|
221
321
|
}
|
222
322
|
|
223
|
-
|
224
|
-
|
225
|
-
address instanceAddress,
|
226
|
-
address instanceReaderAddress,
|
227
|
-
address bundleManagerAddress)
|
323
|
+
|
324
|
+
function setAndRegisterMasterInstance(address instanceAddress)
|
228
325
|
external
|
229
326
|
onlyOwner
|
230
327
|
returns(NftId masterInstanceNftId)
|
231
328
|
{
|
232
|
-
|
233
|
-
|
234
|
-
|
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(); }
|
235
333
|
|
236
|
-
|
237
|
-
require (instanceAddress != address(0), "ERROR:CRD-006:INSTANCE_ZERO");
|
238
|
-
require (instanceReaderAddress != address(0), "ERROR:CRD-007:INSTANCE_READER_ZERO");
|
239
|
-
require (bundleManagerAddress != address(0), "ERROR:CRD-008:BUNDLE_MANAGER_ZERO");
|
334
|
+
if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
|
240
335
|
|
241
336
|
IInstance instance = IInstance(instanceAddress);
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
337
|
+
AccessManagerUpgradeableInitializeable ozAccessManager = AccessManagerUpgradeableInitializeable(instance.authority());
|
338
|
+
address ozAccessManagerAddress = address(ozAccessManager);
|
339
|
+
InstanceAccessManager instanceAccessManager = instance.getInstanceAccessManager();
|
340
|
+
address instanceAccessManagerAddress = address(instanceAccessManager);
|
341
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
342
|
+
address instanceReaderAddress = address(instanceReader);
|
343
|
+
BundleManager bundleManager = instance.getBundleManager();
|
344
|
+
address bundleManagerAddress = address(bundleManager);
|
345
|
+
|
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(); }
|
350
|
+
|
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(); }
|
248
355
|
|
249
|
-
|
356
|
+
_masterOzAccessManager = ozAccessManagerAddress;
|
357
|
+
_masterInstanceAccessManager = instanceAccessManagerAddress;
|
250
358
|
_masterInstance = instanceAddress;
|
251
359
|
_masterInstanceReader = instanceReaderAddress;
|
252
360
|
_masterInstanceBundleManager = bundleManagerAddress;
|
@@ -260,29 +368,26 @@ contract InstanceService is Service, IInstanceService {
|
|
260
368
|
}
|
261
369
|
|
262
370
|
function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
|
263
|
-
|
264
|
-
|
265
|
-
|
371
|
+
if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
|
372
|
+
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
|
373
|
+
if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
|
266
374
|
|
267
375
|
InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
|
268
|
-
|
376
|
+
if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
|
269
377
|
|
270
378
|
_masterInstanceReader = instanceReaderAddress;
|
271
379
|
}
|
272
380
|
|
273
|
-
|
274
|
-
|
381
|
+
function upgradeInstanceReader(NftId instanceNftId)
|
382
|
+
external
|
383
|
+
onlyInstanceOwner(instanceNftId)
|
384
|
+
{
|
275
385
|
IRegistry registry = getRegistry();
|
276
386
|
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
277
387
|
Instance instance = Instance(instanceInfo.objectAddress);
|
278
|
-
address owner = instance.getOwner();
|
279
|
-
|
280
|
-
if (msg.sender != owner) {
|
281
|
-
revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
|
282
|
-
}
|
283
388
|
|
284
389
|
InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
285
|
-
upgradedInstanceReaderClone.initialize(address(
|
390
|
+
upgradedInstanceReaderClone.initialize(address(instance));
|
286
391
|
instance.setInstanceReader(upgradedInstanceReaderClone);
|
287
392
|
}
|
288
393
|
|
@@ -321,42 +426,70 @@ contract InstanceService is Service, IInstanceService {
|
|
321
426
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
322
427
|
// TODO while InstanceService is not deployed in InstanceServiceManager constructor
|
323
428
|
// owner is InstanceServiceManager deployer
|
324
|
-
|
325
|
-
|
326
|
-
_registerInterface(type(IInstanceService).interfaceId);
|
429
|
+
initializeService(registryAddress, owner);
|
430
|
+
registerInterface(type(IInstanceService).interfaceId);
|
327
431
|
}
|
328
432
|
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
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);
|
448
|
+
|
449
|
+
InstanceAccessManager accessManager = instance.getInstanceAccessManager();
|
450
|
+
accessManager.createGifTarget(targetAddress, targetName);
|
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]);
|
457
|
+
}
|
333
458
|
}
|
334
459
|
|
335
|
-
|
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 setTargetLocked(string memory targetName, bool locked) onlyComponent external {
|
463
|
+
function setComponentLocked(bool locked) onlyComponent external {
|
464
|
+
address componentAddress = msg.sender;
|
336
465
|
IRegistry registry = getRegistry();
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
466
|
+
NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
|
467
|
+
address instanceAddress = registry.getObjectInfo(instanceNftId).objectAddress;
|
468
|
+
IInstance instance = IInstance(instanceAddress);
|
469
|
+
|
470
|
+
InstanceAccessManager accessManager = instance.getInstanceAccessManager();
|
471
|
+
// TODO setLocked by target address?
|
472
|
+
string memory componentName = ShortStrings.toString(accessManager.getTargetInfo(componentAddress).name);
|
473
|
+
accessManager.setTargetLocked(componentName, locked);
|
341
474
|
}
|
342
475
|
|
343
|
-
function
|
344
|
-
|
476
|
+
function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
|
477
|
+
internal
|
478
|
+
view
|
479
|
+
returns (IInstance instance, NftId componentNftId)
|
480
|
+
{
|
345
481
|
IRegistry registry = getRegistry();
|
346
|
-
IRegistry.ObjectInfo memory
|
347
|
-
if
|
348
|
-
revert
|
482
|
+
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
483
|
+
if(instanceInfo.objectType != INSTANCE()) {
|
484
|
+
revert ErrorInstanceServiceNotInstance(instanceNftId);
|
349
485
|
}
|
350
486
|
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
IInstance instance = IInstance(instanceAddress);
|
487
|
+
IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
|
488
|
+
if(componentInfo.parentNftId != instanceNftId) {
|
489
|
+
revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
|
490
|
+
}
|
356
491
|
|
357
|
-
|
358
|
-
|
492
|
+
instance = Instance(instanceInfo.objectAddress);
|
493
|
+
componentNftId = componentInfo.nftId;
|
359
494
|
}
|
360
|
-
|
361
|
-
}
|
362
|
-
|
495
|
+
}
|
@@ -17,7 +17,7 @@ contract InstanceServiceManager is ProxyManager {
|
|
17
17
|
constructor(
|
18
18
|
address registryAddress
|
19
19
|
)
|
20
|
-
ProxyManager()
|
20
|
+
ProxyManager(registryAddress)
|
21
21
|
{
|
22
22
|
InstanceService instSrv = new InstanceService();
|
23
23
|
// bytes memory initCode = type(InstanceService).creationCode;
|