@etherisc/gif-next 0.0.2-cdac553-411 → 0.0.2-cdd6310-176
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 +72 -14
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +709 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +465 -553
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +453 -164
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +420 -2994
- 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 +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +649 -336
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +626 -297
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +365 -99
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -0
- 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 +4 -0
- package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
- 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 +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
- 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/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
- 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 +675 -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 +1034 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +310 -358
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +236 -190
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +266 -278
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → product/IProductService.sol/IProductService.json} +124 -166
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
- 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 +371 -218
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +461 -191
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
- 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 +577 -294
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +539 -324
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +335 -139
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1218 -0
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → shared/AccessManagerCustom.sol/AccessManagerCustom.json} +122 -11
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +227 -174
- 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/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
- 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 +4 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -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 +34 -30
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +97 -172
- 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/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 +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
- 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 +115 -29
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +201 -162
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
- 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 +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -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 +4 -0
- package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- 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 +4 -0
- package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
- package/contracts/distribution/Distribution.sol +261 -0
- package/contracts/distribution/DistributionService.sol +297 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/distribution/IDistributionComponent.sol +66 -0
- package/contracts/distribution/IDistributionService.sol +81 -0
- package/contracts/instance/BundleManager.sol +126 -0
- package/contracts/instance/IInstance.sol +72 -24
- package/contracts/instance/IInstanceService.sol +82 -15
- package/contracts/instance/Instance.sol +182 -362
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
- package/contracts/instance/InstanceReader.sol +167 -81
- package/contracts/instance/InstanceService.sol +377 -118
- package/contracts/instance/InstanceServiceManager.sol +12 -24
- package/contracts/instance/InstanceStore.sol +269 -0
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/base/Cloneable.sol +28 -0
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectManager.sol +80 -0
- package/contracts/instance/module/IAccess.sol +29 -21
- package/contracts/instance/module/IBundle.sol +8 -8
- package/contracts/instance/module/IComponents.sol +52 -0
- package/contracts/instance/module/IDistribution.sol +7 -4
- package/contracts/instance/module/IPolicy.sol +56 -17
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
- 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 +278 -0
- package/contracts/oracle/OracleServiceManager.sol +42 -0
- package/contracts/pool/BundleService.sol +296 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +106 -0
- package/contracts/pool/IPoolComponent.sol +112 -0
- package/contracts/pool/IPoolService.sol +150 -0
- package/contracts/pool/Pool.sol +299 -0
- package/contracts/pool/PoolService.sol +452 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +254 -0
- package/contracts/product/ApplicationServiceManager.sol +38 -0
- package/contracts/product/ClaimService.sol +442 -0
- package/contracts/product/ClaimServiceManager.sol +38 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +99 -0
- package/contracts/product/IPolicyService.sol +78 -0
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +42 -0
- package/contracts/product/IProductService.sol +33 -0
- package/contracts/product/PolicyService.sol +475 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +300 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/product/Product.sol +377 -0
- package/contracts/product/ProductService.sol +124 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +15 -0
- package/contracts/registry/IRegistry.sol +75 -45
- package/contracts/registry/IRegistryService.sol +52 -16
- package/contracts/registry/IServiceAuthorization.sol +35 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +374 -281
- package/contracts/registry/RegistryAdmin.sol +333 -0
- package/contracts/registry/RegistryService.sol +124 -257
- package/contracts/registry/RegistryServiceManager.sol +24 -51
- package/contracts/registry/ReleaseManager.sol +527 -0
- package/contracts/registry/ServiceAuthorization.sol +86 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/registry/TokenRegistry.sol +261 -57
- package/contracts/shared/AccessAdmin.sol +759 -0
- package/contracts/{instance/AccessManagerSimple.sol → shared/AccessManagerCustom.sol} +281 -232
- package/contracts/shared/AccessManagerExtended.sol +481 -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 +281 -0
- package/contracts/shared/ComponentService.sol +617 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/ERC165.sol +15 -13
- package/contracts/shared/IAccessAdmin.sol +168 -0
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +70 -0
- package/contracts/shared/IComponentService.sol +102 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
- package/contracts/shared/INftOwnable.sol +13 -12
- package/contracts/shared/IPolicyHolder.sol +45 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +15 -5
- package/contracts/shared/IVersionable.sol +5 -48
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +144 -0
- package/contracts/shared/KeyValueStore.sol +127 -0
- package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +60 -89
- package/contracts/shared/PolicyHolder.sol +102 -0
- package/contracts/shared/ProxyManager.sol +131 -26
- package/contracts/shared/Registerable.sol +26 -41
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +57 -28
- package/contracts/shared/TokenHandler.sol +37 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +153 -0
- package/contracts/staking/StakeManagerLib.sol +231 -0
- package/contracts/staking/Staking.sol +513 -0
- package/contracts/staking/StakingManager.sol +54 -0
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +411 -0
- package/contracts/staking/StakingServiceManager.sol +44 -0
- package/contracts/staking/StakingStore.sol +613 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/{types → type}/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +128 -0
- package/contracts/{types → type}/Blocknumber.sol +21 -3
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/{types → type}/DistributorType.sol +2 -2
- package/contracts/{types → type}/Fee.sol +33 -23
- package/contracts/{types → type}/NftId.sol +21 -15
- package/contracts/type/NftIdSet.sol +62 -0
- package/contracts/type/ObjectType.sol +241 -0
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +5 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/{types → type}/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +201 -0
- package/contracts/type/Seconds.sol +81 -0
- package/contracts/type/Selector.sol +102 -0
- package/contracts/{types → type}/StateId.sol +34 -4
- package/contracts/type/String.sol +53 -0
- package/contracts/{types → type}/Timestamp.sol +23 -14
- package/contracts/{types → type}/UFixed.sol +1 -0
- package/contracts/{types → type}/Version.sol +2 -1
- package/package.json +5 -5
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -670
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -204
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.json +0 -873
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.json +0 -775
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
- 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/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 -502
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
- 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/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -657
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -436
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -796
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -91
- package/contracts/components/Distribution.sol +0 -166
- package/contracts/components/IBaseComponent.sol +0 -25
- package/contracts/components/IDistributionComponent.sol +0 -46
- package/contracts/components/IPoolComponent.sol +0 -62
- package/contracts/components/IProductComponent.sol +0 -35
- package/contracts/components/Pool.sol +0 -247
- package/contracts/components/Product.sol +0 -297
- 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/AccessManagedSimple.sol +0 -115
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/InstanceAccessManager.sol +0 -288
- package/contracts/instance/base/ComponentServiceBase.sol +0 -41
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/module/ISetup.sol +0 -44
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/DistributionService.sol +0 -105
- package/contracts/instance/service/DistributionServiceManager.sol +0 -53
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/instance/service/IDistributionService.sol +0 -12
- package/contracts/instance/service/IPoolService.sol +0 -37
- package/contracts/instance/service/IProductService.sol +0 -107
- package/contracts/instance/service/PoolService.sol +0 -211
- package/contracts/instance/service/PoolServiceManager.sol +0 -53
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -24
- package/contracts/test/TestToken.sol +0 -26
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NftIdSet.sol +0 -60
- package/contracts/types/NumberId.sol +0 -52
- package/contracts/types/ObjectType.sol +0 -152
- package/contracts/types/RoleId.sol +0 -89
- /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,241 +1,232 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {
|
4
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
6
6
|
|
7
|
-
import {
|
8
|
-
import {IRegistry} from "./IRegistry.sol";
|
9
|
-
import {NftId, toNftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
|
10
|
-
import {Version, VersionPart, VersionLib, VersionPartLib} from "../types/Version.sol";
|
11
|
-
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
|
12
|
-
import {ITransferInterceptor} from "./ITransferInterceptor.sol";
|
7
|
+
import {InitializableCustom} from "../shared/InitializableCustom.sol";
|
13
8
|
|
14
|
-
import {
|
9
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
10
|
+
import {VersionPart} from "../type/Version.sol";
|
11
|
+
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
|
15
12
|
|
13
|
+
import {ChainNft} from "./ChainNft.sol";
|
14
|
+
import {IRegistry} from "./IRegistry.sol";
|
15
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
16
|
+
import {ReleaseManager} from "./ReleaseManager.sol";
|
17
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
18
|
+
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
16
19
|
|
17
20
|
// IMPORTANT
|
18
21
|
// Each NFT minted by registry is accosiated with:
|
19
22
|
// 1) NFT owner
|
20
23
|
// 2) registred contract OR object stored in registered (parent) contract
|
21
24
|
// Four registration flows:
|
22
|
-
// 1)
|
23
|
-
// 2)
|
24
|
-
// 3) IRegisterable address by
|
25
|
-
// 4) state object by
|
25
|
+
// 1) IService address by release manager (SERVICE of domain SERVICE aka registry service aka release creation)
|
26
|
+
// 2) IService address by release manager (SERVICE of domain !SERVICE aka regular service)
|
27
|
+
// 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
|
28
|
+
// 4) state object by regular service (POLICY, BUNDLE, STAKE)
|
26
29
|
|
27
30
|
contract Registry is
|
28
|
-
|
31
|
+
InitializableCustom,
|
29
32
|
IRegistry
|
30
33
|
{
|
31
|
-
|
32
|
-
|
33
|
-
uint256 public constant
|
34
|
+
address public NFT_LOCK_ADDRESS = address(0x1);
|
35
|
+
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
36
|
+
uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
|
34
37
|
string public constant EMPTY_URI = "";
|
35
38
|
|
36
|
-
|
39
|
+
mapping(NftId nftId => ObjectInfo info) private _info;
|
40
|
+
mapping(address object => NftId nftId) private _nftIdByAddress;
|
37
41
|
|
38
|
-
mapping(
|
39
|
-
mapping(address object => NftId nftId) internal _nftIdByAddress;
|
42
|
+
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
40
43
|
|
41
|
-
mapping(
|
42
|
-
ObjectType objectType => bool)) internal _isApproved;
|
44
|
+
mapping(ObjectType objectType => bool) private _coreTypes;
|
43
45
|
|
44
46
|
mapping(ObjectType objectType => mapping(
|
45
|
-
ObjectType parentType => bool))
|
47
|
+
ObjectType parentType => bool)) private _coreContractCombinations;
|
46
48
|
|
47
49
|
mapping(ObjectType objectType => mapping(
|
48
|
-
ObjectType parentType => bool))
|
49
|
-
|
50
|
-
mapping(address token => mapping(
|
51
|
-
VersionPart majorVersion => bool isActive)) internal _tokenIsActive;
|
50
|
+
ObjectType parentType => bool)) private _coreObjectCombinations;
|
52
51
|
|
53
|
-
|
54
|
-
|
55
|
-
VersionPart majorVersion => address service)) internal _service;
|
52
|
+
RegistryAdmin public immutable _admin;
|
53
|
+
ChainNft public immutable _chainNft;
|
56
54
|
|
57
|
-
NftId
|
58
|
-
NftId
|
59
|
-
|
55
|
+
NftId public immutable _protocolNftId;
|
56
|
+
NftId public immutable _registryNftId;
|
57
|
+
NftId public _stakingNftId;
|
60
58
|
|
59
|
+
address public _tokenRegistryAddress;
|
60
|
+
address public _stakingAddress;
|
61
|
+
ReleaseManager public _releaseManager;
|
61
62
|
|
62
|
-
|
63
|
-
|
64
|
-
|
63
|
+
// TODO
|
64
|
+
// 1). Registry and ReleaseManager must be treated as whole single entity.
|
65
|
+
// But current limitations of EVM does not allow it -> require it to be splitted
|
66
|
+
// 2). Keep onlyReleaseManager modifier
|
67
|
+
// 3). Delete onlyRegistryService in favor of restricted, introduce aditional "domain role", REGISTRY_SERVICE_ROLE
|
68
|
+
// 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
|
69
|
+
modifier onlyRegistryService() {
|
70
|
+
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
71
|
+
revert ErrorRegistryCallerNotRegistryService();
|
65
72
|
}
|
66
73
|
_;
|
67
74
|
}
|
68
75
|
|
69
|
-
|
70
|
-
|
71
|
-
if(msg.sender !=
|
72
|
-
revert
|
76
|
+
|
77
|
+
modifier onlyReleaseManager() {
|
78
|
+
if(msg.sender != address(_releaseManager)) {
|
79
|
+
revert ErrorRegistryCallerNotReleaseManager();
|
73
80
|
}
|
74
81
|
_;
|
75
82
|
}
|
76
83
|
|
77
|
-
constructor(address registryOwner, VersionPart majorVersion)
|
78
|
-
{
|
79
|
-
require(registryOwner > address(0), "Registry: registry owner is 0");
|
80
|
-
|
81
|
-
// major version at constructor time
|
82
|
-
_majorVersion = VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT);
|
83
|
-
emit LogInitialMajorVersionSet(_majorVersion);
|
84
84
|
|
85
|
+
constructor(RegistryAdmin admin)
|
86
|
+
InitializableCustom()
|
87
|
+
{
|
88
|
+
_admin = admin;
|
85
89
|
// deploy NFT
|
86
|
-
_chainNft = new ChainNft(address(this))
|
90
|
+
_chainNft = new ChainNft(address(this));
|
87
91
|
|
88
92
|
// initial registry setup
|
89
|
-
_registerProtocol();
|
90
|
-
_registerRegistry(
|
91
|
-
_registerRegistryService(registryOwner);
|
92
|
-
|
93
|
-
// set object parent relations
|
94
|
-
_setupValidObjectParentCombinations();
|
93
|
+
_protocolNftId = _registerProtocol();
|
94
|
+
_registryNftId = _registerRegistry();
|
95
95
|
|
96
|
-
|
96
|
+
// set object types and object parent relations
|
97
|
+
_setupValidCoreTypesAndCombinations();
|
97
98
|
}
|
98
99
|
|
99
|
-
// from IRegistry
|
100
100
|
|
101
|
-
/// @dev
|
102
|
-
|
101
|
+
/// @dev wires release manager and token to registry (this contract).
|
102
|
+
/// MUST be called by release manager.
|
103
|
+
function initialize(
|
104
|
+
address releaseManager,
|
105
|
+
address tokenRegistry,
|
106
|
+
address staking
|
107
|
+
)
|
103
108
|
external
|
104
|
-
|
109
|
+
initializer()
|
105
110
|
{
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
if (newMax <= oldMax || newMax - oldMax != 1) {
|
110
|
-
revert MajorVersionMaxIncreaseInvalid(newMajorVersion, _majorVersion);
|
111
|
-
}
|
111
|
+
_releaseManager = ReleaseManager(releaseManager);
|
112
|
+
_tokenRegistryAddress = tokenRegistry;
|
113
|
+
_stakingAddress = staking;
|
112
114
|
|
113
|
-
|
114
|
-
emit LogMajorVersionSet(_majorVersion);
|
115
|
+
_stakingNftId = _registerStaking();
|
115
116
|
}
|
116
117
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
118
|
+
function registerService(
|
119
|
+
ObjectInfo memory info,
|
120
|
+
VersionPart version,
|
121
|
+
ObjectType domain
|
122
|
+
)
|
121
123
|
external
|
122
|
-
|
124
|
+
onlyReleaseManager
|
123
125
|
returns(NftId nftId)
|
124
126
|
{
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
address parentAddress = parentInfo.objectAddress;
|
130
|
-
|
131
|
-
// parent is contract -> need to check? -> check before minting
|
132
|
-
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
133
|
-
// special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
|
134
|
-
// special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
|
135
|
-
if(parentAddress == address(0)) {
|
136
|
-
revert ZeroParentAddress();
|
127
|
+
address service = info.objectAddress;
|
128
|
+
/* must be guaranteed by release manager
|
129
|
+
if(service == address(0)) {
|
130
|
+
revert();
|
137
131
|
}
|
138
132
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
uint256 mintedTokenId = _chainNft.mint(
|
143
|
-
info.initialOwner,
|
144
|
-
interceptor,
|
145
|
-
EMPTY_URI);
|
146
|
-
nftId = toNftId(mintedTokenId);
|
133
|
+
if(version.eqz()) {
|
134
|
+
revert();
|
135
|
+
}
|
147
136
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
info.
|
152
|
-
|
137
|
+
if(info.objectType != SERVICE()) {
|
138
|
+
revert();
|
139
|
+
}
|
140
|
+
if(info.parentType != REGISTRY()) {
|
141
|
+
revert();
|
142
|
+
}
|
143
|
+
info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
|
144
|
+
*/
|
145
|
+
|
146
|
+
if(domain.eqz()) {
|
147
|
+
revert ErrorRegistryDomainZero(service);
|
148
|
+
}
|
153
149
|
|
154
|
-
if(
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
revert InvalidTypesCombination(objectType, parentType);
|
160
|
-
}
|
150
|
+
if(_service[version][domain] > address(0)) {
|
151
|
+
revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
|
152
|
+
}
|
153
|
+
|
154
|
+
_service[version][domain] = service;
|
161
155
|
|
162
|
-
|
156
|
+
nftId = _register(info);
|
163
157
|
|
164
|
-
|
165
|
-
|
166
|
-
}
|
158
|
+
emit LogServiceRegistration(version, domain);
|
159
|
+
}
|
167
160
|
|
168
|
-
|
161
|
+
function register(ObjectInfo memory info)
|
162
|
+
external
|
163
|
+
onlyRegistryService
|
164
|
+
returns(NftId nftId)
|
165
|
+
{
|
166
|
+
ObjectType objectType = info.objectType;
|
167
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
169
168
|
|
170
|
-
|
171
|
-
|
172
|
-
|
169
|
+
// only valid core types combinations
|
170
|
+
if(info.objectAddress == address(0))
|
171
|
+
{
|
172
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
173
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
173
174
|
}
|
174
175
|
}
|
175
176
|
else
|
176
177
|
{
|
177
|
-
if(
|
178
|
-
revert
|
178
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
179
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
179
180
|
}
|
180
181
|
}
|
181
182
|
|
182
|
-
|
183
|
+
nftId = _register(info);
|
183
184
|
}
|
184
185
|
|
185
|
-
|
186
|
-
// component owner is responsible for token selection and operations
|
187
|
-
// service MUST deny registration of component with inactive token
|
188
|
-
function setTokenActive(address token, VersionPart majorVersion, bool active)
|
186
|
+
function registerWithCustomType(ObjectInfo memory info)
|
189
187
|
external
|
190
|
-
|
188
|
+
onlyRegistryService
|
189
|
+
returns(NftId nftId)
|
191
190
|
{
|
192
|
-
|
193
|
-
|
194
|
-
if (info.nftId.eqz()) {
|
195
|
-
revert TokenNotRegistered(token);
|
196
|
-
}
|
191
|
+
ObjectType objectType = info.objectType;
|
192
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
197
193
|
|
198
|
-
|
199
|
-
|
200
|
-
revert NotToken(token);
|
194
|
+
if(_coreTypes[objectType]) {
|
195
|
+
revert ErrorRegistryCoreTypeRegistration();
|
201
196
|
}
|
202
197
|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
revert
|
198
|
+
if(
|
199
|
+
parentType == PROTOCOL() ||
|
200
|
+
parentType == REGISTRY() ||
|
201
|
+
parentType == SERVICE()
|
202
|
+
) {
|
203
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
209
204
|
}
|
210
205
|
|
211
|
-
|
212
|
-
|
213
|
-
emit LogTokenStateSet(token, majorVersion, active);
|
206
|
+
_register(info);
|
214
207
|
}
|
215
208
|
|
209
|
+
|
216
210
|
/// @dev earliest GIF major version
|
217
|
-
function
|
218
|
-
return
|
211
|
+
function getInitialVersion() external view returns (VersionPart) {
|
212
|
+
return _releaseManager.getInitialVersion();
|
219
213
|
}
|
220
214
|
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
// likely setting up a new gif version does not fit into a single tx
|
225
|
-
// in this case we might want to have a period where the latest version is
|
226
|
-
// in the process of being set up while the latest active version is 1 major release smaller
|
227
|
-
/// @dev latest GIF major version (might not yet be active)
|
228
|
-
function getMajorVersionMax() external view returns (VersionPart) {
|
229
|
-
return _majorVersion;
|
215
|
+
/// @dev next GIF release version to be released
|
216
|
+
function getNextVersion() external view returns (VersionPart) {
|
217
|
+
return _releaseManager.getNextVersion();
|
230
218
|
}
|
231
219
|
|
232
220
|
/// @dev latest active GIF release version
|
233
|
-
function
|
234
|
-
return
|
221
|
+
function getLatestVersion() external view returns (VersionPart) {
|
222
|
+
return _releaseManager.getLatestVersion();
|
235
223
|
}
|
236
|
-
|
237
224
|
|
238
|
-
function
|
225
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
|
226
|
+
return _releaseManager.getReleaseInfo(version);
|
227
|
+
}
|
228
|
+
|
229
|
+
function getObjectCount() external view returns (uint256) {
|
239
230
|
return _chainNft.totalSupply();
|
240
231
|
}
|
241
232
|
|
@@ -243,99 +234,183 @@ contract Registry is
|
|
243
234
|
return _registryNftId;
|
244
235
|
}
|
245
236
|
|
246
|
-
function
|
237
|
+
function getProtocolNftId() external view returns (NftId nftId) {
|
238
|
+
return _protocolNftId;
|
239
|
+
}
|
240
|
+
|
241
|
+
function getNftId(address object) external view returns (NftId id) {
|
247
242
|
return _nftIdByAddress[object];
|
248
243
|
}
|
249
244
|
|
250
|
-
function ownerOf(NftId nftId) public view
|
245
|
+
function ownerOf(NftId nftId) public view returns (address) {
|
251
246
|
return _chainNft.ownerOf(nftId.toInt());
|
252
247
|
}
|
253
248
|
|
254
249
|
function ownerOf(address contractAddress) public view returns (address) {
|
255
|
-
|
256
250
|
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
257
251
|
}
|
258
252
|
|
259
|
-
function getObjectInfo(NftId nftId) external view
|
253
|
+
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
260
254
|
return _info[nftId];
|
261
255
|
}
|
262
256
|
|
263
|
-
function getObjectInfo(address object) external view
|
264
|
-
|
257
|
+
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
265
258
|
return _info[_nftIdByAddress[object]];
|
266
259
|
}
|
267
260
|
|
268
|
-
function isRegistered(NftId nftId) public view
|
261
|
+
function isRegistered(NftId nftId) public view returns (bool) {
|
269
262
|
return _info[nftId].objectType.gtz();
|
270
263
|
}
|
271
264
|
|
272
|
-
function isRegistered(address object) external view
|
265
|
+
function isRegistered(address object) external view returns (bool) {
|
273
266
|
return _nftIdByAddress[object].gtz();
|
274
267
|
}
|
275
268
|
|
276
|
-
function
|
277
|
-
return
|
269
|
+
function isRegisteredService(address object) external view returns (bool) {
|
270
|
+
return _info[_nftIdByAddress[object]].objectType == SERVICE();
|
271
|
+
}
|
272
|
+
|
273
|
+
function isRegisteredComponent(address object) external view returns (bool) {
|
274
|
+
NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
|
275
|
+
return _info[objectParentNftId].objectType == INSTANCE();
|
278
276
|
}
|
279
277
|
|
280
|
-
function
|
281
|
-
|
278
|
+
function isActiveRelease(VersionPart version) external view returns (bool)
|
279
|
+
{
|
280
|
+
return _releaseManager.isActiveRelease(version);
|
281
|
+
}
|
282
|
+
|
283
|
+
function getStakingAddress() external view returns (address staking) {
|
284
|
+
//return getObjectInfo(_stakingNftId).objectAddress;
|
285
|
+
//return _info[_stakingNftId].objectAddress;
|
286
|
+
return _stakingAddress;
|
287
|
+
}
|
288
|
+
|
289
|
+
function getTokenRegistryAddress() external view returns (address tokenRegistry) {
|
290
|
+
return _tokenRegistryAddress;
|
282
291
|
}
|
283
292
|
|
284
|
-
// special case to retrive a gif service
|
285
293
|
function getServiceAddress(
|
286
|
-
|
287
|
-
VersionPart
|
288
|
-
) external view returns (address)
|
294
|
+
ObjectType serviceDomain,
|
295
|
+
VersionPart releaseVersion
|
296
|
+
) external view returns (address service)
|
289
297
|
{
|
290
|
-
|
291
|
-
|
298
|
+
service = _service[releaseVersion][serviceDomain];
|
299
|
+
}
|
300
|
+
|
301
|
+
function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
|
302
|
+
return address(_releaseManager.getReleaseAccessManager(version));
|
303
|
+
}
|
304
|
+
|
305
|
+
function getReleaseManagerAddress() external view returns (address) {
|
306
|
+
return address(_releaseManager);
|
292
307
|
}
|
293
308
|
|
294
|
-
function
|
295
|
-
return _chainNft;
|
309
|
+
function getChainNftAddress() external view override returns (address) {
|
310
|
+
return address(_chainNft);
|
311
|
+
}
|
312
|
+
|
313
|
+
function getRegistryAdminAddress() external view returns (address) {
|
314
|
+
return address(_admin);
|
315
|
+
}
|
316
|
+
|
317
|
+
function getAuthority() external view returns (address) {
|
318
|
+
return _admin.authority();
|
296
319
|
}
|
297
320
|
|
298
321
|
function getOwner() public view returns (address owner) {
|
299
322
|
return ownerOf(address(this));
|
300
323
|
}
|
301
324
|
|
325
|
+
// IERC165
|
326
|
+
|
327
|
+
function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
|
328
|
+
if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
|
329
|
+
return true;
|
330
|
+
}
|
331
|
+
|
332
|
+
return false;
|
333
|
+
}
|
334
|
+
|
302
335
|
// Internals
|
303
336
|
|
304
|
-
|
337
|
+
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
338
|
+
// TODO registration of precompile addresses
|
339
|
+
function _register(ObjectInfo memory info)
|
305
340
|
internal
|
341
|
+
returns(NftId nftId)
|
306
342
|
{
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
343
|
+
ObjectType objectType = info.objectType;
|
344
|
+
bool isInterceptor = info.isInterceptor;
|
345
|
+
address objectAddress = info.objectAddress;
|
346
|
+
address owner = info.initialOwner;
|
347
|
+
|
348
|
+
NftId parentNftId = info.parentNftId;
|
349
|
+
ObjectInfo memory parentInfo = _info[parentNftId];
|
350
|
+
ObjectType parentType = parentInfo.objectType; // see function header
|
351
|
+
address parentAddress = parentInfo.objectAddress;
|
352
|
+
|
353
|
+
// parent is contract -> need to check? -> check before minting
|
354
|
+
// special case: staking: to protocol possible as well
|
355
|
+
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
356
|
+
// special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
|
357
|
+
// special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
|
358
|
+
if(objectType != STAKE()) {
|
359
|
+
if(parentAddress == address(0)) {
|
360
|
+
revert ErrorRegistryParentAddressZero();
|
361
|
+
}
|
316
362
|
}
|
317
|
-
|
318
|
-
|
319
|
-
|
363
|
+
|
364
|
+
address interceptorAddress = _getInterceptor(
|
365
|
+
isInterceptor,
|
366
|
+
objectType,
|
367
|
+
objectAddress,
|
368
|
+
parentInfo.isInterceptor,
|
369
|
+
parentAddress);
|
370
|
+
|
371
|
+
uint256 tokenId = _chainNft.getNextTokenId();
|
372
|
+
nftId = NftIdLib.toNftId(tokenId);
|
373
|
+
info.nftId = nftId;
|
374
|
+
_info[nftId] = info;
|
375
|
+
|
376
|
+
if(objectAddress > address(0)) {
|
377
|
+
if(_nftIdByAddress[objectAddress].gtz()) {
|
378
|
+
revert ErrorRegistryContractAlreadyRegistered(objectAddress);
|
379
|
+
}
|
380
|
+
|
381
|
+
_nftIdByAddress[objectAddress] = nftId;
|
320
382
|
}
|
321
383
|
|
322
|
-
|
323
|
-
_service[serviceNameHash][majorVersion] = info.objectAddress;
|
384
|
+
emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
|
324
385
|
|
325
|
-
|
386
|
+
// calls nft receiver(1) and interceptor(2)
|
387
|
+
uint256 mintedTokenId = _chainNft.mint(
|
388
|
+
owner,
|
389
|
+
interceptorAddress,
|
390
|
+
EMPTY_URI);
|
391
|
+
|
392
|
+
assert(mintedTokenId == tokenId);
|
326
393
|
}
|
327
394
|
|
328
395
|
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
396
|
+
/// special case: STAKES (parent may be any type) -> no intercept call
|
397
|
+
/// default case:
|
329
398
|
function _getInterceptor(
|
330
399
|
bool isInterceptor,
|
400
|
+
ObjectType objectType,
|
331
401
|
address objectAddress,
|
332
402
|
bool parentIsInterceptor,
|
333
403
|
address parentObjectAddress
|
334
404
|
)
|
335
405
|
internal
|
336
|
-
|
406
|
+
pure
|
337
407
|
returns (address interceptor)
|
338
408
|
{
|
409
|
+
// no intercepting calls for stakes
|
410
|
+
if (objectType == STAKE()) {
|
411
|
+
return address(0);
|
412
|
+
}
|
413
|
+
|
339
414
|
if (objectAddress == address(0)) {
|
340
415
|
if (parentIsInterceptor) {
|
341
416
|
return parentObjectAddress;
|
@@ -355,106 +430,100 @@ contract Registry is
|
|
355
430
|
|
356
431
|
/// @dev protocol registration used to anchor the dip ecosystem relations
|
357
432
|
function _registerProtocol()
|
358
|
-
|
433
|
+
private
|
434
|
+
returns (NftId protocolNftId)
|
359
435
|
{
|
360
436
|
uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
|
361
|
-
|
437
|
+
protocolNftId = NftIdLib.toNftId(protocolId);
|
438
|
+
|
439
|
+
_info[protocolNftId] = ObjectInfo({
|
440
|
+
nftId: protocolNftId,
|
441
|
+
parentNftId: NftIdLib.zero(),
|
442
|
+
objectType: PROTOCOL(),
|
443
|
+
isInterceptor: false,
|
444
|
+
objectAddress: address(0),
|
445
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
446
|
+
data: ""
|
447
|
+
});
|
362
448
|
|
363
449
|
_chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
|
364
|
-
|
365
|
-
_info[protocolNftId] = ObjectInfo(
|
366
|
-
protocolNftId,
|
367
|
-
zeroNftId(), // parent
|
368
|
-
PROTOCOL(),
|
369
|
-
false, // isInterceptor
|
370
|
-
address(0), // objectAddress
|
371
|
-
NFT_LOCK_ADDRESS,// initialOwner
|
372
|
-
""
|
373
|
-
);
|
374
450
|
}
|
375
451
|
|
376
452
|
/// @dev registry registration
|
377
453
|
/// might also register the global registry when not on mainnet
|
378
|
-
function _registerRegistry(
|
379
|
-
|
454
|
+
function _registerRegistry()
|
455
|
+
private
|
456
|
+
returns (NftId registryNftId)
|
380
457
|
{
|
381
|
-
uint256 registryId = _chainNft.calculateTokenId(
|
382
|
-
|
383
|
-
|
458
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
459
|
+
registryNftId = NftIdLib.toNftId(registryId);
|
384
460
|
NftId parentNftId;
|
385
461
|
|
386
462
|
if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
|
387
463
|
{// we're not the global registry
|
388
464
|
_registerGlobalRegistry();
|
389
|
-
parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
465
|
+
parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
390
466
|
}
|
391
467
|
else
|
392
468
|
{// we are global registry
|
393
|
-
parentNftId =
|
469
|
+
parentNftId = _protocolNftId;
|
394
470
|
}
|
395
471
|
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
);
|
472
|
+
_info[registryNftId] = ObjectInfo({
|
473
|
+
nftId: registryNftId,
|
474
|
+
parentNftId: parentNftId,
|
475
|
+
objectType: REGISTRY(),
|
476
|
+
isInterceptor: false,
|
477
|
+
objectAddress: address(this),
|
478
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
479
|
+
data: ""
|
480
|
+
});
|
481
|
+
|
407
482
|
_nftIdByAddress[address(this)] = registryNftId;
|
408
|
-
|
483
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, registryId);
|
409
484
|
}
|
410
485
|
|
411
|
-
|
412
486
|
/// @dev global registry registration for non mainnet registries
|
413
487
|
function _registerGlobalRegistry()
|
414
|
-
|
488
|
+
private
|
415
489
|
{
|
416
490
|
uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
|
491
|
+
NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
|
492
|
+
|
493
|
+
_info[globalRegistryNftId] = ObjectInfo({
|
494
|
+
nftId: globalRegistryNftId,
|
495
|
+
parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
|
496
|
+
objectType: REGISTRY(),
|
497
|
+
isInterceptor: false,
|
498
|
+
objectAddress: address(0),
|
499
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
500
|
+
data: ""
|
501
|
+
});
|
417
502
|
|
418
503
|
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
419
|
-
|
420
|
-
NftId globalRegistryNftId = toNftId(globalRegistryId);
|
421
|
-
|
422
|
-
_info[globalRegistryNftId] = ObjectInfo(
|
423
|
-
globalRegistryNftId,
|
424
|
-
toNftId(_chainNft.PROTOCOL_NFT_ID()), // parent
|
425
|
-
REGISTRY(),
|
426
|
-
false, // isInterceptor
|
427
|
-
address(0), // objectAddress
|
428
|
-
NFT_LOCK_ADDRESS, // initialOwner
|
429
|
-
"" // data
|
430
|
-
);
|
431
504
|
}
|
432
|
-
|
433
|
-
function
|
434
|
-
|
505
|
+
// depends on _registryNftId and _stakingAddress
|
506
|
+
function _registerStaking()
|
507
|
+
private
|
508
|
+
returns (NftId stakingNftId)
|
435
509
|
{
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
string memory serviceName = "RegistryService";
|
454
|
-
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
455
|
-
_service[serviceNameHash][VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT)] = msg.sender;
|
456
|
-
_string[serviceNftId] = serviceName;
|
457
|
-
_serviceNftId = serviceNftId;
|
510
|
+
address stakingOwner = IRegisterable(_stakingAddress).getOwner();
|
511
|
+
uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
512
|
+
stakingNftId = NftIdLib.toNftId(stakingId);
|
513
|
+
|
514
|
+
_info[stakingNftId] = ObjectInfo({
|
515
|
+
nftId: stakingNftId,
|
516
|
+
parentNftId: _registryNftId,
|
517
|
+
objectType: STAKING(),
|
518
|
+
isInterceptor: false,
|
519
|
+
objectAddress: _stakingAddress,
|
520
|
+
initialOwner: stakingOwner,
|
521
|
+
data: ""
|
522
|
+
});
|
523
|
+
|
524
|
+
_nftIdByAddress[_stakingAddress] = stakingNftId;
|
525
|
+
// reverts if nftId was already minted
|
526
|
+
_chainNft.mint(stakingOwner, stakingId);
|
458
527
|
}
|
459
528
|
|
460
529
|
/// @dev defines which object - parent types relations are allowed to register
|
@@ -462,28 +531,52 @@ contract Registry is
|
|
462
531
|
// 1) EACH object type MUST have only one parent type across ALL mappings
|
463
532
|
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
464
533
|
// 3) DO NOT use REGISTRY as object type
|
465
|
-
// 2) DO NOT use PROTOCOL and "
|
466
|
-
function
|
467
|
-
|
534
|
+
// 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
|
535
|
+
function _setupValidCoreTypesAndCombinations()
|
536
|
+
private
|
468
537
|
{
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
538
|
+
_coreTypes[REGISTRY()] = true;
|
539
|
+
_coreTypes[SERVICE()] = true;
|
540
|
+
_coreTypes[TOKEN()] = true;
|
541
|
+
_coreTypes[INSTANCE()] = true;
|
542
|
+
_coreTypes[PRODUCT()] = true;
|
543
|
+
_coreTypes[POOL()] = true;
|
544
|
+
_coreTypes[DISTRIBUTION()] = true;
|
545
|
+
_coreTypes[DISTRIBUTOR()] = true;
|
546
|
+
_coreTypes[ORACLE()] = true;
|
547
|
+
_coreTypes[POLICY()] = true;
|
548
|
+
_coreTypes[BUNDLE()] = true;
|
549
|
+
_coreTypes[STAKING()] = true;
|
550
|
+
_coreTypes[STAKE()] = true;
|
551
|
+
|
552
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
553
|
+
if(registryId == _chainNft.GLOBAL_REGISTRY_ID()) {
|
554
|
+
// we are global registry
|
555
|
+
// object is registry from different chain
|
556
|
+
// parent is global registry, this contract
|
557
|
+
_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
|
558
|
+
//_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
|
559
|
+
} else {
|
560
|
+
// we are not global registry
|
561
|
+
// object is local registry, this contract
|
562
|
+
// parent is global registry, object with 0 address or registry from mainnet???
|
563
|
+
}
|
564
|
+
_coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
|
565
|
+
_coreContractCombinations[TOKEN()][REGISTRY()] = true;
|
566
|
+
//_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
|
567
|
+
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
568
|
+
|
569
|
+
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
570
|
+
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
571
|
+
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
572
|
+
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
573
|
+
|
574
|
+
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
575
|
+
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
576
|
+
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
577
|
+
|
578
|
+
// staking
|
579
|
+
_coreObjectCombinations[STAKE()][PROTOCOL()] = true;
|
580
|
+
_coreObjectCombinations[STAKE()][INSTANCE()] = true;
|
488
581
|
}
|
489
582
|
}
|