@etherisc/gif-next 0.0.2-ec436bf-674 → 0.0.2-ed1536c-164
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 +71 -14
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1410 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1343 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +799 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +969 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +808 -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 +454 -554
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +356 -176
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +458 -3052
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +504 -322
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +524 -352
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +331 -108
- 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 +71 -45
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{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 +1091 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +723 -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} +294 -361
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1148 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1044 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1559 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1411 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +719 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +820 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +699 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1264 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -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} +231 -204
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +701 -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} +257 -288
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +989 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → product/IProductService.sol/IProductService.json} +140 -86
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1132 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +731 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +969 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +755 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1391 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +673 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +675 -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 +340 -195
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +434 -194
- 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 +429 -261
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +322 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +499 -338
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +320 -140
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1151 -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 +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +352 -109
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/shared/Component.sol/Component.json +890 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1461 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +765 -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} +196 -216
- 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 +625 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +854 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +699 -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 +27 -29
- 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 +8 -34
- 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 +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
- 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/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1030 -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 +109 -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 +310 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -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 +185 -165
- 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 +1435 -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 +884 -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 +2002 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +748 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1207 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1690 -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/{types → type}/Version.sol/VersionPartLib.json +3 -3
- package/contracts/distribution/Distribution.sol +263 -0
- package/contracts/distribution/DistributionService.sol +298 -0
- package/contracts/distribution/DistributionServiceManager.sol +54 -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 +62 -24
- package/contracts/instance/IInstanceService.sol +66 -13
- package/contracts/instance/Instance.sol +151 -366
- package/contracts/instance/InstanceAccessManager.sol +432 -177
- package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
- package/contracts/instance/InstanceReader.sol +143 -83
- package/contracts/instance/InstanceService.sol +309 -124
- 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 +37 -21
- package/contracts/instance/module/IBundle.sol +8 -8
- package/contracts/instance/module/IComponents.sol +52 -0
- package/contracts/instance/module/IDistribution.sol +7 -4
- package/contracts/instance/module/IPolicy.sol +56 -17
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
- package/contracts/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 +76 -45
- package/contracts/registry/IRegistryService.sol +51 -16
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +358 -269
- package/contracts/registry/RegistryAccessManager.sol +196 -0
- package/contracts/registry/RegistryService.sol +126 -259
- package/contracts/registry/RegistryServiceManager.sol +34 -42
- package/contracts/registry/ReleaseManager.sol +563 -0
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +300 -57
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/Component.sol +286 -0
- package/contracts/shared/ComponentService.sol +595 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +111 -0
- package/contracts/shared/ERC165.sol +14 -12
- 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 +12 -11
- 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 +7 -4
- package/contracts/shared/IVersionable.sol +5 -48
- package/contracts/shared/InstanceLinkedComponent.sol +145 -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 +65 -83
- package/contracts/shared/PolicyHolder.sol +101 -0
- package/contracts/shared/ProxyManager.sol +126 -25
- package/contracts/shared/Registerable.sol +26 -41
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +45 -23
- 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 +502 -0
- package/contracts/staking/StakingManager.sol +65 -0
- package/contracts/staking/StakingReader.sol +147 -0
- package/contracts/staking/StakingService.sol +375 -0
- package/contracts/staking/StakingServiceManager.sol +44 -0
- package/contracts/staking/StakingStore.sol +329 -0
- package/contracts/staking/TargetManagerLib.sol +179 -0
- package/contracts/type/Amount.sol +114 -0
- package/contracts/{types → type}/Blocknumber.sol +20 -2
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/{types → type}/DistributorType.sol +2 -2
- package/contracts/{types → type}/Fee.sol +32 -22
- package/contracts/{types → type}/NftId.sol +17 -11
- 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 +4 -0
- package/contracts/type/RoleId.sol +143 -0
- package/contracts/type/Seconds.sol +71 -0
- package/contracts/{types → type}/StateId.sol +24 -6
- package/contracts/{types → type}/Timestamp.sol +18 -13
- package/contracts/{types → type}/UFixed.sol +1 -0
- package/contracts/{types → type}/Version.sol +1 -0
- 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 -618
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -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 -782
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.json +0 -775
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- 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/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/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -448
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -855
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -460
- 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/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
- 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/contracts/components/BaseComponent.sol +0 -91
- package/contracts/components/Distribution.sol +0 -160
- package/contracts/components/IBaseComponent.sol +0 -25
- package/contracts/components/IDistributionComponent.sol +0 -44
- package/contracts/components/IPoolComponent.sol +0 -62
- package/contracts/components/IProductComponent.sol +0 -35
- package/contracts/components/Pool.sol +0 -243
- package/contracts/components/Product.sol +0 -297
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/AccessManagedSimple.sol +0 -115
- package/contracts/instance/AccessManagerSimple.sol +0 -692
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/base/ComponentServiceBase.sol +0 -118
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/module/ISetup.sol +0 -44
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/DistributionService.sol +0 -87
- package/contracts/instance/service/DistributionServiceManager.sol +0 -53
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/instance/service/IDistributionService.sol +0 -12
- package/contracts/instance/service/IPoolService.sol +0 -37
- package/contracts/instance/service/IProductService.sol +0 -107
- package/contracts/instance/service/PoolService.sol +0 -193
- package/contracts/instance/service/PoolServiceManager.sol +0 -53
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -24
- package/contracts/test/TestToken.sol +0 -26
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NftIdSet.sol +0 -60
- package/contracts/types/NumberId.sol +0 -52
- package/contracts/types/RoleId.sol +0 -89
- /package/contracts/{types → type}/AddressSet.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
- /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -1,221 +1,239 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {
|
4
|
+
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
5
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
6
|
+
|
7
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
8
|
+
import {VersionPart} from "../type/Version.sol";
|
9
|
+
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
|
6
10
|
|
7
11
|
import {ChainNft} from "./ChainNft.sol";
|
8
12
|
import {IRegistry} from "./IRegistry.sol";
|
9
|
-
import {
|
10
|
-
import {
|
11
|
-
import {
|
12
|
-
import {ITransferInterceptor} from "./ITransferInterceptor.sol";
|
13
|
-
|
14
|
-
import {ERC165} from "../shared/ERC165.sol";
|
15
|
-
|
13
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
14
|
+
import {ReleaseManager} from "./ReleaseManager.sol";
|
15
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
16
16
|
|
17
17
|
// IMPORTANT
|
18
18
|
// Each NFT minted by registry is accosiated with:
|
19
19
|
// 1) NFT owner
|
20
20
|
// 2) registred contract OR object stored in registered (parent) contract
|
21
21
|
// Four registration flows:
|
22
|
-
// 1)
|
23
|
-
// 2)
|
24
|
-
// 3) IRegisterable address by
|
25
|
-
// 4) state object by
|
22
|
+
// 1) IService address by release manager (SERVICE of domain SERVICE aka registry service aka release creation)
|
23
|
+
// 2) IService address by release manager (SERVICE of domain !SERVICE aka regular service)
|
24
|
+
// 3) IRegisterable address by regular service (INSTANCE, PRODUCT, POOL, DISTRIBUTION, ORACLE)
|
25
|
+
// 4) state object by regular service (POLICY, BUNDLE, STAKE)
|
26
26
|
|
27
27
|
contract Registry is
|
28
|
-
|
28
|
+
Initializable,
|
29
29
|
IRegistry
|
30
30
|
{
|
31
|
-
uint256 public constant GIF_MAJOR_VERSION_AT_DEPLOYMENT = 3;
|
32
31
|
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
33
|
-
uint256 public constant
|
32
|
+
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
33
|
+
uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
|
34
34
|
string public constant EMPTY_URI = "";
|
35
35
|
|
36
|
-
|
36
|
+
mapping(NftId nftId => ObjectInfo info) private _info;
|
37
|
+
mapping(address object => NftId nftId) private _nftIdByAddress;
|
37
38
|
|
38
|
-
mapping(
|
39
|
-
mapping(address object => NftId nftId) internal _nftIdByAddress;
|
39
|
+
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
40
40
|
|
41
|
-
mapping(
|
42
|
-
ObjectType objectType => bool)) internal _isApproved;
|
41
|
+
mapping(ObjectType objectType => bool) private _coreTypes;
|
43
42
|
|
44
43
|
mapping(ObjectType objectType => mapping(
|
45
|
-
ObjectType parentType => bool))
|
44
|
+
ObjectType parentType => bool)) private _coreContractCombinations;
|
46
45
|
|
47
46
|
mapping(ObjectType objectType => mapping(
|
48
|
-
ObjectType parentType => bool))
|
47
|
+
ObjectType parentType => bool)) private _coreObjectCombinations;
|
49
48
|
|
50
|
-
|
51
|
-
VersionPart majorVersion => bool isActive)) internal _tokenIsActive;
|
49
|
+
ChainNft private _chainNft;
|
52
50
|
|
53
|
-
|
54
|
-
|
55
|
-
|
51
|
+
address private _initializeOwner;
|
52
|
+
address private _tokenRegistryAddress;
|
53
|
+
address private _stakingAddress;
|
54
|
+
ReleaseManager private _releaseManager;
|
56
55
|
|
57
|
-
NftId
|
58
|
-
NftId
|
59
|
-
ChainNft internal _chainNft;
|
56
|
+
NftId private _protocolNftId;
|
57
|
+
NftId private _registryNftId;
|
60
58
|
|
61
59
|
|
62
|
-
modifier
|
63
|
-
if(msg.sender
|
64
|
-
revert
|
60
|
+
modifier onlyRegistryService() {
|
61
|
+
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
62
|
+
revert ErrorRegistryCallerNotRegistryService();
|
65
63
|
}
|
66
64
|
_;
|
67
65
|
}
|
68
66
|
|
69
|
-
|
70
|
-
|
71
|
-
if(msg.sender !=
|
72
|
-
revert
|
67
|
+
|
68
|
+
modifier onlyReleaseManager() {
|
69
|
+
if(msg.sender != address(_releaseManager)) {
|
70
|
+
revert ErrorRegistryCallerNotReleaseManager();
|
73
71
|
}
|
74
72
|
_;
|
75
73
|
}
|
76
74
|
|
77
|
-
constructor(address registryOwner, VersionPart majorVersion)
|
78
|
-
{
|
79
|
-
require(registryOwner > address(0), "Registry: registry owner is 0");
|
80
75
|
|
81
|
-
|
82
|
-
|
83
|
-
|
76
|
+
constructor() {
|
77
|
+
// register deployer
|
78
|
+
_initializeOwner = msg.sender;
|
84
79
|
|
85
80
|
// deploy NFT
|
86
|
-
_chainNft = new ChainNft(address(this))
|
81
|
+
_chainNft = new ChainNft(address(this));
|
87
82
|
|
88
83
|
// initial registry setup
|
89
84
|
_registerProtocol();
|
90
|
-
_registerRegistry(
|
91
|
-
|
85
|
+
_registerRegistry();
|
86
|
+
|
87
|
+
// set object types and object parent relations
|
88
|
+
_setupValidCoreTypesAndCombinations();
|
89
|
+
}
|
92
90
|
|
93
|
-
// set object parent relations
|
94
|
-
_setupValidObjectParentCombinations();
|
95
91
|
|
96
|
-
|
92
|
+
/// @dev wires release manager (as caller) and token to registry (this contract).
|
93
|
+
/// MUST be called by release manager.
|
94
|
+
function initialize(
|
95
|
+
address releaseManager,
|
96
|
+
address tokenRegistry
|
97
|
+
)
|
98
|
+
external
|
99
|
+
initializer()
|
100
|
+
{
|
101
|
+
if (msg.sender != _initializeOwner) {
|
102
|
+
revert ErrorRegistryCallerNotInitializeOwner(_initializeOwner, msg.sender);
|
103
|
+
}
|
104
|
+
|
105
|
+
_releaseManager = ReleaseManager(releaseManager);
|
106
|
+
_tokenRegistryAddress = tokenRegistry;
|
97
107
|
}
|
98
108
|
|
99
|
-
// from IRegistry
|
100
109
|
|
101
|
-
|
102
|
-
|
110
|
+
function registerStaking(
|
111
|
+
address stakingAddress
|
112
|
+
)
|
103
113
|
external
|
104
|
-
|
114
|
+
onlyReleaseManager()
|
105
115
|
{
|
106
|
-
//
|
107
|
-
|
108
|
-
|
109
|
-
if (newMax <= oldMax || newMax - oldMax != 1) {
|
110
|
-
revert MajorVersionMaxIncreaseInvalid(newMajorVersion, _majorVersion);
|
116
|
+
// staking contract for same chain may only be registered once
|
117
|
+
if (_stakingAddress != address(0)) {
|
118
|
+
revert StakingAlreadyRegistered(_stakingAddress);
|
111
119
|
}
|
112
120
|
|
113
|
-
|
114
|
-
|
121
|
+
_stakingAddress = stakingAddress;
|
122
|
+
|
123
|
+
address stakingOwner = IRegisterable(stakingAddress).getOwner();
|
124
|
+
uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
125
|
+
NftId stakingNftId = NftIdLib.toNftId(stakingId);
|
126
|
+
|
127
|
+
_nftIdByAddress[_stakingAddress] = stakingNftId;
|
128
|
+
_info[stakingNftId] = ObjectInfo({
|
129
|
+
nftId: stakingNftId,
|
130
|
+
parentNftId: _registryNftId,
|
131
|
+
objectType: STAKING(),
|
132
|
+
isInterceptor: false,
|
133
|
+
objectAddress: _stakingAddress,
|
134
|
+
initialOwner: stakingOwner,
|
135
|
+
data: ""
|
136
|
+
});
|
137
|
+
|
138
|
+
_chainNft.mint(stakingOwner, stakingId);
|
115
139
|
}
|
116
140
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
141
|
+
|
142
|
+
function registerService(
|
143
|
+
ObjectInfo memory info,
|
144
|
+
VersionPart version,
|
145
|
+
ObjectType domain
|
146
|
+
)
|
121
147
|
external
|
122
|
-
|
148
|
+
onlyReleaseManager
|
123
149
|
returns(NftId nftId)
|
124
150
|
{
|
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();
|
151
|
+
address service = info.objectAddress;
|
152
|
+
/* must be guaranteed by release manager
|
153
|
+
if(service == address(0)) {
|
154
|
+
revert();
|
137
155
|
}
|
138
156
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
uint256 mintedTokenId = _chainNft.mint(
|
143
|
-
info.initialOwner,
|
144
|
-
interceptor,
|
145
|
-
EMPTY_URI);
|
146
|
-
nftId = toNftId(mintedTokenId);
|
157
|
+
if(version.eqz()) {
|
158
|
+
revert();
|
159
|
+
}
|
147
160
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
info.
|
152
|
-
|
161
|
+
if(info.objectType != SERVICE()) {
|
162
|
+
revert();
|
163
|
+
}
|
164
|
+
if(info.parentType != REGISTRY()) {
|
165
|
+
revert();
|
166
|
+
}
|
167
|
+
info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
|
168
|
+
*/
|
169
|
+
|
170
|
+
if(domain.eqz()) {
|
171
|
+
revert ErrorRegistryDomainZero(service);
|
172
|
+
}
|
153
173
|
|
154
|
-
if(
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
revert InvalidTypesCombination(objectType, parentType);
|
160
|
-
}
|
174
|
+
if(_service[version][domain] > address(0)) {
|
175
|
+
revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
|
176
|
+
}
|
177
|
+
|
178
|
+
_service[version][domain] = service;
|
161
179
|
|
162
|
-
|
180
|
+
nftId = _register(info);
|
163
181
|
|
164
|
-
|
165
|
-
|
166
|
-
}
|
182
|
+
emit LogServiceRegistration(version, domain);
|
183
|
+
}
|
167
184
|
|
168
|
-
|
185
|
+
function register(ObjectInfo memory info)
|
186
|
+
external
|
187
|
+
onlyRegistryService
|
188
|
+
returns(NftId nftId)
|
189
|
+
{
|
190
|
+
ObjectType objectType = info.objectType;
|
191
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
169
192
|
|
170
|
-
|
171
|
-
|
172
|
-
|
193
|
+
// only valid core types combinations
|
194
|
+
if(info.objectAddress == address(0))
|
195
|
+
{
|
196
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
197
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
173
198
|
}
|
174
199
|
}
|
175
200
|
else
|
176
201
|
{
|
177
|
-
if(
|
178
|
-
revert
|
202
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
203
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
179
204
|
}
|
180
205
|
}
|
181
206
|
|
182
|
-
|
207
|
+
nftId = _register(info);
|
183
208
|
}
|
184
209
|
|
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)
|
210
|
+
function registerWithCustomType(ObjectInfo memory info)
|
189
211
|
external
|
190
|
-
|
212
|
+
onlyRegistryService
|
213
|
+
returns(NftId nftId)
|
191
214
|
{
|
192
|
-
|
193
|
-
|
194
|
-
if (info.nftId.eqz()) {
|
195
|
-
revert TokenNotRegistered(token);
|
196
|
-
}
|
215
|
+
ObjectType objectType = info.objectType;
|
216
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
197
217
|
|
198
|
-
|
199
|
-
|
200
|
-
revert NotToken(token);
|
218
|
+
if(_coreTypes[objectType]) {
|
219
|
+
revert ErrorRegistryCoreTypeRegistration();
|
201
220
|
}
|
202
221
|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
revert
|
222
|
+
if(
|
223
|
+
parentType == PROTOCOL() ||
|
224
|
+
parentType == REGISTRY() ||
|
225
|
+
parentType == SERVICE()
|
226
|
+
) {
|
227
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
209
228
|
}
|
210
229
|
|
211
|
-
|
212
|
-
|
213
|
-
emit LogTokenStateSet(token, majorVersion, active);
|
230
|
+
_register(info);
|
214
231
|
}
|
215
232
|
|
233
|
+
|
216
234
|
/// @dev earliest GIF major version
|
217
|
-
function
|
218
|
-
return
|
235
|
+
function getInitialVersion() external view returns (VersionPart) {
|
236
|
+
return _releaseManager.getInitialVersion();
|
219
237
|
}
|
220
238
|
|
221
239
|
// TODO make distinction between active an not yet active version
|
@@ -225,17 +243,20 @@ contract Registry is
|
|
225
243
|
// in this case we might want to have a period where the latest version is
|
226
244
|
// in the process of being set up while the latest active version is 1 major release smaller
|
227
245
|
/// @dev latest GIF major version (might not yet be active)
|
228
|
-
function
|
229
|
-
return
|
246
|
+
function getNextVersion() external view returns (VersionPart) {
|
247
|
+
return _releaseManager.getNextVersion();
|
230
248
|
}
|
231
249
|
|
232
250
|
/// @dev latest active GIF release version
|
233
|
-
function
|
234
|
-
return
|
251
|
+
function getLatestVersion() external view returns (VersionPart) {
|
252
|
+
return _releaseManager.getLatestVersion();
|
253
|
+
}
|
254
|
+
|
255
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
|
256
|
+
return _releaseManager.getReleaseInfo(version);
|
235
257
|
}
|
236
|
-
|
237
258
|
|
238
|
-
function getObjectCount() external view
|
259
|
+
function getObjectCount() external view returns (uint256) {
|
239
260
|
return _chainNft.totalSupply();
|
240
261
|
}
|
241
262
|
|
@@ -243,91 +264,160 @@ contract Registry is
|
|
243
264
|
return _registryNftId;
|
244
265
|
}
|
245
266
|
|
246
|
-
function
|
267
|
+
function getProtocolNftId() external view returns (NftId nftId) {
|
268
|
+
return _protocolNftId;
|
269
|
+
}
|
270
|
+
|
271
|
+
function getNftId(address object) external view returns (NftId id) {
|
247
272
|
return _nftIdByAddress[object];
|
248
273
|
}
|
249
274
|
|
250
|
-
function ownerOf(NftId nftId) public view
|
275
|
+
function ownerOf(NftId nftId) public view returns (address) {
|
251
276
|
return _chainNft.ownerOf(nftId.toInt());
|
252
277
|
}
|
253
278
|
|
254
279
|
function ownerOf(address contractAddress) public view returns (address) {
|
255
|
-
|
256
280
|
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
257
281
|
}
|
258
282
|
|
259
|
-
function getObjectInfo(NftId nftId) external view
|
283
|
+
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
260
284
|
return _info[nftId];
|
261
285
|
}
|
262
286
|
|
263
|
-
function getObjectInfo(address object) external view
|
264
|
-
|
287
|
+
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
265
288
|
return _info[_nftIdByAddress[object]];
|
266
289
|
}
|
267
290
|
|
268
|
-
function isRegistered(NftId nftId) public view
|
291
|
+
function isRegistered(NftId nftId) public view returns (bool) {
|
269
292
|
return _info[nftId].objectType.gtz();
|
270
293
|
}
|
271
294
|
|
272
|
-
function isRegistered(address object) external view
|
295
|
+
function isRegistered(address object) external view returns (bool) {
|
273
296
|
return _nftIdByAddress[object].gtz();
|
274
297
|
}
|
275
298
|
|
276
|
-
function
|
277
|
-
return
|
299
|
+
function isRegisteredService(address object) external view returns (bool) {
|
300
|
+
return _info[_nftIdByAddress[object]].objectType == SERVICE();
|
278
301
|
}
|
279
302
|
|
280
|
-
function
|
281
|
-
|
303
|
+
function isRegisteredComponent(address object) external view returns (bool) {
|
304
|
+
NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
|
305
|
+
return _info[objectParentNftId].objectType == INSTANCE();
|
306
|
+
}
|
307
|
+
|
308
|
+
function isValidRelease(VersionPart version) external view returns (bool)
|
309
|
+
{
|
310
|
+
return _releaseManager.isValidRelease(version);
|
311
|
+
}
|
312
|
+
|
313
|
+
function getStakingAddress() external view returns (address staking) {
|
314
|
+
return _stakingAddress;
|
315
|
+
}
|
316
|
+
|
317
|
+
function getTokenRegistryAddress() external view returns (address tokenRegistry) {
|
318
|
+
return _tokenRegistryAddress;
|
282
319
|
}
|
283
320
|
|
284
|
-
// special case to retrive a gif service
|
285
321
|
function getServiceAddress(
|
286
|
-
|
287
|
-
VersionPart
|
288
|
-
) external view returns (address)
|
322
|
+
ObjectType serviceDomain,
|
323
|
+
VersionPart releaseVersion
|
324
|
+
) external view returns (address service)
|
289
325
|
{
|
290
|
-
|
291
|
-
return _service[serviceNameHash][majorVersion];
|
326
|
+
service = _service[releaseVersion][serviceDomain];
|
292
327
|
}
|
293
328
|
|
294
|
-
function
|
295
|
-
return
|
329
|
+
function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
|
330
|
+
return address(_releaseManager.getReleaseAccessManager(version));
|
331
|
+
}
|
332
|
+
|
333
|
+
function getReleaseManagerAddress() external view returns (address) {
|
334
|
+
return address(_releaseManager);
|
335
|
+
}
|
336
|
+
|
337
|
+
function getChainNftAddress() external view override returns (address) {
|
338
|
+
return address(_chainNft);
|
296
339
|
}
|
297
340
|
|
298
341
|
function getOwner() public view returns (address owner) {
|
299
342
|
return ownerOf(address(this));
|
300
343
|
}
|
301
344
|
|
345
|
+
// IERC165
|
346
|
+
|
347
|
+
function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
|
348
|
+
if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
|
349
|
+
return true;
|
350
|
+
}
|
351
|
+
|
352
|
+
return false;
|
353
|
+
}
|
354
|
+
|
302
355
|
// Internals
|
303
356
|
|
304
|
-
|
357
|
+
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
358
|
+
// TODO registration of precompile addresses
|
359
|
+
function _register(ObjectInfo memory info)
|
305
360
|
internal
|
361
|
+
returns(NftId nftId)
|
306
362
|
{
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
363
|
+
ObjectType objectType = info.objectType;
|
364
|
+
bool isInterceptor = info.isInterceptor;
|
365
|
+
address objectAddress = info.objectAddress;
|
366
|
+
address owner = info.initialOwner;
|
367
|
+
|
368
|
+
NftId parentNftId = info.parentNftId;
|
369
|
+
ObjectInfo memory parentInfo = _info[parentNftId];
|
370
|
+
ObjectType parentType = parentInfo.objectType; // see function header
|
371
|
+
address parentAddress = parentInfo.objectAddress;
|
372
|
+
|
373
|
+
// parent is contract -> need to check? -> check before minting
|
374
|
+
// special case: staking: to protocol possible as well
|
375
|
+
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
376
|
+
// special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
|
377
|
+
// special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
|
378
|
+
if(objectType != STAKE()) {
|
379
|
+
if(parentAddress == address(0)) {
|
380
|
+
revert ErrorRegistryParentAddressZero();
|
381
|
+
}
|
316
382
|
}
|
317
|
-
|
318
|
-
|
319
|
-
|
383
|
+
|
384
|
+
address interceptorAddress = _getInterceptor(
|
385
|
+
isInterceptor,
|
386
|
+
objectType,
|
387
|
+
objectAddress,
|
388
|
+
parentInfo.isInterceptor,
|
389
|
+
parentAddress);
|
390
|
+
|
391
|
+
uint256 tokenId = _chainNft.getNextTokenId();
|
392
|
+
nftId = NftIdLib.toNftId(tokenId);
|
393
|
+
info.nftId = nftId;
|
394
|
+
_info[nftId] = info;
|
395
|
+
|
396
|
+
if(objectAddress > address(0)) {
|
397
|
+
if(_nftIdByAddress[objectAddress].gtz()) {
|
398
|
+
revert ErrorRegistryContractAlreadyRegistered(objectAddress);
|
399
|
+
}
|
400
|
+
|
401
|
+
_nftIdByAddress[objectAddress] = nftId;
|
320
402
|
}
|
321
403
|
|
322
|
-
|
323
|
-
|
404
|
+
emit LogRegistration(nftId, parentNftId, objectType, isInterceptor, objectAddress, owner);
|
405
|
+
|
406
|
+
// calls nft receiver(1) and interceptor(2)
|
407
|
+
uint256 mintedTokenId = _chainNft.mint(
|
408
|
+
owner,
|
409
|
+
interceptorAddress,
|
410
|
+
EMPTY_URI);
|
324
411
|
|
325
|
-
|
412
|
+
assert(mintedTokenId == tokenId);
|
326
413
|
}
|
327
414
|
|
328
415
|
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
416
|
+
/// special case: STAKES (parent may be any type) -> no intercept call
|
417
|
+
/// default case:
|
329
418
|
function _getInterceptor(
|
330
419
|
bool isInterceptor,
|
420
|
+
ObjectType objectType,
|
331
421
|
address objectAddress,
|
332
422
|
bool parentIsInterceptor,
|
333
423
|
address parentObjectAddress
|
@@ -336,6 +426,11 @@ contract Registry is
|
|
336
426
|
view
|
337
427
|
returns (address interceptor)
|
338
428
|
{
|
429
|
+
// no intercepting calls for stakes
|
430
|
+
if (objectType == STAKE()) {
|
431
|
+
return address(0);
|
432
|
+
}
|
433
|
+
|
339
434
|
if (objectAddress == address(0)) {
|
340
435
|
if (parentIsInterceptor) {
|
341
436
|
return parentObjectAddress;
|
@@ -355,106 +450,76 @@ contract Registry is
|
|
355
450
|
|
356
451
|
/// @dev protocol registration used to anchor the dip ecosystem relations
|
357
452
|
function _registerProtocol()
|
358
|
-
|
453
|
+
private
|
359
454
|
{
|
360
455
|
uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
|
361
|
-
|
456
|
+
_protocolNftId = NftIdLib.toNftId(protocolId);
|
457
|
+
|
458
|
+
_info[_protocolNftId] = ObjectInfo({
|
459
|
+
nftId: _protocolNftId,
|
460
|
+
parentNftId: NftIdLib.zero(),
|
461
|
+
objectType: PROTOCOL(),
|
462
|
+
isInterceptor: false,
|
463
|
+
objectAddress: address(0),
|
464
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
465
|
+
data: ""
|
466
|
+
});
|
362
467
|
|
363
468
|
_chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
|
364
|
-
|
365
|
-
_info[protocolNftId] = ObjectInfo(
|
366
|
-
protocolNftId,
|
367
|
-
zeroNftId(), // parent
|
368
|
-
PROTOCOL(),
|
369
|
-
false, // isInterceptor
|
370
|
-
address(0), // objectAddress
|
371
|
-
NFT_LOCK_ADDRESS,// initialOwner
|
372
|
-
""
|
373
|
-
);
|
374
469
|
}
|
375
470
|
|
376
471
|
/// @dev registry registration
|
377
472
|
/// might also register the global registry when not on mainnet
|
378
|
-
function _registerRegistry(
|
379
|
-
|
473
|
+
function _registerRegistry()
|
474
|
+
private
|
475
|
+
returns (NftId registryNftId)
|
380
476
|
{
|
381
|
-
uint256 registryId = _chainNft.calculateTokenId(
|
382
|
-
|
383
|
-
|
477
|
+
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
478
|
+
_registryNftId = NftIdLib.toNftId(registryId);
|
384
479
|
NftId parentNftId;
|
385
480
|
|
386
481
|
if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
|
387
482
|
{// we're not the global registry
|
388
483
|
_registerGlobalRegistry();
|
389
|
-
parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
484
|
+
parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
390
485
|
}
|
391
486
|
else
|
392
487
|
{// we are global registry
|
393
|
-
parentNftId =
|
488
|
+
parentNftId = _protocolNftId;
|
394
489
|
}
|
395
490
|
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
);
|
407
|
-
|
408
|
-
_registryNftId = registryNftId;
|
491
|
+
_info[_registryNftId] = ObjectInfo({
|
492
|
+
nftId: _registryNftId,
|
493
|
+
parentNftId: parentNftId,
|
494
|
+
objectType: REGISTRY(),
|
495
|
+
isInterceptor: false,
|
496
|
+
objectAddress: address(this),
|
497
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
498
|
+
data: ""
|
499
|
+
});
|
500
|
+
|
501
|
+
_nftIdByAddress[address(this)] = _registryNftId;
|
502
|
+
_chainNft.mint(NFT_LOCK_ADDRESS, registryId);
|
409
503
|
}
|
410
504
|
|
411
|
-
|
412
505
|
/// @dev global registry registration for non mainnet registries
|
413
506
|
function _registerGlobalRegistry()
|
414
|
-
|
507
|
+
private
|
415
508
|
{
|
416
509
|
uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
|
510
|
+
NftId globalRegistryNftId = NftIdLib.toNftId(globalRegistryId);
|
511
|
+
|
512
|
+
_info[globalRegistryNftId] = ObjectInfo({
|
513
|
+
nftId: globalRegistryNftId,
|
514
|
+
parentNftId: NftIdLib.toNftId(_chainNft.PROTOCOL_NFT_ID()),
|
515
|
+
objectType: REGISTRY(),
|
516
|
+
isInterceptor: false,
|
517
|
+
objectAddress: address(0),
|
518
|
+
initialOwner: NFT_LOCK_ADDRESS,
|
519
|
+
data: ""
|
520
|
+
});
|
417
521
|
|
418
522
|
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
419
|
-
|
420
|
-
NftId globalRegistryNftId = toNftId(globalRegistryId);
|
421
|
-
|
422
|
-
_info[globalRegistryNftId] = ObjectInfo(
|
423
|
-
globalRegistryNftId,
|
424
|
-
toNftId(_chainNft.PROTOCOL_NFT_ID()), // parent
|
425
|
-
REGISTRY(),
|
426
|
-
false, // isInterceptor
|
427
|
-
address(0), // objectAddress
|
428
|
-
NFT_LOCK_ADDRESS, // initialOwner
|
429
|
-
"" // data
|
430
|
-
);
|
431
|
-
}
|
432
|
-
|
433
|
-
function _registerRegistryService(address registryOwner)
|
434
|
-
internal
|
435
|
-
{
|
436
|
-
uint256 serviceId = _chainNft.calculateTokenId(REGISTRY_SERVICE_TOKEN_SEQUENCE_ID);
|
437
|
-
NftId serviceNftId = toNftId(serviceId);
|
438
|
-
|
439
|
-
_chainNft.mint(registryOwner, serviceId);
|
440
|
-
|
441
|
-
_info[serviceNftId] = ObjectInfo(
|
442
|
-
serviceNftId,
|
443
|
-
_registryNftId,
|
444
|
-
SERVICE(),
|
445
|
-
false, // isInterceptor
|
446
|
-
msg.sender, // service deploys registry
|
447
|
-
registryOwner, // initialOwner,
|
448
|
-
""
|
449
|
-
);
|
450
|
-
|
451
|
-
_nftIdByAddress[msg.sender] = serviceNftId;
|
452
|
-
|
453
|
-
string memory serviceName = "RegistryService";
|
454
|
-
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
455
|
-
_service[serviceNameHash][VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT)] = msg.sender;
|
456
|
-
_string[serviceNftId] = serviceName;
|
457
|
-
_serviceNftId = serviceNftId;
|
458
523
|
}
|
459
524
|
|
460
525
|
/// @dev defines which object - parent types relations are allowed to register
|
@@ -463,27 +528,51 @@ contract Registry is
|
|
463
528
|
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
464
529
|
// 3) DO NOT use REGISTRY as object type
|
465
530
|
// 2) DO NOT use PROTOCOL and "zeroObjectType"
|
466
|
-
function
|
467
|
-
|
531
|
+
function _setupValidCoreTypesAndCombinations()
|
532
|
+
private
|
468
533
|
{
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
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;
|
488
577
|
}
|
489
578
|
}
|