@etherisc/gif-next 0.0.2-a1053ad-624 → 0.0.2-a105567-464
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 +76 -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 +1349 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -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 +814 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +567 -246
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +384 -155
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +431 -2918
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +692 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +204 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +719 -406
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +585 -243
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +382 -76
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3468 -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} +91 -2
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -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/{ISetup.sol/ISetup.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/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1097 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +742 -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} +297 -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 +1050 -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 +1417 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +826 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +718 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1270 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +806 -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} +233 -200
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -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} +259 -284
- 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/{instance/base/IService.sol/IService.json → product/IProductService.sol/IProductService.json} +132 -166
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1138 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +750 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +975 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +774 -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 +679 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -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 +534 -59
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +438 -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 +857 -309
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +506 -352
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +339 -134
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +643 -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 +1715 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +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 +1475 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +225 -167
- 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/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 +860 -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 -1
- 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/shared/IRegistryLinked.sol/IRegistryLinked.json +35 -0
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IService.sol/IService.json} +97 -78
- 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 +581 -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 +4 -0
- package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +193 -180
- 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 +1441 -0
- package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +890 -0
- package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2008 -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 +390 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1213 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +722 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1682 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -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 +281 -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 +185 -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/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
- 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/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/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +174 -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/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
- 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/type/Version.sol/VersionPartLib.json +49 -0
- package/contracts/distribution/Distribution.sol +261 -0
- package/contracts/distribution/DistributionService.sol +298 -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 +67 -16
- package/contracts/instance/IInstanceService.sol +72 -8
- package/contracts/instance/Instance.sol +158 -359
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
- package/contracts/instance/InstanceReader.sol +151 -66
- package/contracts/instance/InstanceService.sol +318 -58
- package/contracts/instance/InstanceServiceManager.sol +12 -24
- package/contracts/instance/InstanceStore.sol +260 -0
- package/contracts/instance/base/BalanceStore.sol +118 -0
- package/contracts/instance/base/Cloneable.sol +51 -0
- package/contracts/instance/base/ObjectManager.sol +82 -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/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 +147 -0
- package/contracts/pool/Pool.sol +299 -0
- package/contracts/pool/PoolService.sol +424 -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 +437 -0
- package/contracts/product/ClaimServiceManager.sol +38 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +93 -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 +473 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +301 -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 +14 -0
- package/contracts/registry/IRegistry.sol +81 -12
- package/contracts/registry/IRegistryService.sol +54 -20
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +405 -243
- package/contracts/registry/RegistryAdmin.sol +237 -0
- package/contracts/registry/RegistryService.sol +124 -297
- package/contracts/registry/RegistryServiceManager.sol +26 -32
- package/contracts/registry/ReleaseManager.sol +599 -0
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +358 -0
- package/contracts/{instance/AccessManagerSimple.sol → shared/AccessManagerCustom.sol} +277 -223
- package/contracts/shared/AccessManagerExtended.sol +470 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/shared/Component.sol +286 -0
- package/contracts/shared/ComponentService.sol +596 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +111 -0
- package/contracts/shared/ERC165.sol +15 -9
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +74 -0
- package/contracts/shared/IComponentService.sol +91 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +14 -10
- 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 +18 -0
- 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 +130 -0
- package/contracts/{instance/base → shared}/Lifecycle.sol +28 -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 -40
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +77 -0
- package/contracts/shared/TokenHandler.sol +37 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/staking/IStaking.sol +152 -0
- package/contracts/staking/IStakingManager.sol +15 -0
- package/contracts/staking/IStakingService.sol +162 -0
- package/contracts/staking/IStakingStore.sol +130 -0
- package/contracts/staking/StakeManagerLib.sol +156 -0
- package/contracts/staking/Staking.sol +496 -0
- package/contracts/staking/StakingManager.sol +54 -0
- package/contracts/staking/StakingReader.sol +146 -0
- package/contracts/staking/StakingService.sol +376 -0
- package/contracts/staking/StakingServiceManager.sol +45 -0
- package/contracts/staking/StakingStore.sol +331 -0
- package/contracts/staking/TargetManagerLib.sol +179 -0
- package/contracts/{types → type}/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +114 -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 +18 -12
- package/contracts/type/NftIdSet.sol +62 -0
- package/contracts/{types → type}/ObjectType.sol +26 -9
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +5 -1
- package/contracts/{types → type}/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +143 -0
- package/contracts/type/Seconds.sol +71 -0
- package/contracts/{types → type}/StateId.sol +28 -6
- package/contracts/{types → type}/Timestamp.sol +18 -13
- package/contracts/{types → type}/UFixed.sol +1 -0
- package/contracts/{types → type}/Version.sol +6 -2
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- 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/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 -1119
- 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/IService.sol/IService.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/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- package/artifacts/contracts/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/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/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/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- 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/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
- 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 -114
- 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/IService.sol +0 -15
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/base/ServiceBase.sol +0 -44
- 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/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 -26
- 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/RoleId.sol +0 -82
- /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,275 +1,419 @@
|
|
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} 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
|
-
|
34
|
-
error ContractAlreadyRegistered(address objectAddress);
|
35
|
-
error InvalidServiceVersion(VersionPart majorVersion);
|
36
|
-
error ServiceNameAlreadyRegistered(string name, VersionPart majorVersion);
|
37
|
-
|
38
|
-
// approve
|
39
|
-
error NotOwner();
|
40
|
-
error NotRegisteredContract(NftId registrarNftId);
|
41
|
-
error NotService(NftId registrarNftId);
|
42
|
-
error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
|
43
|
-
|
44
|
-
uint256 public constant MAJOR_VERSION_MIN = 3;
|
45
|
-
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
46
|
-
uint256 public constant REGISTRY_SERVICE_TOKEN_SEQUENCE_ID = 3;
|
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;
|
47
37
|
string public constant EMPTY_URI = "";
|
48
38
|
|
49
|
-
mapping(NftId nftId => ObjectInfo info)
|
50
|
-
mapping(address object => NftId nftId)
|
39
|
+
mapping(NftId nftId => ObjectInfo info) private _info;
|
40
|
+
mapping(address object => NftId nftId) private _nftIdByAddress;
|
41
|
+
|
42
|
+
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
51
43
|
|
52
|
-
mapping(
|
53
|
-
ObjectType objectType => bool)) internal _isApproved;
|
44
|
+
mapping(ObjectType objectType => bool) private _coreTypes;
|
54
45
|
|
55
46
|
mapping(ObjectType objectType => mapping(
|
56
|
-
ObjectType parentType => bool))
|
47
|
+
ObjectType parentType => bool)) private _coreContractCombinations;
|
57
48
|
|
58
49
|
mapping(ObjectType objectType => mapping(
|
59
|
-
ObjectType parentType => bool))
|
50
|
+
ObjectType parentType => bool)) private _coreObjectCombinations;
|
60
51
|
|
61
|
-
|
62
|
-
|
63
|
-
|
52
|
+
RegistryAdmin public immutable _admin;
|
53
|
+
IERC20Metadata public immutable _dipToken;
|
54
|
+
ChainNft public immutable _chainNft;
|
64
55
|
|
65
|
-
NftId
|
66
|
-
NftId
|
67
|
-
|
56
|
+
NftId public immutable _protocolNftId;
|
57
|
+
NftId public immutable _registryNftId;
|
58
|
+
NftId public _stakingNftId;
|
68
59
|
|
60
|
+
address public _tokenRegistryAddress;
|
61
|
+
address public _stakingAddress;
|
62
|
+
ReleaseManager public _releaseManager;
|
69
63
|
|
70
|
-
modifier
|
71
|
-
if(msg.sender
|
72
|
-
revert
|
64
|
+
modifier onlyRegistryService() {
|
65
|
+
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
66
|
+
revert ErrorRegistryCallerNotRegistryService();
|
73
67
|
}
|
74
68
|
_;
|
75
69
|
}
|
76
70
|
|
77
|
-
|
78
|
-
|
79
|
-
if(msg.sender !=
|
80
|
-
revert
|
71
|
+
|
72
|
+
modifier onlyReleaseManager() {
|
73
|
+
if(msg.sender != address(_releaseManager)) {
|
74
|
+
revert ErrorRegistryCallerNotReleaseManager();
|
81
75
|
}
|
82
76
|
_;
|
83
77
|
}
|
84
78
|
|
85
|
-
constructor(address registryOwner, VersionPart majorVersion)
|
86
|
-
{
|
87
|
-
require(registryOwner > address(0), "Registry: registry owner is 0");
|
88
|
-
require(majorVersion.toInt() == MAJOR_VERSION_MIN, "Registry: initial major version of registry service is not MAJOR_VERSION_MIN");
|
89
79
|
|
80
|
+
constructor(
|
81
|
+
RegistryAdmin admin,
|
82
|
+
IERC20Metadata dipToken
|
83
|
+
)
|
84
|
+
InitializableCustom()
|
85
|
+
{
|
86
|
+
_admin = admin;
|
87
|
+
_dipToken = dipToken;
|
90
88
|
// deploy NFT
|
91
|
-
_chainNft = new ChainNft(address(this))
|
89
|
+
_chainNft = new ChainNft(address(this));
|
92
90
|
|
93
91
|
// initial registry setup
|
94
|
-
_registerProtocol();
|
95
|
-
_registerRegistry(
|
96
|
-
|
92
|
+
_protocolNftId = _registerProtocol();
|
93
|
+
_registryNftId = _registerRegistry();
|
94
|
+
|
95
|
+
// set object types and object parent relations
|
96
|
+
_setupValidCoreTypesAndCombinations();
|
97
|
+
}
|
97
98
|
|
98
|
-
// set object parent relations
|
99
|
-
_setupValidObjectParentCombinations();
|
100
99
|
|
101
|
-
|
100
|
+
/// @dev wires release manager and token to registry (this contract).
|
101
|
+
/// MUST be called by release manager.
|
102
|
+
function initialize(
|
103
|
+
address releaseManager,
|
104
|
+
address tokenRegistry,
|
105
|
+
address staking
|
106
|
+
)
|
107
|
+
external
|
108
|
+
initializer()
|
109
|
+
{
|
110
|
+
_releaseManager = ReleaseManager(releaseManager);
|
111
|
+
_tokenRegistryAddress = tokenRegistry;
|
112
|
+
_stakingAddress = staking;
|
113
|
+
|
114
|
+
_stakingNftId = _registerStaking();
|
102
115
|
}
|
103
116
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
117
|
+
function registerService(
|
118
|
+
ObjectInfo memory info,
|
119
|
+
VersionPart version,
|
120
|
+
ObjectType domain
|
121
|
+
)
|
108
122
|
external
|
109
|
-
|
123
|
+
onlyReleaseManager
|
110
124
|
returns(NftId nftId)
|
111
125
|
{
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
address parentAddress = parentInfo.objectAddress;
|
117
|
-
|
118
|
-
// parent is contract -> need to check? -> check before minting
|
119
|
-
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
120
|
-
// special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
|
121
|
-
// special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
|
122
|
-
if(parentAddress == address(0)) {
|
123
|
-
revert ZeroParentAddress();
|
126
|
+
address service = info.objectAddress;
|
127
|
+
/* must be guaranteed by release manager
|
128
|
+
if(service == address(0)) {
|
129
|
+
revert();
|
124
130
|
}
|
125
131
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
uint256 mintedTokenId = _chainNft.mint(
|
130
|
-
info.initialOwner,
|
131
|
-
interceptor,
|
132
|
-
EMPTY_URI);
|
133
|
-
nftId = toNftId(mintedTokenId);
|
132
|
+
if(version.eqz()) {
|
133
|
+
revert();
|
134
|
+
}
|
134
135
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
info.
|
139
|
-
|
136
|
+
if(info.objectType != SERVICE()) {
|
137
|
+
revert();
|
138
|
+
}
|
139
|
+
if(info.parentType != REGISTRY()) {
|
140
|
+
revert();
|
141
|
+
}
|
142
|
+
info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
|
143
|
+
*/
|
144
|
+
|
145
|
+
if(domain.eqz()) {
|
146
|
+
revert ErrorRegistryDomainZero(service);
|
147
|
+
}
|
140
148
|
|
141
|
-
if(
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
revert InvalidTypesCombination(objectType, parentType);
|
147
|
-
}
|
149
|
+
if(_service[version][domain] > address(0)) {
|
150
|
+
revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
|
151
|
+
}
|
152
|
+
|
153
|
+
_service[version][domain] = service;
|
148
154
|
|
149
|
-
|
155
|
+
nftId = _register(info);
|
150
156
|
|
151
|
-
|
152
|
-
|
153
|
-
}
|
157
|
+
emit LogServiceRegistration(version, domain);
|
158
|
+
}
|
154
159
|
|
155
|
-
|
160
|
+
function register(ObjectInfo memory info)
|
161
|
+
external
|
162
|
+
onlyRegistryService
|
163
|
+
returns(NftId nftId)
|
164
|
+
{
|
165
|
+
ObjectType objectType = info.objectType;
|
166
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
156
167
|
|
157
|
-
|
158
|
-
|
159
|
-
|
168
|
+
// only valid core types combinations
|
169
|
+
if(info.objectAddress == address(0))
|
170
|
+
{
|
171
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
172
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
160
173
|
}
|
161
174
|
}
|
162
175
|
else
|
163
176
|
{
|
164
|
-
if(
|
165
|
-
revert
|
177
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
178
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
166
179
|
}
|
167
180
|
}
|
168
181
|
|
169
|
-
|
182
|
+
nftId = _register(info);
|
170
183
|
}
|
171
184
|
|
172
|
-
|
173
|
-
|
174
|
-
|
185
|
+
function registerWithCustomType(ObjectInfo memory info)
|
186
|
+
external
|
187
|
+
onlyRegistryService
|
188
|
+
returns(NftId nftId)
|
189
|
+
{
|
190
|
+
ObjectType objectType = info.objectType;
|
191
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
192
|
+
|
193
|
+
if(_coreTypes[objectType]) {
|
194
|
+
revert ErrorRegistryCoreTypeRegistration();
|
195
|
+
}
|
196
|
+
|
197
|
+
if(
|
198
|
+
parentType == PROTOCOL() ||
|
199
|
+
parentType == REGISTRY() ||
|
200
|
+
parentType == SERVICE()
|
201
|
+
) {
|
202
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
203
|
+
}
|
204
|
+
|
205
|
+
_register(info);
|
206
|
+
}
|
207
|
+
|
208
|
+
|
209
|
+
/// @dev earliest GIF major version
|
210
|
+
function getInitialVersion() external view returns (VersionPart) {
|
211
|
+
return _releaseManager.getInitialVersion();
|
212
|
+
}
|
213
|
+
|
214
|
+
/// @dev next GIF release version to be released
|
215
|
+
function getNextVersion() external view returns (VersionPart) {
|
216
|
+
return _releaseManager.getNextVersion();
|
217
|
+
}
|
218
|
+
|
219
|
+
/// @dev latest active GIF release version
|
220
|
+
function getLatestVersion() external view returns (VersionPart) {
|
221
|
+
return _releaseManager.getLatestVersion();
|
222
|
+
}
|
223
|
+
|
224
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
|
225
|
+
return _releaseManager.getReleaseInfo(version);
|
226
|
+
}
|
227
|
+
|
228
|
+
function getObjectCount() external view returns (uint256) {
|
175
229
|
return _chainNft.totalSupply();
|
176
230
|
}
|
177
231
|
|
178
|
-
function getNftId(
|
232
|
+
function getNftId() external view returns (NftId nftId) {
|
233
|
+
return _registryNftId;
|
234
|
+
}
|
235
|
+
|
236
|
+
function getProtocolNftId() external view returns (NftId nftId) {
|
237
|
+
return _protocolNftId;
|
238
|
+
}
|
239
|
+
|
240
|
+
function getNftId(address object) external view returns (NftId id) {
|
179
241
|
return _nftIdByAddress[object];
|
180
242
|
}
|
181
243
|
|
182
|
-
function ownerOf(NftId nftId) public view
|
244
|
+
function ownerOf(NftId nftId) public view returns (address) {
|
183
245
|
return _chainNft.ownerOf(nftId.toInt());
|
184
246
|
}
|
185
247
|
|
186
248
|
function ownerOf(address contractAddress) public view returns (address) {
|
187
|
-
|
188
249
|
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
189
250
|
}
|
190
251
|
|
191
|
-
function getObjectInfo(NftId nftId) external view
|
252
|
+
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
192
253
|
return _info[nftId];
|
193
254
|
}
|
194
255
|
|
195
|
-
function getObjectInfo(address object) external view
|
196
|
-
|
256
|
+
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
197
257
|
return _info[_nftIdByAddress[object]];
|
198
258
|
}
|
199
259
|
|
200
|
-
function isRegistered(NftId nftId) public view
|
260
|
+
function isRegistered(NftId nftId) public view returns (bool) {
|
201
261
|
return _info[nftId].objectType.gtz();
|
202
262
|
}
|
203
263
|
|
204
|
-
function isRegistered(address object) external view
|
264
|
+
function isRegistered(address object) external view returns (bool) {
|
205
265
|
return _nftIdByAddress[object].gtz();
|
206
266
|
}
|
207
267
|
|
208
|
-
function
|
209
|
-
return
|
268
|
+
function isRegisteredService(address object) external view returns (bool) {
|
269
|
+
return _info[_nftIdByAddress[object]].objectType == SERVICE();
|
270
|
+
}
|
271
|
+
|
272
|
+
function isRegisteredComponent(address object) external view returns (bool) {
|
273
|
+
NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
|
274
|
+
return _info[objectParentNftId].objectType == INSTANCE();
|
275
|
+
}
|
276
|
+
|
277
|
+
function isActiveRelease(VersionPart version) external view returns (bool)
|
278
|
+
{
|
279
|
+
return _releaseManager.isActiveRelease(version);
|
280
|
+
}
|
281
|
+
|
282
|
+
function getStakingAddress() external view returns (address staking) {
|
283
|
+
//return getObjectInfo(_stakingNftId).objectAddress;
|
284
|
+
//return _info[_stakingNftId].objectAddress;
|
285
|
+
return _stakingAddress;
|
286
|
+
}
|
287
|
+
|
288
|
+
function getTokenRegistryAddress() external view returns (address tokenRegistry) {
|
289
|
+
return _tokenRegistryAddress;
|
210
290
|
}
|
211
291
|
|
212
|
-
// special case to retrive a gif service
|
213
292
|
function getServiceAddress(
|
214
|
-
|
215
|
-
VersionPart
|
216
|
-
) external view returns (address)
|
293
|
+
ObjectType serviceDomain,
|
294
|
+
VersionPart releaseVersion
|
295
|
+
) external view returns (address service)
|
217
296
|
{
|
218
|
-
|
219
|
-
|
297
|
+
service = _service[releaseVersion][serviceDomain];
|
298
|
+
}
|
299
|
+
|
300
|
+
function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
|
301
|
+
return address(_releaseManager.getReleaseAccessManager(version));
|
302
|
+
}
|
303
|
+
|
304
|
+
function getReleaseManagerAddress() external view returns (address) {
|
305
|
+
return address(_releaseManager);
|
306
|
+
}
|
307
|
+
|
308
|
+
function getChainNftAddress() external view override returns (address) {
|
309
|
+
return address(_chainNft);
|
220
310
|
}
|
221
311
|
|
222
|
-
function
|
223
|
-
return
|
312
|
+
function getDipTokenAddress() external view override returns (address) {
|
313
|
+
return address(_dipToken);
|
314
|
+
}
|
315
|
+
|
316
|
+
function getRegistryAdminAddress() external view returns (address) {
|
317
|
+
return address(_admin);
|
318
|
+
}
|
319
|
+
|
320
|
+
function getAuthority() external view returns (address) {
|
321
|
+
return _admin.authority();
|
224
322
|
}
|
225
323
|
|
226
324
|
function getOwner() public view returns (address owner) {
|
227
325
|
return ownerOf(address(this));
|
228
326
|
}
|
229
327
|
|
328
|
+
// IERC165
|
329
|
+
|
330
|
+
function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
|
331
|
+
if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
|
332
|
+
return true;
|
333
|
+
}
|
334
|
+
|
335
|
+
return false;
|
336
|
+
}
|
337
|
+
|
230
338
|
// Internals
|
231
339
|
|
232
|
-
|
340
|
+
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
341
|
+
// TODO registration of precompile addresses
|
342
|
+
function _register(ObjectInfo memory info)
|
233
343
|
internal
|
344
|
+
returns(NftId nftId)
|
234
345
|
{
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
)
|
249
|
-
|
346
|
+
ObjectType objectType = info.objectType;
|
347
|
+
bool isInterceptor = info.isInterceptor;
|
348
|
+
address objectAddress = info.objectAddress;
|
349
|
+
address owner = info.initialOwner;
|
350
|
+
|
351
|
+
NftId parentNftId = info.parentNftId;
|
352
|
+
ObjectInfo memory parentInfo = _info[parentNftId];
|
353
|
+
ObjectType parentType = parentInfo.objectType; // see function header
|
354
|
+
address parentAddress = parentInfo.objectAddress;
|
355
|
+
|
356
|
+
// parent is contract -> need to check? -> check before minting
|
357
|
+
// special case: staking: to protocol possible as well
|
358
|
+
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
359
|
+
// special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
|
360
|
+
// special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
|
361
|
+
if(objectType != STAKE()) {
|
362
|
+
if(parentAddress == address(0)) {
|
363
|
+
revert ErrorRegistryParentAddressZero();
|
364
|
+
}
|
250
365
|
}
|
251
|
-
|
252
|
-
|
253
|
-
|
366
|
+
|
367
|
+
address interceptorAddress = _getInterceptor(
|
368
|
+
isInterceptor,
|
369
|
+
objectType,
|
370
|
+
objectAddress,
|
371
|
+
parentInfo.isInterceptor,
|
372
|
+
parentAddress);
|
373
|
+
|
374
|
+
uint256 tokenId = _chainNft.getNextTokenId();
|
375
|
+
nftId = NftIdLib.toNftId(tokenId);
|
376
|
+
info.nftId = nftId;
|
377
|
+
_info[nftId] = info;
|
378
|
+
|
379
|
+
if(objectAddress > address(0)) {
|
380
|
+
if(_nftIdByAddress[objectAddress].gtz()) {
|
381
|
+
revert ErrorRegistryContractAlreadyRegistered(objectAddress);
|
382
|
+
}
|
383
|
+
|
384
|
+
_nftIdByAddress[objectAddress] = nftId;
|
254
385
|
}
|
255
386
|
|
256
|
-
|
257
|
-
|
387
|
+
emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
|
388
|
+
|
389
|
+
// calls nft receiver(1) and interceptor(2)
|
390
|
+
uint256 mintedTokenId = _chainNft.mint(
|
391
|
+
owner,
|
392
|
+
interceptorAddress,
|
393
|
+
EMPTY_URI);
|
258
394
|
|
259
|
-
|
395
|
+
assert(mintedTokenId == tokenId);
|
260
396
|
}
|
261
397
|
|
262
398
|
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
399
|
+
/// special case: STAKES (parent may be any type) -> no intercept call
|
400
|
+
/// default case:
|
263
401
|
function _getInterceptor(
|
264
402
|
bool isInterceptor,
|
403
|
+
ObjectType objectType,
|
265
404
|
address objectAddress,
|
266
405
|
bool parentIsInterceptor,
|
267
406
|
address parentObjectAddress
|
268
407
|
)
|
269
408
|
internal
|
270
|
-
|
409
|
+
pure
|
271
410
|
returns (address interceptor)
|
272
411
|
{
|
412
|
+
// no intercepting calls for stakes
|
413
|
+
if (objectType == STAKE()) {
|
414
|
+
return address(0);
|
415
|
+
}
|
416
|
+
|
273
417
|
if (objectAddress == address(0)) {
|
274
418
|
if (parentIsInterceptor) {
|
275
419
|
return parentObjectAddress;
|
@@ -289,106 +433,100 @@ contract Registry is
|
|
289
433
|
|
290
434
|
/// @dev protocol registration used to anchor the dip ecosystem relations
|
291
435
|
function _registerProtocol()
|
292
|
-
|
436
|
+
private
|
437
|
+
returns (NftId protocolNftId)
|
293
438
|
{
|
294
439
|
uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
|
295
|
-
|
440
|
+
protocolNftId = NftIdLib.toNftId(protocolId);
|
441
|
+
|
442
|
+
_info[protocolNftId] = ObjectInfo({
|
443
|
+
nftId: protocolNftId,
|
444
|
+
parentNftId: NftIdLib.zero(),
|
445
|
+
objectType: PROTOCOL(),
|
446
|
+
isInterceptor: false,
|
447
|
+
objectAddress: address(0),
|
448
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
449
|
+
data: ""
|
450
|
+
});
|
296
451
|
|
297
452
|
_chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
|
298
|
-
|
299
|
-
_info[protocolNftId] = ObjectInfo(
|
300
|
-
protocolNftId,
|
301
|
-
zeroNftId(), // parent
|
302
|
-
PROTOCOL(),
|
303
|
-
false, // isInterceptor
|
304
|
-
address(0), // objectAddress
|
305
|
-
NFT_LOCK_ADDRESS,// initialOwner
|
306
|
-
""
|
307
|
-
);
|
308
453
|
}
|
309
454
|
|
310
455
|
/// @dev registry registration
|
311
456
|
/// might also register the global registry when not on mainnet
|
312
|
-
function _registerRegistry(
|
313
|
-
|
457
|
+
function _registerRegistry()
|
458
|
+
private
|
459
|
+
returns (NftId registryNftId)
|
314
460
|
{
|
315
|
-
uint256 registryId = _chainNft.calculateTokenId(
|
316
|
-
|
317
|
-
|
461
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
462
|
+
registryNftId = NftIdLib.toNftId(registryId);
|
318
463
|
NftId parentNftId;
|
319
464
|
|
320
465
|
if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
|
321
466
|
{// we're not the global registry
|
322
467
|
_registerGlobalRegistry();
|
323
|
-
parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
468
|
+
parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
324
469
|
}
|
325
470
|
else
|
326
471
|
{// we are global registry
|
327
|
-
parentNftId =
|
472
|
+
parentNftId = _protocolNftId;
|
328
473
|
}
|
329
474
|
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
);
|
475
|
+
_info[registryNftId] = ObjectInfo({
|
476
|
+
nftId: registryNftId,
|
477
|
+
parentNftId: parentNftId,
|
478
|
+
objectType: REGISTRY(),
|
479
|
+
isInterceptor: false,
|
480
|
+
objectAddress: address(this),
|
481
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
482
|
+
data: ""
|
483
|
+
});
|
484
|
+
|
341
485
|
_nftIdByAddress[address(this)] = registryNftId;
|
342
|
-
|
486
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, registryId);
|
343
487
|
}
|
344
488
|
|
345
|
-
|
346
489
|
/// @dev global registry registration for non mainnet registries
|
347
490
|
function _registerGlobalRegistry()
|
348
|
-
|
491
|
+
private
|
349
492
|
{
|
350
493
|
uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
|
494
|
+
NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
|
495
|
+
|
496
|
+
_info[globalRegistryNftId] = ObjectInfo({
|
497
|
+
nftId: globalRegistryNftId,
|
498
|
+
parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
|
499
|
+
objectType: REGISTRY(),
|
500
|
+
isInterceptor: false,
|
501
|
+
objectAddress: address(0),
|
502
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
503
|
+
data: ""
|
504
|
+
});
|
351
505
|
|
352
506
|
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
353
|
-
|
354
|
-
NftId globalRegistryNftId = toNftId(globalRegistryId);
|
355
|
-
|
356
|
-
_info[globalRegistryNftId] = ObjectInfo(
|
357
|
-
globalRegistryNftId,
|
358
|
-
toNftId(_chainNft.PROTOCOL_NFT_ID()), // parent
|
359
|
-
REGISTRY(),
|
360
|
-
false, // isInterceptor
|
361
|
-
address(0), // objectAddress
|
362
|
-
NFT_LOCK_ADDRESS, // initialOwner
|
363
|
-
"" // data
|
364
|
-
);
|
365
507
|
}
|
366
|
-
|
367
|
-
function
|
368
|
-
|
508
|
+
// depends on _registryNftId and _stakingAddress
|
509
|
+
function _registerStaking()
|
510
|
+
private
|
511
|
+
returns (NftId stakingNftId)
|
369
512
|
{
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
string memory serviceName = "RegistryService";
|
388
|
-
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
389
|
-
_service[serviceNameHash][VersionLib.toVersionPart(MAJOR_VERSION_MIN)] = msg.sender;
|
390
|
-
_string[serviceNftId] = serviceName;
|
391
|
-
_serviceNftId = serviceNftId;
|
513
|
+
address stakingOwner = IRegisterable(_stakingAddress).getOwner();
|
514
|
+
uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
515
|
+
stakingNftId = NftIdLib.toNftId(stakingId);
|
516
|
+
|
517
|
+
_info[stakingNftId] = ObjectInfo({
|
518
|
+
nftId: stakingNftId,
|
519
|
+
parentNftId: _registryNftId,
|
520
|
+
objectType: STAKING(),
|
521
|
+
isInterceptor: false,
|
522
|
+
objectAddress: _stakingAddress,
|
523
|
+
initialOwner: stakingOwner,
|
524
|
+
data: ""
|
525
|
+
});
|
526
|
+
|
527
|
+
_nftIdByAddress[_stakingAddress] = stakingNftId;
|
528
|
+
// reverts if nftId was already minted
|
529
|
+
_chainNft.mint(stakingOwner, stakingId);
|
392
530
|
}
|
393
531
|
|
394
532
|
/// @dev defines which object - parent types relations are allowed to register
|
@@ -397,27 +535,51 @@ contract Registry is
|
|
397
535
|
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
398
536
|
// 3) DO NOT use REGISTRY as object type
|
399
537
|
// 2) DO NOT use PROTOCOL and "zeroObjectType"
|
400
|
-
function
|
401
|
-
|
538
|
+
function _setupValidCoreTypesAndCombinations()
|
539
|
+
private
|
402
540
|
{
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
541
|
+
_coreTypes[REGISTRY()] = true;
|
542
|
+
_coreTypes[SERVICE()] = true;
|
543
|
+
_coreTypes[TOKEN()] = true;
|
544
|
+
_coreTypes[INSTANCE()] = true;
|
545
|
+
_coreTypes[PRODUCT()] = true;
|
546
|
+
_coreTypes[POOL()] = true;
|
547
|
+
_coreTypes[DISTRIBUTION()] = true;
|
548
|
+
_coreTypes[DISTRIBUTOR()] = true;
|
549
|
+
_coreTypes[ORACLE()] = true;
|
550
|
+
_coreTypes[POLICY()] = true;
|
551
|
+
_coreTypes[BUNDLE()] = true;
|
552
|
+
_coreTypes[STAKING()] = true;
|
553
|
+
_coreTypes[STAKE()] = true;
|
554
|
+
|
555
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
556
|
+
if(registryId == _chainNft.GLOBAL_REGISTRY_ID()) {
|
557
|
+
// we are global registry
|
558
|
+
// object is registry from different chain
|
559
|
+
// parent is global registry, this contract
|
560
|
+
_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
|
561
|
+
//_coreObjectCombinations[REGISTRY()][REGISTRY()] = true;
|
562
|
+
} else {
|
563
|
+
// we are not global registry
|
564
|
+
// object is local registry, this contract
|
565
|
+
// parent is global registry, object with 0 address or registry from mainnet???
|
566
|
+
}
|
567
|
+
_coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
|
568
|
+
_coreContractCombinations[TOKEN()][REGISTRY()] = true;
|
569
|
+
//_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
|
570
|
+
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
571
|
+
|
572
|
+
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
573
|
+
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
574
|
+
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
575
|
+
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
576
|
+
|
577
|
+
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
578
|
+
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
579
|
+
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
580
|
+
|
581
|
+
// staking
|
582
|
+
_coreObjectCombinations[STAKE()][PROTOCOL()] = true;
|
583
|
+
_coreObjectCombinations[STAKE()][INSTANCE()] = true;
|
422
584
|
}
|
423
585
|
}
|