@etherisc/gif-next 0.0.2-c96f882-016 → 0.0.2-ca77f81-925
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 +90 -16
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +499 -549
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1191 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -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 +900 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +843 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +547 -246
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +447 -170
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +398 -3010
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +764 -312
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +679 -274
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +380 -78
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -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} +31 -8
- 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/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +181 -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/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -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 +1063 -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/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -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 +959 -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 +1269 -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/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -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 +966 -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 +1257 -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 +346 -211
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +451 -200
- 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 +563 -288
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +530 -339
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +346 -133
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1159 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -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 +1487 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -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} +230 -172
- 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/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 +718 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
- 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 +996 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
- 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/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -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 +2237 -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 +239 -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 +369 -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/type/UFixed.sol/UFixedLib.json +498 -0
- 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/authorization/AccessAdmin.sol +591 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +218 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/authorization/IAccessAdmin.sol +136 -0
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/authorization/IServiceAuthorization.sol +38 -0
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/authorization/ServiceAuthorization.sol +90 -0
- package/contracts/distribution/BasicDistribution.sol +149 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
- package/contracts/distribution/Distribution.sol +283 -0
- package/contracts/distribution/DistributionService.sol +302 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/distribution/IDistributionComponent.sol +48 -0
- package/contracts/distribution/IDistributionService.sol +85 -0
- package/contracts/instance/BundleManager.sol +126 -0
- package/contracts/instance/IInstance.sol +74 -16
- package/contracts/instance/IInstanceService.sol +77 -15
- package/contracts/instance/Instance.sol +183 -371
- package/contracts/instance/InstanceAdmin.sol +266 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
- package/contracts/instance/InstanceReader.sol +185 -70
- package/contracts/instance/InstanceService.sol +388 -83
- package/contracts/instance/InstanceServiceManager.sol +12 -24
- package/contracts/instance/InstanceStore.sol +276 -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/ObjectLifecycle.sol +106 -0
- package/contracts/instance/base/ObjectManager.sol +79 -0
- package/contracts/instance/module/IAccess.sol +29 -21
- package/contracts/instance/module/IBundle.sol +8 -7
- 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/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +32 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +157 -0
- package/contracts/oracle/OracleService.sol +278 -0
- package/contracts/oracle/OracleServiceManager.sol +42 -0
- package/contracts/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +49 -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 +52 -0
- package/contracts/pool/IPoolService.sol +150 -0
- package/contracts/pool/Pool.sol +311 -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/BasicProduct.sol +82 -0
- package/contracts/product/BasicProductAuthorization.sol +40 -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 +39 -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 +392 -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 +74 -43
- package/contracts/registry/IRegistryService.sol +51 -17
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +375 -269
- package/contracts/registry/RegistryAdmin.sol +365 -0
- package/contracts/registry/RegistryService.sol +122 -300
- package/contracts/registry/RegistryServiceManager.sol +25 -36
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseManager.sol +487 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/registry/TokenRegistry.sol +315 -0
- package/contracts/shared/Component.sol +281 -0
- package/contracts/shared/ComponentService.sol +581 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/ERC165.sol +15 -9
- package/contracts/shared/IComponent.sol +70 -0
- package/contracts/shared/IComponentService.sol +102 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
- 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 +151 -0
- package/contracts/shared/KeyValueStore.sol +131 -0
- package/contracts/shared/Lifecycle.sol +77 -0
- 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 -40
- 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/StakingLifecycle.sol +23 -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 +615 -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 +275 -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 +174 -0
- package/contracts/type/Seconds.sol +81 -0
- package/contracts/type/Selector.sol +102 -0
- package/contracts/{types → type}/StateId.sol +38 -4
- package/contracts/type/String.sol +53 -0
- package/contracts/{types → type}/Timestamp.sol +23 -14
- package/contracts/{types → type}/UFixed.sol +7 -0
- package/contracts/{types → type}/Version.sol +2 -1
- package/package.json +8 -5
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -314
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -610
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
- 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 -774
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.json +0 -754
- 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/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 -930
- 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/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/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/UFixed.sol/UFixedLib.json +0 -479
- 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 -86
- package/contracts/components/Distribution.sol +0 -166
- package/contracts/components/IBaseComponent.sol +0 -24
- package/contracts/components/IDistributionComponent.sol +0 -43
- package/contracts/components/IPoolComponent.sol +0 -62
- package/contracts/components/IProductComponent.sol +0 -35
- package/contracts/components/Pool.sol +0 -259
- 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 -122
- package/contracts/instance/AccessManagerSimple.sol +0 -692
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/InstanceAccessManager.sol +0 -288
- package/contracts/instance/base/ComponentServiceBase.sol +0 -49
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/base/Lifecycle.sol +0 -100
- package/contracts/instance/module/ISetup.sol +0 -43
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- 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/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 -82
- /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,224 +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
|
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
|
-
|
206
|
+
_register(info);
|
207
|
+
}
|
208
|
+
|
212
209
|
|
213
|
-
|
210
|
+
/// @dev earliest GIF major version
|
211
|
+
function getInitialVersion() external view returns (VersionPart) {
|
212
|
+
return _releaseManager.getInitialVersion();
|
214
213
|
}
|
215
214
|
|
216
|
-
/// @dev
|
217
|
-
function
|
218
|
-
return
|
215
|
+
/// @dev next GIF release version to be released
|
216
|
+
function getNextVersion() external view returns (VersionPart) {
|
217
|
+
return _releaseManager.getNextVersion();
|
219
218
|
}
|
220
219
|
|
221
|
-
|
220
|
+
/// @dev latest active GIF release version
|
221
|
+
function getLatestVersion() external view returns (VersionPart) {
|
222
|
+
return _releaseManager.getLatestVersion();
|
223
|
+
}
|
224
|
+
|
225
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
|
226
|
+
return _releaseManager.getReleaseInfo(version);
|
227
|
+
}
|
228
|
+
|
229
|
+
function getObjectCount() external view returns (uint256) {
|
222
230
|
return _chainNft.totalSupply();
|
223
231
|
}
|
224
232
|
|
@@ -226,99 +234,179 @@ contract Registry is
|
|
226
234
|
return _registryNftId;
|
227
235
|
}
|
228
236
|
|
229
|
-
function
|
237
|
+
function getProtocolNftId() external view returns (NftId nftId) {
|
238
|
+
return _protocolNftId;
|
239
|
+
}
|
240
|
+
|
241
|
+
function getNftId(address object) external view returns (NftId id) {
|
230
242
|
return _nftIdByAddress[object];
|
231
243
|
}
|
232
244
|
|
233
|
-
function ownerOf(NftId nftId) public view
|
245
|
+
function ownerOf(NftId nftId) public view returns (address) {
|
234
246
|
return _chainNft.ownerOf(nftId.toInt());
|
235
247
|
}
|
236
248
|
|
237
249
|
function ownerOf(address contractAddress) public view returns (address) {
|
238
|
-
|
239
250
|
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
240
251
|
}
|
241
252
|
|
242
|
-
function getObjectInfo(NftId nftId) external view
|
253
|
+
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
243
254
|
return _info[nftId];
|
244
255
|
}
|
245
256
|
|
246
|
-
function getObjectInfo(address object) external view
|
247
|
-
|
257
|
+
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
248
258
|
return _info[_nftIdByAddress[object]];
|
249
259
|
}
|
250
260
|
|
251
|
-
function isRegistered(NftId nftId) public view
|
261
|
+
function isRegistered(NftId nftId) public view returns (bool) {
|
252
262
|
return _info[nftId].objectType.gtz();
|
253
263
|
}
|
254
264
|
|
255
|
-
function isRegistered(address object) external view
|
265
|
+
function isRegistered(address object) external view returns (bool) {
|
256
266
|
return _nftIdByAddress[object].gtz();
|
257
267
|
}
|
258
268
|
|
259
|
-
function
|
260
|
-
return
|
269
|
+
function isRegisteredService(address object) external view returns (bool) {
|
270
|
+
return _info[_nftIdByAddress[object]].objectType == SERVICE();
|
261
271
|
}
|
262
272
|
|
263
|
-
function
|
264
|
-
|
273
|
+
function isRegisteredComponent(address object) external view returns (bool) {
|
274
|
+
NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
|
275
|
+
return _info[objectParentNftId].objectType == INSTANCE();
|
276
|
+
}
|
277
|
+
|
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;
|
265
291
|
}
|
266
292
|
|
267
|
-
// special case to retrive a gif service
|
268
293
|
function getServiceAddress(
|
269
|
-
|
270
|
-
VersionPart
|
271
|
-
) external view returns (address)
|
294
|
+
ObjectType serviceDomain,
|
295
|
+
VersionPart releaseVersion
|
296
|
+
) external view returns (address service)
|
272
297
|
{
|
273
|
-
|
274
|
-
|
298
|
+
service = _service[releaseVersion][serviceDomain];
|
299
|
+
}
|
300
|
+
|
301
|
+
function getReleaseManagerAddress() external view returns (address) {
|
302
|
+
return address(_releaseManager);
|
275
303
|
}
|
276
304
|
|
277
|
-
function
|
278
|
-
return _chainNft;
|
305
|
+
function getChainNftAddress() external view override returns (address) {
|
306
|
+
return address(_chainNft);
|
307
|
+
}
|
308
|
+
|
309
|
+
function getRegistryAdminAddress() external view returns (address) {
|
310
|
+
return address(_admin);
|
311
|
+
}
|
312
|
+
|
313
|
+
function getAuthority() external view returns (address) {
|
314
|
+
return _admin.authority();
|
279
315
|
}
|
280
316
|
|
281
317
|
function getOwner() public view returns (address owner) {
|
282
318
|
return ownerOf(address(this));
|
283
319
|
}
|
284
320
|
|
321
|
+
// IERC165
|
322
|
+
|
323
|
+
function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
|
324
|
+
if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
|
325
|
+
return true;
|
326
|
+
}
|
327
|
+
|
328
|
+
return false;
|
329
|
+
}
|
330
|
+
|
285
331
|
// Internals
|
286
332
|
|
287
|
-
|
333
|
+
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
334
|
+
// TODO registration of precompile addresses
|
335
|
+
function _register(ObjectInfo memory info)
|
288
336
|
internal
|
337
|
+
returns(NftId nftId)
|
289
338
|
{
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
339
|
+
ObjectType objectType = info.objectType;
|
340
|
+
bool isInterceptor = info.isInterceptor;
|
341
|
+
address objectAddress = info.objectAddress;
|
342
|
+
address owner = info.initialOwner;
|
343
|
+
|
344
|
+
NftId parentNftId = info.parentNftId;
|
345
|
+
ObjectInfo memory parentInfo = _info[parentNftId];
|
346
|
+
ObjectType parentType = parentInfo.objectType; // see function header
|
347
|
+
address parentAddress = parentInfo.objectAddress;
|
348
|
+
|
349
|
+
// parent is contract -> need to check? -> check before minting
|
350
|
+
// special case: staking: to protocol possible as well
|
351
|
+
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
352
|
+
// special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
|
353
|
+
// special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
|
354
|
+
if(objectType != STAKE()) {
|
355
|
+
if(parentAddress == address(0)) {
|
356
|
+
revert ErrorRegistryParentAddressZero();
|
357
|
+
}
|
299
358
|
}
|
300
|
-
|
301
|
-
|
302
|
-
|
359
|
+
|
360
|
+
address interceptorAddress = _getInterceptor(
|
361
|
+
isInterceptor,
|
362
|
+
objectType,
|
363
|
+
objectAddress,
|
364
|
+
parentInfo.isInterceptor,
|
365
|
+
parentAddress);
|
366
|
+
|
367
|
+
uint256 tokenId = _chainNft.getNextTokenId();
|
368
|
+
nftId = NftIdLib.toNftId(tokenId);
|
369
|
+
info.nftId = nftId;
|
370
|
+
_info[nftId] = info;
|
371
|
+
|
372
|
+
if(objectAddress > address(0)) {
|
373
|
+
if(_nftIdByAddress[objectAddress].gtz()) {
|
374
|
+
revert ErrorRegistryContractAlreadyRegistered(objectAddress);
|
375
|
+
}
|
376
|
+
|
377
|
+
_nftIdByAddress[objectAddress] = nftId;
|
303
378
|
}
|
304
379
|
|
305
|
-
|
306
|
-
_service[serviceNameHash][majorVersion] = info.objectAddress;
|
380
|
+
emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
|
307
381
|
|
308
|
-
|
382
|
+
// calls nft receiver(1) and interceptor(2)
|
383
|
+
uint256 mintedTokenId = _chainNft.mint(
|
384
|
+
owner,
|
385
|
+
interceptorAddress,
|
386
|
+
EMPTY_URI);
|
387
|
+
|
388
|
+
assert(mintedTokenId == tokenId);
|
309
389
|
}
|
310
390
|
|
311
391
|
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
392
|
+
/// special case: STAKES (parent may be any type) -> no intercept call
|
393
|
+
/// default case:
|
312
394
|
function _getInterceptor(
|
313
395
|
bool isInterceptor,
|
396
|
+
ObjectType objectType,
|
314
397
|
address objectAddress,
|
315
398
|
bool parentIsInterceptor,
|
316
399
|
address parentObjectAddress
|
317
400
|
)
|
318
401
|
internal
|
319
|
-
|
402
|
+
pure
|
320
403
|
returns (address interceptor)
|
321
404
|
{
|
405
|
+
// no intercepting calls for stakes
|
406
|
+
if (objectType == STAKE()) {
|
407
|
+
return address(0);
|
408
|
+
}
|
409
|
+
|
322
410
|
if (objectAddress == address(0)) {
|
323
411
|
if (parentIsInterceptor) {
|
324
412
|
return parentObjectAddress;
|
@@ -338,106 +426,100 @@ contract Registry is
|
|
338
426
|
|
339
427
|
/// @dev protocol registration used to anchor the dip ecosystem relations
|
340
428
|
function _registerProtocol()
|
341
|
-
|
429
|
+
private
|
430
|
+
returns (NftId protocolNftId)
|
342
431
|
{
|
343
432
|
uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
|
344
|
-
|
433
|
+
protocolNftId = NftIdLib.toNftId(protocolId);
|
434
|
+
|
435
|
+
_info[protocolNftId] = ObjectInfo({
|
436
|
+
nftId: protocolNftId,
|
437
|
+
parentNftId: NftIdLib.zero(),
|
438
|
+
objectType: PROTOCOL(),
|
439
|
+
isInterceptor: false,
|
440
|
+
objectAddress: address(0),
|
441
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
442
|
+
data: ""
|
443
|
+
});
|
345
444
|
|
346
445
|
_chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
|
347
|
-
|
348
|
-
_info[protocolNftId] = ObjectInfo(
|
349
|
-
protocolNftId,
|
350
|
-
zeroNftId(), // parent
|
351
|
-
PROTOCOL(),
|
352
|
-
false, // isInterceptor
|
353
|
-
address(0), // objectAddress
|
354
|
-
NFT_LOCK_ADDRESS,// initialOwner
|
355
|
-
""
|
356
|
-
);
|
357
446
|
}
|
358
447
|
|
359
448
|
/// @dev registry registration
|
360
449
|
/// might also register the global registry when not on mainnet
|
361
|
-
function _registerRegistry(
|
362
|
-
|
450
|
+
function _registerRegistry()
|
451
|
+
private
|
452
|
+
returns (NftId registryNftId)
|
363
453
|
{
|
364
|
-
uint256 registryId = _chainNft.calculateTokenId(
|
365
|
-
|
366
|
-
|
454
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
455
|
+
registryNftId = NftIdLib.toNftId(registryId);
|
367
456
|
NftId parentNftId;
|
368
457
|
|
369
458
|
if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
|
370
459
|
{// we're not the global registry
|
371
460
|
_registerGlobalRegistry();
|
372
|
-
parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
461
|
+
parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
373
462
|
}
|
374
463
|
else
|
375
464
|
{// we are global registry
|
376
|
-
parentNftId =
|
465
|
+
parentNftId = _protocolNftId;
|
377
466
|
}
|
378
467
|
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
);
|
468
|
+
_info[registryNftId] = ObjectInfo({
|
469
|
+
nftId: registryNftId,
|
470
|
+
parentNftId: parentNftId,
|
471
|
+
objectType: REGISTRY(),
|
472
|
+
isInterceptor: false,
|
473
|
+
objectAddress: address(this),
|
474
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
475
|
+
data: ""
|
476
|
+
});
|
477
|
+
|
390
478
|
_nftIdByAddress[address(this)] = registryNftId;
|
391
|
-
|
479
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, registryId);
|
392
480
|
}
|
393
481
|
|
394
|
-
|
395
482
|
/// @dev global registry registration for non mainnet registries
|
396
483
|
function _registerGlobalRegistry()
|
397
|
-
|
484
|
+
private
|
398
485
|
{
|
399
486
|
uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
|
487
|
+
NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
|
488
|
+
|
489
|
+
_info[globalRegistryNftId] = ObjectInfo({
|
490
|
+
nftId: globalRegistryNftId,
|
491
|
+
parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
|
492
|
+
objectType: REGISTRY(),
|
493
|
+
isInterceptor: false,
|
494
|
+
objectAddress: address(0),
|
495
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
496
|
+
data: ""
|
497
|
+
});
|
400
498
|
|
401
499
|
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
402
|
-
|
403
|
-
NftId globalRegistryNftId = toNftId(globalRegistryId);
|
404
|
-
|
405
|
-
_info[globalRegistryNftId] = ObjectInfo(
|
406
|
-
globalRegistryNftId,
|
407
|
-
toNftId(_chainNft.PROTOCOL_NFT_ID()), // parent
|
408
|
-
REGISTRY(),
|
409
|
-
false, // isInterceptor
|
410
|
-
address(0), // objectAddress
|
411
|
-
NFT_LOCK_ADDRESS, // initialOwner
|
412
|
-
"" // data
|
413
|
-
);
|
414
500
|
}
|
415
|
-
|
416
|
-
function
|
417
|
-
|
501
|
+
// depends on _registryNftId and _stakingAddress
|
502
|
+
function _registerStaking()
|
503
|
+
private
|
504
|
+
returns (NftId stakingNftId)
|
418
505
|
{
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
string memory serviceName = "RegistryService";
|
437
|
-
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
438
|
-
_service[serviceNameHash][VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT)] = msg.sender;
|
439
|
-
_string[serviceNftId] = serviceName;
|
440
|
-
_serviceNftId = serviceNftId;
|
506
|
+
address stakingOwner = IRegisterable(_stakingAddress).getOwner();
|
507
|
+
uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
508
|
+
stakingNftId = NftIdLib.toNftId(stakingId);
|
509
|
+
|
510
|
+
_info[stakingNftId] = ObjectInfo({
|
511
|
+
nftId: stakingNftId,
|
512
|
+
parentNftId: _registryNftId,
|
513
|
+
objectType: STAKING(),
|
514
|
+
isInterceptor: false,
|
515
|
+
objectAddress: _stakingAddress,
|
516
|
+
initialOwner: stakingOwner,
|
517
|
+
data: ""
|
518
|
+
});
|
519
|
+
|
520
|
+
_nftIdByAddress[_stakingAddress] = stakingNftId;
|
521
|
+
// reverts if nftId was already minted
|
522
|
+
_chainNft.mint(stakingOwner, stakingId);
|
441
523
|
}
|
442
524
|
|
443
525
|
/// @dev defines which object - parent types relations are allowed to register
|
@@ -445,28 +527,52 @@ contract Registry is
|
|
445
527
|
// 1) EACH object type MUST have only one parent type across ALL mappings
|
446
528
|
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
447
529
|
// 3) DO NOT use REGISTRY as object type
|
448
|
-
// 2) DO NOT use PROTOCOL and "
|
449
|
-
function
|
450
|
-
|
530
|
+
// 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
|
531
|
+
function _setupValidCoreTypesAndCombinations()
|
532
|
+
private
|
451
533
|
{
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
534
|
+
_coreTypes[REGISTRY()] = true;
|
535
|
+
_coreTypes[SERVICE()] = true;
|
536
|
+
_coreTypes[TOKEN()] = true;
|
537
|
+
_coreTypes[INSTANCE()] = true;
|
538
|
+
_coreTypes[PRODUCT()] = true;
|
539
|
+
_coreTypes[POOL()] = true;
|
540
|
+
_coreTypes[DISTRIBUTION()] = true;
|
541
|
+
_coreTypes[DISTRIBUTOR()] = true;
|
542
|
+
_coreTypes[ORACLE()] = true;
|
543
|
+
_coreTypes[POLICY()] = true;
|
544
|
+
_coreTypes[BUNDLE()] = true;
|
545
|
+
_coreTypes[STAKING()] = true;
|
546
|
+
_coreTypes[STAKE()] = true;
|
547
|
+
|
548
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
549
|
+
if(registryId == _chainNft.GLOBAL_REGISTRY_ID()) {
|
550
|
+
// we are global registry
|
551
|
+
// object is registry from different chain
|
552
|
+
// parent is global registry, this contract
|
553
|
+
_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
|
554
|
+
//_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
|
555
|
+
} else {
|
556
|
+
// we are not global registry
|
557
|
+
// object is local registry, this contract
|
558
|
+
// parent is global registry, object with 0 address or registry from mainnet???
|
559
|
+
}
|
560
|
+
_coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
|
561
|
+
_coreContractCombinations[TOKEN()][REGISTRY()] = true;
|
562
|
+
//_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
|
563
|
+
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
564
|
+
|
565
|
+
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
566
|
+
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
567
|
+
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
568
|
+
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
569
|
+
|
570
|
+
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
571
|
+
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
572
|
+
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
573
|
+
|
574
|
+
// staking
|
575
|
+
_coreObjectCombinations[STAKE()][PROTOCOL()] = true;
|
576
|
+
_coreObjectCombinations[STAKE()][INSTANCE()] = true;
|
471
577
|
}
|
472
578
|
}
|