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