@etherisc/gif-next 0.0.2-e5ea33d → 0.0.2-e69072e-892

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 (424) hide show
  1. package/README.md +413 -9
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +626 -31
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1279 -0
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/IComponent.sol/IComponent.json} +234 -239
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +829 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +1029 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +672 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1319 -81
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +959 -91
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +2038 -508
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +509 -0
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +2715 -456
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +984 -0
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1355 -0
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1046 -0
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +693 -0
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +552 -0
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  43. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  50. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  51. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  52. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  54. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  55. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  56. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  57. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  58. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/ISetup.sol/ISetup.json} +2 -2
  60. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  61. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +10 -0
  62. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  63. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +968 -0
  64. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  66. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1096 -0
  68. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  70. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  72. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  74. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1553 -0
  76. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +793 -0
  78. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +556 -0
  80. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +633 -0
  82. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
  84. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +858 -0
  86. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +519 -0
  88. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +347 -0
  90. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +384 -0
  92. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1000 -0
  94. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +689 -0
  96. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +727 -0
  98. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +649 -0
  100. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +777 -0
  102. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  105. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +239 -2
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +519 -61
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  109. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +890 -0
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  111. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  112. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/Registry.sol/Registry.json +567 -75
  114. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  115. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  117. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1177 -0
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  121. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  123. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  124. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  125. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  126. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  128. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  129. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +46 -74
  130. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/product/IProductService.sol/IProductService.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +68 -53
  132. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  133. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/IRegisterable.sol/IRegisterable.json} +106 -80
  134. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  135. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +18 -19
  136. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  137. package/artifacts/contracts/shared/IService.sol/IService.json +269 -0
  138. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  139. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  140. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  141. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  142. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  143. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  144. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  145. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  146. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +352 -0
  148. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  150. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  151. package/artifacts/contracts/shared/Service.sol/Service.json +425 -0
  152. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  153. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  154. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  155. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  156. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  157. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  158. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  159. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  160. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  161. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +383 -0
  162. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  163. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  164. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  165. package/artifacts/contracts/test/TestService.sol/TestService.json +521 -0
  166. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  167. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  168. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  169. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  170. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  171. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +104 -0
  172. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  173. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  174. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  175. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  176. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  178. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  180. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  182. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  184. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  186. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  187. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  188. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  190. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  191. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  192. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  194. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  196. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  198. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  200. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  201. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  202. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  204. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  205. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  206. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  208. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +97 -4
  210. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  212. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  213. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  214. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  215. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  216. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  218. package/contracts/components/Component.sol +206 -45
  219. package/contracts/components/Distribution.sol +293 -0
  220. package/contracts/components/IComponent.sol +68 -0
  221. package/contracts/components/IDistributionComponent.sol +79 -0
  222. package/contracts/components/IPoolComponent.sol +151 -0
  223. package/contracts/components/IProductComponent.sol +40 -0
  224. package/contracts/components/Pool.sol +368 -12
  225. package/contracts/components/Product.sol +262 -28
  226. package/contracts/instance/BundleManager.sol +125 -0
  227. package/contracts/instance/Cloneable.sol +46 -0
  228. package/contracts/instance/IInstance.sol +91 -17
  229. package/contracts/instance/IInstanceService.sol +59 -0
  230. package/contracts/instance/Instance.sol +280 -53
  231. package/contracts/instance/InstanceAccessManager.sol +297 -0
  232. package/contracts/instance/InstanceReader.sol +293 -0
  233. package/contracts/instance/InstanceService.sol +490 -0
  234. package/contracts/instance/InstanceServiceManager.sol +54 -0
  235. package/contracts/instance/ObjectManager.sol +84 -0
  236. package/contracts/instance/base/ComponentService.sol +134 -0
  237. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  238. package/contracts/instance/base/ILifecycle.sol +30 -0
  239. package/contracts/instance/base/KeyValueStore.sol +172 -0
  240. package/contracts/instance/base/Lifecycle.sol +100 -0
  241. package/contracts/instance/module/IAccess.sol +47 -0
  242. package/contracts/instance/module/IBundle.sol +21 -0
  243. package/contracts/instance/module/IDistribution.sol +41 -0
  244. package/contracts/instance/module/IPolicy.sol +72 -0
  245. package/contracts/instance/module/IRisk.sol +11 -0
  246. package/contracts/instance/module/ISetup.sol +46 -0
  247. package/contracts/instance/module/ITreasury.sol +23 -0
  248. package/contracts/instance/service/ApplicationService.sol +350 -0
  249. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  250. package/contracts/instance/service/BundleService.sol +299 -0
  251. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  252. package/contracts/instance/service/ClaimService.sol +151 -0
  253. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  254. package/contracts/instance/service/DistributionService.sol +394 -0
  255. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  256. package/contracts/instance/service/IApplicationService.sol +82 -0
  257. package/contracts/instance/service/IBundleService.sol +55 -0
  258. package/contracts/instance/service/IClaimService.sol +61 -0
  259. package/contracts/instance/service/IDistributionService.sol +86 -0
  260. package/contracts/instance/service/IPolicyService.sol +70 -0
  261. package/contracts/instance/service/IPoolService.sol +20 -0
  262. package/contracts/instance/service/IProductService.sol +40 -0
  263. package/contracts/instance/service/PolicyService.sol +404 -0
  264. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  265. package/contracts/instance/service/PoolService.sol +109 -0
  266. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  267. package/contracts/instance/service/ProductService.sol +233 -0
  268. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  269. package/contracts/registry/ChainNft.sol +129 -62
  270. package/contracts/registry/IRegistry.sol +69 -50
  271. package/contracts/registry/IRegistryService.sol +67 -0
  272. package/contracts/registry/ITransferInterceptor.sol +6 -0
  273. package/contracts/registry/Registry.sol +395 -140
  274. package/contracts/registry/RegistryAccessManager.sol +216 -0
  275. package/contracts/registry/RegistryService.sol +283 -0
  276. package/contracts/registry/RegistryServiceManager.sol +62 -0
  277. package/contracts/registry/ReleaseManager.sol +322 -0
  278. package/contracts/registry/TokenRegistry.sol +116 -0
  279. package/contracts/shared/ContractDeployerLib.sol +72 -0
  280. package/contracts/shared/ERC165.sol +27 -0
  281. package/contracts/shared/INftOwnable.sol +23 -0
  282. package/contracts/shared/IPolicyHolder.sol +26 -0
  283. package/contracts/shared/IRegisterable.sol +15 -0
  284. package/contracts/shared/IRegistryLinked.sol +12 -0
  285. package/contracts/shared/IService.sol +18 -0
  286. package/contracts/shared/IVersionable.sol +53 -0
  287. package/contracts/shared/NftOwnable.sol +120 -0
  288. package/contracts/shared/PolicyHolder.sol +81 -0
  289. package/contracts/shared/ProxyManager.sol +169 -0
  290. package/contracts/shared/Registerable.sol +74 -0
  291. package/contracts/shared/RegistryLinked.sol +48 -0
  292. package/contracts/shared/Service.sol +58 -0
  293. package/contracts/shared/TokenHandler.sol +27 -0
  294. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  295. package/contracts/shared/Versionable.sol +59 -0
  296. package/contracts/test/TestFee.sol +25 -0
  297. package/contracts/test/TestRegisterable.sol +18 -0
  298. package/contracts/test/TestRoleId.sol +14 -0
  299. package/contracts/test/TestService.sol +25 -0
  300. package/contracts/test/TestToken.sol +26 -0
  301. package/contracts/test/TestVersion.sol +44 -0
  302. package/contracts/test/TestVersionable.sol +17 -0
  303. package/contracts/test/Usdc.sol +26 -0
  304. package/contracts/types/AddressSet.sol +58 -0
  305. package/contracts/types/ClaimId.sol +52 -0
  306. package/contracts/types/DistributorType.sol +55 -0
  307. package/contracts/types/Fee.sol +56 -0
  308. package/contracts/types/Key32.sol +50 -0
  309. package/contracts/types/NftId.sol +22 -1
  310. package/contracts/types/NftIdSet.sol +62 -0
  311. package/contracts/types/NumberId.sol +52 -0
  312. package/contracts/types/ObjectType.sol +156 -0
  313. package/contracts/types/PayoutId.sol +54 -0
  314. package/contracts/types/Referral.sol +85 -0
  315. package/contracts/types/RiskId.sol +43 -0
  316. package/contracts/types/RoleId.sol +95 -0
  317. package/contracts/types/Seconds.sol +54 -0
  318. package/contracts/types/StateId.sol +105 -0
  319. package/contracts/types/Timestamp.sol +30 -6
  320. package/contracts/types/UFixed.sol +150 -30
  321. package/contracts/types/Version.sol +107 -0
  322. package/package.json +16 -6
  323. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  324. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  325. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  326. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  327. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  328. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  329. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  331. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  333. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  335. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  337. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  339. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  341. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  343. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  345. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  347. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  349. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  351. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  353. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  354. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  355. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  356. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  357. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  358. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  359. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  360. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  361. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  362. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  363. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  364. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  365. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  366. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  367. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  368. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  369. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  370. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  371. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  372. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  373. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  374. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  375. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  376. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  378. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  379. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  380. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  381. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  382. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  383. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  384. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  385. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  386. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  387. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  389. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  390. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  391. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  392. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  393. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  394. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  395. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  396. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  397. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  398. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  399. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  400. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  401. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  402. package/contracts/components/IPool.sol +0 -9
  403. package/contracts/components/IProduct.sol +0 -9
  404. package/contracts/experiment/errors/Require.sol +0 -38
  405. package/contracts/experiment/errors/Revert.sol +0 -44
  406. package/contracts/experiment/inheritance/A.sol +0 -53
  407. package/contracts/experiment/inheritance/B.sol +0 -28
  408. package/contracts/experiment/inheritance/C.sol +0 -34
  409. package/contracts/experiment/inheritance/IA.sol +0 -13
  410. package/contracts/experiment/inheritance/IB.sol +0 -10
  411. package/contracts/experiment/inheritance/IC.sol +0 -12
  412. package/contracts/experiment/types/TypeA.sol +0 -47
  413. package/contracts/experiment/types/TypeB.sol +0 -29
  414. package/contracts/instance/access/Access.sol +0 -165
  415. package/contracts/instance/access/IAccess.sol +0 -63
  416. package/contracts/instance/component/ComponentModule.sol +0 -213
  417. package/contracts/instance/component/IComponent.sol +0 -73
  418. package/contracts/instance/policy/IPolicy.sol +0 -51
  419. package/contracts/instance/policy/PolicyModule.sol +0 -91
  420. package/contracts/instance/pool/IPoolModule.sol +0 -29
  421. package/contracts/instance/pool/PoolModule.sol +0 -73
  422. package/contracts/instance/product/IProductService.sol +0 -36
  423. package/contracts/instance/product/ProductService.sol +0 -112
  424. package/contracts/registry/IChainNft.sol +0 -21
@@ -1,12 +1,30 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {ERC721, ERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
5
- import {IChainNft} from "./IChainNft.sol";
5
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
6
6
 
7
- contract ChainNft is ERC721Enumerable, IChainNft {
8
- string public constant NAME = "Dezentralized Insurance Protocol Registry";
9
- string public constant SYMBOL = "DIPR";
7
+ import {ITransferInterceptor} from "./ITransferInterceptor.sol";
8
+
9
+ contract ChainNft is ERC721Enumerable {
10
+
11
+ // constants
12
+ string public constant NAME = "Dezentralized Insurance Protocol NFT";
13
+ string public constant SYMBOL = "DIPNFT";
14
+
15
+ uint256 public constant PROTOCOL_NFT_ID = 1101;
16
+ uint256 public constant GLOBAL_REGISTRY_ID = 2101;
17
+
18
+ // custom errors
19
+ error CallerNotRegistry(address caller);
20
+ error RegistryAddressZero();
21
+ error NftUriEmpty();
22
+ error NftUriAlreadySet();
23
+
24
+ // contract state
25
+
26
+ // remember interceptors
27
+ mapping(uint256 tokenId => address interceptor) private _interceptor;
10
28
 
11
29
  // remember token uri
12
30
  mapping(uint256 tokenId => string uri) private _uri;
@@ -22,43 +40,79 @@ contract ChainNft is ERC721Enumerable, IChainNft {
22
40
  uint256 internal _totalMinted;
23
41
 
24
42
  modifier onlyRegistry() {
25
- require(msg.sender == _registry, "ERROR:NFT-001:CALLER_NOT_REGISTRY");
43
+ if (msg.sender != _registry) { revert CallerNotRegistry(msg.sender); }
26
44
  _;
27
45
  }
28
46
 
29
47
  constructor(address registry) ERC721(NAME, SYMBOL) {
30
- require(registry != address(0), "ERROR:NFT-010:REGISTRY_ZERO");
48
+ if (registry == address(0)) { revert RegistryAddressZero(); }
31
49
 
32
50
  _registry = registry;
33
-
34
51
  _chainIdInt = block.chainid;
35
- _chainIdDigits = _countDigits(_chainIdInt);
36
- _chainIdMultiplier = 10 ** _chainIdDigits;
52
+ _chainIdDigits = 0;
37
53
 
38
- // on mainnet/goerli start /1 (reserved for protocol nft) on other chains with 2
39
- if (block.chainid == 1 || block.chainid == 5) {
40
- _idNext = 1;
41
- } else {
42
- _idNext = 2;
54
+ // count digis
55
+ uint256 num = _chainIdInt;
56
+ while (num != 0) {
57
+ _chainIdDigits++;
58
+ num /= 10;
43
59
  }
60
+
61
+ _chainIdMultiplier = 10 ** _chainIdDigits;
62
+ _idNext = 3;
63
+ }
64
+
65
+ /**
66
+ * @dev mints a token for a specified token id
67
+ * not part of the IRegistry interface only needed for
68
+ * initial registry setup (protocol and global registry objects)
69
+ */
70
+ function mint(address to, uint256 tokenId) external onlyRegistry {
71
+ _totalMinted++;
72
+ _safeMint(to, tokenId);
44
73
  }
45
74
 
75
+
76
+ /**
77
+ * @dev mints the next token to register new objects
78
+ * non-zero transferInterceptors are recorded and called during nft token transfers.
79
+ * the contract receiving such a notification may decides to revert or record the transfer
80
+ */
46
81
  function mint(
47
82
  address to,
83
+ address interceptor,
48
84
  string memory uri
49
- ) external override onlyRegistry returns (uint256 tokenId) {
85
+ ) public onlyRegistry returns (uint256 tokenId) {
50
86
  tokenId = _getNextTokenId();
51
- _totalMinted++;
52
87
 
53
- _safeMint(to, tokenId);
88
+ if (interceptor != address(0)) {
89
+ _interceptor[tokenId] = interceptor;
90
+ }
54
91
 
55
92
  if (bytes(uri).length > 0) {
56
93
  _uri[tokenId] = uri;
57
94
  }
95
+
96
+ _totalMinted++;
97
+ _safeMint(to, tokenId);
98
+ }
99
+
100
+
101
+ /**
102
+ * @dev amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id
103
+ * this allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
104
+ */
105
+ function transferFrom(address from, address to, uint256 tokenId) public override (ERC721, IERC721) {
106
+ super.transferFrom(from, to, tokenId);
107
+
108
+ if (_interceptor[tokenId] != address(0)) {
109
+ ITransferInterceptor(_interceptor[tokenId]).nftTransferFrom(from, to, tokenId);
110
+ }
58
111
  }
59
112
 
60
- function burn(uint256 tokenId) external override onlyRegistry {
61
- _requireMinted(tokenId);
113
+
114
+ function burn(uint256 tokenId) external onlyRegistry {
115
+ _requireOwned(tokenId);
62
116
  _burn(tokenId);
63
117
  delete _uri[tokenId];
64
118
  }
@@ -66,70 +120,83 @@ contract ChainNft is ERC721Enumerable, IChainNft {
66
120
  function setURI(
67
121
  uint256 tokenId,
68
122
  string memory uri
69
- ) external override onlyRegistry {
70
- require(bytes(uri).length > 0, "ERROR:CRG-011:URI_EMPTY");
123
+ ) external onlyRegistry {
124
+ if (bytes(uri).length == 0) { revert NftUriEmpty(); }
125
+ if (bytes(_uri[tokenId]).length > 0) { revert NftUriAlreadySet(); }
71
126
 
72
- _requireMinted(tokenId);
127
+ _requireOwned(tokenId);
73
128
  _uri[tokenId] = uri;
74
129
  }
75
130
 
76
- function exists(uint256 tokenId) external view override returns (bool) {
77
- return _exists(tokenId);
131
+ function exists(uint256 tokenId) external view returns (bool) {
132
+ return _ownerOf(tokenId) != address(0);
78
133
  }
79
134
 
80
135
  function tokenURI(
81
136
  uint256 tokenId
82
137
  ) public view override returns (string memory) {
83
- _requireMinted(tokenId);
138
+ // gif generally does not revert for view functions
139
+ // this is an exception to keep the openzeppelin nft semantics
140
+ _requireOwned(tokenId);
84
141
  return _uri[tokenId];
85
142
  }
86
143
 
87
- function getRegistryAddress() external view override returns (address) {
144
+ function getInterceptor(uint256 tokenId) external view returns (address) {
145
+ return _interceptor[tokenId];
146
+ }
147
+
148
+ function getRegistryAddress() external view returns (address) {
88
149
  return _registry;
89
150
  }
90
151
 
91
- function totalMinted() external view override returns (uint256) {
152
+ function totalMinted() external view returns (uint256) {
92
153
  return _totalMinted;
93
154
  }
94
155
 
95
- // requirement: each chain registry produces token ids that
96
- // are guaranteed to not collide with any token id genereated
97
- // on a different chain
98
- //
99
- // format concat(counter,chainid,2 digits for len-of-chain-id)
100
- // restriction chainid up to 99 digits
101
- // decode: from right to left:
102
- // - 2 right most digits encode length of chainid
103
- // - move number of digits to left as determined above (-> chainid)
104
- // - the reminder to the left is the counter
105
- // examples
106
- // 1101
107
- // ^^ ^
108
- // || +- 1-digit chain id
109
- // |+-- chain id = 1 (mainnet)
110
- // +-- 1st token id on mainnet
111
- // (1 * 10 ** 1 + 1) * 100 + 1
112
- // 42987654321010
113
- // ^ ^ ^
114
- // | | +- 10-digit chain id
115
- // | +-- chain id = 9876543210 (hypothetical chainid)
116
- // +-- 42nd token id on this chain
117
- // (42 * 10 ** 10 + 9876543210) * 100 + 10
118
- // (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
119
-
120
- function _getNextTokenId() private returns (uint256 id) {
156
+ /**
157
+ * @dev token id calculation based on an index value that is supposed
158
+ * to increase with every minted token
159
+ *
160
+ * requirement: each chain registry produces token ids that
161
+ * are guaranteed to not collide with any token id genereated
162
+ * on a different chain
163
+ *
164
+ * format concat(counter,chainid,2 digits for len-of-chain-id)
165
+ * restriction chainid up to 99 digits
166
+ * decode: from right to left:
167
+ * - 2 right most digits encode length of chainid
168
+ * - move number of digits to left as determined above (-> chainid)
169
+ * - the reminder to the left is the counter
170
+ *
171
+ * special cases
172
+ * 1101 -> decentralized insurance protocol
173
+ * 2102 -> global registry
174
+ * 2xxxxx -> chain registry, where xxxxx = <chain-part>
175
+ *
176
+ * examples
177
+ * 1101
178
+ * ^^ ^
179
+ * || +- 1-digit chain id
180
+ * |+-- chain id = 1 (mainnet)
181
+ * +-- 1st token id on mainnet
182
+ * (1 * 10 ** 1 + 1) * 100 + 1
183
+ * 42987654321010
184
+ * ^ ^ ^
185
+ * | | +- 10-digit chain id
186
+ * | +-- chain id = 9876543210 (hypothetical chainid)
187
+ * +-- 42nd token id on this chain
188
+ * (42 * 10 ** 10 + 9876543210) * 100 + 10
189
+ * (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
190
+ */
191
+ function calculateTokenId(uint256 idIndex) public view returns (uint256 id) {
121
192
  id =
122
- (_idNext * _chainIdMultiplier + _chainIdInt) *
193
+ (idIndex * _chainIdMultiplier + _chainIdInt) *
123
194
  100 +
124
195
  _chainIdDigits;
125
- _idNext++;
126
196
  }
127
197
 
128
- function _countDigits(uint256 num) private pure returns (uint256 count) {
129
- count = 0;
130
- while (num != 0) {
131
- count++;
132
- num /= 10;
133
- }
198
+ function _getNextTokenId() private returns (uint256 id) {
199
+ id = calculateTokenId(_idNext);
200
+ _idNext++;
134
201
  }
135
202
  }
@@ -1,80 +1,99 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../types/NftId.sol";
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);
12
-
13
- function getRegistry() external view returns (IRegistry registry);
14
- }
15
-
16
- interface IRegisterable is IOwnable, IRegistryLinked {
17
- function register() external returns (NftId nftId);
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
18
5
 
19
- function getNftId() external view returns (NftId nftId);
6
+ import {NftId} from "../types/NftId.sol";
7
+ import {ObjectType} from "../types/ObjectType.sol";
8
+ import {VersionPart} from "../types/Version.sol";
9
+ import {Timestamp} from "../types/Timestamp.sol";
20
10
 
21
- function getParentNftId() external view returns (NftId parentNftId);
11
+ interface IRegistry is IERC165 {
22
12
 
23
- function getType() external view returns (uint256 objectType);
13
+ event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
14
+ event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
24
15
 
25
- function getData() external view returns (bytes memory data);
16
+ // registerService()
17
+ error CallerNotReleaseManager();
18
+ error ServiceAlreadyRegistered(address service);
26
19
 
27
- function isRegisterable() external pure returns (bool);
20
+ // register()
21
+ error CallerNotRegistryService();
22
+ error ServiceRegistration();
28
23
 
29
- function getInitialOwner() external view returns (address initialOwner);
24
+ // registerWithCustomTypes()
25
+ error CoreTypeRegistration();
30
26
 
31
- function isRegistered() external view returns (bool);
32
- }
27
+ // _register()
28
+ error ZeroParentAddress();
29
+ error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
30
+ error ContractAlreadyRegistered(address objectAddress);
33
31
 
34
- interface IRegistry {
35
- struct RegistryInfo {
32
+ struct ObjectInfo {
36
33
  NftId nftId;
37
34
  NftId parentNftId;
38
- uint256 objectType;
35
+ ObjectType objectType;
36
+ bool isInterceptor;
39
37
  address objectAddress;
40
38
  address initialOwner;
39
+ bytes data;
40
+ }// TODO delete nftId and initialOwner(if not used) from struct
41
+ // TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
42
+
43
+ struct ReleaseInfo {
44
+ ObjectType[] domains;
45
+ Timestamp createdAt;
46
+ //Timestamp updatedAt;
41
47
  }
42
48
 
43
- function TOKEN() external pure returns (uint256);
49
+ function registerService(
50
+ ObjectInfo memory serviceInfo,
51
+ VersionPart serviceVersion,
52
+ ObjectType serviceDomain
53
+ ) external returns(NftId nftId);
44
54
 
45
- function INSTANCE() external pure returns (uint256);
55
+ function register(ObjectInfo memory info) external returns (NftId nftId);
46
56
 
47
- function PRODUCT() external pure returns (uint256);
57
+ function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
48
58
 
49
- function ORACLE() external pure returns (uint256);
59
+ function getInitialVersion() external view returns (VersionPart);
50
60
 
51
- function POOL() external pure returns (uint256);
61
+ function getNextVersion() external view returns (VersionPart);
52
62
 
53
- function POLICY() external pure returns (uint256);
63
+ function getLatestVersion() external view returns (VersionPart);
54
64
 
55
- function BUNDLE() external pure returns (uint256);
65
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory);
56
66
 
57
- function register(address objectAddress) external returns (NftId nftId);
67
+ function getObjectCount() external view returns (uint256);
58
68
 
59
- function registerObjectForInstance(
60
- NftId parentNftid,
61
- uint256 objectType,
62
- address initialOwner
63
- ) external returns (NftId nftId);
69
+ function getNftId() external view returns (NftId nftId);
64
70
 
65
- function getObjectCount() external view returns (uint256);
71
+ function getNftId(address objectAddress) external view returns (NftId nftId);
72
+
73
+ function ownerOf(NftId nftId) external view returns (address);
74
+
75
+ function ownerOf(address contractAddress) external view returns (address);
76
+
77
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory info);
78
+
79
+ function getObjectInfo(address object) external view returns (ObjectInfo memory info);
80
+
81
+ function isRegistered(NftId nftId) external view returns (bool);
82
+
83
+ function isRegistered(address contractAddress) external view returns (bool);
84
+
85
+ function isRegisteredService(address contractAddress) external view returns (bool);
66
86
 
67
- function getNftId(
68
- address objectAddress
69
- ) external view returns (NftId nftId);
87
+ function isValidRelease(VersionPart version) external view returns (bool);
70
88
 
71
- function getInfo(
72
- NftId nftId
73
- ) external view returns (RegistryInfo memory info);
89
+ function getServiceAddress(
90
+ ObjectType serviceDomain,
91
+ VersionPart releaseVersion
92
+ ) external view returns (address serviceAddress);
74
93
 
75
- function getOwner(NftId nftId) external view returns (address ownerAddress);
94
+ function getReleaseManagerAddress() external view returns (address);
76
95
 
77
- function isRegistered(address objectAddress) external view returns (bool);
96
+ function getChainNftAddress() external view returns (address);
78
97
 
79
- function getNftAddress() external view returns (address nft);
80
- }
98
+ function getOwner() external view returns (address);
99
+ }
@@ -0,0 +1,67 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+
6
+ import {NftId} from "../types/NftId.sol";
7
+ import {ObjectType} from "../types/ObjectType.sol";
8
+ import {RoleId} from "../types/RoleId.sol";
9
+ import {IService} from "../shared/IService.sol";
10
+ import {IRegistry} from "./IRegistry.sol";
11
+
12
+ import {IRegisterable} from "../shared/IRegisterable.sol";
13
+ import {IComponent} from "../components/IComponent.sol";
14
+
15
+ interface IRegistryService is
16
+ IService,
17
+ IAccessManaged
18
+ {
19
+ error SelfRegistration();
20
+ error NotRegistryOwner();
21
+
22
+ error NotService();
23
+ error NotInstance();
24
+ error NotProduct();
25
+ error NotPool();
26
+ error NotDistribution();
27
+
28
+ error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
29
+ error NotRegisterableOwner(address expectedOwner);
30
+ error RegisterableOwnerIsZero();
31
+ error RegisterableOwnerIsRegistered();
32
+ error InvalidInitialOwner(address initialOwner);
33
+ error InvalidAddress(address registerableAddress);
34
+
35
+ struct FunctionConfig
36
+ {
37
+ ObjectType serviceDomain;
38
+ bytes4[] selectors;
39
+ }
40
+
41
+ function getFunctionConfigs()
42
+ external
43
+ pure
44
+ returns(
45
+ FunctionConfig[] memory config
46
+ );
47
+
48
+ // TODO used by service -> add owner arg
49
+ function registerInstance(IRegisterable instance, address owner)
50
+ external returns(IRegistry.ObjectInfo memory info);
51
+
52
+ function registerProduct(IComponent product, address owner)
53
+ external returns(IRegistry.ObjectInfo memory info);
54
+
55
+ function registerPool(IComponent pool, address owner)
56
+ external returns(IRegistry.ObjectInfo memory info);
57
+
58
+ function registerDistribution(IComponent distribution, address owner)
59
+ external returns(IRegistry.ObjectInfo memory info);
60
+
61
+ function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
62
+
63
+ function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
64
+
65
+ function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
66
+ }
67
+
@@ -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
+ }