@etherisc/gif-next 0.0.2-cc253b3 → 0.0.2-cd89a0b-062

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 (390) hide show
  1. package/README.md +193 -6
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/components/{IProduct.sol/IProductComponent.json → BaseComponent.sol/BaseComponent.json} +88 -67
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +445 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → IBaseComponent.sol/IBaseComponent.json} +69 -71
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +343 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +474 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +373 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +445 -56
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +324 -53
  18. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
  20. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  22. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  26. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +4 -0
  33. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
  35. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  44. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  45. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1575 -295
  48. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
  49. package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +1894 -374
  52. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  53. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +393 -0
  54. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  55. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  56. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
  58. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  60. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → base/IService.sol/IService.json} +171 -154
  62. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +456 -0
  64. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -0
  66. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  67. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  68. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
  69. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.json +10 -0
  70. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +380 -0
  72. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
  73. package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
  74. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
  75. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
  76. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
  77. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
  78. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
  79. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +297 -0
  80. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
  82. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +297 -0
  84. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +117 -0
  86. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
  87. package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
  88. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
  89. package/artifacts/contracts/instance/{product/IProductService.sol/IProductService.json → module/component/IComponent.sol/IComponentModule.json} +56 -53
  90. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +4 -0
  91. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +10 -0
  92. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +4 -0
  93. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.json +10 -0
  94. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +4 -0
  95. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +10 -0
  96. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
  98. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
  99. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +159 -106
  100. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
  101. package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +159 -106
  102. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
  104. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
  105. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPoolModule.json +74 -59
  106. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
  107. package/artifacts/contracts/instance/{pool → module/pool}/PoolModule.sol/PoolModule.json +64 -62
  108. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.json +10 -0
  110. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
  111. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +113 -0
  112. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
  113. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +131 -0
  114. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
  115. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +10 -0
  116. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
  117. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +638 -0
  118. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  119. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
  120. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
  121. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +638 -0
  122. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  123. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +690 -0
  124. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  125. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +526 -0
  126. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  127. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +389 -0
  128. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  129. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +369 -0
  130. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  131. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +484 -0
  132. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  133. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +674 -0
  134. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  135. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +649 -0
  136. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  137. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +964 -0
  138. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  139. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +194 -2
  140. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  141. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +5 -0
  142. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  143. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +351 -72
  144. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  145. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +668 -0
  146. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  147. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  148. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  149. package/artifacts/contracts/registry/Registry.sol/Registry.json +567 -79
  150. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  151. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +885 -0
  152. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +460 -0
  154. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  155. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  156. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  158. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
  159. package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
  160. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +124 -0
  162. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +205 -0
  164. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  165. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +132 -0
  166. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  167. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +344 -0
  168. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  169. package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +71 -77
  170. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  171. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  172. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  173. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +228 -0
  174. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
  175. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +445 -0
  176. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  177. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  178. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
  179. package/artifacts/contracts/test/TestPool.sol/TestPool.json +602 -0
  180. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
  181. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +632 -0
  182. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  183. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +191 -0
  184. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  185. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  186. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  187. package/artifacts/contracts/test/TestService.sol/TestService.json +472 -0
  188. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  189. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
  190. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  191. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  192. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  193. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +270 -0
  194. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  195. package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
  196. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  197. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  198. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +174 -0
  200. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  202. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  204. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  205. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
  206. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +91 -6
  208. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  209. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
  210. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  212. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
  213. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -0
  214. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  215. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  216. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
  218. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  219. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  220. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +4 -0
  221. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +236 -0
  222. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +4 -0
  223. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +479 -0
  224. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  225. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  226. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  227. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
  228. package/contracts/components/BaseComponent.sol +79 -0
  229. package/contracts/components/Distribution.sol +155 -0
  230. package/contracts/components/IBaseComponent.sol +19 -0
  231. package/contracts/components/IDistributionComponent.sol +47 -0
  232. package/contracts/components/IPoolComponent.sol +65 -0
  233. package/contracts/components/IProductComponent.sol +39 -0
  234. package/contracts/components/Pool.sol +235 -18
  235. package/contracts/components/Product.sol +268 -35
  236. package/contracts/experiment/errors/Require.sol +10 -5
  237. package/contracts/experiment/errors/Revert.sol +13 -8
  238. package/contracts/experiment/inheritance/A.sol +8 -11
  239. package/contracts/experiment/inheritance/B.sol +10 -5
  240. package/contracts/experiment/inheritance/C.sol +11 -5
  241. package/contracts/experiment/inheritance/IA.sol +2 -7
  242. package/contracts/experiment/inheritance/IB.sol +3 -2
  243. package/contracts/experiment/inheritance/IC.sol +4 -3
  244. package/contracts/experiment/statemachine/Dummy.sol +27 -0
  245. package/contracts/experiment/statemachine/ISM.sol +25 -0
  246. package/contracts/experiment/statemachine/SM.sol +57 -0
  247. package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
  248. package/contracts/experiment/types/TypeA.sol +14 -9
  249. package/contracts/experiment/types/TypeB.sol +14 -9
  250. package/contracts/instance/IInstance.sol +42 -8
  251. package/contracts/instance/IInstanceLinked.sol +8 -0
  252. package/contracts/instance/Instance.sol +62 -41
  253. package/contracts/instance/base/ComponentServiceBase.sol +49 -0
  254. package/contracts/instance/base/IInstanceBase.sol +23 -0
  255. package/contracts/instance/base/IKeyValueStore.sol +50 -0
  256. package/contracts/instance/base/ILifecycle.sol +30 -0
  257. package/contracts/instance/base/IService.sol +15 -0
  258. package/contracts/instance/base/InstanceBase.sol +89 -0
  259. package/contracts/instance/base/KeyValueStore.sol +161 -0
  260. package/contracts/instance/base/Lifecycle.sol +100 -0
  261. package/contracts/instance/base/ModuleBase.sol +57 -0
  262. package/contracts/instance/base/ServiceBase.sol +43 -0
  263. package/contracts/instance/module/access/Access.sol +149 -0
  264. package/contracts/instance/module/access/IAccess.sol +53 -0
  265. package/contracts/instance/module/bundle/BundleModule.sol +134 -0
  266. package/contracts/instance/module/bundle/IBundle.sol +53 -0
  267. package/contracts/instance/module/component/ComponentModule.sol +71 -0
  268. package/contracts/instance/module/component/IComponent.sol +28 -0
  269. package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
  270. package/contracts/instance/module/distribution/IDistribution.sol +10 -0
  271. package/contracts/instance/module/policy/IPolicy.sol +63 -0
  272. package/contracts/instance/module/policy/PolicyModule.sol +91 -0
  273. package/contracts/instance/module/pool/IPoolModule.sol +41 -0
  274. package/contracts/instance/module/pool/PoolModule.sol +95 -0
  275. package/contracts/instance/module/risk/IRisk.sol +26 -0
  276. package/contracts/instance/module/risk/RiskModule.sol +62 -0
  277. package/contracts/instance/module/treasury/ITreasury.sol +84 -0
  278. package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
  279. package/contracts/instance/module/treasury/TreasuryModule.sol +131 -0
  280. package/contracts/instance/service/ComponentOwnerService.sol +272 -0
  281. package/contracts/instance/service/DistributionService.sol +54 -0
  282. package/contracts/instance/service/IComponentOwnerService.sol +20 -0
  283. package/contracts/instance/service/IDistributionService.sol +12 -0
  284. package/contracts/instance/service/IPoolService.sol +37 -0
  285. package/contracts/instance/service/IProductService.sol +107 -0
  286. package/contracts/instance/service/PoolService.sol +149 -0
  287. package/contracts/instance/service/ProductService.sol +509 -0
  288. package/contracts/registry/ChainNft.sol +111 -97
  289. package/contracts/registry/IChainNft.sol +13 -9
  290. package/contracts/registry/IRegistry.sol +59 -56
  291. package/contracts/registry/IRegistryService.sol +29 -0
  292. package/contracts/registry/ITransferInterceptor.sol +6 -0
  293. package/contracts/registry/Registry.sol +429 -121
  294. package/contracts/registry/RegistryService.sol +375 -0
  295. package/contracts/registry/RegistryServiceManager.sol +52 -0
  296. package/contracts/shared/ContractDeployerLib.sol +72 -0
  297. package/contracts/shared/ERC165.sol +21 -0
  298. package/contracts/shared/IOwnable.sol +6 -0
  299. package/contracts/shared/IRegisterable.sol +22 -0
  300. package/contracts/shared/IVersionable.sol +96 -0
  301. package/contracts/shared/NftOwnable.sol +87 -0
  302. package/contracts/shared/ProxyManager.sol +103 -0
  303. package/contracts/shared/Registerable.sol +117 -0
  304. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  305. package/contracts/shared/Versionable.sol +147 -0
  306. package/contracts/test/TestDistribution.sol +22 -0
  307. package/contracts/test/TestFee.sol +25 -0
  308. package/contracts/test/TestPool.sol +27 -0
  309. package/contracts/test/TestProduct.sol +74 -0
  310. package/contracts/test/TestRegisterable.sol +18 -0
  311. package/contracts/test/TestRoleId.sol +14 -0
  312. package/contracts/test/TestService.sol +26 -0
  313. package/contracts/test/TestToken.sol +26 -0
  314. package/contracts/test/TestVersion.sol +44 -0
  315. package/contracts/test/TestVersionable.sol +17 -0
  316. package/contracts/test/Usdc.sol +26 -0
  317. package/contracts/types/AddressSet.sol +58 -0
  318. package/contracts/types/Blocknumber.sol +118 -0
  319. package/contracts/types/ChainId.sol +24 -10
  320. package/contracts/types/Fee.sol +56 -0
  321. package/contracts/types/Key32.sol +45 -0
  322. package/contracts/types/NftId.sol +55 -9
  323. package/contracts/types/NftIdSet.sol +60 -0
  324. package/contracts/types/ObjectType.sol +131 -0
  325. package/contracts/types/ReferralId.sol +48 -0
  326. package/contracts/types/RiskId.sol +43 -0
  327. package/contracts/types/RoleId.sol +38 -0
  328. package/contracts/types/StateId.sol +101 -0
  329. package/contracts/types/Timestamp.sol +123 -0
  330. package/contracts/types/UFixed.sol +209 -0
  331. package/contracts/types/Version.sol +104 -0
  332. package/package.json +19 -5
  333. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  334. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  335. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  336. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  337. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  338. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  339. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  340. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  341. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  342. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  343. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  344. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  345. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  346. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  347. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  348. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  349. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  350. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  351. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  352. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  353. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  354. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  355. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  356. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  357. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  358. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  359. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  360. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  361. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  362. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  363. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  364. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  365. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  366. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  367. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  368. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  369. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  370. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  371. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  372. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  373. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  374. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  375. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  376. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  377. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  378. package/contracts/components/Component.sol +0 -62
  379. package/contracts/components/IPool.sol +0 -9
  380. package/contracts/components/IProduct.sol +0 -12
  381. package/contracts/instance/access/Access.sol +0 -218
  382. package/contracts/instance/access/IAccess.sol +0 -83
  383. package/contracts/instance/component/ComponentModule.sol +0 -248
  384. package/contracts/instance/component/IComponent.sol +0 -95
  385. package/contracts/instance/policy/IPolicy.sol +0 -66
  386. package/contracts/instance/policy/PolicyModule.sol +0 -107
  387. package/contracts/instance/pool/IPoolModule.sol +0 -41
  388. package/contracts/instance/pool/PoolModule.sol +0 -86
  389. package/contracts/instance/product/IProductService.sol +0 -46
  390. package/contracts/instance/product/ProductService.sol +0 -108
@@ -1,16 +1,22 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ERC721, ERC721Enumerable} from "@openzeppelin5/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
5
+ import {IERC721} from "@openzeppelin5/contracts/token/ERC721/IERC721.sol";
3
6
 
4
- import {ERC721, ERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
5
7
  import {IChainNft} from "./IChainNft.sol";
8
+ import {ITransferInterceptor} from "./ITransferInterceptor.sol";
6
9
 
7
- contract ChainNft is
8
- ERC721Enumerable,
9
- IChainNft
10
- {
10
+ contract ChainNft is ERC721Enumerable, IChainNft {
11
11
  string public constant NAME = "Dezentralized Insurance Protocol Registry";
12
12
  string public constant SYMBOL = "DIPR";
13
13
 
14
+ uint256 public constant PROTOCOL_NFT_ID = 1101;
15
+ uint256 public constant GLOBAL_REGISTRY_ID = 2101;
16
+
17
+ // remember interceptors
18
+ mapping(uint256 tokenId => address interceptor) private _interceptor;
19
+
14
20
  // remember token uri
15
21
  mapping(uint256 tokenId => string uri) private _uri;
16
22
 
@@ -18,22 +24,18 @@ contract ChainNft is
18
24
  address private _registry;
19
25
 
20
26
  // only used for _getNextTokenId
21
- uint256 internal _chainIdInt;
27
+ uint256 internal _chainIdInt;
22
28
  uint256 internal _chainIdDigits;
23
29
  uint256 internal _chainIdMultiplier;
24
30
  uint256 internal _idNext;
25
31
  uint256 internal _totalMinted;
26
32
 
27
-
28
33
  modifier onlyRegistry() {
29
34
  require(msg.sender == _registry, "ERROR:NFT-001:CALLER_NOT_REGISTRY");
30
35
  _;
31
36
  }
32
37
 
33
-
34
- constructor(address registry)
35
- ERC721(NAME, SYMBOL)
36
- {
38
+ constructor(address registry) ERC721(NAME, SYMBOL) {
37
39
  require(registry != address(0), "ERROR:NFT-010:REGISTRY_ZERO");
38
40
 
39
41
  _registry = registry;
@@ -41,129 +43,141 @@ contract ChainNft is
41
43
  _chainIdInt = block.chainid;
42
44
  _chainIdDigits = _countDigits(_chainIdInt);
43
45
  _chainIdMultiplier = 10 ** _chainIdDigits;
46
+ _idNext = 4;
47
+ }
44
48
 
45
- // on mainnet/goerli start /1 (reserved for protocol nft) on other chains with 2
46
- if(block.chainid == 1 || block.chainid == 5) {
47
- _idNext = 1;
48
- } else {
49
- _idNext = 2;
50
- }
49
+ /**
50
+ * @dev mints a token for a specified token id
51
+ * not part of the IRegistry interface only needed for
52
+ * initial registry setup (protocol and global registry objects)
53
+ */
54
+ function mint(address to, uint256 tokenId) external onlyRegistry {
55
+ _totalMinted++;
56
+ _safeMint(to, tokenId);
51
57
  }
52
58
 
53
59
 
60
+ /**
61
+ * @dev mints the next token to register new objects
62
+ * non-zero transferInterceptors are recorded and called during nft token transfers.
63
+ * the contract receiving such a notification may decides to revert or record the transfer
64
+ */
54
65
  function mint(
55
66
  address to,
67
+ address interceptor,
56
68
  string memory uri
57
- )
58
- external
59
- override
60
- onlyRegistry
61
- returns(uint256 tokenId)
62
- {
69
+ ) public onlyRegistry returns (uint256 tokenId) {
63
70
  tokenId = _getNextTokenId();
64
- _totalMinted++;
65
71
 
66
- _safeMint(to, tokenId);
72
+ if (interceptor != address(0)) {
73
+ _interceptor[tokenId] = interceptor;
74
+ }
67
75
 
68
- if(bytes(uri).length > 0) {
76
+ if (bytes(uri).length > 0) {
69
77
  _uri[tokenId] = uri;
70
78
  }
79
+
80
+ _safeMint(to, tokenId);
81
+ _totalMinted++;
82
+ }
83
+
84
+
85
+ /**
86
+ * @dev amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id
87
+ * this allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
88
+ */
89
+ function transferFrom(address from, address to, uint256 tokenId) public override (ERC721, IERC721) {
90
+ super.transferFrom(from, to, tokenId);
91
+
92
+ if (_interceptor[tokenId] != address(0)) {
93
+ ITransferInterceptor(_interceptor[tokenId]).nftTransferFrom(from, to, tokenId);
94
+ }
71
95
  }
72
96
 
73
97
 
74
- function burn(uint256 tokenId)
75
- external
76
- override
77
- onlyRegistry
78
- {
79
- _requireMinted(tokenId);
98
+ function burn(uint256 tokenId) external override onlyRegistry {
99
+ _requireOwned(tokenId);
80
100
  _burn(tokenId);
81
101
  delete _uri[tokenId];
82
102
  }
83
103
 
84
-
85
- function setURI(uint256 tokenId, string memory uri)
86
- external
87
- override
88
- onlyRegistry
89
- {
104
+ function setURI(
105
+ uint256 tokenId,
106
+ string memory uri
107
+ ) external override onlyRegistry {
90
108
  require(bytes(uri).length > 0, "ERROR:CRG-011:URI_EMPTY");
91
109
 
92
- _requireMinted(tokenId);
110
+ _requireOwned(tokenId);
93
111
  _uri[tokenId] = uri;
94
112
  }
95
113
 
96
-
97
- function exists(uint256 tokenId)
98
- external
99
- view
100
- override
101
- returns(bool)
102
- {
103
- return _exists(tokenId);
114
+ function exists(uint256 tokenId) external view override returns (bool) {
115
+ return _ownerOf(tokenId) != address(0);
104
116
  }
105
117
 
106
-
107
- function tokenURI(uint256 tokenId)
108
- public
109
- view
110
- override
111
- returns(string memory)
112
- {
113
- _requireMinted(tokenId);
118
+ function tokenURI(
119
+ uint256 tokenId
120
+ ) public view override returns (string memory) {
121
+ _requireOwned(tokenId);
114
122
  return _uri[tokenId];
115
123
  }
116
124
 
117
-
118
- function getRegistryAddress()
119
- external
120
- view
121
- override
122
- returns(address)
123
- {
125
+ function getRegistryAddress() external view override returns (address) {
124
126
  return _registry;
125
127
  }
126
128
 
127
- function totalMinted() external override view returns(uint256) {
129
+ function totalMinted() external view override returns (uint256) {
128
130
  return _totalMinted;
129
131
  }
130
132
 
131
- // requirement: each chain registry produces token ids that
132
- // are guaranteed to not collide with any token id genereated
133
- // on a different chain
134
- //
135
- // format concat(counter,chainid,2 digits for len-of-chain-id)
136
- // restriction chainid up to 99 digits
137
- // decode: from right to left:
138
- // - 2 right most digits encode length of chainid
139
- // - move number of digits to left as determined above (-> chainid)
140
- // - the reminder to the left is the counter
141
- // examples
142
- // 1101
143
- // ^^ ^
144
- // || +- 1-digit chain id
145
- // |+-- chain id = 1 (mainnet)
146
- // +-- 1st token id on mainnet
147
- // (1 * 10 ** 1 + 1) * 100 + 1
148
- // 42987654321010
149
- // ^ ^ ^
150
- // | | +- 10-digit chain id
151
- // | +-- chain id = 9876543210 (hypothetical chainid)
152
- // +-- 42nd token id on this chain
153
- // (42 * 10 ** 10 + 9876543210) * 100 + 10
154
- // (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
155
-
156
- function _getNextTokenId() private returns(uint256 id) {
157
- id = (_idNext * _chainIdMultiplier + _chainIdInt) * 100 + _chainIdDigits;
158
- _idNext++;
133
+ /**
134
+ * @dev token id calculation based on an index value that is supposed
135
+ * to increase with every minted token
136
+ *
137
+ * requirement: each chain registry produces token ids that
138
+ * are guaranteed to not collide with any token id genereated
139
+ * on a different chain
140
+ *
141
+ * format concat(counter,chainid,2 digits for len-of-chain-id)
142
+ * restriction chainid up to 99 digits
143
+ * decode: from right to left:
144
+ * - 2 right most digits encode length of chainid
145
+ * - move number of digits to left as determined above (-> chainid)
146
+ * - the reminder to the left is the counter
147
+ *
148
+ * special cases
149
+ * 1101 -> decentralized insurance protocol
150
+ * 2102 -> global registry
151
+ * 2xxxxx -> chain registry, where xxxxx = <chain-part>
152
+ *
153
+ * examples
154
+ * 1101
155
+ * ^^ ^
156
+ * || +- 1-digit chain id
157
+ * |+-- chain id = 1 (mainnet)
158
+ * +-- 1st token id on mainnet
159
+ * (1 * 10 ** 1 + 1) * 100 + 1
160
+ * 42987654321010
161
+ * ^ ^ ^
162
+ * | | +- 10-digit chain id
163
+ * | +-- chain id = 9876543210 (hypothetical chainid)
164
+ * +-- 42nd token id on this chain
165
+ * (42 * 10 ** 10 + 9876543210) * 100 + 10
166
+ * (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
167
+ */
168
+ function calculateTokenId(uint256 idIndex) public view returns (uint256 id) {
169
+ id =
170
+ (idIndex * _chainIdMultiplier + _chainIdInt) *
171
+ 100 +
172
+ _chainIdDigits;
159
173
  }
160
174
 
175
+ function _getNextTokenId() private returns (uint256 id) {
176
+ id = calculateTokenId(_idNext);
177
+ _idNext++;
178
+ }
161
179
 
162
- function _countDigits(uint256 num)
163
- private
164
- pure
165
- returns (uint256 count)
166
- {
180
+ function _countDigits(uint256 num) private pure returns (uint256 count) {
167
181
  count = 0;
168
182
  while (num != 0) {
169
183
  count++;
@@ -1,18 +1,22 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {IERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol";
4
+ import {IERC721Enumerable} from "@openzeppelin5/contracts/token/ERC721/extensions/IERC721Enumerable.sol";
5
5
 
6
- interface IChainNft is
7
- IERC721Enumerable
8
- {
6
+ interface IChainNft is IERC721Enumerable {
7
+ function mint(
8
+ address to,
9
+ address interceptor,
10
+ string memory uri
11
+ ) external returns (uint256 tokenId);
9
12
 
10
- function mint(address to, string memory uri) external returns(uint256 tokenId);
11
13
  function burn(uint256 tokenId) external;
14
+
12
15
  function setURI(uint256 tokenId, string memory uri) external;
13
16
 
14
- function exists(uint256 tokenId) external view returns(bool);
15
- function totalMinted() external view returns(uint256);
17
+ function exists(uint256 tokenId) external view returns (bool);
18
+
19
+ function totalMinted() external view returns (uint256);
16
20
 
17
- function getRegistryAddress() external view returns(address registry);
21
+ function getRegistryAddress() external view returns (address registry);
18
22
  }
@@ -1,70 +1,73 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC165} from "@openzeppelin5/contracts/utils/introspection/IERC165.sol";
5
+
6
+ import {IOwnable} from "../shared/IOwnable.sol";
4
7
  import {NftId} from "../types/NftId.sol";
8
+ import {ObjectType} from "../types/ObjectType.sol";
9
+ import {VersionPart} from "../types/Version.sol";
10
+ import {IChainNft} from "./IChainNft.sol";
5
11
 
6
- interface IOwnable {
7
- function getOwner() external view returns(address owner);
8
- }
12
+ interface IRegistry is IERC165, IOwnable {
9
13
 
10
- interface IRegistryLinked {
14
+ event LogRegistration(NftId indexed nftId, NftId parentNftId, ObjectType objectType, address objectAddress, address initialOwner);
11
15
 
12
- event LogDebug(uint256 idx, address module, string comment);
16
+ event LogServiceNameRegistration(string serviceName, VersionPart majorVersion);
13
17
 
14
- function getRegistry() external view returns(IRegistry registry);
15
- }
18
+ event LogApproval(NftId indexed nftId, ObjectType objectType);
16
19
 
17
- interface IRegisterable is
18
- IOwnable,
19
- IRegistryLinked
20
- {
20
+ struct ObjectInfo {
21
+ NftId nftId;
22
+ NftId parentNftId;
23
+ ObjectType objectType;
24
+ bool isInterceptor;
25
+ address objectAddress;
26
+ address initialOwner;
27
+ bytes data;
28
+ }// TODO delete nftId and initialOwner(if not used) from struct
21
29
 
22
- function register() external returns(NftId nftId);
30
+ function register(ObjectInfo memory info) external returns (NftId nftId);
23
31
 
24
- function getNftId() external view returns(NftId nftId);
25
- function getParentNftId() external view returns(NftId parentNftId);
26
- function getType() external view returns(uint256 objectType);
27
- function getData() external view returns(bytes memory data);
28
- function isRegisterable() external pure returns(bool);
29
- function getInitialOwner() external view returns(address initialOwner);
32
+ function registerFrom(
33
+ address from,
34
+ ObjectInfo memory info
35
+ ) external returns (NftId nftId);
30
36
 
31
- function isRegistered() external view returns(bool);
32
- }
37
+ function approve(
38
+ NftId registrar,
39
+ ObjectType object,
40
+ ObjectType parent
41
+ ) external;
33
42
 
43
+ function allowance(
44
+ NftId registrar,
45
+ ObjectType object
46
+ ) external view returns (bool);
34
47
 
35
- interface IRegistry {
48
+ function getObjectCount() external view returns (uint256);
36
49
 
37
- struct RegistryInfo {
38
- NftId nftId;
39
- NftId parentNftId;
40
- uint256 objectType;
41
- address objectAddress;
42
- address initialOwner;
43
- }
44
-
45
- function TOKEN() external pure returns(uint256);
46
- function INSTANCE() external pure returns(uint256);
47
- function PRODUCT() external pure returns(uint256);
48
- function ORACLE() external pure returns(uint256);
49
- function POOL() external pure returns(uint256);
50
- function POLICY() external pure returns(uint256);
51
- function BUNDLE() external pure returns(uint256);
52
-
53
- function register(address objectAddress) external returns(NftId nftId);
54
- function registerObjectForInstance(
55
- NftId parentNftid,
56
- uint256 objectType,
57
- address initialOwner
58
- )
59
- external returns(NftId nftId);
60
-
61
- function getObjectCount() external view returns(uint256);
62
-
63
- function getNftId(address objectAddress) external view returns(NftId nftId);
64
- function getInfo(NftId nftId) external view returns(RegistryInfo memory info);
65
- function getOwner(NftId nftId) external view returns(address ownerAddress);
66
-
67
- function isRegistered(address objectAddress) external view returns(bool);
68
-
69
- function getNftAddress() external view returns(address nft);
70
- }
50
+ //nftIdOf
51
+ function getNftId(address objectAddress) external view returns (NftId nftId);
52
+
53
+ function ownerOf(NftId nftId) external view returns (address);
54
+
55
+ function ownerOf(address contractAddress) external view returns (address);
56
+ // infoOf()
57
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory info);
58
+ // infoOf()
59
+ function getObjectInfo(address object) external view returns (ObjectInfo memory info);
60
+
61
+ function isRegistered(NftId nftId) external view returns (bool);
62
+
63
+ function isRegistered(address contractAddress) external view returns (bool);
64
+
65
+ function getServiceName(NftId nftId) external view returns (string memory name);
66
+
67
+ function getServiceAddress(
68
+ string memory serviceName,
69
+ VersionPart majorVersion
70
+ ) external view returns (address serviceAddress);
71
+
72
+ function getChainNft() external view returns (IChainNft);
73
+ }
@@ -0,0 +1,29 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../../contracts/types/NftId.sol";
5
+ import {ObjectType} from "../../contracts/types/ObjectType.sol";
6
+ import {RoleId} from "../../contracts/types/RoleId.sol";
7
+ import {IService} from "../../contracts/instance/base/IService.sol";
8
+ import {IRegistry} from "../../contracts/registry/IRegistry.sol";
9
+
10
+ import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
11
+ import {IBaseComponent} from "../../contracts/components/IBaseComponent.sol";
12
+
13
+ interface IRegistryService is IService {
14
+
15
+ function registerToken(address tokenAddress) external returns(NftId nftId);
16
+
17
+ function registerService(IService service) external returns(IRegistry.ObjectInfo memory info, bytes memory data);
18
+
19
+ function registerComponent(IBaseComponent component, ObjectType componentType, address owner)
20
+ external returns(IRegistry.ObjectInfo memory info, bytes memory data);
21
+
22
+ function registerInstance(IRegisterable instance)
23
+ external returns(IRegistry.ObjectInfo memory info, bytes memory data);
24
+
25
+ function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId); // -> easy to upgrade
26
+
27
+ function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
28
+ }
29
+
@@ -0,0 +1,6 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ interface ITransferInterceptor {
5
+ function nftTransferFrom(address from, address to, uint256 tokenId) external;
6
+ }