@etherisc/gif-next 0.0.2-9d3eab3-323 → 0.0.2-9dc4419-573
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 +842 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +753 -168
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +233 -81
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +848 -31
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +846 -57
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +682 -9
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +695 -258
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +529 -217
- 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 +1038 -395
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +293 -156
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +921 -1201
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +583 -193
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +137 -270
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +481 -368
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +308 -127
- 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} +246 -160
- 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 +1039 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +673 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +594 -286
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +360 -79
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +817 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1359 -232
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +450 -73
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +622 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +256 -266
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +204 -195
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +787 -143
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +192 -250
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +476 -131
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +73 -159
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +463 -342
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +329 -96
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +833 -301
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +311 -78
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +287 -202
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +309 -76
- 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 +189 -6
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +104 -214
- 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 +202 -72
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +33 -23
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +214 -251
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +300 -81
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +125 -113
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +151 -50
- 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 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +73 -159
- 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 +120 -27
- 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 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
- 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 +179 -151
- 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 +129 -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 +197 -201
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/Component.sol +253 -0
- package/contracts/components/Distribution.sol +200 -83
- package/contracts/components/IComponent.sol +76 -0
- package/contracts/components/IDistributionComponent.sol +44 -17
- package/contracts/components/IPoolComponent.sol +88 -41
- package/contracts/components/IProductComponent.sol +10 -5
- package/contracts/components/Pool.sol +217 -185
- package/contracts/components/Product.sol +125 -124
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +2 -12
- package/contracts/instance/BundleManager.sol +14 -16
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +52 -14
- package/contracts/instance/IInstanceService.sol +42 -4
- package/contracts/instance/Instance.sol +125 -262
- package/contracts/instance/InstanceAccessManager.sol +414 -175
- package/contracts/instance/InstanceReader.sol +10 -34
- package/contracts/instance/InstanceService.sol +333 -137
- package/contracts/instance/InstanceServiceManager.sol +6 -10
- package/contracts/instance/ObjectManager.sol +10 -29
- package/contracts/instance/base/ComponentService.sol +121 -0
- package/contracts/instance/base/KeyValueStore.sol +13 -5
- package/contracts/instance/base/Lifecycle.sol +11 -2
- 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 +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 +238 -67
- package/contracts/instance/service/BundleServiceManager.sol +6 -10
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +366 -45
- package/contracts/instance/service/DistributionServiceManager.sol +7 -11
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +67 -19
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +87 -0
- package/contracts/instance/service/IPolicyService.sol +34 -49
- package/contracts/instance/service/IPoolService.sol +82 -3
- package/contracts/instance/service/PolicyService.sol +200 -341
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +222 -41
- package/contracts/instance/service/PoolServiceManager.sol +6 -10
- package/contracts/instance/service/ProductService.sol +92 -50
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +33 -9
- package/contracts/registry/IRegistryService.sol +23 -13
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +168 -86
- package/contracts/registry/RegistryAccessManager.sol +58 -52
- package/contracts/registry/RegistryService.sol +93 -141
- package/contracts/registry/RegistryServiceManager.sol +15 -13
- package/contracts/registry/ReleaseManager.sol +140 -194
- package/contracts/registry/TokenRegistry.sol +21 -15
- 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 +4 -6
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +4 -4
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +66 -80
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -32
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +36 -22
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +60 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +13 -5
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +10 -5
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +25 -19
- 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/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/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/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 -814
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- 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 -315
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -3,22 +3,26 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
5
|
|
6
|
-
import {ChainNft} from "./ChainNft.sol";
|
7
6
|
import {NftId} from "../types/NftId.sol";
|
8
7
|
import {ObjectType} from "../types/ObjectType.sol";
|
9
8
|
import {VersionPart} from "../types/Version.sol";
|
9
|
+
import {Timestamp} from "../types/Timestamp.sol";
|
10
10
|
|
11
11
|
interface IRegistry is IERC165 {
|
12
12
|
|
13
13
|
event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
|
14
|
+
event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
|
14
15
|
|
16
|
+
// registerService()
|
17
|
+
error CallerNotReleaseManager();
|
18
|
+
error ServiceAlreadyRegistered(address service);
|
15
19
|
|
16
20
|
// register()
|
17
21
|
error CallerNotRegistryService();
|
18
22
|
error ServiceRegistration();
|
19
23
|
|
20
|
-
//
|
21
|
-
error
|
24
|
+
// registerWithCustomTypes()
|
25
|
+
error CoreTypeRegistration();
|
22
26
|
|
23
27
|
// _register()
|
24
28
|
error ZeroParentAddress();
|
@@ -36,15 +40,29 @@ interface IRegistry is IERC165 {
|
|
36
40
|
}// TODO delete nftId and initialOwner(if not used) from struct
|
37
41
|
// TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
|
38
42
|
|
39
|
-
|
43
|
+
struct ReleaseInfo {
|
44
|
+
ObjectType[] domains;
|
45
|
+
Timestamp createdAt;
|
46
|
+
//Timestamp updatedAt;
|
47
|
+
}
|
48
|
+
|
49
|
+
function registerService(
|
50
|
+
ObjectInfo memory serviceInfo,
|
51
|
+
VersionPart serviceVersion,
|
52
|
+
ObjectType serviceDomain
|
53
|
+
) external returns(NftId nftId);
|
40
54
|
|
41
55
|
function register(ObjectInfo memory info) external returns (NftId nftId);
|
42
56
|
|
43
|
-
function
|
57
|
+
function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
|
44
58
|
|
45
|
-
function
|
59
|
+
function getInitialVersion() external view returns (VersionPart);
|
46
60
|
|
47
|
-
function
|
61
|
+
function getNextVersion() external view returns (VersionPart);
|
62
|
+
|
63
|
+
function getLatestVersion() external view returns (VersionPart);
|
64
|
+
|
65
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory);
|
48
66
|
|
49
67
|
function getObjectCount() external view returns (uint256);
|
50
68
|
|
@@ -66,12 +84,18 @@ interface IRegistry is IERC165 {
|
|
66
84
|
|
67
85
|
function isRegisteredService(address contractAddress) external view returns (bool);
|
68
86
|
|
87
|
+
function isRegisteredComponent(address object) external view returns (bool);
|
88
|
+
|
89
|
+
function isValidRelease(VersionPart version) external view returns (bool);
|
90
|
+
|
69
91
|
function getServiceAddress(
|
70
|
-
ObjectType
|
92
|
+
ObjectType serviceDomain,
|
71
93
|
VersionPart releaseVersion
|
72
94
|
) external view returns (address serviceAddress);
|
73
95
|
|
74
|
-
function
|
96
|
+
function getReleaseManagerAddress() external view returns (address);
|
97
|
+
|
98
|
+
function getChainNftAddress() external view returns (address);
|
75
99
|
|
76
100
|
function getOwner() external view returns (address);
|
77
101
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
4
|
+
// import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
5
5
|
|
6
6
|
import {NftId} from "../types/NftId.sol";
|
7
7
|
import {ObjectType} from "../types/ObjectType.sol";
|
@@ -10,11 +10,12 @@ import {IService} from "../shared/IService.sol";
|
|
10
10
|
import {IRegistry} from "./IRegistry.sol";
|
11
11
|
|
12
12
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
13
|
-
import {
|
13
|
+
import {IComponent} from "../components/IComponent.sol";
|
14
14
|
|
15
15
|
interface IRegistryService is
|
16
|
-
IService
|
17
|
-
|
16
|
+
IService
|
17
|
+
// TODO cleanup
|
18
|
+
// IAccessManaged
|
18
19
|
{
|
19
20
|
error SelfRegistration();
|
20
21
|
error NotRegistryOwner();
|
@@ -35,21 +36,30 @@ interface IRegistryService is
|
|
35
36
|
struct FunctionConfig
|
36
37
|
{
|
37
38
|
ObjectType serviceDomain;
|
38
|
-
bytes4[]
|
39
|
+
bytes4[] selectors;
|
39
40
|
}
|
40
41
|
|
42
|
+
function getFunctionConfigs()
|
43
|
+
external
|
44
|
+
pure
|
45
|
+
returns(
|
46
|
+
FunctionConfig[] memory config
|
47
|
+
);
|
48
|
+
|
41
49
|
// TODO used by service -> add owner arg
|
42
|
-
function registerInstance(IRegisterable instance)
|
43
|
-
external returns(IRegistry.ObjectInfo memory info
|
50
|
+
function registerInstance(IRegisterable instance, address owner)
|
51
|
+
external returns(IRegistry.ObjectInfo memory info);
|
52
|
+
|
53
|
+
function registerProduct(IComponent product, address owner)
|
54
|
+
external returns(IRegistry.ObjectInfo memory info);
|
44
55
|
|
45
|
-
function
|
46
|
-
external returns(IRegistry.ObjectInfo memory info
|
56
|
+
function registerPool(IComponent pool, address owner)
|
57
|
+
external returns(IRegistry.ObjectInfo memory info);
|
47
58
|
|
48
|
-
function
|
49
|
-
external returns(IRegistry.ObjectInfo memory info
|
59
|
+
function registerDistribution(IComponent distribution, address owner)
|
60
|
+
external returns(IRegistry.ObjectInfo memory info);
|
50
61
|
|
51
|
-
function
|
52
|
-
external returns(IRegistry.ObjectInfo memory info, bytes memory data);
|
62
|
+
function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
|
53
63
|
|
54
64
|
function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
|
55
65
|
|
@@ -1,54 +1,50 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
4
5
|
|
5
|
-
import {NftId, toNftId, zeroNftId
|
6
|
-
import {
|
7
|
-
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
|
8
|
-
|
9
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
10
|
-
import {IService} from "../shared/IService.sol";
|
11
|
-
import {ERC165} from "../shared/ERC165.sol";
|
6
|
+
import {NftId, toNftId, zeroNftId} from "../types/NftId.sol";
|
7
|
+
import {VersionPart} from "../types/Version.sol";
|
8
|
+
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
|
12
9
|
|
13
10
|
import {ChainNft} from "./ChainNft.sol";
|
14
11
|
import {IRegistry} from "./IRegistry.sol";
|
15
|
-
import {IRegistryService} from "./IRegistryService.sol";
|
16
|
-
import {ITransferInterceptor} from "./ITransferInterceptor.sol";
|
17
12
|
import {ReleaseManager} from "./ReleaseManager.sol";
|
18
13
|
|
19
|
-
// IMPORTANT
|
14
|
+
// IMPORTANT
|
20
15
|
// Each NFT minted by registry is accosiated with:
|
21
16
|
// 1) NFT owner
|
22
17
|
// 2) registred contract OR object stored in registered (parent) contract
|
23
18
|
// Four registration flows:
|
24
|
-
// 1) IService address by release manager (SERVICE of
|
25
|
-
// 2) IService address by release manager (SERVICE of
|
19
|
+
// 1) IService address by release manager (SERVICE of domain SERVICE aka registry service aka release creation)
|
20
|
+
// 2) IService address by release manager (SERVICE of domain !SERVICE aka regular service)
|
26
21
|
// 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
|
27
22
|
// 4) state object by regular service (POLICY, BUNDLE, STAKE)
|
28
23
|
|
29
24
|
contract Registry is
|
30
|
-
ERC165,
|
31
25
|
IRegistry
|
32
26
|
{
|
33
|
-
uint256 public constant GIF_MAJOR_VERSION_AT_DEPLOYMENT = 3;
|
34
27
|
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
35
28
|
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
36
|
-
uint256 public constant REGISTRY_SERVICE_TOKEN_SEQUENCE_ID = 3;
|
37
29
|
string public constant EMPTY_URI = "";
|
38
30
|
|
39
|
-
mapping(NftId nftId => ObjectInfo info)
|
40
|
-
mapping(address object => NftId nftId)
|
31
|
+
mapping(NftId nftId => ObjectInfo info) private _info;
|
32
|
+
mapping(address object => NftId nftId) private _nftIdByAddress;
|
33
|
+
|
34
|
+
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
35
|
+
|
36
|
+
mapping(ObjectType objectType => bool) private _coreTypes;
|
41
37
|
|
42
38
|
mapping(ObjectType objectType => mapping(
|
43
|
-
ObjectType parentType => bool))
|
39
|
+
ObjectType parentType => bool)) private _coreContractCombinations;
|
44
40
|
|
45
41
|
mapping(ObjectType objectType => mapping(
|
46
|
-
ObjectType parentType => bool))
|
42
|
+
ObjectType parentType => bool)) private _coreObjectCombinations;
|
47
43
|
|
48
|
-
NftId
|
49
|
-
ChainNft
|
44
|
+
NftId private _registryNftId;
|
45
|
+
ChainNft private _chainNft;
|
50
46
|
|
51
|
-
ReleaseManager
|
47
|
+
ReleaseManager private _releaseManager;
|
52
48
|
|
53
49
|
modifier onlyRegistryService() {
|
54
50
|
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
@@ -64,27 +60,26 @@ contract Registry is
|
|
64
60
|
_;
|
65
61
|
}
|
66
62
|
|
67
|
-
constructor(
|
63
|
+
constructor()
|
68
64
|
{
|
69
|
-
|
70
|
-
require(initialVersion.toInt() > 0, "Registry: initial version is 0");
|
71
|
-
|
72
|
-
_releaseManager = ReleaseManager(releaseManager);
|
65
|
+
_releaseManager = ReleaseManager(msg.sender);
|
73
66
|
|
74
67
|
// deploy NFT
|
75
|
-
_chainNft = new ChainNft(address(this))
|
68
|
+
_chainNft = new ChainNft(address(this));
|
76
69
|
|
77
70
|
// initial registry setup
|
78
71
|
_registerProtocol();
|
79
72
|
_registerRegistry();
|
80
73
|
|
81
|
-
// set object parent relations
|
82
|
-
|
83
|
-
|
84
|
-
_registerInterface(type(IRegistry).interfaceId);
|
74
|
+
// set object types and object parent relations
|
75
|
+
_setupValidCoreTypesAndCombinations();
|
85
76
|
}
|
86
77
|
|
87
|
-
function registerService(
|
78
|
+
function registerService(
|
79
|
+
ObjectInfo memory info,
|
80
|
+
VersionPart version,
|
81
|
+
ObjectType domain
|
82
|
+
)
|
88
83
|
external
|
89
84
|
onlyReleaseManager
|
90
85
|
returns(NftId nftId)
|
@@ -93,9 +88,21 @@ contract Registry is
|
|
93
88
|
if(info.objectType != SERVICE()) {
|
94
89
|
revert();
|
95
90
|
}
|
96
|
-
info.
|
91
|
+
if(info.parentType != REGISTRY()) {
|
92
|
+
revert();
|
93
|
+
}
|
94
|
+
info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
|
97
95
|
*/
|
96
|
+
|
97
|
+
if(_service[version][domain] > address(0)) {
|
98
|
+
revert ServiceAlreadyRegistered(info.objectAddress);
|
99
|
+
}
|
100
|
+
|
101
|
+
_service[version][domain] = info.objectAddress; // nftId;
|
102
|
+
|
98
103
|
nftId = _register(info);
|
104
|
+
|
105
|
+
emit LogServiceRegistration(version, domain);
|
99
106
|
}
|
100
107
|
|
101
108
|
function register(ObjectInfo memory info)
|
@@ -103,16 +110,58 @@ contract Registry is
|
|
103
110
|
onlyRegistryService
|
104
111
|
returns(NftId nftId)
|
105
112
|
{
|
113
|
+
ObjectType objectType = info.objectType;
|
114
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
115
|
+
|
116
|
+
// TODO do not need it here -> SERVICE is no longer part of _coreContractCombinations
|
106
117
|
// no service registrations
|
107
|
-
if(
|
118
|
+
if(objectType == SERVICE()) {
|
108
119
|
revert ServiceRegistration();
|
109
120
|
}
|
110
121
|
|
122
|
+
// only valid core types combinations
|
123
|
+
if(info.objectAddress == address(0))
|
124
|
+
{
|
125
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
126
|
+
revert InvalidTypesCombination(objectType, parentType);
|
127
|
+
}
|
128
|
+
}
|
129
|
+
else
|
130
|
+
{
|
131
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
132
|
+
revert InvalidTypesCombination(objectType, parentType);
|
133
|
+
}
|
134
|
+
}
|
135
|
+
|
111
136
|
nftId = _register(info);
|
112
137
|
}
|
113
138
|
|
139
|
+
function registerWithCustomType(ObjectInfo memory info)
|
140
|
+
external
|
141
|
+
onlyRegistryService
|
142
|
+
returns(NftId nftId)
|
143
|
+
{
|
144
|
+
ObjectType objectType = info.objectType;
|
145
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
146
|
+
|
147
|
+
if(_coreTypes[objectType]) {
|
148
|
+
revert CoreTypeRegistration();
|
149
|
+
}
|
150
|
+
|
151
|
+
if(
|
152
|
+
parentType == PROTOCOL() ||
|
153
|
+
parentType == REGISTRY() ||
|
154
|
+
parentType == SERVICE()
|
155
|
+
) {
|
156
|
+
revert InvalidTypesCombination(objectType, parentType);
|
157
|
+
}
|
158
|
+
|
159
|
+
_register(info);
|
160
|
+
}
|
161
|
+
|
162
|
+
|
114
163
|
/// @dev earliest GIF major version
|
115
|
-
function
|
164
|
+
function getInitialVersion() external view returns (VersionPart) {
|
116
165
|
return _releaseManager.getInitialVersion();
|
117
166
|
}
|
118
167
|
|
@@ -123,28 +172,36 @@ contract Registry is
|
|
123
172
|
// in this case we might want to have a period where the latest version is
|
124
173
|
// in the process of being set up while the latest active version is 1 major release smaller
|
125
174
|
/// @dev latest GIF major version (might not yet be active)
|
126
|
-
function
|
175
|
+
function getNextVersion() external view returns (VersionPart) {
|
127
176
|
return _releaseManager.getNextVersion();
|
128
177
|
}
|
129
178
|
|
130
179
|
/// @dev latest active GIF release version
|
131
|
-
function
|
180
|
+
function getLatestVersion() external view returns (VersionPart) {
|
132
181
|
return _releaseManager.getLatestVersion();
|
133
182
|
}
|
134
183
|
|
135
|
-
function
|
184
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
|
185
|
+
return _releaseManager.getReleaseInfo(version);
|
186
|
+
}
|
187
|
+
|
188
|
+
function getObjectCount() external view returns (uint256) {
|
136
189
|
return _chainNft.totalSupply();
|
137
190
|
}
|
138
191
|
|
192
|
+
function getReleaseManagerAddress() external view returns (address) {
|
193
|
+
return address(_releaseManager);
|
194
|
+
}
|
195
|
+
|
139
196
|
function getNftId() external view returns (NftId nftId) {
|
140
197
|
return _registryNftId;
|
141
198
|
}
|
142
199
|
|
143
|
-
function getNftId(address object) external view
|
200
|
+
function getNftId(address object) external view returns (NftId id) {
|
144
201
|
return _nftIdByAddress[object];
|
145
202
|
}
|
146
203
|
|
147
|
-
function ownerOf(NftId nftId) public view
|
204
|
+
function ownerOf(NftId nftId) public view returns (address) {
|
148
205
|
return _chainNft.ownerOf(nftId.toInt());
|
149
206
|
}
|
150
207
|
|
@@ -152,42 +209,65 @@ contract Registry is
|
|
152
209
|
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
153
210
|
}
|
154
211
|
|
155
|
-
function getObjectInfo(NftId nftId) external view
|
212
|
+
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
156
213
|
return _info[nftId];
|
157
214
|
}
|
158
215
|
|
159
|
-
function getObjectInfo(address object) external view
|
216
|
+
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
160
217
|
return _info[_nftIdByAddress[object]];
|
161
218
|
}
|
162
219
|
|
163
|
-
function isRegistered(NftId nftId) public view
|
220
|
+
function isRegistered(NftId nftId) public view returns (bool) {
|
164
221
|
return _info[nftId].objectType.gtz();
|
165
222
|
}
|
166
223
|
|
167
|
-
function isRegistered(address object) external view
|
224
|
+
function isRegistered(address object) external view returns (bool) {
|
168
225
|
return _nftIdByAddress[object].gtz();
|
169
226
|
}
|
170
227
|
|
171
|
-
function isRegisteredService(address object) external view
|
172
|
-
return
|
228
|
+
function isRegisteredService(address object) external view returns (bool) {
|
229
|
+
return _info[_nftIdByAddress[object]].objectType == SERVICE();
|
230
|
+
}
|
231
|
+
|
232
|
+
function isRegisteredComponent(address object) external view returns (bool) {
|
233
|
+
NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
|
234
|
+
return _info[objectParentNftId].objectType == INSTANCE();
|
235
|
+
}
|
236
|
+
|
237
|
+
function isValidRelease(VersionPart version) external view returns (bool)
|
238
|
+
{
|
239
|
+
return _releaseManager.isValidRelease(version);
|
173
240
|
}
|
174
241
|
|
175
242
|
function getServiceAddress(
|
176
|
-
ObjectType
|
243
|
+
ObjectType serviceDomain,
|
177
244
|
VersionPart releaseVersion
|
178
|
-
) external view returns (address)
|
245
|
+
) external view returns (address service)
|
179
246
|
{
|
180
|
-
|
247
|
+
// TODO how can I get service address while release is not validated/activated ?!! -> user will check validity of release on its own
|
248
|
+
//if(_releaseManager.isValidRelease(releaseVersion)) {
|
249
|
+
service = _service[releaseVersion][serviceDomain];
|
250
|
+
//}
|
181
251
|
}
|
182
252
|
|
183
|
-
function
|
184
|
-
return _chainNft;
|
253
|
+
function getChainNftAddress() external view override returns (address) {
|
254
|
+
return address(_chainNft);
|
185
255
|
}
|
186
256
|
|
187
257
|
function getOwner() public view returns (address owner) {
|
188
258
|
return ownerOf(address(this));
|
189
259
|
}
|
190
260
|
|
261
|
+
// IERC165
|
262
|
+
|
263
|
+
function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
|
264
|
+
if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
|
265
|
+
return true;
|
266
|
+
}
|
267
|
+
|
268
|
+
return false;
|
269
|
+
}
|
270
|
+
|
191
271
|
// Internals
|
192
272
|
|
193
273
|
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
@@ -211,28 +291,14 @@ contract Registry is
|
|
211
291
|
}
|
212
292
|
|
213
293
|
address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
|
294
|
+
uint256 tokenId = _chainNft.getNextTokenId();
|
295
|
+
nftId = toNftId(tokenId);
|
214
296
|
|
215
|
-
// TODO does external call
|
216
|
-
// compute next nftId, do all checks and stores, mint() at most end...
|
217
|
-
uint256 mintedTokenId = _chainNft.mint(
|
218
|
-
info.initialOwner,
|
219
|
-
interceptor,
|
220
|
-
EMPTY_URI);
|
221
|
-
nftId = toNftId(mintedTokenId);
|
222
|
-
|
223
|
-
// TODO move nftId out of info struct
|
224
|
-
// getters by nftId -> return struct without nftId
|
225
|
-
// getters by address -> return nftId AND struct
|
226
297
|
info.nftId = nftId;
|
227
298
|
_info[nftId] = info;
|
228
299
|
|
229
300
|
if(info.objectAddress > address(0))
|
230
301
|
{
|
231
|
-
// parent is registered + object-parent types are valid
|
232
|
-
if(_isValidContractCombination[objectType][parentType] == false) {
|
233
|
-
revert InvalidTypesCombination(objectType, parentType);
|
234
|
-
}
|
235
|
-
|
236
302
|
address contractAddress = info.objectAddress;
|
237
303
|
|
238
304
|
if(_nftIdByAddress[contractAddress].gtz()) {
|
@@ -241,14 +307,16 @@ contract Registry is
|
|
241
307
|
|
242
308
|
_nftIdByAddress[contractAddress] = nftId;
|
243
309
|
}
|
244
|
-
else
|
245
|
-
{
|
246
|
-
if(_isValidObjectCombination[objectType][parentType] == false) {
|
247
|
-
revert InvalidTypesCombination(objectType, parentType);
|
248
|
-
}
|
249
|
-
}
|
250
310
|
|
251
311
|
emit LogRegistration(nftId, parentNftId, objectType, info.isInterceptor, info.objectAddress, info.initialOwner);
|
312
|
+
|
313
|
+
// calls nft receiver(1) and interceptor(2)
|
314
|
+
uint256 mintedTokenId = _chainNft.mint(
|
315
|
+
info.initialOwner,
|
316
|
+
interceptor,
|
317
|
+
EMPTY_URI);
|
318
|
+
assert(mintedTokenId == tokenId);
|
319
|
+
|
252
320
|
}
|
253
321
|
|
254
322
|
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
@@ -359,27 +427,41 @@ contract Registry is
|
|
359
427
|
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
360
428
|
// 3) DO NOT use REGISTRY as object type
|
361
429
|
// 2) DO NOT use PROTOCOL and "zeroObjectType"
|
362
|
-
function
|
430
|
+
function _setupValidCoreTypesAndCombinations()
|
363
431
|
private
|
364
432
|
{
|
433
|
+
_coreTypes[REGISTRY()] = true;
|
434
|
+
_coreTypes[SERVICE()] = true;
|
435
|
+
_coreTypes[TOKEN()] = true;
|
436
|
+
_coreTypes[INSTANCE()] = true;
|
437
|
+
_coreTypes[PRODUCT()] = true;
|
438
|
+
_coreTypes[POOL()] = true;
|
439
|
+
_coreTypes[DISTRIBUTION()] = true;
|
440
|
+
_coreTypes[POLICY()] = true;
|
441
|
+
_coreTypes[BUNDLE()] = true;
|
442
|
+
_coreTypes[STAKE()] = true;
|
443
|
+
|
365
444
|
// registry as parent, ONLY registry owner
|
366
|
-
|
367
|
-
|
445
|
+
//_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
|
446
|
+
_coreContractCombinations[TOKEN()][REGISTRY()] = true;
|
447
|
+
//_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
|
368
448
|
|
369
449
|
// registry as parent, ONLY approved
|
370
|
-
|
450
|
+
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
371
451
|
|
372
452
|
// instance as parent, ONLY approved
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
453
|
+
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
454
|
+
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
455
|
+
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
456
|
+
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
457
|
+
|
458
|
+
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
377
459
|
|
378
460
|
// product as parent, ONLY approved
|
379
|
-
|
461
|
+
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
380
462
|
|
381
463
|
// pool as parent, ONLY approved
|
382
|
-
|
383
|
-
|
464
|
+
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
465
|
+
_coreObjectCombinations[STAKE()][POOL()] = true;
|
384
466
|
}
|
385
|
-
}
|
467
|
+
}
|