@etherisc/gif-next 0.0.2-e37834a-021 → 0.0.2-e46206a-486

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.
Files changed (257) hide show
  1. package/README.md +104 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +90 -2
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +118 -6
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +80 -3
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  10. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  12. package/artifacts/contracts/components/Pool.sol/Pool.json +120 -6
  13. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  14. package/artifacts/contracts/components/Product.sol/Product.json +118 -6
  15. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  16. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  17. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  21. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  37. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  39. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  40. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +54 -286
  43. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +1 -1
  44. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  45. package/artifacts/contracts/instance/Instance.sol/Instance.json +171 -396
  46. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +90 -2
  48. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  49. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  50. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +1 -1
  52. package/artifacts/contracts/instance/base/IService.sol/IService.json +80 -3
  53. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +1 -1
  54. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +90 -2
  55. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  56. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +22 -14
  57. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  58. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  59. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +90 -2
  62. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +1 -1
  63. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +2 -2
  70. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -13
  75. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -13
  77. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +2 -2
  84. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +2 -2
  88. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +194 -41
  91. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +136 -16
  93. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +81 -4
  95. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +80 -3
  97. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  98. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +80 -3
  99. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -3
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +138 -18
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +154 -42
  105. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  106. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
  107. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +42 -156
  109. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +214 -10
  111. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/Registry.sol/Registry.json +62 -184
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +410 -34
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +86 -42
  118. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  119. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  120. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  121. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  122. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  123. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +80 -3
  125. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  127. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +32 -6
  128. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +21 -16
  130. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +120 -6
  132. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  133. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  134. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  135. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +1 -1
  136. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +118 -6
  137. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  138. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  139. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +1 -1
  140. package/artifacts/contracts/test/TestPool.sol/TestPool.json +120 -6
  141. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
  142. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +120 -8
  143. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  144. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +120 -6
  145. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  147. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestService.sol/TestService.json +142 -14
  149. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  151. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +18 -2
  154. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  155. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  156. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  157. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  158. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  160. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  161. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  163. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  164. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  165. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  167. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  168. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  169. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  170. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  171. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  173. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  174. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  175. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  177. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  179. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  181. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  183. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  185. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  187. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  189. package/contracts/components/BaseComponent.sol +1 -1
  190. package/contracts/components/Distribution.sol +1 -1
  191. package/contracts/components/IBaseComponent.sol +1 -1
  192. package/contracts/components/IDistributionComponent.sol +1 -1
  193. package/contracts/components/IProductComponent.sol +1 -1
  194. package/contracts/components/Product.sol +2 -2
  195. package/contracts/experiment/cloning/Cloner.sol +47 -0
  196. package/contracts/instance/IInstance.sol +4 -6
  197. package/contracts/instance/Instance.sol +4 -6
  198. package/contracts/instance/base/KeyValueStore.sol +3 -2
  199. package/contracts/instance/base/ModuleBase.sol +1 -1
  200. package/contracts/instance/base/ServiceBase.sol +1 -0
  201. package/contracts/instance/module/bundle/BundleModule.sol +2 -2
  202. package/contracts/instance/module/component/ComponentModule.sol +1 -1
  203. package/contracts/instance/module/component/IComponent.sol +1 -1
  204. package/contracts/instance/module/policy/IPolicy.sol +2 -2
  205. package/contracts/instance/module/policy/PolicyModule.sol +2 -2
  206. package/contracts/instance/module/treasury/ITreasury.sol +1 -1
  207. package/contracts/instance/module/treasury/TokenHandler.sol +1 -1
  208. package/contracts/instance/module/treasury/TreasuryModule.sol +4 -4
  209. package/contracts/instance/service/ComponentOwnerService.sol +73 -30
  210. package/contracts/instance/service/IProductService.sol +1 -1
  211. package/contracts/instance/service/ProductService.sol +3 -3
  212. package/contracts/registry/ChainNft.sol +40 -25
  213. package/contracts/registry/IRegistry.sol +9 -25
  214. package/contracts/registry/IRegistryService.sol +9 -3
  215. package/contracts/registry/Registry.sol +90 -157
  216. package/contracts/registry/RegistryService.sol +167 -101
  217. package/contracts/registry/RegistryServiceManager.sol +22 -10
  218. package/contracts/shared/ERC165.sol +1 -1
  219. package/contracts/shared/INftOwnable.sol +22 -0
  220. package/contracts/shared/IRegisterable.sol +3 -8
  221. package/contracts/shared/NftOwnable.sol +83 -34
  222. package/contracts/shared/ProxyManager.sol +3 -12
  223. package/contracts/shared/Registerable.sol +14 -42
  224. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  225. package/contracts/shared/Versionable.sol +3 -3
  226. package/contracts/test/TestFee.sol +2 -2
  227. package/contracts/test/TestProduct.sol +2 -2
  228. package/contracts/test/TestRoleId.sol +1 -1
  229. package/contracts/types/DistributorType.sol +55 -0
  230. package/contracts/types/Fee.sol +3 -3
  231. package/contracts/types/Key32.sol +8 -3
  232. package/contracts/types/NumberId.sol +52 -0
  233. package/contracts/types/ObjectType.sol +35 -14
  234. package/contracts/types/Referral.sol +85 -0
  235. package/contracts/types/RoleId.sol +53 -9
  236. package/contracts/types/StateId.sol +1 -1
  237. package/contracts/types/Timestamp.sol +7 -3
  238. package/contracts/types/UFixed.sol +128 -12
  239. package/package.json +4 -3
  240. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  241. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  242. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  243. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  244. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  245. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  246. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  247. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  248. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  249. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  250. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  251. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  252. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  253. package/contracts/instance/module/access/Access.sol +0 -149
  254. package/contracts/instance/module/access/IAccess.sol +0 -53
  255. package/contracts/registry/IChainNft.sol +0 -22
  256. package/contracts/shared/IOwnable.sol +0 -6
  257. package/contracts/types/ReferralId.sol +0 -48
@@ -4,7 +4,6 @@ pragma solidity ^0.8.20;
4
4
  import {IRegisterable} from "../shared/IRegisterable.sol";
5
5
  import {IService} from "../instance/base/IService.sol";
6
6
 
7
- import {IChainNft} from "./IChainNft.sol";
8
7
  import {ChainNft} from "./ChainNft.sol";
9
8
  import {IRegistry} from "./IRegistry.sol";
10
9
  import {NftId, toNftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
@@ -12,7 +11,6 @@ import {Version, VersionPart, VersionLib} from "../types/Version.sol";
12
11
  import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
13
12
  import {ITransferInterceptor} from "./ITransferInterceptor.sol";
14
13
 
15
- import {IOwnable} from "../shared/IOwnable.sol";
16
14
  import {ERC165} from "../shared/ERC165.sol";
17
15
 
18
16
 
@@ -48,35 +46,26 @@ contract Registry is
48
46
  uint256 public constant REGISTRY_SERVICE_TOKEN_SEQUENCE_ID = 3;
49
47
  string public constant EMPTY_URI = "";
50
48
 
51
- mapping(NftId nftId => ObjectInfo info) _info;
52
- mapping(address object => NftId nftId) _nftIdByAddress;
49
+ mapping(NftId nftId => ObjectInfo info) internal _info;
50
+ mapping(address object => NftId nftId) internal _nftIdByAddress;
53
51
 
54
52
  mapping(NftId registrator => mapping(
55
- ObjectType objectType => bool)) _isApproved;
53
+ ObjectType objectType => bool)) internal _isApproved;
56
54
 
57
55
  mapping(ObjectType objectType => mapping(
58
- ObjectType parentType => bool)) _isValidContractCombination;
56
+ ObjectType parentType => bool)) internal _isValidContractCombination;
59
57
 
60
58
  mapping(ObjectType objectType => mapping(
61
- ObjectType parentType => bool)) _isValidObjectCombination;
59
+ ObjectType parentType => bool)) internal _isValidObjectCombination;
62
60
 
63
- mapping(NftId nftId => string name) _string;
61
+ mapping(NftId nftId => string name) internal _string;
64
62
  mapping(bytes32 serviceNameHash => mapping(
65
- VersionPart majorVersion => address service)) _service;
63
+ VersionPart majorVersion => address service)) internal _service;
66
64
 
67
- NftId _registryNftId;
68
- NftId _serviceNftId; // set in stone upon registry creation
69
- IChainNft _chainNft;
70
- ChainNft _chainNftInternal;
65
+ NftId internal _registryNftId;
66
+ NftId internal _serviceNftId; // set in stone upon registry creation
67
+ ChainNft internal _chainNft;
71
68
 
72
- /*
73
- modifier onlyInitialOwner() {
74
- if(
75
- msg.sender != getOwner() ||
76
- msg.sender != _info[_registryNftId].initialOwner) {
77
- revert NotInitialOwner();
78
- }
79
- }*/
80
69
 
81
70
  modifier onlyOwner() {
82
71
  if(msg.sender != getOwner()) {
@@ -95,12 +84,11 @@ contract Registry is
95
84
 
96
85
  constructor(address registryOwner, VersionPart majorVersion)
97
86
  {
98
- require(registryOwner > address(0), "Registry: protocol owner is 0");
87
+ require(registryOwner > address(0), "Registry: registry owner is 0");
99
88
  require(majorVersion.toInt() == MAJOR_VERSION_MIN, "Registry: initial major version of registry service is not MAJOR_VERSION_MIN");
100
89
 
101
90
  // deploy NFT
102
- _chainNftInternal = new ChainNft(address(this));// adds 10kb to deployment size
103
- _chainNft = IChainNft(_chainNftInternal);
91
+ _chainNft = new ChainNft(address(this));// adds 10kb to deployment size
104
92
 
105
93
  // initial registry setup
106
94
  _registerProtocol();
@@ -111,13 +99,11 @@ contract Registry is
111
99
  _setupValidObjectParentCombinations();
112
100
 
113
101
  _registerInterface(type(IRegistry).interfaceId);
114
- _registerInterface(type(IOwnable).interfaceId);
115
102
  }
116
103
 
117
- /// @dev registry protects only from tampering existing records and invalid types pairs
118
- // IMPORTANT: rare case when parentNftId is not registered and == next nftId -> technincally this is ZeroParentAddress error
119
- // to catch this check parent address before minting !!!!
104
+ /// @dev registry protects only against tampering existing records, registering with invalid types pairs and 0 parent address
120
105
  // TODO service registration means its approval for some type?
106
+ // TODO registration of precompile addresses
121
107
  function register(ObjectInfo memory info)
122
108
  external
123
109
  onlyRegistryService
@@ -139,6 +125,7 @@ contract Registry is
139
125
 
140
126
  address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
141
127
 
128
+ // TODO does external call
142
129
  uint256 mintedTokenId = _chainNft.mint(
143
130
  info.initialOwner,
144
131
  interceptor,
@@ -168,33 +155,8 @@ contract Registry is
168
155
  _nftIdByAddress[contractAddress] = nftId;
169
156
 
170
157
  // special case
171
- if(objectType == SERVICE())
172
- {
173
- (
174
- string memory serviceName,
175
- VersionPart majorVersion
176
- ) = abi.decode(info.data, (string, VersionPart));
177
- bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
178
-
179
- // TODO MUST guarantee consistency of registerable.getVersion() and majorVersion here
180
- // TODO update _serviceNftId when registryService with new major version is registered? -> it is fixed in current setup
181
- // TODO do not use names -> each object type is registered by corresponding service -> conflicting with approve()
182
- if(
183
- majorVersion.toInt() < MAJOR_VERSION_MIN ||
184
- (majorVersion.toInt() > MAJOR_VERSION_MIN &&
185
- _service[serviceNameHash][VersionLib.toVersionPart(majorVersion.toInt() - 1)] == address(0) )
186
- ) {
187
- revert InvalidServiceVersion(majorVersion);
188
- }
189
-
190
- if(_service[serviceNameHash][majorVersion] != address(0)) {
191
- revert ServiceNameAlreadyRegistered(serviceName, majorVersion);
192
- }
193
-
194
- _string[nftId] = serviceName;
195
- _service[serviceNameHash][majorVersion] = contractAddress;
196
-
197
- emit LogServiceNameRegistration(serviceName, majorVersion);
158
+ if(objectType == SERVICE()) {
159
+ _registerService(info);
198
160
  }
199
161
  }
200
162
  else
@@ -204,67 +166,7 @@ contract Registry is
204
166
  }
205
167
  }
206
168
 
207
- emit LogRegistration(nftId, info.parentNftId, info.objectType, info.objectAddress, info.initialOwner);
208
- }
209
-
210
- function registerFrom(
211
- address from,
212
- ObjectInfo memory info
213
- ) external returns (NftId nftId)
214
- {
215
- revert();
216
- }
217
-
218
-
219
- /// @dev
220
- // msg.sender - registry owner
221
- // CAN approve only registered service contract
222
- // CAN approve any combination specified in _isValidCombination
223
- // CAN NOT approve itself
224
- // TODO in case where exists exactly one registered service per objectType (and major version):
225
- // - registration and approve is a single operation, no need for separate approve() function
226
- // - then approve can be used to adding new valid object-parent combinations???
227
- function approve(
228
- NftId serviceNftId,
229
- ObjectType objectType,
230
- ObjectType parentType
231
- )
232
- public
233
- onlyOwner()
234
- {
235
- address serviceAddress = _info[serviceNftId].objectAddress;
236
-
237
- if(_nftIdByAddress[serviceAddress].eqz()) {
238
- revert NotRegisteredContract(serviceNftId);
239
- }
240
-
241
- if(_info[serviceNftId].objectType != SERVICE()) {
242
- revert NotService(serviceNftId);
243
- }
244
-
245
- if(
246
- _isValidContractCombination[objectType][parentType] == false &&
247
- _isValidObjectCombination[objectType][parentType] == false) {
248
- revert InvalidTypesCombination(objectType, parentType);
249
- }
250
-
251
- _isApproved[serviceNftId][objectType] = true;
252
-
253
- emit LogApproval(serviceNftId, objectType);
254
- }
255
-
256
- /// @dev returns false for registry owner nft
257
- // TODO allowance by address?
258
- // TODO checked by registry service -> but registry owner can upgrade registry service not to check allowance....
259
- function allowance(
260
- NftId nftId,
261
- ObjectType object
262
- )
263
- public
264
- view
265
- returns (bool)
266
- {
267
- return _isApproved[nftId][object];
169
+ emit LogRegistration(info);
268
170
  }
269
171
 
270
172
  // from IRegistry
@@ -317,25 +219,82 @@ contract Registry is
317
219
  return _service[serviceNameHash][majorVersion];
318
220
  }
319
221
 
320
- function getChainNft() external view override returns (IChainNft) {
222
+ function getChainNft() external view override returns (ChainNft) {
321
223
  return _chainNft;
322
224
  }
323
225
 
324
- // from IOwnable
325
226
  function getOwner() public view returns (address owner) {
326
227
  return ownerOf(address(this));
327
228
  }
328
229
 
329
- // Internals, called only in constructor
230
+ // Internals
231
+
232
+ function _registerService(ObjectInfo memory info)
233
+ internal
234
+ {
235
+ (
236
+ string memory serviceName,
237
+ VersionPart majorVersion
238
+ ) = abi.decode(info.data, (string, VersionPart));
239
+ bytes32 serviceNameHash = keccak256(abi.encode(serviceName));
240
+
241
+ // TODO MUST guarantee consistency of service.getVersion() and majorVersion here
242
+ // TODO update _serviceNftId when registryService with new major version is registered? -> it is fixed in current setup -> can lock up
243
+ // TODO do not use names -> each object type is registered by corresponding service -> conflicting with approve()
244
+ if(
245
+ majorVersion.toInt() < MAJOR_VERSION_MIN ||
246
+ (majorVersion.toInt() > MAJOR_VERSION_MIN &&
247
+ _service[serviceNameHash][VersionLib.toVersionPart(majorVersion.toInt() - 1)] == address(0) )
248
+ ) {
249
+ revert InvalidServiceVersion(majorVersion);
250
+ }
251
+
252
+ if(_service[serviceNameHash][majorVersion] != address(0)) {
253
+ revert ServiceNameAlreadyRegistered(serviceName, majorVersion);
254
+ }
255
+
256
+ _string[info.nftId] = serviceName;
257
+ _service[serviceNameHash][majorVersion] = info.objectAddress;
258
+
259
+ emit LogServiceNameRegistration(serviceName, majorVersion);
260
+ }
261
+
262
+ /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
263
+ function _getInterceptor(
264
+ bool isInterceptor,
265
+ address objectAddress,
266
+ bool parentIsInterceptor,
267
+ address parentObjectAddress
268
+ )
269
+ internal
270
+ view
271
+ returns (address interceptor)
272
+ {
273
+ if (objectAddress == address(0)) {
274
+ if (parentIsInterceptor) {
275
+ return parentObjectAddress;
276
+ } else {
277
+ return address(0);
278
+ }
279
+ }
280
+
281
+ if (isInterceptor) {
282
+ return objectAddress;
283
+ }
284
+
285
+ return address(0);
286
+ }
287
+
288
+ // Internals called only in constructor
330
289
 
331
290
  /// @dev protocol registration used to anchor the dip ecosystem relations
332
291
  function _registerProtocol()
333
292
  internal
334
293
  {
335
- uint256 protocolId = _chainNftInternal.PROTOCOL_NFT_ID();
294
+ uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
336
295
  NftId protocolNftId = toNftId(protocolId);
337
296
 
338
- _chainNftInternal.mint(NFT_LOCK_ADDRESS, protocolId);
297
+ _chainNft.mint(NFT_LOCK_ADDRESS, protocolId);
339
298
 
340
299
  _info[protocolNftId] = ObjectInfo(
341
300
  protocolNftId,
@@ -353,22 +312,22 @@ contract Registry is
353
312
  function _registerRegistry(address registryOwner)
354
313
  internal
355
314
  {
356
- uint256 registryId = _chainNftInternal.calculateTokenId(2);
315
+ uint256 registryId = _chainNft.calculateTokenId(2);
357
316
  NftId registryNftId = toNftId(registryId);
358
317
 
359
318
  NftId parentNftId;
360
319
 
361
- if(registryId != _chainNftInternal.GLOBAL_REGISTRY_ID())
320
+ if(registryId != _chainNft.GLOBAL_REGISTRY_ID())
362
321
  {// we're not the global registry
363
322
  _registerGlobalRegistry();
364
- parentNftId = toNftId(_chainNftInternal.GLOBAL_REGISTRY_ID());
323
+ parentNftId = toNftId(_chainNft.GLOBAL_REGISTRY_ID());
365
324
  }
366
325
  else
367
326
  {// we are global registry
368
- parentNftId = toNftId(_chainNftInternal.PROTOCOL_NFT_ID());
327
+ parentNftId = toNftId(_chainNft.PROTOCOL_NFT_ID());
369
328
  }
370
329
 
371
- _chainNftInternal.mint(registryOwner, registryId);
330
+ _chainNft.mint(registryOwner, registryId);
372
331
 
373
332
  _info[registryNftId] = ObjectInfo(
374
333
  registryNftId,
@@ -388,15 +347,15 @@ contract Registry is
388
347
  function _registerGlobalRegistry()
389
348
  internal
390
349
  {
391
- uint256 globalRegistryId = _chainNftInternal.GLOBAL_REGISTRY_ID();
350
+ uint256 globalRegistryId = _chainNft.GLOBAL_REGISTRY_ID();
392
351
 
393
- _chainNftInternal.mint(NFT_LOCK_ADDRESS, globalRegistryId);
352
+ _chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
394
353
 
395
354
  NftId globalRegistryNftId = toNftId(globalRegistryId);
396
355
 
397
356
  _info[globalRegistryNftId] = ObjectInfo(
398
357
  globalRegistryNftId,
399
- toNftId(_chainNftInternal.PROTOCOL_NFT_ID()), // parent
358
+ toNftId(_chainNft.PROTOCOL_NFT_ID()), // parent
400
359
  REGISTRY(),
401
360
  false, // isInterceptor
402
361
  address(0), // objectAddress
@@ -408,10 +367,10 @@ contract Registry is
408
367
  function _registerRegistryService(address registryOwner)
409
368
  internal
410
369
  {
411
- uint256 serviceId = _chainNftInternal.calculateTokenId(REGISTRY_SERVICE_TOKEN_SEQUENCE_ID);
370
+ uint256 serviceId = _chainNft.calculateTokenId(REGISTRY_SERVICE_TOKEN_SEQUENCE_ID);
412
371
  NftId serviceNftId = toNftId(serviceId);
413
372
 
414
- _chainNftInternal.mint(registryOwner, serviceId);
373
+ _chainNft.mint(registryOwner, serviceId);
415
374
 
416
375
  _info[serviceNftId] = ObjectInfo(
417
376
  serviceNftId,
@@ -432,32 +391,6 @@ contract Registry is
432
391
  _serviceNftId = serviceNftId;
433
392
  }
434
393
 
435
- /// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
436
- function _getInterceptor(
437
- bool isInterceptor,
438
- address objectAddress,
439
- bool parentIsInterceptor,
440
- address parentObjectAddress
441
- )
442
- internal
443
- view
444
- returns (address interceptor)
445
- {
446
- if (objectAddress == address(0)) {
447
- if (parentIsInterceptor) {
448
- return parentObjectAddress;
449
- } else {
450
- return address(0);
451
- }
452
- }
453
-
454
- if (isInterceptor) {
455
- return objectAddress;
456
- }
457
-
458
- return address(0);
459
- }
460
-
461
394
  /// @dev defines which object - parent types relations are allowed to register
462
395
  // IMPORTANT:
463
396
  // 1) EACH object type MUST have only one parent type across ALL mappings