@etherisc/gif-next 0.0.2-fe88ad7-208 → 0.0.2-ff282a4-523
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 +8 -13
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1376 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +73 -83
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +275 -1359
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +264 -218
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +441 -2539
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +479 -178
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +432 -280
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +399 -383
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +295 -99
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +93 -14
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
- 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 +58 -75
- 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/IComponents.sol/IComponents.json +10 -0
- 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/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +316 -250
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1407 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +708 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -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} +218 -191
- 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/{instance/service → product}/IPolicyService.sol/IPolicyService.json +264 -277
- 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} +241 -230
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +254 -168
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +72 -166
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1198 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -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 +165 -5
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +158 -215
- 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 +196 -31
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +20 -20
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +270 -254
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +291 -85
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +151 -77
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +142 -54
- 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/{components/Pool.sol/Pool.json → shared/Component.sol/Component.json} +358 -327
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentService.sol/ComponentService.json} +263 -164
- 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/{components/Distribution.sol/Distribution.json → shared/IComponent.sol/IComponent.json} +173 -212
- 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 +189 -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/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +71 -165
- 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/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 +302 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +285 -65
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -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 +173 -153
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -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/{components/IBaseComponent.sol/IBaseComponent.json → staking/IStaking.sol/IStaking.json} +62 -150
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → staking/IStakingService.sol/IStakingService.json} +232 -169
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +497 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +623 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +797 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +632 -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/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
- 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 +166 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
- 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 +124 -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 +285 -0
- package/contracts/distribution/DistributionService.sol +349 -0
- package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +71 -0
- package/contracts/distribution/IDistributionService.sol +87 -0
- package/contracts/instance/BundleManager.sol +22 -25
- package/contracts/instance/IInstance.sol +56 -41
- package/contracts/instance/IInstanceService.sol +49 -16
- package/contracts/instance/Instance.sol +149 -196
- package/contracts/instance/InstanceAccessManager.sol +406 -166
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +102 -49
- package/contracts/instance/InstanceService.sol +206 -248
- package/contracts/instance/InstanceServiceManager.sol +2 -2
- package/contracts/instance/InstanceStore.sol +211 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
- package/contracts/instance/base/IKeyValueStore.sol +14 -10
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +44 -47
- package/contracts/instance/base/Lifecycle.sol +28 -7
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -35
- package/contracts/instance/module/IAccess.sol +24 -18
- package/contracts/instance/module/IBundle.sol +11 -8
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +7 -4
- package/contracts/instance/module/IPolicy.sol +50 -17
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/instance/module/ISetup.sol +9 -22
- package/contracts/instance/module/ITreasury.sol +2 -2
- package/contracts/pool/BundleService.sol +382 -0
- package/contracts/{instance/service → pool}/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +118 -0
- package/contracts/pool/IPoolComponent.sol +114 -0
- package/contracts/pool/IPoolService.sol +114 -0
- package/contracts/pool/Pool.sol +302 -0
- package/contracts/pool/PoolService.sol +403 -0
- package/contracts/{instance/service → pool}/PoolServiceManager.sol +6 -6
- package/contracts/product/ApplicationService.sol +186 -0
- package/contracts/product/ApplicationServiceManager.sol +35 -0
- package/contracts/product/ClaimService.sol +442 -0
- package/contracts/product/ClaimServiceManager.sol +35 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +93 -0
- package/contracts/product/IPolicyService.sol +80 -0
- package/contracts/product/IPricingService.sol +37 -0
- package/contracts/product/IProductComponent.sol +41 -0
- package/contracts/{instance/service → product}/IProductService.sol +10 -10
- package/contracts/product/PolicyService.sol +376 -0
- package/contracts/{instance/service → product}/PolicyServiceManager.sol +7 -7
- package/contracts/product/PricingService.sol +275 -0
- package/contracts/product/PricingServiceManager.sol +51 -0
- package/contracts/product/Product.sol +379 -0
- package/contracts/product/ProductService.sol +210 -0
- package/contracts/{instance/service → product}/ProductServiceManager.sol +7 -7
- package/contracts/registry/ChainNft.sol +15 -1
- package/contracts/registry/IRegistry.sol +33 -14
- package/contracts/registry/IRegistryService.sol +28 -17
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +184 -75
- package/contracts/registry/RegistryAccessManager.sol +32 -35
- package/contracts/registry/RegistryService.sol +126 -145
- package/contracts/registry/RegistryServiceManager.sol +13 -15
- package/contracts/registry/ReleaseManager.sol +157 -145
- package/contracts/registry/TokenRegistry.sol +21 -15
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/Component.sol +271 -0
- package/contracts/shared/ComponentService.sol +150 -0
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/IComponent.sol +90 -0
- package/contracts/shared/INftOwnable.sol +12 -11
- package/contracts/shared/IPolicyHolder.sol +40 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +6 -4
- package/contracts/shared/IVersionable.sol +5 -48
- package/contracts/shared/NftOwnable.sol +64 -80
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +26 -41
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +37 -23
- package/contracts/shared/TokenHandler.sol +14 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/staking/IStaking.sol +15 -0
- package/contracts/staking/IStakingService.sol +105 -0
- package/contracts/staking/Staking.sol +64 -0
- package/contracts/staking/StakingManager.sol +44 -0
- package/contracts/staking/StakingService.sol +204 -0
- package/contracts/staking/StakingServiceManager.sol +41 -0
- package/contracts/type/Amount.sol +109 -0
- package/contracts/{types → type}/Blocknumber.sol +1 -0
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/{types → type}/DistributorType.sol +2 -2
- package/contracts/{types → type}/Fee.sol +17 -8
- package/contracts/{types → type}/NftId.sol +8 -0
- package/contracts/{types → type}/NftIdSet.sol +1 -1
- package/contracts/{types → type}/ObjectType.sol +21 -7
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +4 -0
- package/contracts/{types → type}/RoleId.sol +56 -14
- package/contracts/type/Seconds.sol +54 -0
- package/contracts/{types → type}/StateId.sol +7 -2
- 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/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- 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 -275
- 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/Product.sol/Product.dbg.json +0 -4
- 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/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
- 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/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -945
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -432
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -814
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -693
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -420
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
- 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/IPolicyService.sol/IPolicyService.dbg.json +0 -4
- 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/PolicyService.sol/PolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -993
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -420
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
- 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/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/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 -159
- package/contracts/components/Distribution.sol +0 -163
- package/contracts/components/IBaseComponent.sol +0 -34
- package/contracts/components/IDistributionComponent.sol +0 -44
- package/contracts/components/IPoolComponent.sol +0 -66
- package/contracts/components/IProductComponent.sol +0 -35
- package/contracts/components/Pool.sol +0 -271
- package/contracts/components/Product.sol +0 -292
- 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/AccessManagerUpgradeableInitializeable.sol +0 -23
- package/contracts/instance/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -82
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/BundleService.sol +0 -260
- package/contracts/instance/service/ComponentOwnerService.sol +0 -315
- package/contracts/instance/service/DistributionService.sol +0 -113
- package/contracts/instance/service/IBundleService.sol +0 -45
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/instance/service/IDistributionService.sol +0 -12
- package/contracts/instance/service/IPolicyService.sol +0 -87
- package/contracts/instance/service/IPoolService.sol +0 -20
- package/contracts/instance/service/PolicyService.sol +0 -503
- package/contracts/instance/service/PoolService.sol +0 -124
- package/contracts/instance/service/ProductService.sol +0 -170
- 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 -25
- package/contracts/test/TestToken.sol +0 -26
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NumberId.sol +0 -52
- /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,12 +1,11 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
4
5
|
|
5
|
-
import {NftId, toNftId, zeroNftId} from "../
|
6
|
-
import {VersionPart} from "../
|
7
|
-
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../
|
8
|
-
|
9
|
-
import {ERC165} from "../shared/ERC165.sol";
|
6
|
+
import {NftId, toNftId, zeroNftId} from "../type/NftId.sol";
|
7
|
+
import {VersionPart} from "../type/Version.sol";
|
8
|
+
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
|
10
9
|
|
11
10
|
import {ChainNft} from "./ChainNft.sol";
|
12
11
|
import {IRegistry} from "./IRegistry.sol";
|
@@ -23,28 +22,31 @@ import {ReleaseManager} from "./ReleaseManager.sol";
|
|
23
22
|
// 4) state object by regular service (POLICY, BUNDLE, STAKE)
|
24
23
|
|
25
24
|
contract Registry is
|
26
|
-
ERC165,
|
27
25
|
IRegistry
|
28
26
|
{
|
29
27
|
address public constant NFT_LOCK_ADDRESS = address(0x1);
|
30
28
|
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
29
|
+
uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
|
31
30
|
string public constant EMPTY_URI = "";
|
32
31
|
|
33
|
-
mapping(NftId nftId => ObjectInfo info)
|
34
|
-
mapping(address object => NftId nftId)
|
32
|
+
mapping(NftId nftId => ObjectInfo info) private _info;
|
33
|
+
mapping(address object => NftId nftId) private _nftIdByAddress;
|
34
|
+
|
35
|
+
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
35
36
|
|
36
|
-
mapping(
|
37
|
+
mapping(ObjectType objectType => bool) private _coreTypes;
|
37
38
|
|
38
39
|
mapping(ObjectType objectType => mapping(
|
39
|
-
ObjectType parentType => bool))
|
40
|
+
ObjectType parentType => bool)) private _coreContractCombinations;
|
40
41
|
|
41
42
|
mapping(ObjectType objectType => mapping(
|
42
|
-
ObjectType parentType => bool))
|
43
|
+
ObjectType parentType => bool)) private _coreObjectCombinations;
|
43
44
|
|
44
|
-
NftId
|
45
|
-
ChainNft
|
45
|
+
NftId private _registryNftId;
|
46
|
+
ChainNft private _chainNft;
|
46
47
|
|
47
|
-
ReleaseManager
|
48
|
+
ReleaseManager private _releaseManager;
|
49
|
+
address private _stakingAddress;
|
48
50
|
|
49
51
|
modifier onlyRegistryService() {
|
50
52
|
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
@@ -60,21 +62,50 @@ contract Registry is
|
|
60
62
|
_;
|
61
63
|
}
|
62
64
|
|
63
|
-
constructor()
|
64
|
-
{
|
65
|
+
constructor() {
|
65
66
|
_releaseManager = ReleaseManager(msg.sender);
|
66
67
|
|
67
68
|
// deploy NFT
|
68
|
-
_chainNft = new ChainNft(address(this))
|
69
|
+
_chainNft = new ChainNft(address(this));
|
69
70
|
|
70
71
|
// initial registry setup
|
71
72
|
_registerProtocol();
|
72
73
|
_registerRegistry();
|
73
74
|
|
74
|
-
// set object parent relations
|
75
|
-
|
75
|
+
// set object types and object parent relations
|
76
|
+
_setupValidCoreTypesAndCombinations();
|
77
|
+
}
|
78
|
+
|
76
79
|
|
77
|
-
|
80
|
+
function registerStaking(
|
81
|
+
address stakingAddress,
|
82
|
+
address stakingOwner
|
83
|
+
)
|
84
|
+
external
|
85
|
+
onlyReleaseManager
|
86
|
+
returns(NftId stakingNftId)
|
87
|
+
{
|
88
|
+
// staking contract for same chain may only be registered once
|
89
|
+
if (_stakingAddress != address(0)) {
|
90
|
+
revert StakingAlreadyRegistered(_stakingAddress);
|
91
|
+
}
|
92
|
+
|
93
|
+
_stakingAddress = stakingAddress;
|
94
|
+
uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
95
|
+
stakingNftId = toNftId(stakingId);
|
96
|
+
|
97
|
+
_nftIdByAddress[_stakingAddress] = stakingNftId;
|
98
|
+
_info[stakingNftId] = ObjectInfo({
|
99
|
+
nftId: stakingNftId,
|
100
|
+
parentNftId: _registryNftId,
|
101
|
+
objectType: STAKING(),
|
102
|
+
isInterceptor: false,
|
103
|
+
objectAddress: _stakingAddress,
|
104
|
+
initialOwner: stakingOwner,
|
105
|
+
data: ""
|
106
|
+
});
|
107
|
+
|
108
|
+
_chainNft.mint(stakingOwner, stakingId);
|
78
109
|
}
|
79
110
|
|
80
111
|
function registerService(
|
@@ -90,7 +121,10 @@ contract Registry is
|
|
90
121
|
if(info.objectType != SERVICE()) {
|
91
122
|
revert();
|
92
123
|
}
|
93
|
-
info.
|
124
|
+
if(info.parentType != REGISTRY()) {
|
125
|
+
revert();
|
126
|
+
}
|
127
|
+
info.initialOwner == NFT_LOCK_ADDRESS <- if services are access managed
|
94
128
|
*/
|
95
129
|
|
96
130
|
if(_service[version][domain] > address(0)) {
|
@@ -109,16 +143,58 @@ contract Registry is
|
|
109
143
|
onlyRegistryService
|
110
144
|
returns(NftId nftId)
|
111
145
|
{
|
146
|
+
ObjectType objectType = info.objectType;
|
147
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
148
|
+
|
149
|
+
// TODO do not need it here -> SERVICE is no longer part of _coreContractCombinations
|
112
150
|
// no service registrations
|
113
|
-
if(
|
151
|
+
if(objectType == SERVICE()) {
|
114
152
|
revert ServiceRegistration();
|
115
153
|
}
|
116
154
|
|
155
|
+
// only valid core types combinations
|
156
|
+
if(info.objectAddress == address(0))
|
157
|
+
{
|
158
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
159
|
+
revert InvalidTypesCombination(objectType, parentType);
|
160
|
+
}
|
161
|
+
}
|
162
|
+
else
|
163
|
+
{
|
164
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
165
|
+
revert InvalidTypesCombination(objectType, parentType);
|
166
|
+
}
|
167
|
+
}
|
168
|
+
|
117
169
|
nftId = _register(info);
|
118
170
|
}
|
119
171
|
|
172
|
+
function registerWithCustomType(ObjectInfo memory info)
|
173
|
+
external
|
174
|
+
onlyRegistryService
|
175
|
+
returns(NftId nftId)
|
176
|
+
{
|
177
|
+
ObjectType objectType = info.objectType;
|
178
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
179
|
+
|
180
|
+
if(_coreTypes[objectType]) {
|
181
|
+
revert CoreTypeRegistration();
|
182
|
+
}
|
183
|
+
|
184
|
+
if(
|
185
|
+
parentType == PROTOCOL() ||
|
186
|
+
parentType == REGISTRY() ||
|
187
|
+
parentType == SERVICE()
|
188
|
+
) {
|
189
|
+
revert InvalidTypesCombination(objectType, parentType);
|
190
|
+
}
|
191
|
+
|
192
|
+
_register(info);
|
193
|
+
}
|
194
|
+
|
195
|
+
|
120
196
|
/// @dev earliest GIF major version
|
121
|
-
function
|
197
|
+
function getInitialVersion() external view returns (VersionPart) {
|
122
198
|
return _releaseManager.getInitialVersion();
|
123
199
|
}
|
124
200
|
|
@@ -129,33 +205,36 @@ contract Registry is
|
|
129
205
|
// in this case we might want to have a period where the latest version is
|
130
206
|
// in the process of being set up while the latest active version is 1 major release smaller
|
131
207
|
/// @dev latest GIF major version (might not yet be active)
|
132
|
-
function
|
208
|
+
function getNextVersion() external view returns (VersionPart) {
|
133
209
|
return _releaseManager.getNextVersion();
|
134
210
|
}
|
135
211
|
|
136
212
|
/// @dev latest active GIF release version
|
137
|
-
function
|
213
|
+
function getLatestVersion() external view returns (VersionPart) {
|
138
214
|
return _releaseManager.getLatestVersion();
|
139
215
|
}
|
140
216
|
|
141
|
-
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory)
|
142
|
-
{
|
217
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
|
143
218
|
return _releaseManager.getReleaseInfo(version);
|
144
219
|
}
|
145
220
|
|
146
|
-
function getObjectCount() external view
|
221
|
+
function getObjectCount() external view returns (uint256) {
|
147
222
|
return _chainNft.totalSupply();
|
148
223
|
}
|
149
224
|
|
225
|
+
function getReleaseManagerAddress() external view returns (address) {
|
226
|
+
return address(_releaseManager);
|
227
|
+
}
|
228
|
+
|
150
229
|
function getNftId() external view returns (NftId nftId) {
|
151
230
|
return _registryNftId;
|
152
231
|
}
|
153
232
|
|
154
|
-
function getNftId(address object) external view
|
233
|
+
function getNftId(address object) external view returns (NftId id) {
|
155
234
|
return _nftIdByAddress[object];
|
156
235
|
}
|
157
236
|
|
158
|
-
function ownerOf(NftId nftId) public view
|
237
|
+
function ownerOf(NftId nftId) public view returns (address) {
|
159
238
|
return _chainNft.ownerOf(nftId.toInt());
|
160
239
|
}
|
161
240
|
|
@@ -163,42 +242,69 @@ contract Registry is
|
|
163
242
|
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
164
243
|
}
|
165
244
|
|
166
|
-
function getObjectInfo(NftId nftId) external view
|
245
|
+
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
167
246
|
return _info[nftId];
|
168
247
|
}
|
169
248
|
|
170
|
-
function getObjectInfo(address object) external view
|
249
|
+
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
171
250
|
return _info[_nftIdByAddress[object]];
|
172
251
|
}
|
173
252
|
|
174
|
-
function isRegistered(NftId nftId) public view
|
253
|
+
function isRegistered(NftId nftId) public view returns (bool) {
|
175
254
|
return _info[nftId].objectType.gtz();
|
176
255
|
}
|
177
256
|
|
178
|
-
function isRegistered(address object) external view
|
257
|
+
function isRegistered(address object) external view returns (bool) {
|
179
258
|
return _nftIdByAddress[object].gtz();
|
180
259
|
}
|
181
260
|
|
182
|
-
function isRegisteredService(address object) external view
|
183
|
-
return
|
261
|
+
function isRegisteredService(address object) external view returns (bool) {
|
262
|
+
return _info[_nftIdByAddress[object]].objectType == SERVICE();
|
263
|
+
}
|
264
|
+
|
265
|
+
function isRegisteredComponent(address object) external view returns (bool) {
|
266
|
+
NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
|
267
|
+
return _info[objectParentNftId].objectType == INSTANCE();
|
268
|
+
}
|
269
|
+
|
270
|
+
function isValidRelease(VersionPart version) external view returns (bool)
|
271
|
+
{
|
272
|
+
return _releaseManager.isValidRelease(version);
|
273
|
+
}
|
274
|
+
|
275
|
+
function getStakingAddress() external view returns (address staking) {
|
276
|
+
return _stakingAddress;
|
184
277
|
}
|
185
278
|
|
186
279
|
function getServiceAddress(
|
187
280
|
ObjectType serviceDomain,
|
188
281
|
VersionPart releaseVersion
|
189
|
-
) external view returns (address)
|
282
|
+
) external view returns (address service)
|
190
283
|
{
|
191
|
-
|
284
|
+
// TODO how can I get service address while release is not validated/activated ?!! -> user will check validity of release on its own
|
285
|
+
//if(_releaseManager.isValidRelease(releaseVersion)) {
|
286
|
+
service = _service[releaseVersion][serviceDomain];
|
287
|
+
//}
|
192
288
|
}
|
193
289
|
|
194
|
-
function
|
195
|
-
return _chainNft;
|
290
|
+
function getChainNftAddress() external view override returns (address) {
|
291
|
+
return address(_chainNft);
|
196
292
|
}
|
197
293
|
|
198
294
|
function getOwner() public view returns (address owner) {
|
199
295
|
return ownerOf(address(this));
|
200
296
|
}
|
201
297
|
|
298
|
+
// IERC165
|
299
|
+
|
300
|
+
function supportsInterface(bytes4 interfaceId) external pure returns (bool) {
|
301
|
+
if(interfaceId == type(IERC165).interfaceId || interfaceId == type(IRegistry).interfaceId) {
|
302
|
+
return true;
|
303
|
+
}
|
304
|
+
|
305
|
+
return false;
|
306
|
+
}
|
307
|
+
|
202
308
|
// Internals
|
203
309
|
|
204
310
|
/// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
|
@@ -222,28 +328,14 @@ contract Registry is
|
|
222
328
|
}
|
223
329
|
|
224
330
|
address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
|
331
|
+
uint256 tokenId = _chainNft.getNextTokenId();
|
332
|
+
nftId = toNftId(tokenId);
|
225
333
|
|
226
|
-
// TODO does external call
|
227
|
-
// compute next nftId, do all checks and stores, mint() at most end...
|
228
|
-
uint256 mintedTokenId = _chainNft.mint(
|
229
|
-
info.initialOwner,
|
230
|
-
interceptor,
|
231
|
-
EMPTY_URI);
|
232
|
-
nftId = toNftId(mintedTokenId);
|
233
|
-
|
234
|
-
// TODO move nftId out of info struct
|
235
|
-
// getters by nftId -> return struct without nftId
|
236
|
-
// getters by address -> return nftId AND struct
|
237
334
|
info.nftId = nftId;
|
238
335
|
_info[nftId] = info;
|
239
336
|
|
240
337
|
if(info.objectAddress > address(0))
|
241
338
|
{
|
242
|
-
// parent is registered + object-parent types are valid
|
243
|
-
if(_isValidContractCombination[objectType][parentType] == false) {
|
244
|
-
revert InvalidTypesCombination(objectType, parentType);
|
245
|
-
}
|
246
|
-
|
247
339
|
address contractAddress = info.objectAddress;
|
248
340
|
|
249
341
|
if(_nftIdByAddress[contractAddress].gtz()) {
|
@@ -252,14 +344,16 @@ contract Registry is
|
|
252
344
|
|
253
345
|
_nftIdByAddress[contractAddress] = nftId;
|
254
346
|
}
|
255
|
-
else
|
256
|
-
{
|
257
|
-
if(_isValidObjectCombination[objectType][parentType] == false) {
|
258
|
-
revert InvalidTypesCombination(objectType, parentType);
|
259
|
-
}
|
260
|
-
}
|
261
347
|
|
262
348
|
emit LogRegistration(nftId, parentNftId, objectType, info.isInterceptor, info.objectAddress, info.initialOwner);
|
349
|
+
|
350
|
+
// calls nft receiver(1) and interceptor(2)
|
351
|
+
uint256 mintedTokenId = _chainNft.mint(
|
352
|
+
info.initialOwner,
|
353
|
+
interceptor,
|
354
|
+
EMPTY_URI);
|
355
|
+
assert(mintedTokenId == tokenId);
|
356
|
+
|
263
357
|
}
|
264
358
|
|
265
359
|
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
@@ -370,27 +464,42 @@ contract Registry is
|
|
370
464
|
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
371
465
|
// 3) DO NOT use REGISTRY as object type
|
372
466
|
// 2) DO NOT use PROTOCOL and "zeroObjectType"
|
373
|
-
function
|
467
|
+
function _setupValidCoreTypesAndCombinations()
|
374
468
|
private
|
375
469
|
{
|
376
|
-
|
377
|
-
|
378
|
-
|
470
|
+
_coreTypes[REGISTRY()] = true;
|
471
|
+
_coreTypes[SERVICE()] = true;
|
472
|
+
_coreTypes[TOKEN()] = true;
|
473
|
+
_coreTypes[INSTANCE()] = true;
|
474
|
+
_coreTypes[PRODUCT()] = true;
|
475
|
+
_coreTypes[POOL()] = true;
|
476
|
+
_coreTypes[DISTRIBUTION()] = true;
|
477
|
+
_coreTypes[POLICY()] = true;
|
478
|
+
_coreTypes[BUNDLE()] = true;
|
479
|
+
_coreTypes[STAKING()] = true;
|
480
|
+
_coreTypes[STAKE()] = true;
|
481
|
+
|
482
|
+
_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
|
483
|
+
_coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
|
484
|
+
_coreContractCombinations[TOKEN()][REGISTRY()] = true;
|
485
|
+
//_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
|
379
486
|
|
380
487
|
// registry as parent, ONLY approved
|
381
|
-
|
488
|
+
_coreContractCombinations[INSTANCE()][REGISTRY()] = true;
|
382
489
|
|
383
490
|
// instance as parent, ONLY approved
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
491
|
+
_coreContractCombinations[PRODUCT()][INSTANCE()] = true;
|
492
|
+
_coreContractCombinations[DISTRIBUTION()][INSTANCE()] = true;
|
493
|
+
_coreContractCombinations[ORACLE()][INSTANCE()] = true;
|
494
|
+
_coreContractCombinations[POOL()][INSTANCE()] = true;
|
495
|
+
|
496
|
+
_coreObjectCombinations[DISTRIBUTOR()][DISTRIBUTION()] = true;
|
388
497
|
|
389
498
|
// product as parent, ONLY approved
|
390
|
-
|
499
|
+
_coreObjectCombinations[POLICY()][PRODUCT()] = true;
|
391
500
|
|
392
501
|
// pool as parent, ONLY approved
|
393
|
-
|
394
|
-
|
502
|
+
_coreObjectCombinations[BUNDLE()][POOL()] = true;
|
503
|
+
_coreObjectCombinations[STAKE()][POOL()] = true;
|
395
504
|
}
|
396
|
-
}
|
505
|
+
}
|
@@ -5,29 +5,31 @@ import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManage
|
|
5
5
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
6
6
|
|
7
7
|
import {RoleId, RoleIdLib,
|
8
|
-
|
9
|
-
|
10
|
-
RELEASE_MANAGER_ROLE} from "../
|
8
|
+
GIF_MANAGER_ROLE,
|
9
|
+
GIF_ADMIN_ROLE,
|
10
|
+
RELEASE_MANAGER_ROLE} from "../type/RoleId.sol";
|
11
11
|
|
12
12
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
13
13
|
import {ReleaseManager} from "./ReleaseManager.sol";
|
14
14
|
|
15
15
|
/*
|
16
|
-
|
17
|
-
1)
|
18
|
-
-
|
19
|
-
-
|
20
|
-
|
21
|
-
|
16
|
+
4 types of roles:
|
17
|
+
1) RELEASE_MANAGER_ROLE
|
18
|
+
- has only ReleaseManager as member
|
19
|
+
- responsible for setting and granting of REGISTRAR roles
|
20
|
+
1) REGISTRAR roles
|
21
|
+
- set and granted by RELEASE_MANAGER_ROLE
|
22
|
+
- for each service and major version X there is 1 unique member (the service with version X itself) (subject to change)
|
23
|
+
- each set to 1 target (registry service ver.X) and 1 selector (function of registry service ver.X) (subject to change)
|
24
|
+
2) GIF_MANAGER_ROLE
|
22
25
|
- can have arbitrary number of members
|
23
26
|
- responsible for services registrations
|
24
27
|
- responsible for token registration and activation
|
25
|
-
3)
|
26
|
-
- admin of
|
28
|
+
3) GIF_ADMIN_ROLE
|
29
|
+
- admin of GIF_MANAGER_ROLE
|
27
30
|
- MUST have 1 member at any time
|
28
31
|
- granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
|
29
|
-
- responsible for
|
30
|
-
- responsible for creation and activation of each release
|
32
|
+
- responsible for creation and activation of releases
|
31
33
|
|
32
34
|
*/
|
33
35
|
|
@@ -71,8 +73,8 @@ contract RegistryAccessManager is AccessManaged
|
|
71
73
|
_configureAdminRoleInitial();
|
72
74
|
|
73
75
|
address admin = msg.sender;
|
74
|
-
_grantRole(
|
75
|
-
_grantRole(
|
76
|
+
_grantRole(GIF_ADMIN_ROLE(), admin, 0);
|
77
|
+
_grantRole(GIF_MANAGER_ROLE(), manager, 0);
|
76
78
|
}
|
77
79
|
|
78
80
|
function initialize(address releaseManager, address tokenRegistry)
|
@@ -124,10 +126,10 @@ contract RegistryAccessManager is AccessManaged
|
|
124
126
|
|
125
127
|
/*function transferAdmin(address to)
|
126
128
|
external
|
127
|
-
restricted // only with
|
129
|
+
restricted // only with GIF_ADMIN_ROLE or nft owner
|
128
130
|
{
|
129
|
-
_accessManager.revoke(
|
130
|
-
_accesssManager.grant(
|
131
|
+
_accessManager.revoke(GIF_ADMIN_ROLE, );
|
132
|
+
_accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
|
131
133
|
}*/
|
132
134
|
|
133
135
|
//--- view functions ----------------------------------------------------//
|
@@ -147,25 +149,17 @@ contract RegistryAccessManager is AccessManaged
|
|
147
149
|
bytes4[] memory functionSelector = new bytes4[](1);
|
148
150
|
|
149
151
|
functionSelector[0] = RegistryAccessManager.initialize.selector;
|
150
|
-
_setTargetFunctionRole(address(this), functionSelector,
|
152
|
+
_setTargetFunctionRole(address(this), functionSelector, GIF_ADMIN_ROLE());
|
151
153
|
}
|
152
154
|
|
153
155
|
function _configureAdminRole() private
|
154
156
|
{
|
155
|
-
bytes4[] memory functionSelector = new bytes4[](1);
|
156
|
-
|
157
|
-
// for RegistryServiceProxyManager
|
158
|
-
// TODO upgrading with releaseManager.upgrade()->proxy.upgrade()???
|
159
|
-
//functionSelector[0] = RegistryServiceManager.upgrade.selector;
|
160
|
-
//_setTargetFunctionRole(address(this), functionSelector, REGISTRY_SERVICE_ADMIN_ROLE());
|
161
|
-
|
162
|
-
// for TokenRegistry
|
163
|
-
|
164
157
|
// for ReleaseManager
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
158
|
+
bytes4[] memory functionSelector = new bytes4[](3);
|
159
|
+
functionSelector[0] = ReleaseManager.registerStaking.selector;
|
160
|
+
functionSelector[1] = ReleaseManager.createNextRelease.selector;
|
161
|
+
functionSelector[2] = ReleaseManager.activateNextRelease.selector;
|
162
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
|
169
163
|
}
|
170
164
|
|
171
165
|
function _configureManagerRole() private
|
@@ -174,14 +168,17 @@ contract RegistryAccessManager is AccessManaged
|
|
174
168
|
|
175
169
|
// for TokenRegistry
|
176
170
|
functionSelector[0] = TokenRegistry.setActive.selector;
|
177
|
-
_setTargetFunctionRole(address(_tokenRegistry), functionSelector,
|
171
|
+
_setTargetFunctionRole(address(_tokenRegistry), functionSelector, GIF_MANAGER_ROLE());
|
178
172
|
|
179
173
|
// for ReleaseManager
|
180
174
|
functionSelector[0] = ReleaseManager.registerService.selector;
|
181
|
-
_setTargetFunctionRole(_releaseManager, functionSelector,
|
175
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
|
176
|
+
|
177
|
+
functionSelector[0] = ReleaseManager.registerRegistryService.selector;
|
178
|
+
_setTargetFunctionRole(_releaseManager, functionSelector, GIF_MANAGER_ROLE());
|
182
179
|
|
183
180
|
// set admin
|
184
|
-
_setRoleAdmin(
|
181
|
+
_setRoleAdmin(GIF_MANAGER_ROLE(), GIF_ADMIN_ROLE());
|
185
182
|
}
|
186
183
|
|
187
184
|
function _configureReleaseManagerRole() private
|