@etherisc/gif-next 0.0.2-96b5b72-170 → 0.0.2-97aac30-275
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 +2 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +193 -164
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +114 -321
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +120 -82
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +72 -108
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +22 -48
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +25 -6
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +56 -22
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +53 -18
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -28
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +458 -331
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +133 -59
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +110 -32
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1103 -308
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- 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/mock/Dip.sol/Dip.dbg.json +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +662 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +718 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +69 -252
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +105 -55
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +8 -53
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +134 -86
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +121 -133
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +239 -92
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +170 -368
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +98 -72
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +69 -153
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +105 -31
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +95 -203
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +118 -56
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +7 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +7 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +81 -25
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +230 -107
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -55
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +164 -299
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +106 -92
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +139 -160
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +130 -40
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +334 -146
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +29 -214
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +88 -34
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +163 -61
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +256 -65
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +378 -67
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +272 -68
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +87 -35
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +799 -127
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -138
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +184 -11
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +908 -49
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +792 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +526 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +172 -4
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +867 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +80 -22
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +1 -11
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +21 -3
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +7 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +176 -24
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +31 -13
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +64 -16
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +21 -7
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +7 -1
- 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/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1103 -172
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +497 -49
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1247 -56
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +167 -30
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +605 -78
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +122 -28
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +34 -34
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +15 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +76 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
- package/contracts/distribution/Distribution.sol +27 -51
- package/contracts/distribution/DistributionService.sol +55 -106
- package/contracts/distribution/DistributionServiceManager.sol +9 -18
- package/contracts/distribution/IDistributionComponent.sol +3 -8
- package/contracts/distribution/IDistributionService.sol +2 -8
- package/contracts/instance/IInstance.sol +12 -7
- package/contracts/instance/IInstanceService.sol +13 -5
- package/contracts/instance/Instance.sol +30 -23
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +210 -141
- package/contracts/instance/InstanceReader.sol +64 -42
- package/contracts/instance/InstanceService.sol +141 -87
- package/contracts/instance/InstanceServiceManager.sol +10 -20
- package/contracts/instance/InstanceStore.sol +125 -55
- package/contracts/instance/base/BalanceStore.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/module/IAccess.sol +2 -10
- package/contracts/instance/module/IBundle.sol +1 -4
- package/contracts/instance/module/IComponents.sol +15 -4
- package/contracts/instance/module/IPolicy.sol +8 -2
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/IOracle.sol +20 -0
- package/contracts/oracle/IOracleComponent.sol +32 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +145 -0
- package/contracts/oracle/OracleService.sol +277 -0
- package/contracts/oracle/OracleServiceManager.sol +42 -0
- package/contracts/pool/BundleService.sol +63 -149
- package/contracts/pool/BundleServiceManager.sol +9 -18
- package/contracts/pool/IBundleService.sol +4 -16
- package/contracts/pool/IPoolComponent.sol +2 -4
- package/contracts/pool/IPoolService.sol +45 -9
- package/contracts/pool/Pool.sol +37 -40
- package/contracts/pool/PoolService.sol +195 -145
- package/contracts/pool/PoolServiceManager.sol +9 -18
- package/contracts/product/ApplicationService.sol +111 -43
- package/contracts/product/ApplicationServiceManager.sol +9 -6
- package/contracts/product/ClaimService.sol +21 -21
- package/contracts/product/ClaimServiceManager.sol +9 -6
- package/contracts/product/IApplicationService.sol +1 -1
- package/contracts/product/IClaimService.sol +7 -1
- package/contracts/product/IPolicyService.sol +6 -8
- package/contracts/product/IPricingService.sol +3 -1
- package/contracts/product/IProductComponent.sol +5 -4
- package/contracts/product/IProductService.sol +1 -8
- package/contracts/product/PolicyService.sol +226 -127
- package/contracts/product/PolicyServiceManager.sol +9 -21
- package/contracts/product/PricingService.sol +74 -48
- package/contracts/product/PricingServiceManager.sol +9 -18
- package/contracts/product/Product.sol +45 -47
- package/contracts/product/ProductService.sol +26 -112
- package/contracts/product/ProductServiceManager.sol +9 -21
- package/contracts/registry/ChainNft.sol +1 -0
- package/contracts/registry/IRegistry.sol +38 -24
- package/contracts/registry/IRegistryService.sol +31 -31
- package/contracts/registry/Registry.sol +176 -105
- package/contracts/registry/RegistryAdmin.sol +237 -0
- package/contracts/registry/RegistryService.sol +44 -82
- package/contracts/registry/RegistryServiceManager.sol +21 -23
- package/contracts/registry/ReleaseManager.sol +450 -210
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +261 -62
- package/contracts/shared/AccessManagerCustom.sol +736 -0
- package/contracts/shared/AccessManagerExtended.sol +470 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/shared/Component.sol +153 -49
- package/contracts/shared/ComponentService.sol +561 -93
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/ERC165.sol +1 -1
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +20 -8
- package/contracts/shared/IComponentService.sol +102 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +5 -11
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +6 -6
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
- package/contracts/shared/INftOwnable.sol +1 -1
- package/contracts/shared/IPolicyHolder.sol +6 -1
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +51 -178
- package/contracts/{instance/base → shared}/KeyValueStore.sol +30 -72
- package/contracts/{instance/base → shared}/Lifecycle.sol +12 -3
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +2 -13
- package/contracts/shared/PolicyHolder.sol +21 -13
- package/contracts/shared/ProxyManager.sol +31 -1
- package/contracts/shared/Registerable.sol +2 -2
- package/contracts/shared/Service.sol +7 -2
- package/contracts/staking/IStaking.sol +146 -8
- package/contracts/staking/IStakingService.sol +83 -39
- package/contracts/staking/StakeManagerLib.sol +179 -0
- package/contracts/staking/Staking.sol +503 -17
- package/contracts/staking/StakingManager.sol +22 -14
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +246 -44
- package/contracts/staking/StakingServiceManager.sol +8 -4
- package/contracts/staking/StakingStore.sol +572 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +20 -1
- package/contracts/type/Blocknumber.sol +20 -3
- package/contracts/type/Fee.sol +17 -16
- package/contracts/type/NftId.sol +14 -16
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +12 -10
- package/contracts/type/Referral.sol +1 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +18 -4
- package/contracts/type/Seconds.sol +27 -0
- package/contracts/type/StateId.sol +27 -2
- package/contracts/type/Timestamp.sol +6 -2
- package/contracts/type/Version.sol +1 -1
- package/package.json +4 -3
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/module/ISetup.sol +0 -33
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/registry/RegistryAccessManager.sol +0 -207
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -2,14 +2,20 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
6
|
|
6
|
-
import {
|
7
|
+
import {InitializableCustom} from "../shared/InitializableCustom.sol";
|
8
|
+
|
9
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
7
10
|
import {VersionPart} from "../type/Version.sol";
|
8
11
|
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
|
9
12
|
|
10
13
|
import {ChainNft} from "./ChainNft.sol";
|
11
14
|
import {IRegistry} from "./IRegistry.sol";
|
15
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
12
16
|
import {ReleaseManager} from "./ReleaseManager.sol";
|
17
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
18
|
+
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
13
19
|
|
14
20
|
// IMPORTANT
|
15
21
|
// Each NFT minted by registry is accosiated with:
|
@@ -22,9 +28,10 @@ import {ReleaseManager} from "./ReleaseManager.sol";
|
|
22
28
|
// 4) state object by regular service (POLICY, BUNDLE, STAKE)
|
23
29
|
|
24
30
|
contract Registry is
|
31
|
+
InitializableCustom,
|
25
32
|
IRegistry
|
26
33
|
{
|
27
|
-
address public
|
34
|
+
address public NFT_LOCK_ADDRESS = address(0x1);
|
28
35
|
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
29
36
|
uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
|
30
37
|
string public constant EMPTY_URI = "";
|
@@ -42,70 +49,64 @@ contract Registry is
|
|
42
49
|
mapping(ObjectType objectType => mapping(
|
43
50
|
ObjectType parentType => bool)) private _coreObjectCombinations;
|
44
51
|
|
45
|
-
|
46
|
-
ChainNft
|
52
|
+
RegistryAdmin public immutable _admin;
|
53
|
+
ChainNft public immutable _chainNft;
|
54
|
+
|
55
|
+
NftId public immutable _protocolNftId;
|
56
|
+
NftId public immutable _registryNftId;
|
57
|
+
NftId public _stakingNftId;
|
47
58
|
|
48
|
-
|
49
|
-
address
|
59
|
+
address public _tokenRegistryAddress;
|
60
|
+
address public _stakingAddress;
|
61
|
+
ReleaseManager public _releaseManager;
|
50
62
|
|
51
63
|
modifier onlyRegistryService() {
|
52
64
|
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
53
|
-
revert
|
65
|
+
revert ErrorRegistryCallerNotRegistryService();
|
54
66
|
}
|
55
67
|
_;
|
56
68
|
}
|
57
69
|
|
70
|
+
|
58
71
|
modifier onlyReleaseManager() {
|
59
72
|
if(msg.sender != address(_releaseManager)) {
|
60
|
-
revert
|
73
|
+
revert ErrorRegistryCallerNotReleaseManager();
|
61
74
|
}
|
62
75
|
_;
|
63
76
|
}
|
64
77
|
|
65
|
-
constructor() {
|
66
|
-
_releaseManager = ReleaseManager(msg.sender);
|
67
78
|
|
79
|
+
constructor(RegistryAdmin admin)
|
80
|
+
InitializableCustom()
|
81
|
+
{
|
82
|
+
_admin = admin;
|
68
83
|
// deploy NFT
|
69
84
|
_chainNft = new ChainNft(address(this));
|
70
85
|
|
71
86
|
// initial registry setup
|
72
|
-
_registerProtocol();
|
73
|
-
_registerRegistry();
|
87
|
+
_protocolNftId = _registerProtocol();
|
88
|
+
_registryNftId = _registerRegistry();
|
74
89
|
|
75
90
|
// set object types and object parent relations
|
76
91
|
_setupValidCoreTypesAndCombinations();
|
77
92
|
}
|
78
93
|
|
79
94
|
|
80
|
-
|
81
|
-
|
82
|
-
|
95
|
+
/// @dev wires release manager and token to registry (this contract).
|
96
|
+
/// MUST be called by release manager.
|
97
|
+
function initialize(
|
98
|
+
address releaseManager,
|
99
|
+
address tokenRegistry,
|
100
|
+
address staking
|
83
101
|
)
|
84
102
|
external
|
85
|
-
|
86
|
-
returns(NftId stakingNftId)
|
103
|
+
initializer()
|
87
104
|
{
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
}
|
92
|
-
|
93
|
-
_stakingAddress = stakingAddress;
|
94
|
-
uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
95
|
-
stakingNftId = toNftId(stakingId);
|
96
|
-
|
97
|
-
_nftIdByAddress[_stakingAddress] = stakingNftId;
|
98
|
-
_info[stakingNftId] = ObjectInfo({
|
99
|
-
nftId: stakingNftId,
|
100
|
-
parentNftId: _registryNftId,
|
101
|
-
objectType: STAKING(),
|
102
|
-
isInterceptor: false,
|
103
|
-
objectAddress: _stakingAddress,
|
104
|
-
initialOwner: stakingOwner,
|
105
|
-
data: ""
|
106
|
-
});
|
105
|
+
_releaseManager = ReleaseManager(releaseManager);
|
106
|
+
_tokenRegistryAddress = tokenRegistry;
|
107
|
+
_stakingAddress = staking;
|
107
108
|
|
108
|
-
|
109
|
+
_stakingNftId = _registerStaking();
|
109
110
|
}
|
110
111
|
|
111
112
|
function registerService(
|
@@ -117,7 +118,16 @@ contract Registry is
|
|
117
118
|
onlyReleaseManager
|
118
119
|
returns(NftId nftId)
|
119
120
|
{
|
121
|
+
address service = info.objectAddress;
|
120
122
|
/* must be guaranteed by release manager
|
123
|
+
if(service == address(0)) {
|
124
|
+
revert();
|
125
|
+
}
|
126
|
+
|
127
|
+
if(version.eqz()) {
|
128
|
+
revert();
|
129
|
+
}
|
130
|
+
|
121
131
|
if(info.objectType != SERVICE()) {
|
122
132
|
revert();
|
123
133
|
}
|
@@ -127,11 +137,15 @@ contract Registry is
|
|
127
137
|
info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
|
128
138
|
*/
|
129
139
|
|
130
|
-
if(
|
131
|
-
revert
|
140
|
+
if(domain.eqz()) {
|
141
|
+
revert ErrorRegistryDomainZero(service);
|
132
142
|
}
|
133
143
|
|
134
|
-
_service[version][domain]
|
144
|
+
if(_service[version][domain] > address(0)) {
|
145
|
+
revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
|
146
|
+
}
|
147
|
+
|
148
|
+
_service[version][domain] = service;
|
135
149
|
|
136
150
|
nftId = _register(info);
|
137
151
|
|
@@ -146,23 +160,17 @@ contract Registry is
|
|
146
160
|
ObjectType objectType = info.objectType;
|
147
161
|
ObjectType parentType = _info[info.parentNftId].objectType;
|
148
162
|
|
149
|
-
// TODO do not need it here -> SERVICE is no longer part of _coreContractCombinations
|
150
|
-
// no service registrations
|
151
|
-
if(objectType == SERVICE()) {
|
152
|
-
revert ServiceRegistration();
|
153
|
-
}
|
154
|
-
|
155
163
|
// only valid core types combinations
|
156
164
|
if(info.objectAddress == address(0))
|
157
165
|
{
|
158
166
|
if(_coreObjectCombinations[objectType][parentType] == false) {
|
159
|
-
revert
|
167
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
160
168
|
}
|
161
169
|
}
|
162
170
|
else
|
163
171
|
{
|
164
172
|
if(_coreContractCombinations[objectType][parentType] == false) {
|
165
|
-
revert
|
173
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
166
174
|
}
|
167
175
|
}
|
168
176
|
|
@@ -178,7 +186,7 @@ contract Registry is
|
|
178
186
|
ObjectType parentType = _info[info.parentNftId].objectType;
|
179
187
|
|
180
188
|
if(_coreTypes[objectType]) {
|
181
|
-
revert
|
189
|
+
revert ErrorRegistryCoreTypeRegistration();
|
182
190
|
}
|
183
191
|
|
184
192
|
if(
|
@@ -186,7 +194,7 @@ contract Registry is
|
|
186
194
|
parentType == REGISTRY() ||
|
187
195
|
parentType == SERVICE()
|
188
196
|
) {
|
189
|
-
revert
|
197
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
190
198
|
}
|
191
199
|
|
192
200
|
_register(info);
|
@@ -198,13 +206,7 @@ contract Registry is
|
|
198
206
|
return _releaseManager.getInitialVersion();
|
199
207
|
}
|
200
208
|
|
201
|
-
|
202
|
-
// need to be thought trough, not yet clear if necessary
|
203
|
-
// need to answer question: what is the latest version during the upgrade process?
|
204
|
-
// likely setting up a new gif version does not fit into a single tx
|
205
|
-
// in this case we might want to have a period where the latest version is
|
206
|
-
// in the process of being set up while the latest active version is 1 major release smaller
|
207
|
-
/// @dev latest GIF major version (might not yet be active)
|
209
|
+
/// @dev next GIF release version to be released
|
208
210
|
function getNextVersion() external view returns (VersionPart) {
|
209
211
|
return _releaseManager.getNextVersion();
|
210
212
|
}
|
@@ -222,14 +224,14 @@ contract Registry is
|
|
222
224
|
return _chainNft.totalSupply();
|
223
225
|
}
|
224
226
|
|
225
|
-
function getReleaseManagerAddress() external view returns (address) {
|
226
|
-
return address(_releaseManager);
|
227
|
-
}
|
228
|
-
|
229
227
|
function getNftId() external view returns (NftId nftId) {
|
230
228
|
return _registryNftId;
|
231
229
|
}
|
232
230
|
|
231
|
+
function getProtocolNftId() external view returns (NftId nftId) {
|
232
|
+
return _protocolNftId;
|
233
|
+
}
|
234
|
+
|
233
235
|
function getNftId(address object) external view returns (NftId id) {
|
234
236
|
return _nftIdByAddress[object];
|
235
237
|
}
|
@@ -267,30 +269,49 @@ contract Registry is
|
|
267
269
|
return _info[objectParentNftId].objectType == INSTANCE();
|
268
270
|
}
|
269
271
|
|
270
|
-
function
|
272
|
+
function isActiveRelease(VersionPart version) external view returns (bool)
|
271
273
|
{
|
272
|
-
return _releaseManager.
|
274
|
+
return _releaseManager.isActiveRelease(version);
|
273
275
|
}
|
274
276
|
|
275
277
|
function getStakingAddress() external view returns (address staking) {
|
278
|
+
//return getObjectInfo(_stakingNftId).objectAddress;
|
279
|
+
//return _info[_stakingNftId].objectAddress;
|
276
280
|
return _stakingAddress;
|
277
281
|
}
|
278
282
|
|
283
|
+
function getTokenRegistryAddress() external view returns (address tokenRegistry) {
|
284
|
+
return _tokenRegistryAddress;
|
285
|
+
}
|
286
|
+
|
279
287
|
function getServiceAddress(
|
280
288
|
ObjectType serviceDomain,
|
281
289
|
VersionPart releaseVersion
|
282
290
|
) external view returns (address service)
|
283
291
|
{
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
292
|
+
service = _service[releaseVersion][serviceDomain];
|
293
|
+
}
|
294
|
+
|
295
|
+
function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
|
296
|
+
return address(_releaseManager.getReleaseAccessManager(version));
|
297
|
+
}
|
298
|
+
|
299
|
+
function getReleaseManagerAddress() external view returns (address) {
|
300
|
+
return address(_releaseManager);
|
288
301
|
}
|
289
302
|
|
290
303
|
function getChainNftAddress() external view override returns (address) {
|
291
304
|
return address(_chainNft);
|
292
305
|
}
|
293
306
|
|
307
|
+
function getRegistryAdminAddress() external view returns (address) {
|
308
|
+
return address(_admin);
|
309
|
+
}
|
310
|
+
|
311
|
+
function getAuthority() external view returns (address) {
|
312
|
+
return _admin.authority();
|
313
|
+
}
|
314
|
+
|
294
315
|
function getOwner() public view returns (address owner) {
|
295
316
|
return ownerOf(address(this));
|
296
317
|
}
|
@@ -314,59 +335,76 @@ contract Registry is
|
|
314
335
|
returns(NftId nftId)
|
315
336
|
{
|
316
337
|
ObjectType objectType = info.objectType;
|
338
|
+
bool isInterceptor = info.isInterceptor;
|
339
|
+
address objectAddress = info.objectAddress;
|
340
|
+
address owner = info.initialOwner;
|
341
|
+
|
317
342
|
NftId parentNftId = info.parentNftId;
|
318
343
|
ObjectInfo memory parentInfo = _info[parentNftId];
|
319
344
|
ObjectType parentType = parentInfo.objectType; // see function header
|
320
345
|
address parentAddress = parentInfo.objectAddress;
|
321
346
|
|
322
347
|
// parent is contract -> need to check? -> check before minting
|
348
|
+
// special case: staking: to protocol possible as well
|
323
349
|
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
324
350
|
// special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
|
325
351
|
// special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
|
326
|
-
if(
|
327
|
-
|
352
|
+
if(objectType != STAKE()) {
|
353
|
+
if(parentAddress == address(0)) {
|
354
|
+
revert ErrorRegistryParentAddressZero();
|
355
|
+
}
|
328
356
|
}
|
329
357
|
|
330
|
-
address
|
331
|
-
|
332
|
-
|
358
|
+
address interceptorAddress = _getInterceptor(
|
359
|
+
isInterceptor,
|
360
|
+
objectType,
|
361
|
+
objectAddress,
|
362
|
+
parentInfo.isInterceptor,
|
363
|
+
parentAddress);
|
333
364
|
|
365
|
+
uint256 tokenId = _chainNft.getNextTokenId();
|
366
|
+
nftId = NftIdLib.toNftId(tokenId);
|
334
367
|
info.nftId = nftId;
|
335
368
|
_info[nftId] = info;
|
336
369
|
|
337
|
-
if(
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
if(_nftIdByAddress[contractAddress].gtz()) {
|
342
|
-
revert ContractAlreadyRegistered(contractAddress);
|
370
|
+
if(objectAddress > address(0)) {
|
371
|
+
if(_nftIdByAddress[objectAddress].gtz()) {
|
372
|
+
revert ErrorRegistryContractAlreadyRegistered(objectAddress);
|
343
373
|
}
|
344
374
|
|
345
|
-
_nftIdByAddress[
|
375
|
+
_nftIdByAddress[objectAddress] = nftId;
|
346
376
|
}
|
347
377
|
|
348
|
-
emit LogRegistration(nftId, parentNftId, objectType,
|
378
|
+
emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
|
349
379
|
|
350
380
|
// calls nft receiver(1) and interceptor(2)
|
351
381
|
uint256 mintedTokenId = _chainNft.mint(
|
352
|
-
|
353
|
-
|
382
|
+
owner,
|
383
|
+
interceptorAddress,
|
354
384
|
EMPTY_URI);
|
355
|
-
|
356
|
-
|
385
|
+
|
386
|
+
assert(mintedTokenId == tokenId);
|
357
387
|
}
|
358
388
|
|
359
389
|
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
390
|
+
/// special case: STAKES (parent may be any type) -> no intercept call
|
391
|
+
/// default case:
|
360
392
|
function _getInterceptor(
|
361
393
|
bool isInterceptor,
|
394
|
+
ObjectType objectType,
|
362
395
|
address objectAddress,
|
363
396
|
bool parentIsInterceptor,
|
364
397
|
address parentObjectAddress
|
365
398
|
)
|
366
399
|
internal
|
367
|
-
|
400
|
+
pure
|
368
401
|
returns (address interceptor)
|
369
402
|
{
|
403
|
+
// no intercepting calls for stakes
|
404
|
+
if (objectType == STAKE()) {
|
405
|
+
return address(0);
|
406
|
+
}
|
407
|
+
|
370
408
|
if (objectAddress == address(0)) {
|
371
409
|
if (parentIsInterceptor) {
|
372
410
|
return parentObjectAddress;
|
@@ -387,13 +425,14 @@ contract Registry is
|
|
387
425
|
/// @dev protocol registration used to anchor the dip ecosystem relations
|
388
426
|
function _registerProtocol()
|
389
427
|
private
|
428
|
+
returns (NftId protocolNftId)
|
390
429
|
{
|
391
430
|
uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
|
392
|
-
|
431
|
+
protocolNftId = NftIdLib.toNftId(protocolId);
|
393
432
|
|
394
433
|
_info[protocolNftId] = ObjectInfo({
|
395
434
|
nftId: protocolNftId,
|
396
|
-
parentNftId:
|
435
|
+
parentNftId: NftIdLib.zero(),
|
397
436
|
objectType: PROTOCOL(),
|
398
437
|
isInterceptor: false,
|
399
438
|
objectAddress: address(0),
|
@@ -408,19 +447,20 @@ contract Registry is
|
|
408
447
|
/// might also register the global registry when not on mainnet
|
409
448
|
function _registerRegistry()
|
410
449
|
private
|
450
|
+
returns (NftId registryNftId)
|
411
451
|
{
|
412
452
|
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
413
|
-
|
453
|
+
registryNftId = NftIdLib.toNftId(registryId);
|
414
454
|
NftId parentNftId;
|
415
455
|
|
416
456
|
if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
|
417
457
|
{// we're not the global registry
|
418
458
|
_registerGlobalRegistry();
|
419
|
-
parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
459
|
+
parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
420
460
|
}
|
421
461
|
else
|
422
462
|
{// we are global registry
|
423
|
-
parentNftId =
|
463
|
+
parentNftId = _protocolNftId;
|
424
464
|
}
|
425
465
|
|
426
466
|
_info[registryNftId] = ObjectInfo({
|
@@ -432,9 +472,8 @@ contract Registry is
|
|
432
472
|
initialOwner: NFT_LOCK_ADDRESS,
|
433
473
|
data: ""
|
434
474
|
});
|
435
|
-
_nftIdByAddress[address(this)] = registryNftId;
|
436
|
-
_registryNftId = registryNftId;
|
437
475
|
|
476
|
+
_nftIdByAddress[address(this)] = registryNftId;
|
438
477
|
_chainNft.mint(NFT_LOCK_ADDRESS, registryId);
|
439
478
|
}
|
440
479
|
|
@@ -443,11 +482,11 @@ contract Registry is
|
|
443
482
|
private
|
444
483
|
{
|
445
484
|
uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
|
446
|
-
NftId globalRegistryNftId = toNftId(globalRegistryId);
|
485
|
+
NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
|
447
486
|
|
448
487
|
_info[globalRegistryNftId] = ObjectInfo({
|
449
488
|
nftId: globalRegistryNftId,
|
450
|
-
parentNftId: toNftId(_chainNft.PROTOCOL_NFT_ID()),
|
489
|
+
parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
|
451
490
|
objectType: REGISTRY(),
|
452
491
|
isInterceptor: false,
|
453
492
|
objectAddress: address(0),
|
@@ -457,13 +496,36 @@ contract Registry is
|
|
457
496
|
|
458
497
|
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
459
498
|
}
|
499
|
+
// depends on _registryNftId and _stakingAddress
|
500
|
+
function _registerStaking()
|
501
|
+
private
|
502
|
+
returns (NftId stakingNftId)
|
503
|
+
{
|
504
|
+
address stakingOwner = IRegisterable(_stakingAddress).getOwner();
|
505
|
+
uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
506
|
+
stakingNftId = NftIdLib.toNftId(stakingId);
|
507
|
+
|
508
|
+
_info[stakingNftId] = ObjectInfo({
|
509
|
+
nftId: stakingNftId,
|
510
|
+
parentNftId: _registryNftId,
|
511
|
+
objectType: STAKING(),
|
512
|
+
isInterceptor: false,
|
513
|
+
objectAddress: _stakingAddress,
|
514
|
+
initialOwner: stakingOwner,
|
515
|
+
data: ""
|
516
|
+
});
|
517
|
+
|
518
|
+
_nftIdByAddress[_stakingAddress] = stakingNftId;
|
519
|
+
// reverts if nftId was already minted
|
520
|
+
_chainNft.mint(stakingOwner, stakingId);
|
521
|
+
}
|
460
522
|
|
461
523
|
/// @dev defines which object - parent types relations are allowed to register
|
462
524
|
// IMPORTANT:
|
463
525
|
// 1) EACH object type MUST have only one parent type across ALL mappings
|
464
526
|
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
465
527
|
// 3) DO NOT use REGISTRY as object type
|
466
|
-
// 2) DO NOT use PROTOCOL and "
|
528
|
+
// 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
|
467
529
|
function _setupValidCoreTypesAndCombinations()
|
468
530
|
private
|
469
531
|
{
|
@@ -474,32 +536,41 @@ contract Registry is
|
|
474
536
|
_coreTypes[PRODUCT()] = true;
|
475
537
|
_coreTypes[POOL()] = true;
|
476
538
|
_coreTypes[DISTRIBUTION()] = true;
|
539
|
+
_coreTypes[DISTRIBUTOR()] = true;
|
540
|
+
_coreTypes[ORACLE()] = true;
|
477
541
|
_coreTypes[POLICY()] = true;
|
478
542
|
_coreTypes[BUNDLE()] = true;
|
479
543
|
_coreTypes[STAKING()] = true;
|
480
544
|
_coreTypes[STAKE()] = true;
|
481
|
-
|
482
|
-
|
545
|
+
|
546
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
547
|
+
if(registryId == _chainNft.GLOBAL_REGISTRY_ID()) {
|
548
|
+
// we are global registry
|
549
|
+
// object is registry from different chain
|
550
|
+
// parent is global registry, this contract
|
551
|
+
_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
|
552
|
+
//_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
|
553
|
+
} else {
|
554
|
+
// we are not global registry
|
555
|
+
// object is local registry, this contract
|
556
|
+
// parent is global registry, object with 0 address or registry from mainnet???
|
557
|
+
}
|
483
558
|
_coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
|
484
559
|
_coreContractCombinations[TOKEN()][REGISTRY()] = true;
|
485
560
|
//_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
|
486
|
-
|
487
|
-
// registry as parent, ONLY approved
|
488
561
|
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
489
562
|
|
490
|
-
// instance as parent, ONLY approved
|
491
563
|
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
492
564
|
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
493
565
|
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
494
566
|
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
495
567
|
|
496
568
|
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
497
|
-
|
498
|
-
// product as parent, ONLY approved
|
499
569
|
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
500
|
-
|
501
|
-
// pool as parent, ONLY approved
|
502
570
|
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
503
|
-
|
571
|
+
|
572
|
+
// staking
|
573
|
+
_coreObjectCombinations[STAKE()][PROTOCOL()] = true;
|
574
|
+
_coreObjectCombinations[STAKE()][INSTANCE()] = true;
|
504
575
|
}
|
505
576
|
}
|