@etherisc/gif-next 0.0.2-f7b8c9f-518 → 0.0.2-f7bec40-735

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 (486) hide show
  1. package/README.md +178 -14
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +873 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1023 -204
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +636 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +862 -39
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +916 -129
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +694 -40
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +958 -267
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +778 -194
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +226 -1822
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +616 -0
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +444 -2190
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1348 -0
  30. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1569 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +979 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +656 -0
  38. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  39. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
  40. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  42. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  43. package/artifacts/contracts/instance/base/{InstanceBase.sol/InstanceBase.json → ComponentService.sol/ComponentService.json} +282 -195
  44. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  46. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +67 -245
  49. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  50. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  51. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  53. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  55. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  57. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  59. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  61. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  62. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  63. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  64. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  65. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  66. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  67. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +918 -0
  69. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
  71. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1288 -0
  73. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +696 -0
  75. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1384 -0
  77. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +752 -0
  79. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1103 -177
  81. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
  83. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +231 -204
  85. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +735 -0
  87. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  88. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +743 -0
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +540 -146
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +651 -0
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +669 -153
  95. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/{base/ServiceBase.sol/ServiceBase.json → service/IPricingService.sol/IPricingService.json} +245 -203
  97. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  98. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +88 -397
  99. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  100. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1281 -0
  101. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
  103. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1080 -211
  105. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +708 -0
  107. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  108. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
  109. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  111. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  112. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +327 -531
  113. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  114. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +640 -0
  115. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +60 -2
  117. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  118. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +255 -63
  119. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +309 -196
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  122. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  123. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  124. package/artifacts/contracts/registry/Registry.sol/Registry.json +229 -212
  125. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  126. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  128. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +422 -269
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +311 -122
  131. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  132. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  133. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  134. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +485 -0
  135. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  136. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  137. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  138. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  139. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  140. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  142. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  143. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  144. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  145. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  146. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  147. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  148. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  149. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IService.sol/IService.json} +93 -67
  150. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  151. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  152. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  153. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +107 -27
  154. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  155. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  156. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +283 -63
  158. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  159. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +116 -51
  160. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  161. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  162. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  163. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +187 -180
  164. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  165. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +114 -0
  166. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  167. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  168. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  170. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  171. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  172. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  173. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +116 -51
  174. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  176. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  177. package/artifacts/contracts/test/TestService.sol/TestService.json +204 -200
  178. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  179. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  180. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  181. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  182. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  183. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -174
  184. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  185. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  186. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  187. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  188. package/artifacts/contracts/types/Amount.sol/AmountLib.json +281 -0
  189. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  191. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  194. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  196. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/Fee.sol/FeeLib.json +74 -19
  198. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  199. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  200. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  202. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  203. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  204. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  205. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  206. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  208. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  210. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  212. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  214. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  215. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  216. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  218. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  219. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  220. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  221. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +51 -7
  222. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  223. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  224. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  225. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  226. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  227. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  228. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  229. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  230. package/contracts/components/Component.sol +272 -0
  231. package/contracts/components/Distribution.sol +209 -79
  232. package/contracts/components/IComponent.sol +90 -0
  233. package/contracts/components/IDistributionComponent.sol +43 -18
  234. package/contracts/components/IPoolComponent.sol +90 -40
  235. package/contracts/components/IProductComponent.sol +17 -13
  236. package/contracts/components/Pool.sol +222 -166
  237. package/contracts/components/Product.sol +258 -182
  238. package/contracts/instance/BundleManager.sol +126 -0
  239. package/contracts/instance/Cloneable.sol +51 -0
  240. package/contracts/instance/IInstance.sol +63 -40
  241. package/contracts/instance/IInstanceService.sol +73 -0
  242. package/contracts/instance/Instance.sol +213 -71
  243. package/contracts/instance/InstanceAccessManager.sol +541 -0
  244. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  245. package/contracts/instance/InstanceReader.sol +368 -0
  246. package/contracts/instance/InstanceService.sol +308 -0
  247. package/contracts/instance/InstanceServiceManager.sol +54 -0
  248. package/contracts/instance/InstanceStore.sol +212 -0
  249. package/contracts/instance/ObjectManager.sol +82 -0
  250. package/contracts/instance/base/ComponentService.sol +148 -0
  251. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  252. package/contracts/instance/base/ILifecycle.sol +3 -3
  253. package/contracts/instance/base/KeyValueStore.sol +30 -42
  254. package/contracts/instance/base/Lifecycle.sol +27 -7
  255. package/contracts/instance/module/IAccess.sol +54 -0
  256. package/contracts/instance/module/IBundle.sol +23 -0
  257. package/contracts/instance/module/IComponents.sol +41 -0
  258. package/contracts/instance/module/IDistribution.sol +42 -0
  259. package/contracts/instance/module/IPolicy.sol +77 -0
  260. package/contracts/instance/module/IRisk.sol +11 -0
  261. package/contracts/instance/module/ISetup.sol +33 -0
  262. package/contracts/instance/module/ITreasury.sol +23 -0
  263. package/contracts/instance/service/ApplicationService.sol +186 -0
  264. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  265. package/contracts/instance/service/BundleService.sol +382 -0
  266. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  267. package/contracts/instance/service/ClaimService.sol +437 -0
  268. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  269. package/contracts/instance/service/DistributionService.sol +317 -23
  270. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  271. package/contracts/instance/service/IApplicationService.sol +62 -0
  272. package/contracts/instance/service/IBundleService.sol +118 -0
  273. package/contracts/instance/service/IClaimService.sol +90 -0
  274. package/contracts/instance/service/IDistributionService.sol +77 -2
  275. package/contracts/instance/service/IPolicyService.sol +80 -0
  276. package/contracts/instance/service/IPoolService.sol +95 -18
  277. package/contracts/instance/service/IPricingService.sol +37 -0
  278. package/contracts/instance/service/IProductService.sol +9 -76
  279. package/contracts/instance/service/PolicyService.sol +376 -0
  280. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  281. package/contracts/instance/service/PoolService.sol +339 -85
  282. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  283. package/contracts/instance/service/PricingService.sol +275 -0
  284. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  285. package/contracts/instance/service/ProductService.sol +135 -435
  286. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  287. package/contracts/registry/ChainNft.sol +49 -26
  288. package/contracts/registry/IRegistry.sol +53 -25
  289. package/contracts/registry/IRegistryService.sol +53 -16
  290. package/contracts/registry/ITransferInterceptor.sol +1 -0
  291. package/contracts/registry/Registry.sol +289 -313
  292. package/contracts/registry/RegistryAccessManager.sol +216 -0
  293. package/contracts/registry/RegistryService.sol +165 -247
  294. package/contracts/registry/RegistryServiceManager.sol +30 -11
  295. package/contracts/registry/ReleaseManager.sol +324 -0
  296. package/contracts/registry/TokenRegistry.sol +116 -0
  297. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  298. package/contracts/shared/ERC165.sol +15 -9
  299. package/contracts/shared/INftOwnable.sol +11 -10
  300. package/contracts/shared/IPolicyHolder.sol +40 -0
  301. package/contracts/shared/IRegisterable.sol +4 -6
  302. package/contracts/shared/IRegistryLinked.sol +11 -0
  303. package/contracts/shared/IService.sol +18 -0
  304. package/contracts/shared/IVersionable.sol +4 -47
  305. package/contracts/shared/NftOwnable.sol +65 -83
  306. package/contracts/shared/PolicyHolder.sol +94 -0
  307. package/contracts/shared/ProxyManager.sol +101 -26
  308. package/contracts/shared/Registerable.sol +25 -39
  309. package/contracts/shared/RegistryLinked.sol +43 -0
  310. package/contracts/shared/Service.sol +72 -0
  311. package/contracts/shared/TokenHandler.sol +35 -0
  312. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  313. package/contracts/shared/Versionable.sol +5 -93
  314. package/contracts/test/TestFee.sol +2 -2
  315. package/contracts/test/TestRegisterable.sol +1 -1
  316. package/contracts/test/TestRoleId.sol +1 -1
  317. package/contracts/test/TestService.sol +6 -7
  318. package/contracts/types/Amount.sol +109 -0
  319. package/contracts/types/Blocknumber.sol +1 -0
  320. package/contracts/types/ClaimId.sol +75 -0
  321. package/contracts/types/DistributorType.sol +55 -0
  322. package/contracts/types/Fee.sol +19 -10
  323. package/contracts/types/Key32.sol +8 -3
  324. package/contracts/types/NftId.sol +8 -0
  325. package/contracts/types/NftIdSet.sol +26 -24
  326. package/contracts/types/NumberId.sol +52 -0
  327. package/contracts/types/ObjectType.sol +44 -14
  328. package/contracts/types/PayoutId.sol +82 -0
  329. package/contracts/types/Referral.sol +89 -0
  330. package/contracts/types/RoleId.sol +68 -9
  331. package/contracts/types/Seconds.sol +54 -0
  332. package/contracts/types/StateId.sol +12 -3
  333. package/contracts/types/Timestamp.sol +22 -13
  334. package/contracts/types/UFixed.sol +129 -12
  335. package/contracts/types/Version.sol +5 -1
  336. package/package.json +6 -5
  337. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  338. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  339. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -254
  340. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  342. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  344. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  346. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  348. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  350. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  352. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  354. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  357. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  359. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  361. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  363. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  365. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  367. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  369. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  370. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  371. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  372. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  373. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  374. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  375. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  376. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  377. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  378. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -421
  379. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  380. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  381. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  384. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  387. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  389. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  392. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  393. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  394. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  395. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  396. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  397. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  398. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  399. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  400. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  401. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  402. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  403. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  404. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  405. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  406. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  407. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  408. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  409. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  410. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  411. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  412. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  413. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  414. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  415. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  416. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  417. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  418. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  419. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  420. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  421. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  422. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  423. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  424. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  425. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  426. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  427. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -794
  428. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  429. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  430. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  431. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  432. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
  433. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  434. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
  435. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  436. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
  437. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  438. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  439. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  440. package/contracts/components/BaseComponent.sol +0 -79
  441. package/contracts/components/IBaseComponent.sol +0 -19
  442. package/contracts/experiment/errors/Require.sol +0 -38
  443. package/contracts/experiment/errors/Revert.sol +0 -44
  444. package/contracts/experiment/inheritance/A.sol +0 -53
  445. package/contracts/experiment/inheritance/B.sol +0 -28
  446. package/contracts/experiment/inheritance/C.sol +0 -34
  447. package/contracts/experiment/inheritance/IA.sol +0 -13
  448. package/contracts/experiment/inheritance/IB.sol +0 -10
  449. package/contracts/experiment/inheritance/IC.sol +0 -12
  450. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  451. package/contracts/experiment/statemachine/ISM.sol +0 -25
  452. package/contracts/experiment/statemachine/SM.sol +0 -57
  453. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  454. package/contracts/experiment/types/TypeA.sol +0 -47
  455. package/contracts/experiment/types/TypeB.sol +0 -29
  456. package/contracts/instance/IInstanceLinked.sol +0 -8
  457. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  458. package/contracts/instance/base/IInstanceBase.sol +0 -23
  459. package/contracts/instance/base/IService.sol +0 -15
  460. package/contracts/instance/base/InstanceBase.sol +0 -89
  461. package/contracts/instance/base/ModuleBase.sol +0 -57
  462. package/contracts/instance/base/ServiceBase.sol +0 -44
  463. package/contracts/instance/module/access/Access.sol +0 -149
  464. package/contracts/instance/module/access/IAccess.sol +0 -53
  465. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  466. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  467. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  468. package/contracts/instance/module/component/IComponent.sol +0 -28
  469. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  470. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  471. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  472. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  473. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  474. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  475. package/contracts/instance/module/risk/IRisk.sol +0 -26
  476. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  477. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  478. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  479. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  480. package/contracts/instance/service/ComponentOwnerService.sol +0 -275
  481. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  482. package/contracts/registry/IChainNft.sol +0 -22
  483. package/contracts/test/TestDistribution.sol +0 -22
  484. package/contracts/test/TestPool.sol +0 -27
  485. package/contracts/test/TestProduct.sol +0 -74
  486. package/contracts/types/ReferralId.sol +0 -48
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {ProductService} from "./ProductService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {VersionLib} from "../../types/Version.sol";
10
+
11
+ contract ProductServiceManager is ProxyManager {
12
+
13
+ ProductService private _productService;
14
+
15
+ /// @dev initializes proxy manager with product service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager(registryAddress)
20
+ {
21
+ ProductService svc = new ProductService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(svc),
25
+ data);
26
+
27
+ _productService = ProductService(address(versionable));
28
+
29
+ // Registry registry = Registry(registryAddress);
30
+ // address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
31
+ // RegistryService registryService = RegistryService(registryServiceAddress);
32
+ // TODO this must have a role or own nft to register service
33
+ //registryService.registerService(_productService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_productService));
40
+
41
+ // implies that after this constructor call only upgrade functionality is available
42
+ // _isDeployed = true;
43
+ }
44
+
45
+ //--- view functions ----------------------------------------------------//
46
+ function getProductService()
47
+ external
48
+ view
49
+ returns (ProductService productService)
50
+ {
51
+ return _productService;
52
+ }
53
+
54
+ }
@@ -1,19 +1,28 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {ERC721, ERC721Enumerable} from "@openzeppelin5/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
5
- import {IERC721} from "@openzeppelin5/contracts/token/ERC721/IERC721.sol";
4
+ import {ERC721, ERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
5
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
6
6
 
7
- import {IChainNft} from "./IChainNft.sol";
8
7
  import {ITransferInterceptor} from "./ITransferInterceptor.sol";
9
8
 
10
- contract ChainNft is ERC721Enumerable, IChainNft {
11
- string public constant NAME = "Dezentralized Insurance Protocol Registry";
12
- string public constant SYMBOL = "DIPR";
9
+ contract ChainNft is ERC721Enumerable {
10
+
11
+ // constants
12
+ string public constant NAME = "Dezentralized Insurance Protocol NFT";
13
+ string public constant SYMBOL = "DIPNFT";
13
14
 
14
15
  uint256 public constant PROTOCOL_NFT_ID = 1101;
15
16
  uint256 public constant GLOBAL_REGISTRY_ID = 2101;
16
17
 
18
+ // custom errors
19
+ error CallerNotRegistry(address caller);
20
+ error RegistryAddressZero();
21
+ error NftUriEmpty();
22
+ error NftUriAlreadySet();
23
+
24
+ // contract state
25
+
17
26
  // remember interceptors
18
27
  mapping(uint256 tokenId => address interceptor) private _interceptor;
19
28
 
@@ -31,19 +40,26 @@ contract ChainNft is ERC721Enumerable, IChainNft {
31
40
  uint256 internal _totalMinted;
32
41
 
33
42
  modifier onlyRegistry() {
34
- require(msg.sender == _registry, "ERROR:NFT-001:CALLER_NOT_REGISTRY");
43
+ if (msg.sender != _registry) { revert CallerNotRegistry(msg.sender); }
35
44
  _;
36
45
  }
37
46
 
38
47
  constructor(address registry) ERC721(NAME, SYMBOL) {
39
- require(registry != address(0), "ERROR:NFT-010:REGISTRY_ZERO");
48
+ if (registry == address(0)) { revert RegistryAddressZero(); }
40
49
 
41
50
  _registry = registry;
42
-
43
51
  _chainIdInt = block.chainid;
44
- _chainIdDigits = _countDigits(_chainIdInt);
52
+ _chainIdDigits = 0;
53
+
54
+ // count digis
55
+ uint256 num = _chainIdInt;
56
+ while (num != 0) {
57
+ _chainIdDigits++;
58
+ num /= 10;
59
+ }
60
+
45
61
  _chainIdMultiplier = 10 ** _chainIdDigits;
46
- _idNext = 4;
62
+ _idNext = 3;
47
63
  }
48
64
 
49
65
  /**
@@ -77,8 +93,12 @@ contract ChainNft is ERC721Enumerable, IChainNft {
77
93
  _uri[tokenId] = uri;
78
94
  }
79
95
 
80
- _safeMint(to, tokenId);
81
96
  _totalMinted++;
97
+ _safeMint(to, tokenId);
98
+
99
+ if(interceptor != address(0)) {
100
+ ITransferInterceptor(interceptor).nftMint(to, tokenId);
101
+ }
82
102
  }
83
103
 
84
104
 
@@ -95,7 +115,7 @@ contract ChainNft is ERC721Enumerable, IChainNft {
95
115
  }
96
116
 
97
117
 
98
- function burn(uint256 tokenId) external override onlyRegistry {
118
+ function burn(uint256 tokenId) external onlyRegistry {
99
119
  _requireOwned(tokenId);
100
120
  _burn(tokenId);
101
121
  delete _uri[tokenId];
@@ -104,29 +124,36 @@ contract ChainNft is ERC721Enumerable, IChainNft {
104
124
  function setURI(
105
125
  uint256 tokenId,
106
126
  string memory uri
107
- ) external override onlyRegistry {
108
- require(bytes(uri).length > 0, "ERROR:CRG-011:URI_EMPTY");
127
+ ) external onlyRegistry {
128
+ if (bytes(uri).length == 0) { revert NftUriEmpty(); }
129
+ if (bytes(_uri[tokenId]).length > 0) { revert NftUriAlreadySet(); }
109
130
 
110
131
  _requireOwned(tokenId);
111
132
  _uri[tokenId] = uri;
112
133
  }
113
134
 
114
- function exists(uint256 tokenId) external view override returns (bool) {
135
+ function exists(uint256 tokenId) external view returns (bool) {
115
136
  return _ownerOf(tokenId) != address(0);
116
137
  }
117
138
 
118
139
  function tokenURI(
119
140
  uint256 tokenId
120
141
  ) public view override returns (string memory) {
142
+ // gif generally does not revert for view functions
143
+ // this is an exception to keep the openzeppelin nft semantics
121
144
  _requireOwned(tokenId);
122
145
  return _uri[tokenId];
123
146
  }
124
147
 
125
- function getRegistryAddress() external view override returns (address) {
148
+ function getInterceptor(uint256 tokenId) external view returns (address) {
149
+ return _interceptor[tokenId];
150
+ }
151
+
152
+ function getRegistryAddress() external view returns (address) {
126
153
  return _registry;
127
154
  }
128
155
 
129
- function totalMinted() external view override returns (uint256) {
156
+ function totalMinted() external view returns (uint256) {
130
157
  return _totalMinted;
131
158
  }
132
159
 
@@ -172,16 +199,12 @@ contract ChainNft is ERC721Enumerable, IChainNft {
172
199
  _chainIdDigits;
173
200
  }
174
201
 
202
+ function getNextTokenId() external view returns (uint256) {
203
+ return calculateTokenId(_idNext);
204
+ }
205
+
175
206
  function _getNextTokenId() private returns (uint256 id) {
176
207
  id = calculateTokenId(_idNext);
177
208
  _idNext++;
178
209
  }
179
-
180
- function _countDigits(uint256 num) private pure returns (uint256 count) {
181
- count = 0;
182
- while (num != 0) {
183
- count++;
184
- num /= 10;
185
- }
186
- }
187
210
  }
@@ -1,20 +1,33 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC165} from "@openzeppelin5/contracts/utils/introspection/IERC165.sol";
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
6
  import {NftId} from "../types/NftId.sol";
7
7
  import {ObjectType} from "../types/ObjectType.sol";
8
8
  import {VersionPart} from "../types/Version.sol";
9
- import {IChainNft} from "./IChainNft.sol";
9
+ import {Timestamp} from "../types/Timestamp.sol";
10
10
 
11
11
  interface IRegistry is IERC165 {
12
12
 
13
- event LogRegistration(NftId indexed nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
13
+ event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
14
+ event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
14
15
 
15
- event LogServiceNameRegistration(string serviceName, VersionPart majorVersion);
16
+ // registerService()
17
+ error CallerNotReleaseManager();
18
+ error ServiceAlreadyRegistered(address service);
16
19
 
17
- event LogApproval(NftId indexed nftId, ObjectType objectType);
20
+ // register()
21
+ error CallerNotRegistryService();
22
+ error ServiceRegistration();
23
+
24
+ // registerWithCustomTypes()
25
+ error CoreTypeRegistration();
26
+
27
+ // _register()
28
+ error ZeroParentAddress();
29
+ error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
30
+ error ContractAlreadyRegistered(address objectAddress);
18
31
 
19
32
  struct ObjectInfo {
20
33
  NftId nftId;
@@ -25,27 +38,36 @@ interface IRegistry is IERC165 {
25
38
  address initialOwner;
26
39
  bytes data;
27
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;
47
+ }
48
+
49
+ function registerService(
50
+ ObjectInfo memory serviceInfo,
51
+ VersionPart serviceVersion,
52
+ ObjectType serviceDomain
53
+ ) external returns(NftId nftId);
28
54
 
29
55
  function register(ObjectInfo memory info) external returns (NftId nftId);
30
-
31
- function registerFrom(
32
- address from,
33
- ObjectInfo memory info
34
- ) external returns (NftId nftId);
35
-
36
- function approve(
37
- NftId registrar,
38
- ObjectType object,
39
- ObjectType parent
40
- ) external;
41
-
42
- function allowance(
43
- NftId registrar,
44
- ObjectType object
45
- ) external view returns (bool);
56
+
57
+ function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
58
+
59
+ function getInitialVersion() external view returns (VersionPart);
60
+
61
+ function getNextVersion() external view returns (VersionPart);
62
+
63
+ function getLatestVersion() external view returns (VersionPart);
64
+
65
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory);
46
66
 
47
67
  function getObjectCount() external view returns (uint256);
48
68
 
69
+ function getNftId() external view returns (NftId nftId);
70
+
49
71
  function getNftId(address objectAddress) external view returns (NftId nftId);
50
72
 
51
73
  function ownerOf(NftId nftId) external view returns (address);
@@ -60,14 +82,20 @@ interface IRegistry is IERC165 {
60
82
 
61
83
  function isRegistered(address contractAddress) external view returns (bool);
62
84
 
63
- function getServiceName(NftId nftId) external view returns (string memory name);
85
+ function isRegisteredService(address contractAddress) external view returns (bool);
86
+
87
+ function isRegisteredComponent(address object) external view returns (bool);
88
+
89
+ function isValidRelease(VersionPart version) external view returns (bool);
64
90
 
65
91
  function getServiceAddress(
66
- string memory serviceName,
67
- VersionPart majorVersion
92
+ ObjectType serviceDomain,
93
+ VersionPart releaseVersion
68
94
  ) external view returns (address serviceAddress);
69
95
 
70
- function getChainNft() external view returns (IChainNft);
96
+ function getReleaseManagerAddress() external view returns (address);
97
+
98
+ function getChainNftAddress() external view returns (address);
71
99
 
72
100
  function getOwner() external view returns (address);
73
101
  }
@@ -1,29 +1,66 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
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";
4
+ // import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
9
5
 
10
- import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
11
- import {IBaseComponent} from "../../contracts/components/IBaseComponent.sol";
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";
12
11
 
13
- interface IRegistryService is IService {
12
+ import {IRegisterable} from "../shared/IRegisterable.sol";
13
+ import {IComponent} from "../components/IComponent.sol";
14
14
 
15
- function registerToken(address tokenAddress) external returns(NftId nftId);
15
+ interface IRegistryService is
16
+ IService
17
+ {
18
+ error SelfRegistration();
19
+ error NotRegistryOwner();
16
20
 
17
- function registerService(IService service) external returns(IRegistry.ObjectInfo memory info, bytes memory data);
21
+ error NotService();
22
+ error NotInstance();
23
+ error NotProduct();
24
+ error NotPool();
25
+ error NotDistribution();
18
26
 
19
- function registerComponent(IBaseComponent component, ObjectType componentType, address owner)
20
- external returns(IRegistry.ObjectInfo memory info, bytes memory data);
27
+ error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
28
+ error NotRegisterableOwner(address expectedOwner);
29
+ error RegisterableOwnerIsZero();
30
+ error RegisterableOwnerIsRegistered();
31
+ error InvalidInitialOwner(address initialOwner);
32
+ error InvalidAddress(address registerableAddress);
21
33
 
22
- function registerInstance(IRegisterable instance)
23
- external returns(IRegistry.ObjectInfo memory info, bytes memory data);
34
+ struct FunctionConfig
35
+ {
36
+ ObjectType serviceDomain;
37
+ bytes4[] selectors;
38
+ }
24
39
 
25
- function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId); // -> easy to upgrade
40
+ function getFunctionConfigs()
41
+ external
42
+ pure
43
+ returns(
44
+ FunctionConfig[] memory config
45
+ );
26
46
 
27
- function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
47
+ // TODO used by service -> add owner arg
48
+ function registerInstance(IRegisterable instance, address owner)
49
+ external returns(IRegistry.ObjectInfo memory info);
50
+
51
+ function registerProduct(IComponent product, address owner)
52
+ external returns(IRegistry.ObjectInfo memory info);
53
+
54
+ function registerPool(IComponent pool, address owner)
55
+ external returns(IRegistry.ObjectInfo memory info);
56
+
57
+ function registerDistribution(IComponent distribution, address owner)
58
+ external returns(IRegistry.ObjectInfo memory info);
59
+
60
+ function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
61
+
62
+ function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
63
+
64
+ function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
28
65
  }
29
66
 
@@ -2,5 +2,6 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  interface ITransferInterceptor {
5
+ function nftMint(address to, uint256 tokenId) external;
5
6
  function nftTransferFrom(address from, address to, uint256 tokenId) external;
6
7
  }