@etherisc/gif-next 0.0.2-ed4dd55 → 0.0.2-efef0ea-320
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 +178 -6
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → BaseComponent.sol/BaseComponent.json} +55 -60
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +405 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
- package/artifacts/contracts/{instance/component/IComponent.sol/IComponentContract.json → components/IBaseComponent.sol/IBaseComponent.json} +54 -59
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → components/IDistributionComponent.sol/IDistributionComponent.json} +164 -151
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +487 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +370 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +417 -34
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +273 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +4 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +105 -0
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +4 -0
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +105 -0
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1427 -271
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1827 -364
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +387 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IService.sol/IService.json +341 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +463 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.json +10 -0
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +387 -0
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +297 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +297 -0
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +117 -0
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +117 -0
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +10 -0
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.json +10 -0
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +10 -0
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +284 -0
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +284 -0
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +144 -0
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +144 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.json +10 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +113 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +131 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +10 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +511 -0
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +511 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +618 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +507 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +405 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +366 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +481 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +671 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +630 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +945 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +65 -2
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +115 -89
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +24 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +244 -77
- package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +724 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegisterable.sol}/IRegisterable.json +22 -67
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +205 -0
- package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.dbg.json +4 -0
- package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.json +248 -0
- package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +4 -0
- package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.json +129 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +23 -68
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +251 -0
- package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +4 -0
- package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +228 -0
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +405 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +578 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +575 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
- package/artifacts/contracts/test/TestService.sol/TestService.json +466 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +293 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +174 -0
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +148 -5
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +236 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +479 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
- package/contracts/components/BaseComponent.sol +94 -0
- package/contracts/components/Distribution.sol +132 -0
- package/contracts/components/IBaseComponent.sol +19 -0
- package/contracts/components/IDistributionComponent.sol +47 -0
- package/contracts/components/IPoolComponent.sol +71 -0
- package/contracts/components/IProductComponent.sol +38 -0
- package/contracts/components/Pool.sol +222 -16
- package/contracts/components/Product.sol +195 -33
- package/contracts/experiment/errors/Require.sol +38 -0
- package/contracts/experiment/errors/Revert.sol +44 -0
- package/contracts/experiment/inheritance/A.sol +8 -11
- package/contracts/experiment/inheritance/B.sol +10 -5
- package/contracts/experiment/inheritance/C.sol +11 -5
- package/contracts/experiment/inheritance/IA.sol +2 -7
- package/contracts/experiment/inheritance/IB.sol +3 -2
- package/contracts/experiment/inheritance/IC.sol +4 -3
- package/contracts/experiment/statemachine/Dummy.sol +27 -0
- package/contracts/experiment/statemachine/ISM.sol +25 -0
- package/contracts/experiment/statemachine/README.md +112 -0
- package/contracts/experiment/statemachine/SM.sol +57 -0
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
- package/contracts/experiment/types/TypeA.sol +14 -9
- package/contracts/experiment/types/TypeB.sol +14 -9
- package/contracts/instance/IInstance.sol +41 -8
- package/contracts/instance/IInstanceLinked.sol +8 -0
- package/contracts/instance/Instance.sol +54 -43
- package/contracts/instance/base/ComponentServiceBase.sol +42 -0
- package/contracts/instance/base/IInstanceBase.sol +22 -0
- package/contracts/instance/base/IKeyValueStore.sol +50 -0
- package/contracts/instance/base/ILifecycle.sol +30 -0
- package/contracts/instance/base/IService.sol +15 -0
- package/contracts/instance/base/InstanceBase.sol +91 -0
- package/contracts/instance/base/KeyValueStore.sol +161 -0
- package/contracts/instance/base/Lifecycle.sol +100 -0
- package/contracts/instance/base/ModuleBase.sol +57 -0
- package/contracts/instance/base/ServiceBase.sol +37 -0
- package/contracts/instance/module/access/Access.sol +149 -0
- package/contracts/instance/module/access/IAccess.sol +53 -0
- package/contracts/instance/module/bundle/BundleModule.sol +134 -0
- package/contracts/instance/module/bundle/IBundle.sol +53 -0
- package/contracts/instance/module/component/ComponentModule.sol +70 -0
- package/contracts/instance/module/component/IComponent.sol +28 -0
- package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
- package/contracts/instance/module/distribution/IDistribution.sol +10 -0
- package/contracts/instance/module/policy/IPolicy.sol +63 -0
- package/contracts/instance/module/policy/PolicyModule.sol +91 -0
- package/contracts/instance/module/pool/IPoolModule.sol +40 -0
- package/contracts/instance/module/pool/PoolModule.sol +90 -0
- package/contracts/instance/module/risk/IRisk.sol +26 -0
- package/contracts/instance/module/risk/RiskModule.sol +62 -0
- package/contracts/instance/module/treasury/ITreasury.sol +82 -0
- package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
- package/contracts/instance/module/treasury/TreasuryModule.sol +138 -0
- package/contracts/instance/service/ComponentOwnerService.sol +157 -0
- package/contracts/instance/service/DistributionService.sol +59 -0
- package/contracts/instance/service/IComponentOwnerService.sol +22 -0
- package/contracts/instance/service/IDistributionService.sol +12 -0
- package/contracts/instance/service/IPoolService.sol +37 -0
- package/contracts/instance/service/IProductService.sol +107 -0
- package/contracts/instance/service/PoolService.sol +149 -0
- package/contracts/instance/service/ProductService.sol +509 -0
- package/contracts/registry/ChainNft.sol +80 -94
- package/contracts/registry/IChainNft.sol +10 -7
- package/contracts/registry/IRegistry.sol +40 -51
- package/contracts/registry/IRegistryLinked.sol +8 -0
- package/contracts/registry/Registry.sol +312 -107
- package/contracts/registry/RegistryUpgradeable.sol +488 -0
- package/contracts/shared/ERC165.sol +21 -0
- package/contracts/shared/IOwnable.sol +6 -0
- package/contracts/shared/IRegisterable.sol +24 -0
- package/contracts/shared/IVersionable.sol +65 -0
- package/contracts/shared/Proxy.sol +94 -0
- package/contracts/shared/Registerable.sol +86 -0
- package/contracts/shared/Versionable.sol +99 -0
- package/contracts/shared/VersionableUpgradeable.sol +136 -0
- package/contracts/test/TestDistribution.sol +21 -0
- package/contracts/test/TestFee.sol +25 -0
- package/contracts/test/TestPool.sol +25 -0
- package/contracts/test/TestProduct.sol +72 -0
- package/contracts/test/TestRegisterable.sol +19 -0
- package/contracts/test/TestRoleId.sol +14 -0
- package/contracts/test/TestService.sol +32 -0
- package/contracts/test/TestToken.sol +26 -0
- package/contracts/test/TestVersion.sol +44 -0
- package/contracts/test/TestVersionable.sol +17 -0
- package/contracts/test/Usdc.sol +26 -0
- package/contracts/types/AddressSet.sol +58 -0
- package/contracts/types/Blocknumber.sol +118 -0
- package/contracts/types/ChainId.sol +24 -10
- package/contracts/types/Fee.sol +56 -0
- package/contracts/types/Key32.sol +45 -0
- package/contracts/types/NftId.sol +55 -8
- package/contracts/types/NftIdSet.sol +60 -0
- package/contracts/types/ObjectType.sol +131 -0
- package/contracts/types/ReferralId.sol +48 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +38 -0
- package/contracts/types/StateId.sol +101 -0
- package/contracts/types/Timestamp.sol +123 -0
- package/contracts/types/UFixed.sol +209 -0
- package/contracts/types/Version.sol +103 -0
- package/package.json +19 -5
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/Component.json +0 -179
- package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
- package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
- package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
- package/contracts/components/Component.sol +0 -62
- package/contracts/components/IPool.sol +0 -9
- package/contracts/components/IProduct.sol +0 -11
- package/contracts/instance/access/Access.sol +0 -218
- package/contracts/instance/access/IAccess.sol +0 -83
- package/contracts/instance/component/ComponentModule.sol +0 -259
- package/contracts/instance/component/IComponent.sol +0 -94
- package/contracts/instance/policy/IPolicy.sol +0 -66
- package/contracts/instance/policy/PolicyModule.sol +0 -106
- package/contracts/instance/pool/IPoolModule.sol +0 -40
- package/contracts/instance/pool/PoolModule.sol +0 -83
- package/contracts/instance/product/IProductService.sol +0 -45
- package/contracts/instance/product/ProductService.sol +0 -105
@@ -1,144 +1,172 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {
|
4
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
5
|
+
import {IService} from "../instance/base/IService.sol";
|
6
6
|
|
7
|
-
|
7
|
+
import {IChainNft} from "./IChainNft.sol";
|
8
|
+
import {ChainNft} from "./ChainNft.sol";
|
9
|
+
import {IRegistry} from "./IRegistry.sol";
|
10
|
+
import {NftId, toNftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
|
11
|
+
import {VersionPart} from "../types/Version.sol";
|
12
|
+
import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
|
13
|
+
|
14
|
+
// TODO make registry upgradable
|
15
|
+
contract Registry is
|
16
|
+
IRegisterable,
|
17
|
+
IRegistry
|
18
|
+
{
|
19
|
+
using NftIdLib for NftId;
|
8
20
|
|
9
|
-
|
10
|
-
|
11
|
-
constructor(address registry) {
|
12
|
-
_registry = IRegistry(registry);
|
13
|
-
}
|
21
|
+
string public constant EMPTY_URI = "";
|
14
22
|
|
15
|
-
|
16
|
-
|
17
|
-
|
23
|
+
mapping(NftId nftId => ObjectInfo info) private _info;
|
24
|
+
mapping(address object => NftId nftId) private _nftIdByAddress;
|
25
|
+
mapping(ObjectType objectType => bool) private _isValidType;
|
26
|
+
mapping(ObjectType objectType => mapping(ObjectType objectParentType => bool)) private _isValidParentType;
|
18
27
|
|
19
|
-
|
28
|
+
mapping(NftId nftId => string stringValue) private _string;
|
29
|
+
mapping(bytes32 serviceNameHash => mapping(VersionPart majorVersion => address service)) _service;
|
20
30
|
|
31
|
+
NftId private _nftId;
|
32
|
+
IChainNft private _chainNft;
|
33
|
+
ChainNft private _chainNftInternal;
|
34
|
+
address private _initialOwner;
|
21
35
|
|
22
|
-
|
23
|
-
|
24
|
-
IRegisterable
|
25
|
-
{
|
36
|
+
// @dev will own protocol nft and registry nft(s) minted during initialize
|
37
|
+
address private _protocolOwner;
|
26
38
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
39
|
+
// TODO refactor once registry becomes upgradable
|
40
|
+
// @Dev the protocol owner will get ownership of the
|
41
|
+
// protocol nft and the global registry nft minted in this
|
42
|
+
// initializer function
|
43
|
+
function initialize(
|
44
|
+
address chainNft,
|
45
|
+
address protocolOwner
|
46
|
+
)
|
47
|
+
public
|
31
48
|
{
|
32
|
-
|
33
|
-
|
49
|
+
require(
|
50
|
+
address(_chainNft) == address(0),
|
51
|
+
"ERROR:REG-001:ALREADY_INITIALIZED"
|
52
|
+
);
|
34
53
|
|
35
|
-
|
54
|
+
_initialOwner = msg.sender;
|
55
|
+
_protocolOwner = protocolOwner;
|
36
56
|
|
37
|
-
|
38
|
-
|
39
|
-
}
|
57
|
+
_chainNft = IChainNft(chainNft);
|
58
|
+
_chainNftInternal = ChainNft(chainNft);
|
40
59
|
|
41
|
-
|
42
|
-
|
43
|
-
|
60
|
+
// initial registry setup
|
61
|
+
_registerProtocol();
|
62
|
+
_nftId = _registerRegistry();
|
44
63
|
|
45
|
-
|
46
|
-
|
64
|
+
// setup rules for further registrations
|
65
|
+
_setupValidTypes();
|
66
|
+
_setupValidParentTypes();
|
47
67
|
}
|
48
68
|
|
49
|
-
function getNftId() public view override returns(uint256 id) {
|
50
|
-
return _registry.getNftId(address(this));
|
51
|
-
}
|
52
69
|
|
53
|
-
function
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
70
|
+
function register(
|
71
|
+
address objectAddress
|
72
|
+
)
|
73
|
+
// TODO add authz (only services may register components etc)
|
74
|
+
// we have to check how we do authz for registring services (just restrict to protocol owner/registry owner)
|
75
|
+
external override returns (NftId nftId) {
|
76
|
+
require(
|
77
|
+
_nftIdByAddress[objectAddress].eqz(),
|
78
|
+
"ERROR:REG-002:ALREADY_REGISTERED"
|
79
|
+
);
|
58
80
|
|
59
|
-
|
81
|
+
IRegisterable registerable = IRegisterable(objectAddress);
|
82
|
+
require(
|
83
|
+
registerable.supportsInterface(type(IRegisterable).interfaceId),
|
84
|
+
"ERROR:REG-003:NOT_REGISTERABLE"
|
85
|
+
);
|
60
86
|
|
61
|
-
|
87
|
+
ObjectType objectType = registerable.getType();
|
88
|
+
require(
|
89
|
+
_isValidType[objectType],
|
90
|
+
"ERROR:REG-004:TYPE_INVALID"
|
91
|
+
);
|
62
92
|
|
63
|
-
|
93
|
+
NftId parentNftId = registerable.getParentNftId();
|
94
|
+
require(
|
95
|
+
isRegistered(parentNftId),
|
96
|
+
"ERROR:REG-005:PARENT_NOT_REGISTERED"
|
97
|
+
);
|
64
98
|
|
65
|
-
|
66
|
-
|
67
|
-
|
99
|
+
require(
|
100
|
+
_isValidParentType[objectType][_info[parentNftId].objectType],
|
101
|
+
"ERROR:REG-006:PARENT_TYPE_INVALID"
|
102
|
+
);
|
68
103
|
|
69
|
-
|
104
|
+
// also check that nftId and parentNFtId are on the same chain if applicable
|
70
105
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
106
|
+
// nft minting
|
107
|
+
uint256 mintedTokenId = _chainNft.mint(
|
108
|
+
registerable.getOwner(),
|
109
|
+
EMPTY_URI
|
110
|
+
);
|
75
111
|
|
76
|
-
|
77
|
-
function INSTANCE() public pure override returns(uint256) { return 40; }
|
78
|
-
function PRODUCT() public pure override returns(uint256) { return 50; }
|
79
|
-
function ORACLE() public pure override returns(uint256) { return 60; }
|
80
|
-
function POOL() public pure override returns(uint256) { return 70; }
|
81
|
-
function POLICY() public pure override returns(uint256) { return 80; }
|
82
|
-
function BUNDLE() public pure override returns(uint256) { return 90; }
|
112
|
+
nftId = toNftId(mintedTokenId);
|
83
113
|
|
84
|
-
|
85
|
-
|
114
|
+
// special case services
|
115
|
+
if(registerable.getType() == SERVICE()) {
|
116
|
+
IService service = IService(objectAddress);
|
117
|
+
require(
|
118
|
+
service.supportsInterface(type(IService).interfaceId),
|
119
|
+
"ERROR:REG-007:NOT_SERVICE"
|
120
|
+
);
|
86
121
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
// check parent exists (for objects not instances)
|
91
|
-
if(registerable.getType() != INSTANCE()) {
|
92
|
-
RegistryInfo memory parentInfo = _info[registerable.getParentNftId()];
|
93
|
-
require(parentInfo.nftId > 0, "ERROR:REG-003:PARENT_NOT_FOUND");
|
94
|
-
// check validity of parent relation, valid relations are
|
95
|
-
// policy -> product, bundle -> pool, product -> instance, pool -> instance
|
96
|
-
}
|
122
|
+
string memory serviceName = service.getName();
|
123
|
+
VersionPart majorVersion = service.getMajorVersion();
|
124
|
+
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
97
125
|
|
98
|
-
|
99
|
-
|
100
|
-
EMPTY_URI);
|
101
|
-
|
102
|
-
RegistryInfo memory info = RegistryInfo(
|
103
|
-
nftId,
|
104
|
-
registerable.getParentNftId(),
|
105
|
-
registerable.getType(),
|
106
|
-
objectAddress,
|
107
|
-
registerable.getInitialOwner()
|
108
|
-
);
|
126
|
+
// service specific state
|
127
|
+
_string[nftId] = serviceName;
|
109
128
|
|
110
|
-
|
111
|
-
|
129
|
+
require(
|
130
|
+
_service[serviceNameHash][majorVersion] == address(0),
|
131
|
+
"ERROR:REG-008:ALREADY_REGISTERED"
|
132
|
+
);
|
133
|
+
_service[serviceNameHash][majorVersion] = objectAddress;
|
134
|
+
}
|
112
135
|
|
113
|
-
//
|
136
|
+
// create object info and link nft id with it
|
137
|
+
_registerObjectInfo(registerable, nftId);
|
114
138
|
}
|
115
139
|
|
116
140
|
|
117
141
|
function registerObjectForInstance(
|
118
|
-
|
119
|
-
|
120
|
-
address initialOwner
|
142
|
+
NftId parentNftId,
|
143
|
+
ObjectType objectType,
|
144
|
+
address initialOwner,
|
145
|
+
bytes memory data
|
121
146
|
)
|
122
|
-
external
|
147
|
+
external
|
123
148
|
override
|
124
|
-
|
125
|
-
|
149
|
+
returns (
|
150
|
+
// TODO add onlyRegisteredInstance
|
151
|
+
NftId nftId
|
152
|
+
)
|
126
153
|
{
|
127
154
|
// TODO add more validation
|
128
155
|
require(
|
129
156
|
objectType == POLICY() || objectType == BUNDLE(),
|
130
|
-
"ERROR:REG-
|
157
|
+
"ERROR:REG-010:TYPE_INVALID"
|
158
|
+
);
|
131
159
|
|
132
|
-
|
133
|
-
|
134
|
-
EMPTY_URI);
|
160
|
+
uint256 mintedTokenId = _chainNft.mint(initialOwner, EMPTY_URI);
|
161
|
+
nftId = toNftId(mintedTokenId);
|
135
162
|
|
136
|
-
|
163
|
+
ObjectInfo memory info = ObjectInfo(
|
137
164
|
nftId,
|
138
165
|
parentNftId,
|
139
166
|
objectType,
|
140
167
|
address(0),
|
141
|
-
initialOwner
|
168
|
+
initialOwner,
|
169
|
+
data
|
142
170
|
);
|
143
171
|
|
144
172
|
_info[nftId] = info;
|
@@ -146,31 +174,208 @@ contract Registry is IRegistry {
|
|
146
174
|
// add logging
|
147
175
|
}
|
148
176
|
|
149
|
-
|
150
|
-
function getObjectCount() external view override returns(uint256) {
|
177
|
+
function getObjectCount() external view override returns (uint256) {
|
151
178
|
return _chainNft.totalSupply();
|
152
179
|
}
|
153
180
|
|
181
|
+
function getNftId(
|
182
|
+
address object
|
183
|
+
) external view override returns (NftId id) {
|
184
|
+
return _nftIdByAddress[object];
|
185
|
+
}
|
186
|
+
|
187
|
+
function isRegistered(
|
188
|
+
NftId nftId
|
189
|
+
) public view override returns (bool) {
|
190
|
+
return _info[nftId].objectType.gtz();
|
191
|
+
}
|
154
192
|
|
155
|
-
function
|
156
|
-
|
193
|
+
function isRegistered(
|
194
|
+
address object
|
195
|
+
) external view override returns (bool) {
|
196
|
+
return _nftIdByAddress[object].gtz();
|
157
197
|
}
|
158
198
|
|
199
|
+
function getObjectInfo(
|
200
|
+
NftId nftId
|
201
|
+
) external view override returns (ObjectInfo memory info) {
|
202
|
+
return _info[nftId];
|
203
|
+
}
|
159
204
|
|
160
|
-
function
|
161
|
-
|
205
|
+
function getName(
|
206
|
+
NftId nftId
|
207
|
+
) external view returns (string memory name) {
|
208
|
+
return _string[nftId];
|
162
209
|
}
|
163
210
|
|
211
|
+
function getOwner(NftId nftId) external view override returns (address) {
|
212
|
+
return _chainNft.ownerOf(nftId.toInt());
|
213
|
+
}
|
164
214
|
|
165
|
-
function
|
166
|
-
return
|
215
|
+
function getChainNft() external view override returns (IChainNft) {
|
216
|
+
return _chainNft;
|
217
|
+
}
|
218
|
+
|
219
|
+
// special case to retrive a gif service
|
220
|
+
function getServiceAddress(string memory serviceName, VersionPart majorVersion) external view override returns (address serviceAddress) {
|
221
|
+
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
222
|
+
return _service[serviceNameHash][majorVersion];
|
223
|
+
}
|
224
|
+
|
225
|
+
// from IERC165
|
226
|
+
function supportsInterface(bytes4 interfaceId) external pure override returns (bool) {
|
227
|
+
return interfaceId == type(IRegistry).interfaceId;
|
228
|
+
}
|
229
|
+
|
230
|
+
// from IRegistryLinked
|
231
|
+
function getRegistry() external view override returns (IRegistry registry) {
|
232
|
+
return this;
|
233
|
+
}
|
234
|
+
|
235
|
+
// from IRegisterable
|
236
|
+
function register() external pure override returns (NftId nftId) {
|
237
|
+
return zeroNftId();
|
238
|
+
}
|
239
|
+
|
240
|
+
function getType() external pure override returns (ObjectType objectType) {
|
241
|
+
return REGISTRY();
|
242
|
+
}
|
243
|
+
|
244
|
+
|
245
|
+
function getOwner() public view override returns (address owner) {
|
246
|
+
return _nftId.gtz() ? this.getOwner(_nftId) : _initialOwner;
|
247
|
+
}
|
248
|
+
|
249
|
+
function getNftId() external view override (IRegisterable, IRegistry) returns (NftId nftId) {
|
250
|
+
return _nftId;
|
251
|
+
}
|
252
|
+
|
253
|
+
function getParentNftId() external view returns (NftId nftId) {
|
254
|
+
// we're the global registry
|
255
|
+
if(block.chainid == 1) {
|
256
|
+
return toNftId(_chainNftInternal.PROTOCOL_NFT_ID());
|
257
|
+
}
|
258
|
+
else {
|
259
|
+
return toNftId(_chainNftInternal.GLOBAL_REGISTRY_ID());
|
260
|
+
}
|
261
|
+
}
|
262
|
+
|
263
|
+
function getData() external pure returns (bytes memory data) {
|
264
|
+
return "";
|
265
|
+
}
|
266
|
+
|
267
|
+
// registry specific functions
|
268
|
+
function getProtocolOwner() external view override returns (address) {
|
269
|
+
return _protocolOwner;
|
167
270
|
}
|
168
271
|
|
169
|
-
|
170
|
-
|
272
|
+
/// @dev defines which types are allowed to register
|
273
|
+
function _setupValidTypes() internal {
|
274
|
+
_isValidType[REGISTRY()] = true; // only for global registry
|
275
|
+
_isValidType[TOKEN()] = true;
|
276
|
+
_isValidType[SERVICE()] = true;
|
277
|
+
_isValidType[INSTANCE()] = true;
|
278
|
+
_isValidType[STAKE()] = true;
|
279
|
+
_isValidType[PRODUCT()] = true;
|
280
|
+
_isValidType[ORACLE()] = true;
|
281
|
+
_isValidType[POOL()] = true;
|
282
|
+
_isValidType[DISTRIBUTION()] = true;
|
283
|
+
_isValidType[POLICY()] = true;
|
284
|
+
_isValidType[BUNDLE()] = true;
|
171
285
|
}
|
172
286
|
|
173
|
-
|
174
|
-
|
287
|
+
/// @dev defines which types - parent type relations are allowed to register
|
288
|
+
function _setupValidParentTypes() internal {
|
289
|
+
// registry as parent
|
290
|
+
_isValidParentType[TOKEN()][REGISTRY()] = true;
|
291
|
+
_isValidParentType[SERVICE()][REGISTRY()] = true;
|
292
|
+
_isValidParentType[INSTANCE()][REGISTRY()] = true;
|
293
|
+
|
294
|
+
// instance as parent
|
295
|
+
_isValidParentType[PRODUCT()][INSTANCE()] = true;
|
296
|
+
_isValidParentType[DISTRIBUTION()][INSTANCE()] = true;
|
297
|
+
_isValidParentType[ORACLE()][INSTANCE()] = true;
|
298
|
+
_isValidParentType[POOL()][INSTANCE()] = true;
|
299
|
+
|
300
|
+
// product as parent
|
301
|
+
_isValidParentType[POLICY()][PRODUCT()] = true;
|
302
|
+
|
303
|
+
// pool as parent
|
304
|
+
_isValidParentType[BUNDLE()][POOL()] = true;
|
305
|
+
_isValidParentType[STAKE()][POOL()] = true;
|
175
306
|
}
|
307
|
+
|
308
|
+
/// @dev protocol registration used to anchor the dip ecosystem relations
|
309
|
+
function _registerProtocol() virtual internal {
|
310
|
+
uint256 protocolId = _chainNftInternal.PROTOCOL_NFT_ID();
|
311
|
+
_chainNftInternal.mint(_protocolOwner, protocolId);
|
312
|
+
|
313
|
+
NftId protocolNftid = toNftId(protocolId);
|
314
|
+
ObjectInfo memory protocolInfo = ObjectInfo(
|
315
|
+
protocolNftid,
|
316
|
+
zeroNftId(), // parent nft id
|
317
|
+
PROTOCOL(),
|
318
|
+
address(0), // contract address
|
319
|
+
_protocolOwner,
|
320
|
+
"" // data
|
321
|
+
);
|
322
|
+
|
323
|
+
_info[protocolNftid] = protocolInfo;
|
324
|
+
}
|
325
|
+
|
326
|
+
/// @dev registry registration
|
327
|
+
/// might also register the global registry when not on mainnet
|
328
|
+
function _registerRegistry() virtual internal returns (NftId registryNftId) {
|
329
|
+
uint256 registryId = _chainNftInternal.calculateTokenId(2);
|
330
|
+
registryNftId = toNftId(registryId);
|
331
|
+
|
332
|
+
// we're not the global registry
|
333
|
+
if(registryId != _chainNftInternal.GLOBAL_REGISTRY_ID()) {
|
334
|
+
_registerGlobalRegistry();
|
335
|
+
}
|
336
|
+
|
337
|
+
_chainNftInternal.mint(_protocolOwner, registryId);
|
338
|
+
_registerObjectInfo(this, registryNftId);
|
339
|
+
}
|
340
|
+
|
341
|
+
|
342
|
+
/// @dev global registry registration for non mainnet registries
|
343
|
+
function _registerGlobalRegistry() virtual internal {
|
344
|
+
uint256 globalRegistryId = _chainNftInternal.GLOBAL_REGISTRY_ID();
|
345
|
+
_chainNftInternal.mint(_protocolOwner, globalRegistryId);
|
346
|
+
|
347
|
+
NftId globalRegistryNftId = toNftId(globalRegistryId);
|
348
|
+
ObjectInfo memory globalRegistryInfo = ObjectInfo(
|
349
|
+
globalRegistryNftId,
|
350
|
+
toNftId(_chainNftInternal.PROTOCOL_NFT_ID()),
|
351
|
+
REGISTRY(),
|
352
|
+
address(0), // contract address
|
353
|
+
_protocolOwner,
|
354
|
+
"" // data
|
355
|
+
);
|
356
|
+
|
357
|
+
_info[globalRegistryNftId] = globalRegistryInfo;
|
358
|
+
}
|
359
|
+
|
360
|
+
|
361
|
+
function _registerObjectInfo(
|
362
|
+
IRegisterable registerable,
|
363
|
+
NftId nftId
|
364
|
+
) internal virtual {
|
365
|
+
address objectAddress = address(registerable);
|
366
|
+
ObjectInfo memory info = ObjectInfo(
|
367
|
+
nftId,
|
368
|
+
registerable.getParentNftId(),
|
369
|
+
registerable.getType(),
|
370
|
+
objectAddress,
|
371
|
+
registerable.getOwner(),
|
372
|
+
registerable.getData()
|
373
|
+
);
|
374
|
+
|
375
|
+
_info[nftId] = info;
|
376
|
+
_nftIdByAddress[objectAddress] = nftId;
|
377
|
+
|
378
|
+
// add logging
|
379
|
+
}
|
380
|
+
|
176
381
|
}
|