@etherisc/gif-next 0.0.2-ecbd488-936 → 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 +415 -776
- 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 -3065
- 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 +510 -378
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +330 -123
- 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 -349
- 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 +389 -117
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +368 -222
- 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 +488 -182
- 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 +438 -333
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +324 -132
- 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/{instance/service → distribution}/DistributionServiceManager.sol +20 -20
- 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 +60 -31
- package/contracts/instance/IInstanceService.sol +66 -13
- package/contracts/instance/Instance.sol +149 -364
- 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 +313 -141
- package/contracts/instance/InstanceServiceManager.sol +12 -25
- 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 -30
- package/contracts/registry/IRegistryService.sol +46 -28
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +369 -235
- package/contracts/registry/RegistryAccessManager.sol +196 -0
- package/contracts/registry/RegistryService.sol +113 -205
- 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 +64 -80
- 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 -719
- 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 -444
- 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 -839
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1046
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -448
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/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 -159
- 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 -242
- package/contracts/components/Product.sol +0 -284
- 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 -124
- 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 -88
- 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 -194
- package/contracts/instance/service/PoolServiceManager.sol +0 -54
- package/contracts/instance/service/ProductService.sol +0 -543
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- 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 -90
- /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,183 +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
32
|
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
34
|
-
uint256 public constant
|
33
|
+
uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
|
35
34
|
string public constant EMPTY_URI = "";
|
36
35
|
|
37
|
-
|
36
|
+
mapping(NftId nftId => ObjectInfo info) private _info;
|
37
|
+
mapping(address object => NftId nftId) private _nftIdByAddress;
|
38
38
|
|
39
|
-
mapping(
|
40
|
-
|
39
|
+
mapping(VersionPart version => mapping(ObjectType serviceDomain => address)) private _service;
|
40
|
+
|
41
|
+
mapping(ObjectType objectType => bool) private _coreTypes;
|
41
42
|
|
42
43
|
mapping(ObjectType objectType => mapping(
|
43
|
-
ObjectType parentType => bool))
|
44
|
+
ObjectType parentType => bool)) private _coreContractCombinations;
|
44
45
|
|
45
46
|
mapping(ObjectType objectType => mapping(
|
46
|
-
ObjectType parentType => bool))
|
47
|
+
ObjectType parentType => bool)) private _coreObjectCombinations;
|
48
|
+
|
49
|
+
ChainNft private _chainNft;
|
47
50
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
+
address private _initializeOwner;
|
52
|
+
address private _tokenRegistryAddress;
|
53
|
+
address private _stakingAddress;
|
54
|
+
ReleaseManager private _releaseManager;
|
51
55
|
|
52
|
-
NftId
|
53
|
-
NftId
|
54
|
-
ChainNft internal _chainNft;
|
56
|
+
NftId private _protocolNftId;
|
57
|
+
NftId private _registryNftId;
|
55
58
|
|
56
59
|
|
57
|
-
modifier
|
58
|
-
if(msg.sender
|
59
|
-
revert
|
60
|
+
modifier onlyRegistryService() {
|
61
|
+
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
62
|
+
revert ErrorRegistryCallerNotRegistryService();
|
60
63
|
}
|
61
64
|
_;
|
62
65
|
}
|
63
66
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
+
|
68
|
+
modifier onlyReleaseManager() {
|
69
|
+
if(msg.sender != address(_releaseManager)) {
|
70
|
+
revert ErrorRegistryCallerNotReleaseManager();
|
67
71
|
}
|
68
72
|
_;
|
69
73
|
}
|
70
74
|
|
71
|
-
constructor(address registryOwner, VersionPart majorVersion)
|
72
|
-
{
|
73
|
-
require(registryOwner > address(0), "Registry: registry owner is 0");
|
74
75
|
|
75
|
-
|
76
|
-
|
77
|
-
|
76
|
+
constructor() {
|
77
|
+
// register deployer
|
78
|
+
_initializeOwner = msg.sender;
|
78
79
|
|
79
80
|
// deploy NFT
|
80
|
-
_chainNft = new ChainNft(address(this))
|
81
|
+
_chainNft = new ChainNft(address(this));
|
81
82
|
|
82
83
|
// initial registry setup
|
83
84
|
_registerProtocol();
|
84
|
-
_registerRegistry(
|
85
|
-
|
85
|
+
_registerRegistry();
|
86
|
+
|
87
|
+
// set object types and object parent relations
|
88
|
+
_setupValidCoreTypesAndCombinations();
|
89
|
+
}
|
86
90
|
|
87
|
-
// set object parent relations
|
88
|
-
_setupValidObjectParentCombinations();
|
89
91
|
|
90
|
-
|
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;
|
91
107
|
}
|
92
108
|
|
93
|
-
// from IRegistry
|
94
109
|
|
95
|
-
|
96
|
-
|
110
|
+
function registerStaking(
|
111
|
+
address stakingAddress
|
112
|
+
)
|
97
113
|
external
|
98
|
-
|
114
|
+
onlyReleaseManager()
|
99
115
|
{
|
100
|
-
//
|
101
|
-
|
102
|
-
|
103
|
-
if (newMax <= oldMax || newMax - oldMax != 1) {
|
104
|
-
revert MajorVersionMaxIncreaseInvalid(newMajorVersion, _majorVersion);
|
116
|
+
// staking contract for same chain may only be registered once
|
117
|
+
if (_stakingAddress != address(0)) {
|
118
|
+
revert StakingAlreadyRegistered(_stakingAddress);
|
105
119
|
}
|
106
120
|
|
107
|
-
|
108
|
-
|
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);
|
109
139
|
}
|
110
140
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
141
|
+
|
142
|
+
function registerService(
|
143
|
+
ObjectInfo memory info,
|
144
|
+
VersionPart version,
|
145
|
+
ObjectType domain
|
146
|
+
)
|
115
147
|
external
|
116
|
-
|
148
|
+
onlyReleaseManager
|
117
149
|
returns(NftId nftId)
|
118
150
|
{
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
address parentAddress = parentInfo.objectAddress;
|
124
|
-
|
125
|
-
// parent is contract -> need to check? -> check before minting
|
126
|
-
// special case: global registry nft as parent when not on mainnet -> global registry address is 0
|
127
|
-
// special case: when parentNftId == _chainNft.mint(), check for zero parent address before mint
|
128
|
-
// special case: when parentNftId == _chainNft.mint() && objectAddress == initialOwner
|
129
|
-
if(parentAddress == address(0)) {
|
130
|
-
revert ZeroParentAddress();
|
151
|
+
address service = info.objectAddress;
|
152
|
+
/* must be guaranteed by release manager
|
153
|
+
if(service == address(0)) {
|
154
|
+
revert();
|
131
155
|
}
|
132
156
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
uint256 mintedTokenId = _chainNft.mint(
|
137
|
-
info.initialOwner,
|
138
|
-
interceptor,
|
139
|
-
EMPTY_URI);
|
140
|
-
nftId = toNftId(mintedTokenId);
|
157
|
+
if(version.eqz()) {
|
158
|
+
revert();
|
159
|
+
}
|
141
160
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
info.
|
146
|
-
|
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
|
+
}
|
147
173
|
|
148
|
-
if(
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
revert InvalidTypesCombination(objectType, parentType);
|
154
|
-
}
|
174
|
+
if(_service[version][domain] > address(0)) {
|
175
|
+
revert ErrorRegistryDomainAlreadyRegistered(service, version, domain);
|
176
|
+
}
|
177
|
+
|
178
|
+
_service[version][domain] = service;
|
155
179
|
|
156
|
-
|
180
|
+
nftId = _register(info);
|
157
181
|
|
158
|
-
|
159
|
-
|
160
|
-
}
|
182
|
+
emit LogServiceRegistration(version, domain);
|
183
|
+
}
|
161
184
|
|
162
|
-
|
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;
|
163
192
|
|
164
|
-
|
165
|
-
|
166
|
-
|
193
|
+
// only valid core types combinations
|
194
|
+
if(info.objectAddress == address(0))
|
195
|
+
{
|
196
|
+
if(_coreObjectCombinations[objectType][parentType] == false) {
|
197
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
167
198
|
}
|
168
199
|
}
|
169
200
|
else
|
170
201
|
{
|
171
|
-
if(
|
172
|
-
revert
|
202
|
+
if(_coreContractCombinations[objectType][parentType] == false) {
|
203
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
173
204
|
}
|
174
205
|
}
|
175
206
|
|
176
|
-
|
207
|
+
nftId = _register(info);
|
208
|
+
}
|
209
|
+
|
210
|
+
function registerWithCustomType(ObjectInfo memory info)
|
211
|
+
external
|
212
|
+
onlyRegistryService
|
213
|
+
returns(NftId nftId)
|
214
|
+
{
|
215
|
+
ObjectType objectType = info.objectType;
|
216
|
+
ObjectType parentType = _info[info.parentNftId].objectType;
|
217
|
+
|
218
|
+
if(_coreTypes[objectType]) {
|
219
|
+
revert ErrorRegistryCoreTypeRegistration();
|
220
|
+
}
|
221
|
+
|
222
|
+
if(
|
223
|
+
parentType == PROTOCOL() ||
|
224
|
+
parentType == REGISTRY() ||
|
225
|
+
parentType == SERVICE()
|
226
|
+
) {
|
227
|
+
revert ErrorRegistryTypesCombinationInvalid(objectType, parentType);
|
228
|
+
}
|
229
|
+
|
230
|
+
_register(info);
|
177
231
|
}
|
232
|
+
|
233
|
+
|
178
234
|
/// @dev earliest GIF major version
|
179
|
-
function
|
180
|
-
return
|
235
|
+
function getInitialVersion() external view returns (VersionPart) {
|
236
|
+
return _releaseManager.getInitialVersion();
|
181
237
|
}
|
182
238
|
|
183
239
|
// TODO make distinction between active an not yet active version
|
@@ -187,16 +243,20 @@ contract Registry is
|
|
187
243
|
// in this case we might want to have a period where the latest version is
|
188
244
|
// in the process of being set up while the latest active version is 1 major release smaller
|
189
245
|
/// @dev latest GIF major version (might not yet be active)
|
190
|
-
function
|
191
|
-
return
|
246
|
+
function getNextVersion() external view returns (VersionPart) {
|
247
|
+
return _releaseManager.getNextVersion();
|
192
248
|
}
|
193
249
|
|
194
250
|
/// @dev latest active GIF release version
|
195
|
-
function
|
196
|
-
return
|
251
|
+
function getLatestVersion() external view returns (VersionPart) {
|
252
|
+
return _releaseManager.getLatestVersion();
|
197
253
|
}
|
198
254
|
|
199
|
-
function
|
255
|
+
function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory) {
|
256
|
+
return _releaseManager.getReleaseInfo(version);
|
257
|
+
}
|
258
|
+
|
259
|
+
function getObjectCount() external view returns (uint256) {
|
200
260
|
return _chainNft.totalSupply();
|
201
261
|
}
|
202
262
|
|
@@ -204,11 +264,15 @@ contract Registry is
|
|
204
264
|
return _registryNftId;
|
205
265
|
}
|
206
266
|
|
207
|
-
function
|
267
|
+
function getProtocolNftId() external view returns (NftId nftId) {
|
268
|
+
return _protocolNftId;
|
269
|
+
}
|
270
|
+
|
271
|
+
function getNftId(address object) external view returns (NftId id) {
|
208
272
|
return _nftIdByAddress[object];
|
209
273
|
}
|
210
274
|
|
211
|
-
function ownerOf(NftId nftId) public view
|
275
|
+
function ownerOf(NftId nftId) public view returns (address) {
|
212
276
|
return _chainNft.ownerOf(nftId.toInt());
|
213
277
|
}
|
214
278
|
|
@@ -216,73 +280,144 @@ contract Registry is
|
|
216
280
|
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
217
281
|
}
|
218
282
|
|
219
|
-
function getObjectInfo(NftId nftId) external view
|
283
|
+
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
220
284
|
return _info[nftId];
|
221
285
|
}
|
222
286
|
|
223
|
-
function getObjectInfo(address object) external view
|
287
|
+
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
224
288
|
return _info[_nftIdByAddress[object]];
|
225
289
|
}
|
226
290
|
|
227
|
-
function isRegistered(NftId nftId) public view
|
291
|
+
function isRegistered(NftId nftId) public view returns (bool) {
|
228
292
|
return _info[nftId].objectType.gtz();
|
229
293
|
}
|
230
294
|
|
231
|
-
function isRegistered(address object) external view
|
295
|
+
function isRegistered(address object) external view returns (bool) {
|
232
296
|
return _nftIdByAddress[object].gtz();
|
233
297
|
}
|
234
298
|
|
235
|
-
function
|
236
|
-
return
|
299
|
+
function isRegisteredService(address object) external view returns (bool) {
|
300
|
+
return _info[_nftIdByAddress[object]].objectType == SERVICE();
|
301
|
+
}
|
302
|
+
|
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;
|
237
319
|
}
|
238
320
|
|
239
|
-
// special case to retrive a gif service
|
240
321
|
function getServiceAddress(
|
241
|
-
|
242
|
-
VersionPart
|
243
|
-
) external view returns (address)
|
322
|
+
ObjectType serviceDomain,
|
323
|
+
VersionPart releaseVersion
|
324
|
+
) external view returns (address service)
|
244
325
|
{
|
245
|
-
|
246
|
-
|
326
|
+
service = _service[releaseVersion][serviceDomain];
|
327
|
+
}
|
328
|
+
|
329
|
+
function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
|
330
|
+
return address(_releaseManager.getReleaseAccessManager(version));
|
247
331
|
}
|
248
332
|
|
249
|
-
function
|
250
|
-
return
|
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);
|
251
339
|
}
|
252
340
|
|
253
341
|
function getOwner() public view returns (address owner) {
|
254
342
|
return ownerOf(address(this));
|
255
343
|
}
|
256
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
|
+
|
257
355
|
// Internals
|
258
356
|
|
259
|
-
|
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)
|
260
360
|
internal
|
361
|
+
returns(NftId nftId)
|
261
362
|
{
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
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
|
+
}
|
271
382
|
}
|
272
|
-
|
273
|
-
|
274
|
-
|
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;
|
275
402
|
}
|
276
403
|
|
277
|
-
|
278
|
-
|
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);
|
279
411
|
|
280
|
-
|
412
|
+
assert(mintedTokenId == tokenId);
|
281
413
|
}
|
282
414
|
|
283
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:
|
284
418
|
function _getInterceptor(
|
285
419
|
bool isInterceptor,
|
420
|
+
ObjectType objectType,
|
286
421
|
address objectAddress,
|
287
422
|
bool parentIsInterceptor,
|
288
423
|
address parentObjectAddress
|
@@ -291,6 +426,11 @@ contract Registry is
|
|
291
426
|
view
|
292
427
|
returns (address interceptor)
|
293
428
|
{
|
429
|
+
// no intercepting calls for stakes
|
430
|
+
if (objectType == STAKE()) {
|
431
|
+
return address(0);
|
432
|
+
}
|
433
|
+
|
294
434
|
if (objectAddress == address(0)) {
|
295
435
|
if (parentIsInterceptor) {
|
296
436
|
return parentObjectAddress;
|
@@ -310,106 +450,76 @@ contract Registry is
|
|
310
450
|
|
311
451
|
/// @dev protocol registration used to anchor the dip ecosystem relations
|
312
452
|
function _registerProtocol()
|
313
|
-
|
453
|
+
private
|
314
454
|
{
|
315
455
|
uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
|
316
|
-
|
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
|
+
});
|
317
467
|
|
318
468
|
_chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
|
319
|
-
|
320
|
-
_info[protocolNftId] = ObjectInfo(
|
321
|
-
protocolNftId,
|
322
|
-
zeroNftId(), // parent
|
323
|
-
PROTOCOL(),
|
324
|
-
false, // isInterceptor
|
325
|
-
address(0), // objectAddress
|
326
|
-
NFT_LOCK_ADDRESS,// initialOwner
|
327
|
-
""
|
328
|
-
);
|
329
469
|
}
|
330
470
|
|
331
471
|
/// @dev registry registration
|
332
472
|
/// might also register the global registry when not on mainnet
|
333
|
-
function _registerRegistry(
|
334
|
-
|
473
|
+
function _registerRegistry()
|
474
|
+
private
|
475
|
+
returns (NftId registryNftId)
|
335
476
|
{
|
336
477
|
uint256 registryId = _chainNft.calculateTokenId(REGISTRY_TOKEN_SEQUENCE_ID);
|
337
|
-
|
338
|
-
|
478
|
+
_registryNftId = NftIdLib.toNftId(registryId);
|
339
479
|
NftId parentNftId;
|
340
480
|
|
341
481
|
if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
|
342
482
|
{// we're not the global registry
|
343
483
|
_registerGlobalRegistry();
|
344
|
-
parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
484
|
+
parentNftId = NftIdLib.toNftId(_chainNft.GLOBAL_REGISTRY_ID());
|
345
485
|
}
|
346
486
|
else
|
347
487
|
{// we are global registry
|
348
|
-
parentNftId =
|
488
|
+
parentNftId = _protocolNftId;
|
349
489
|
}
|
350
490
|
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
);
|
362
|
-
|
363
|
-
_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);
|
364
503
|
}
|
365
504
|
|
366
|
-
|
367
505
|
/// @dev global registry registration for non mainnet registries
|
368
506
|
function _registerGlobalRegistry()
|
369
|
-
|
507
|
+
private
|
370
508
|
{
|
371
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
|
+
});
|
372
521
|
|
373
522
|
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
374
|
-
|
375
|
-
NftId globalRegistryNftId = toNftId(globalRegistryId);
|
376
|
-
|
377
|
-
_info[globalRegistryNftId] = ObjectInfo(
|
378
|
-
globalRegistryNftId,
|
379
|
-
toNftId(_chainNft.PROTOCOL_NFT_ID()), // parent
|
380
|
-
REGISTRY(),
|
381
|
-
false, // isInterceptor
|
382
|
-
address(0), // objectAddress
|
383
|
-
NFT_LOCK_ADDRESS, // initialOwner
|
384
|
-
"" // data
|
385
|
-
);
|
386
|
-
}
|
387
|
-
|
388
|
-
function _registerRegistryService(address registryOwner)
|
389
|
-
internal
|
390
|
-
{
|
391
|
-
uint256 serviceId = _chainNft.calculateTokenId(REGISTRY_SERVICE_TOKEN_SEQUENCE_ID);
|
392
|
-
NftId serviceNftId = toNftId(serviceId);
|
393
|
-
|
394
|
-
_chainNft.mint(registryOwner, serviceId);
|
395
|
-
|
396
|
-
_info[serviceNftId] = ObjectInfo(
|
397
|
-
serviceNftId,
|
398
|
-
_registryNftId,
|
399
|
-
SERVICE(),
|
400
|
-
false, // isInterceptor
|
401
|
-
msg.sender, // service deploys registry
|
402
|
-
registryOwner, // initialOwner,
|
403
|
-
""
|
404
|
-
);
|
405
|
-
|
406
|
-
_nftIdByAddress[msg.sender] = serviceNftId;
|
407
|
-
|
408
|
-
string memory serviceName = "RegistryService";
|
409
|
-
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
410
|
-
_service[serviceNameHash][VersionLib.toVersionPart(GIF_MAJOR_VERSION_AT_DEPLOYMENT)] = msg.sender;
|
411
|
-
_string[serviceNftId] = serviceName;
|
412
|
-
_serviceNftId = serviceNftId;
|
413
523
|
}
|
414
524
|
|
415
525
|
/// @dev defines which object - parent types relations are allowed to register
|
@@ -418,27 +528,51 @@ contract Registry is
|
|
418
528
|
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
419
529
|
// 3) DO NOT use REGISTRY as object type
|
420
530
|
// 2) DO NOT use PROTOCOL and "zeroObjectType"
|
421
|
-
function
|
422
|
-
|
531
|
+
function _setupValidCoreTypesAndCombinations()
|
532
|
+
private
|
423
533
|
{
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
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;
|
430
547
|
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
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;
|
443
577
|
}
|
444
578
|
}
|