@etherisc/gif-next 0.0.2-a0d749a → 0.0.2-a196164-289
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 +155 -7
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{Component.sol/Component.json → BaseComponent.sol/BaseComponent.json} +48 -53
- 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/components/{IPool.sol/IPoolComponent.json → IBaseComponent.sol/IBaseComponent.json} +48 -53
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +340 -0
- 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 +405 -40
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +258 -45
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
- 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 +1403 -247
- 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 +1778 -373
- 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/{component/ComponentModule.sol/ComponentModule.json → base/IService.sol/IService.json} +152 -138
- 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/{product/IProductService.sol/IProductService.json → module/component/IComponent.sol/IComponentModule.json} +56 -53
- 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/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +159 -106
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +159 -106
- 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/{pool → module/pool}/IPoolModule.sol/IPoolModule.json +57 -62
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool → module/pool}/PoolModule.sol/PoolModule.json +50 -68
- 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 +103 -77
- 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 +194 -69
- package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +711 -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 +18 -63
- 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/Proxy.dbg.json +4 -0
- package/artifacts/contracts/shared/Proxy.sol/Proxy.json +235 -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 +18 -63
- 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 +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- 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 +65 -4
- 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 +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +64 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +88 -62
- 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 +223 -10
- package/contracts/components/Product.sol +192 -20
- 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/instance/IInstance.sol +43 -8
- package/contracts/instance/IInstanceLinked.sol +8 -0
- package/contracts/instance/Instance.sol +52 -42
- 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 +61 -37
- package/contracts/registry/IRegistry.sol +27 -50
- package/contracts/registry/IRegistryLinked.sol +8 -0
- package/contracts/registry/Registry.sol +282 -110
- package/contracts/registry/RegistryUpgradeable.sol +548 -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 +89 -0
- package/contracts/shared/Registerable.sol +86 -0
- package/contracts/shared/Versionable.sol +99 -0
- package/contracts/shared/VersionableUpgradeable.sol +120 -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/Fee.sol +56 -0
- package/contracts/types/Key32.sol +45 -0
- package/contracts/types/NftId.sol +22 -1
- 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 +22 -1
- package/contracts/types/UFixed.sol +26 -22
- package/contracts/types/Version.sol +103 -0
- package/package.json +14 -5
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- 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 -147
- 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/IComponentContract.json +0 -179
- 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/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- 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/PoolModule.sol/PoolModule.dbg.json +0 -4
- 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/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 -167
- 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 -60
- package/contracts/components/IPool.sol +0 -9
- package/contracts/components/IProduct.sol +0 -9
- package/contracts/instance/access/Access.sol +0 -165
- package/contracts/instance/access/IAccess.sol +0 -63
- package/contracts/instance/component/ComponentModule.sol +0 -213
- package/contracts/instance/component/IComponent.sol +0 -73
- package/contracts/instance/policy/IPolicy.sol +0 -51
- package/contracts/instance/policy/PolicyModule.sol +0 -91
- package/contracts/instance/pool/IPoolModule.sol +0 -29
- package/contracts/instance/pool/PoolModule.sol +0 -73
- package/contracts/instance/product/IProductService.sol +0 -36
- package/contracts/instance/product/ProductService.sol +0 -112
@@ -1,80 +1,57 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
interface IOwnable {
|
7
|
-
function getOwner() external view returns (address owner);
|
8
|
-
}
|
9
|
-
|
10
|
-
interface IRegistryLinked {
|
11
|
-
event LogDebug(uint256 idx, address module, string comment);
|
4
|
+
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
12
5
|
|
13
|
-
|
14
|
-
}
|
15
|
-
|
16
|
-
|
17
|
-
function register() external returns (NftId nftId);
|
18
|
-
|
19
|
-
function getNftId() external view returns (NftId nftId);
|
20
|
-
|
21
|
-
function getParentNftId() external view returns (NftId parentNftId);
|
22
|
-
|
23
|
-
function getType() external view returns (uint256 objectType);
|
24
|
-
|
25
|
-
function getData() external view returns (bytes memory data);
|
26
|
-
|
27
|
-
function isRegisterable() external pure returns (bool);
|
28
|
-
|
29
|
-
function getInitialOwner() external view returns (address initialOwner);
|
30
|
-
|
31
|
-
function isRegistered() external view returns (bool);
|
32
|
-
}
|
6
|
+
import {NftId} from "../types/NftId.sol";
|
7
|
+
import {ObjectType} from "../types/ObjectType.sol";
|
8
|
+
import {VersionPart} from "../types/Version.sol";
|
9
|
+
import {IChainNft} from "./IChainNft.sol";
|
33
10
|
|
34
|
-
interface IRegistry {
|
35
|
-
struct
|
11
|
+
interface IRegistry is IERC165 {
|
12
|
+
struct ObjectInfo {
|
36
13
|
NftId nftId;
|
37
14
|
NftId parentNftId;
|
38
|
-
|
15
|
+
ObjectType objectType;
|
39
16
|
address objectAddress;
|
40
17
|
address initialOwner;
|
18
|
+
bytes data;
|
41
19
|
}
|
42
20
|
|
43
|
-
function TOKEN() external pure returns (uint256);
|
44
|
-
|
45
|
-
function INSTANCE() external pure returns (uint256);
|
46
|
-
|
47
|
-
function PRODUCT() external pure returns (uint256);
|
48
|
-
|
49
|
-
function ORACLE() external pure returns (uint256);
|
50
|
-
|
51
|
-
function POOL() external pure returns (uint256);
|
52
|
-
|
53
|
-
function POLICY() external pure returns (uint256);
|
54
|
-
|
55
|
-
function BUNDLE() external pure returns (uint256);
|
56
|
-
|
57
21
|
function register(address objectAddress) external returns (NftId nftId);
|
58
22
|
|
59
23
|
function registerObjectForInstance(
|
60
24
|
NftId parentNftid,
|
61
|
-
|
62
|
-
address initialOwner
|
25
|
+
ObjectType objectType,
|
26
|
+
address initialOwner,
|
27
|
+
bytes memory data
|
63
28
|
) external returns (NftId nftId);
|
64
29
|
|
30
|
+
function getServiceAddress(string memory serviceName, VersionPart majorVersion) external view returns (address serviceAddress);
|
31
|
+
|
65
32
|
function getObjectCount() external view returns (uint256);
|
66
33
|
|
34
|
+
function getNftId() external view returns (NftId nftId);
|
35
|
+
|
67
36
|
function getNftId(
|
68
37
|
address objectAddress
|
69
38
|
) external view returns (NftId nftId);
|
70
39
|
|
71
|
-
function
|
40
|
+
function getObjectInfo(
|
72
41
|
NftId nftId
|
73
|
-
) external view returns (
|
42
|
+
) external view returns (ObjectInfo memory info);
|
43
|
+
|
44
|
+
function getName(
|
45
|
+
NftId nftId
|
46
|
+
) external view returns (string memory name);
|
47
|
+
|
48
|
+
function getProtocolOwner() external view returns (address);
|
74
49
|
|
75
50
|
function getOwner(NftId nftId) external view returns (address ownerAddress);
|
76
51
|
|
52
|
+
function isRegistered(NftId nftId) external view returns (bool);
|
53
|
+
|
77
54
|
function isRegistered(address objectAddress) external view returns (bool);
|
78
55
|
|
79
|
-
function
|
56
|
+
function getChainNft() external view returns (IChainNft);
|
80
57
|
}
|
@@ -1,107 +1,78 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import {NftId, toNftId} from "../types/NftId.sol";
|
7
|
-
import {NftIdLib} from "../types/NftId.sol";
|
8
|
-
|
9
|
-
contract RegistryLinked is IRegistryLinked {
|
10
|
-
IRegistry internal _registry;
|
4
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
5
|
+
import {IService} from "../instance/base/IService.sol";
|
11
6
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
+
{
|
22
19
|
using NftIdLib for NftId;
|
23
20
|
|
24
|
-
address private _initialOwner;
|
25
|
-
|
26
|
-
constructor(address registry) RegistryLinked(registry) {
|
27
|
-
_initialOwner = msg.sender;
|
28
|
-
}
|
29
|
-
|
30
|
-
// getType, getData and register need to be implemented by concrete contract
|
31
|
-
|
32
|
-
function isRegisterable() external pure override returns (bool) {
|
33
|
-
return true;
|
34
|
-
}
|
35
|
-
|
36
|
-
function getInitialOwner() public view override returns (address deployer) {
|
37
|
-
return _initialOwner;
|
38
|
-
}
|
39
|
-
|
40
|
-
function isRegistered() public view override returns (bool) {
|
41
|
-
NftId nftId = _registry.getNftId(address(this));
|
42
|
-
return nftId.gtz();
|
43
|
-
}
|
44
|
-
|
45
|
-
function getNftId() public view override returns (NftId nftId) {
|
46
|
-
return _registry.getNftId(address(this));
|
47
|
-
}
|
48
|
-
|
49
|
-
function getOwner() public view override returns (address owner) {
|
50
|
-
NftId id = _registry.getNftId(address(this));
|
51
|
-
owner = _registry.getOwner(id);
|
52
|
-
return owner != address(0) ? owner : _initialOwner;
|
53
|
-
}
|
54
|
-
}
|
55
|
-
|
56
|
-
contract Registry is IRegistry {
|
57
|
-
using NftIdLib for NftId;
|
58
21
|
string public constant EMPTY_URI = "";
|
59
22
|
|
60
|
-
mapping(NftId nftId =>
|
61
|
-
mapping(NftId nftId => address owner) private _owner;
|
23
|
+
mapping(NftId nftId => ObjectInfo info) private _info;
|
62
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;
|
63
27
|
|
28
|
+
mapping(NftId nftId => string stringValue) private _string;
|
29
|
+
mapping(bytes32 serviceNameHash => mapping(VersionPart majorVersion => address service)) _service;
|
30
|
+
|
31
|
+
NftId private _nftId;
|
64
32
|
IChainNft private _chainNft;
|
33
|
+
ChainNft private _chainNftInternal;
|
34
|
+
address private _initialOwner;
|
65
35
|
|
66
|
-
|
36
|
+
// @dev will own protocol nft and registry nft(s) minted during initialize
|
37
|
+
address private _protocolOwner;
|
38
|
+
|
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
|
48
|
+
{
|
67
49
|
require(
|
68
50
|
address(_chainNft) == address(0),
|
69
51
|
"ERROR:REG-001:ALREADY_INITIALIZED"
|
70
52
|
);
|
71
|
-
_chainNft = IChainNft(chainNft);
|
72
|
-
}
|
73
|
-
|
74
|
-
function TOKEN() public pure override returns (uint256) {
|
75
|
-
return 30;
|
76
|
-
}
|
77
53
|
|
78
|
-
|
79
|
-
|
80
|
-
}
|
54
|
+
_initialOwner = msg.sender;
|
55
|
+
_protocolOwner = protocolOwner;
|
81
56
|
|
82
|
-
|
83
|
-
|
84
|
-
}
|
57
|
+
_chainNft = IChainNft(chainNft);
|
58
|
+
_chainNftInternal = ChainNft(chainNft);
|
85
59
|
|
86
|
-
|
87
|
-
|
88
|
-
|
60
|
+
// initial registry setup
|
61
|
+
_registerProtocol();
|
62
|
+
_nftId = _registerRegistry();
|
89
63
|
|
90
|
-
|
91
|
-
|
64
|
+
// setup rules for further registrations
|
65
|
+
_setupValidTypes();
|
66
|
+
_setupValidParentTypes();
|
92
67
|
}
|
93
68
|
|
94
|
-
function POLICY() public pure override returns (uint256) {
|
95
|
-
return 80;
|
96
|
-
}
|
97
|
-
|
98
|
-
function BUNDLE() public pure override returns (uint256) {
|
99
|
-
return 90;
|
100
|
-
}
|
101
69
|
|
102
70
|
function register(
|
103
71
|
address objectAddress
|
104
|
-
)
|
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) {
|
105
76
|
require(
|
106
77
|
_nftIdByAddress[objectAddress].eqz(),
|
107
78
|
"ERROR:REG-002:ALREADY_REGISTERED"
|
@@ -109,44 +80,69 @@ contract Registry is IRegistry {
|
|
109
80
|
|
110
81
|
IRegisterable registerable = IRegisterable(objectAddress);
|
111
82
|
require(
|
112
|
-
registerable.
|
83
|
+
registerable.supportsInterface(type(IRegisterable).interfaceId),
|
113
84
|
"ERROR:REG-003:NOT_REGISTERABLE"
|
114
85
|
);
|
115
86
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
require(parentInfo.nftId.gtz(), "ERROR:REG-004:PARENT_NOT_FOUND");
|
122
|
-
// check validity of parent relation, valid relations are
|
123
|
-
// policy -> product, bundle -> pool, product -> instance, pool -> instance
|
124
|
-
}
|
87
|
+
ObjectType objectType = registerable.getType();
|
88
|
+
require(
|
89
|
+
_isValidType[objectType],
|
90
|
+
"ERROR:REG-004:TYPE_INVALID"
|
91
|
+
);
|
125
92
|
|
93
|
+
NftId parentNftId = registerable.getParentNftId();
|
94
|
+
require(
|
95
|
+
isRegistered(parentNftId),
|
96
|
+
"ERROR:REG-005:PARENT_NOT_REGISTERED"
|
97
|
+
);
|
98
|
+
|
99
|
+
require(
|
100
|
+
_isValidParentType[objectType][_info[parentNftId].objectType],
|
101
|
+
"ERROR:REG-006:PARENT_TYPE_INVALID"
|
102
|
+
);
|
103
|
+
|
104
|
+
// also check that nftId and parentNFtId are on the same chain if applicable
|
105
|
+
|
106
|
+
// nft minting
|
126
107
|
uint256 mintedTokenId = _chainNft.mint(
|
127
|
-
registerable.
|
108
|
+
registerable.getOwner(),
|
128
109
|
EMPTY_URI
|
129
110
|
);
|
130
|
-
nftId = toNftId(mintedTokenId);
|
131
111
|
|
132
|
-
|
133
|
-
nftId,
|
134
|
-
registerable.getParentNftId(),
|
135
|
-
registerable.getType(),
|
136
|
-
objectAddress,
|
137
|
-
registerable.getInitialOwner()
|
138
|
-
);
|
112
|
+
nftId = toNftId(mintedTokenId);
|
139
113
|
|
140
|
-
|
141
|
-
|
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
|
+
);
|
121
|
+
|
122
|
+
string memory serviceName = service.getName();
|
123
|
+
VersionPart majorVersion = service.getMajorVersion();
|
124
|
+
bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
|
125
|
+
|
126
|
+
// service specific state
|
127
|
+
_string[nftId] = serviceName;
|
128
|
+
|
129
|
+
require(
|
130
|
+
_service[serviceNameHash][majorVersion] == address(0),
|
131
|
+
"ERROR:REG-008:ALREADY_REGISTERED"
|
132
|
+
);
|
133
|
+
_service[serviceNameHash][majorVersion] = objectAddress;
|
134
|
+
}
|
142
135
|
|
143
|
-
//
|
136
|
+
// create object info and link nft id with it
|
137
|
+
_registerObjectInfo(registerable, nftId);
|
144
138
|
}
|
145
139
|
|
140
|
+
|
146
141
|
function registerObjectForInstance(
|
147
142
|
NftId parentNftId,
|
148
|
-
|
149
|
-
address initialOwner
|
143
|
+
ObjectType objectType,
|
144
|
+
address initialOwner,
|
145
|
+
bytes memory data
|
150
146
|
)
|
151
147
|
external
|
152
148
|
override
|
@@ -158,18 +154,19 @@ contract Registry is IRegistry {
|
|
158
154
|
// TODO add more validation
|
159
155
|
require(
|
160
156
|
objectType == POLICY() || objectType == BUNDLE(),
|
161
|
-
"ERROR:REG-
|
157
|
+
"ERROR:REG-010:TYPE_INVALID"
|
162
158
|
);
|
163
159
|
|
164
160
|
uint256 mintedTokenId = _chainNft.mint(initialOwner, EMPTY_URI);
|
165
161
|
nftId = toNftId(mintedTokenId);
|
166
162
|
|
167
|
-
|
163
|
+
ObjectInfo memory info = ObjectInfo(
|
168
164
|
nftId,
|
169
165
|
parentNftId,
|
170
166
|
objectType,
|
171
167
|
address(0),
|
172
|
-
initialOwner
|
168
|
+
initialOwner,
|
169
|
+
data
|
173
170
|
);
|
174
171
|
|
175
172
|
_info[nftId] = info;
|
@@ -187,23 +184,198 @@ contract Registry is IRegistry {
|
|
187
184
|
return _nftIdByAddress[object];
|
188
185
|
}
|
189
186
|
|
187
|
+
function isRegistered(
|
188
|
+
NftId nftId
|
189
|
+
) public view override returns (bool) {
|
190
|
+
return _info[nftId].objectType.gtz();
|
191
|
+
}
|
192
|
+
|
190
193
|
function isRegistered(
|
191
194
|
address object
|
192
195
|
) external view override returns (bool) {
|
193
196
|
return _nftIdByAddress[object].gtz();
|
194
197
|
}
|
195
198
|
|
196
|
-
function
|
199
|
+
function getObjectInfo(
|
197
200
|
NftId nftId
|
198
|
-
) external view override returns (
|
201
|
+
) external view override returns (ObjectInfo memory info) {
|
199
202
|
return _info[nftId];
|
200
203
|
}
|
201
204
|
|
205
|
+
function getName(
|
206
|
+
NftId nftId
|
207
|
+
) external view returns (string memory name) {
|
208
|
+
return _string[nftId];
|
209
|
+
}
|
210
|
+
|
202
211
|
function getOwner(NftId nftId) external view override returns (address) {
|
203
212
|
return _chainNft.ownerOf(nftId.toInt());
|
204
213
|
}
|
205
214
|
|
206
|
-
function
|
207
|
-
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();
|
208
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;
|
270
|
+
}
|
271
|
+
|
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;
|
285
|
+
}
|
286
|
+
|
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;
|
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
|
+
|
209
381
|
}
|