@etherisc/gif-next 0.0.2-de0a1d3-009 → 0.0.2-de7c770-422

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 (754) hide show
  1. package/README.md +267 -42
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1012 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1400 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +787 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +906 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +932 -0
  36. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  44. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +283 -1679
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +428 -2085
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1850 -0
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1048 -0
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +683 -0
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3587 -0
  64. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  66. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  67. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  69. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  74. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  76. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  78. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  79. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  80. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  81. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  82. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  84. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  87. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  92. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  97. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  99. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +871 -0
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  101. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +922 -0
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +679 -0
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  105. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  107. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1362 -0
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +771 -0
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +907 -0
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  115. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +909 -0
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  117. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1198 -0
  118. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  119. package/artifacts/contracts/pool/Pool.sol/Pool.json +1034 -0
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  121. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1469 -0
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +695 -0
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +732 -0
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +667 -0
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  129. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  133. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1325 -0
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +775 -0
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  137. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +230 -384
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  139. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +886 -0
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  141. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +785 -0
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  143. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  145. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +948 -0
  146. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  147. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → product/IRiskService.sol/IRiskService.json} +187 -174
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  149. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1104 -0
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +715 -0
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  153. package/artifacts/contracts/product/PricingService.sol/PricingService.json +860 -0
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +715 -0
  156. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  157. package/artifacts/contracts/product/Product.sol/Product.json +1054 -0
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  159. package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +242 -12
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +924 -119
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  167. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +940 -0
  168. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  170. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/Registry.sol/Registry.json +1343 -220
  172. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  173. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1861 -0
  174. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  175. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1340 -0
  176. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  179. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  181. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  183. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  185. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  186. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  187. package/artifacts/contracts/shared/Component.sol/Component.json +685 -0
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  189. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1568 -0
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  191. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +753 -0
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  193. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +216 -194
  194. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +605 -0
  196. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  198. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  200. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  201. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  202. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  203. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  204. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  205. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +66 -52
  206. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  207. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +75 -84
  208. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -31
  210. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  211. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  212. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  213. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +159 -154
  214. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  215. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  216. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  217. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  218. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  219. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +793 -0
  220. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  221. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +102 -165
  222. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  223. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  224. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  225. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  226. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  227. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +193 -0
  228. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  229. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +188 -0
  230. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  231. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +170 -27
  232. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  233. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  234. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  235. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +185 -177
  236. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  237. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +469 -0
  238. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  239. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  240. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  241. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  242. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  243. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  244. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  246. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  247. package/artifacts/contracts/staking/Staking.sol/Staking.json +1828 -0
  248. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  250. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +714 -0
  252. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  254. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1231 -0
  256. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -0
  258. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  260. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  261. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  262. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  263. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  264. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  266. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  268. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  270. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  272. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  274. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  276. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  278. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  279. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  280. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  282. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  284. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  286. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  288. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  290. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  292. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  294. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  296. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  298. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  299. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  300. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  302. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  304. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  306. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  308. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  310. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  312. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  313. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  314. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  315. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +566 -0
  316. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  317. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  318. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  319. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  320. package/contracts/authorization/AccessAdmin.sol +589 -0
  321. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  322. package/contracts/authorization/Authorization.sol +217 -0
  323. package/contracts/authorization/IAccess.sol +48 -0
  324. package/contracts/authorization/IAccessAdmin.sol +136 -0
  325. package/contracts/authorization/IAuthorization.sol +54 -0
  326. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  327. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  328. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  329. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  330. package/contracts/distribution/BasicDistribution.sol +138 -0
  331. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  332. package/contracts/distribution/Distribution.sol +295 -0
  333. package/contracts/distribution/DistributionService.sol +336 -0
  334. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  335. package/contracts/distribution/IDistributionComponent.sol +52 -0
  336. package/contracts/distribution/IDistributionService.sol +101 -0
  337. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  338. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  339. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  340. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  341. package/contracts/instance/BundleSet.sol +126 -0
  342. package/contracts/instance/IInstance.sol +57 -47
  343. package/contracts/instance/IInstanceService.sol +92 -0
  344. package/contracts/instance/Instance.sol +216 -61
  345. package/contracts/instance/InstanceAdmin.sol +285 -0
  346. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  347. package/contracts/instance/InstanceReader.sol +430 -0
  348. package/contracts/instance/InstanceService.sol +467 -0
  349. package/contracts/instance/InstanceServiceManager.sol +40 -0
  350. package/contracts/instance/InstanceStore.sol +287 -0
  351. package/contracts/instance/base/BalanceStore.sol +123 -0
  352. package/contracts/instance/base/Cloneable.sol +28 -0
  353. package/contracts/instance/base/ObjectCounter.sol +21 -0
  354. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  355. package/contracts/instance/base/ObjectSet.sol +79 -0
  356. package/contracts/instance/module/IAccess.sol +46 -0
  357. package/contracts/instance/module/IBundle.sol +20 -0
  358. package/contracts/instance/module/IComponents.sol +46 -0
  359. package/contracts/instance/module/IDistribution.sol +41 -0
  360. package/contracts/instance/module/IPolicy.sol +84 -0
  361. package/contracts/instance/module/IRisk.sol +11 -0
  362. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  363. package/contracts/oracle/BasicOracle.sol +48 -0
  364. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  365. package/contracts/oracle/IOracle.sol +36 -0
  366. package/contracts/oracle/IOracleComponent.sol +33 -0
  367. package/contracts/oracle/IOracleService.sol +65 -0
  368. package/contracts/oracle/Oracle.sol +167 -0
  369. package/contracts/oracle/OracleService.sol +279 -0
  370. package/contracts/oracle/OracleServiceManager.sol +39 -0
  371. package/contracts/pool/BasicPool.sol +166 -0
  372. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  373. package/contracts/pool/BundleService.sol +438 -0
  374. package/contracts/pool/BundleServiceManager.sol +39 -0
  375. package/contracts/pool/IBundleService.sol +134 -0
  376. package/contracts/pool/IPoolComponent.sol +58 -0
  377. package/contracts/pool/IPoolService.sol +160 -0
  378. package/contracts/pool/Pool.sol +326 -0
  379. package/contracts/pool/PoolService.sol +509 -0
  380. package/contracts/pool/PoolServiceManager.sol +39 -0
  381. package/contracts/product/ApplicationService.sol +248 -0
  382. package/contracts/product/ApplicationServiceManager.sol +38 -0
  383. package/contracts/product/BasicProduct.sol +53 -0
  384. package/contracts/product/BasicProductAuthorization.sol +43 -0
  385. package/contracts/product/ClaimService.sol +487 -0
  386. package/contracts/product/ClaimServiceManager.sol +38 -0
  387. package/contracts/product/IApplicationService.sol +63 -0
  388. package/contracts/product/IClaimService.sol +122 -0
  389. package/contracts/product/IPolicyService.sol +73 -0
  390. package/contracts/product/IPricingService.sol +39 -0
  391. package/contracts/product/IProductComponent.sol +39 -0
  392. package/contracts/product/IRiskService.sol +33 -0
  393. package/contracts/product/PolicyService.sol +573 -0
  394. package/contracts/product/PolicyServiceManager.sol +39 -0
  395. package/contracts/product/PricingService.sol +301 -0
  396. package/contracts/product/PricingServiceManager.sol +39 -0
  397. package/contracts/product/Product.sol +425 -0
  398. package/contracts/product/RiskService.sol +97 -0
  399. package/contracts/product/RiskServiceManager.sol +39 -0
  400. package/contracts/registry/ChainNft.sol +131 -40
  401. package/contracts/registry/IRegistry.sol +140 -29
  402. package/contracts/registry/IRegistryService.sol +69 -0
  403. package/contracts/registry/ITransferInterceptor.sol +7 -0
  404. package/contracts/registry/Registry.sol +603 -282
  405. package/contracts/registry/RegistryAdmin.sol +464 -0
  406. package/contracts/registry/RegistryService.sol +252 -0
  407. package/contracts/registry/RegistryServiceManager.sol +53 -0
  408. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  409. package/contracts/registry/ReleaseRegistry.sol +491 -0
  410. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  411. package/contracts/registry/TokenRegistry.sol +315 -0
  412. package/contracts/shared/Component.sol +268 -0
  413. package/contracts/shared/ComponentService.sol +641 -0
  414. package/contracts/shared/ComponentServiceManager.sol +35 -0
  415. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  416. package/contracts/shared/IComponent.sol +70 -0
  417. package/contracts/shared/IComponentService.sol +108 -0
  418. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  419. package/contracts/shared/IKeyValueStore.sol +54 -0
  420. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -5
  421. package/contracts/shared/INftOwnable.sol +23 -0
  422. package/contracts/shared/IPolicyHolder.sol +36 -0
  423. package/contracts/shared/IRegisterable.sol +10 -19
  424. package/contracts/shared/IRegistryLinked.sol +11 -0
  425. package/contracts/shared/IService.sol +25 -0
  426. package/contracts/shared/InitializableCustom.sol +177 -0
  427. package/contracts/shared/InitializableERC165.sol +27 -0
  428. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  429. package/contracts/shared/KeyValueStore.sol +131 -0
  430. package/contracts/shared/Lifecycle.sol +77 -0
  431. package/contracts/shared/NftIdSet.sol +65 -0
  432. package/contracts/shared/NftOwnable.sol +107 -0
  433. package/contracts/shared/PolicyHolder.sol +56 -0
  434. package/contracts/shared/Registerable.sol +54 -65
  435. package/contracts/shared/RegistryLinked.sol +44 -0
  436. package/contracts/shared/Service.sol +82 -0
  437. package/contracts/shared/TokenHandler.sol +139 -0
  438. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  439. package/contracts/staking/IStaking.sol +168 -0
  440. package/contracts/staking/IStakingService.sol +160 -0
  441. package/contracts/staking/StakeManagerLib.sol +224 -0
  442. package/contracts/staking/Staking.sol +498 -0
  443. package/contracts/staking/StakingLifecycle.sol +23 -0
  444. package/contracts/staking/StakingManager.sol +50 -0
  445. package/contracts/staking/StakingReader.sol +183 -0
  446. package/contracts/staking/StakingService.sol +407 -0
  447. package/contracts/staking/StakingServiceManager.sol +44 -0
  448. package/contracts/staking/StakingStore.sol +605 -0
  449. package/contracts/staking/TargetManagerLib.sol +211 -0
  450. package/contracts/{types → type}/AddressSet.sol +1 -1
  451. package/contracts/type/Amount.sol +135 -0
  452. package/contracts/{types → type}/Blocknumber.sol +27 -3
  453. package/contracts/type/ClaimId.sol +75 -0
  454. package/contracts/type/DistributorType.sol +55 -0
  455. package/contracts/type/Fee.sol +66 -0
  456. package/contracts/{types → type}/Key32.sol +8 -3
  457. package/contracts/{types → type}/NftId.sol +21 -15
  458. package/contracts/type/NftIdSet.sol +62 -0
  459. package/contracts/type/ObjectType.sol +275 -0
  460. package/contracts/type/PayoutId.sol +82 -0
  461. package/contracts/type/Referral.sol +90 -0
  462. package/contracts/type/RequestId.sol +75 -0
  463. package/contracts/{types → type}/RiskId.sol +1 -1
  464. package/contracts/type/RoleId.sol +174 -0
  465. package/contracts/type/Seconds.sol +101 -0
  466. package/contracts/type/Selector.sol +102 -0
  467. package/contracts/{types → type}/StateId.sol +40 -5
  468. package/contracts/type/String.sol +53 -0
  469. package/contracts/{types → type}/Timestamp.sol +38 -15
  470. package/contracts/type/UFixed.sol +351 -0
  471. package/contracts/{types → type}/Version.sol +9 -2
  472. package/contracts/upgradeability/IVersionable.sol +53 -0
  473. package/contracts/upgradeability/ProxyManager.sol +198 -0
  474. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  475. package/contracts/upgradeability/Versionable.sol +59 -0
  476. package/package.json +11 -7
  477. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  478. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  479. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  480. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -405
  481. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  482. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  483. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -340
  484. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  485. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -487
  486. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  487. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -370
  488. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  489. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -578
  490. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  491. package/artifacts/contracts/components/Product.sol/Product.json +0 -444
  492. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  494. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  496. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  498. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  500. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  502. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  503. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  504. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  506. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  508. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  510. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  512. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  514. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  515. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  516. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  517. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  518. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  519. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  520. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  521. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  522. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  523. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  524. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  525. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  526. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  527. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  528. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  529. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  530. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  531. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  532. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  534. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -463
  535. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  536. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -710
  537. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  538. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  539. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  540. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  541. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  542. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  543. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  544. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  546. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  547. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  548. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  549. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  550. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  551. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  552. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  553. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  554. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  555. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  556. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  557. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  558. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  559. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  560. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  561. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  562. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  563. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  564. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  565. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  566. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  567. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  568. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  569. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  570. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  571. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  572. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  573. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  574. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  575. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  576. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  577. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  578. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  579. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  580. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  581. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  582. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  583. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  584. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  585. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  586. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -618
  587. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  588. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -507
  589. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  590. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  591. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -366
  592. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  593. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -481
  594. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  595. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  596. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -630
  597. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  598. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -945
  599. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  600. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  601. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  602. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
  603. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -724
  604. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  605. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  606. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  607. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  608. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  609. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  610. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.dbg.json +0 -4
  611. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.json +0 -248
  612. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  613. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.json +0 -129
  614. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  615. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -251
  616. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  617. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -228
  618. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  619. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  620. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  621. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  622. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  623. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  624. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  625. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  626. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  627. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  628. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  629. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  630. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  631. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -466
  632. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  633. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  634. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  635. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  636. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  637. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -293
  638. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  639. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  640. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  641. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  642. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  644. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  645. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  646. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  648. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  649. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  650. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  652. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  653. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  654. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  655. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  656. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  657. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  658. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  659. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  660. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  662. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  665. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  666. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  667. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  668. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  669. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  670. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  671. package/contracts/components/BaseComponent.sol +0 -94
  672. package/contracts/components/Distribution.sol +0 -132
  673. package/contracts/components/IBaseComponent.sol +0 -19
  674. package/contracts/components/IDistributionComponent.sol +0 -47
  675. package/contracts/components/IPoolComponent.sol +0 -71
  676. package/contracts/components/IProductComponent.sol +0 -38
  677. package/contracts/components/Pool.sol +0 -235
  678. package/contracts/components/Product.sol +0 -227
  679. package/contracts/experiment/errors/Require.sol +0 -38
  680. package/contracts/experiment/errors/Revert.sol +0 -44
  681. package/contracts/experiment/inheritance/A.sol +0 -53
  682. package/contracts/experiment/inheritance/B.sol +0 -28
  683. package/contracts/experiment/inheritance/C.sol +0 -34
  684. package/contracts/experiment/inheritance/IA.sol +0 -13
  685. package/contracts/experiment/inheritance/IB.sol +0 -10
  686. package/contracts/experiment/inheritance/IC.sol +0 -12
  687. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  688. package/contracts/experiment/statemachine/ISM.sol +0 -25
  689. package/contracts/experiment/statemachine/README.md +0 -112
  690. package/contracts/experiment/statemachine/SM.sol +0 -57
  691. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  692. package/contracts/experiment/types/TypeA.sol +0 -47
  693. package/contracts/experiment/types/TypeB.sol +0 -29
  694. package/contracts/instance/IInstanceLinked.sol +0 -8
  695. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  696. package/contracts/instance/base/IInstanceBase.sol +0 -22
  697. package/contracts/instance/base/IKeyValueStore.sol +0 -50
  698. package/contracts/instance/base/IService.sol +0 -15
  699. package/contracts/instance/base/InstanceBase.sol +0 -91
  700. package/contracts/instance/base/KeyValueStore.sol +0 -161
  701. package/contracts/instance/base/Lifecycle.sol +0 -100
  702. package/contracts/instance/base/ModuleBase.sol +0 -57
  703. package/contracts/instance/base/ServiceBase.sol +0 -37
  704. package/contracts/instance/module/access/Access.sol +0 -149
  705. package/contracts/instance/module/access/IAccess.sol +0 -53
  706. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  707. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  708. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  709. package/contracts/instance/module/component/IComponent.sol +0 -28
  710. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  711. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  712. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  713. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  714. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  715. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  716. package/contracts/instance/module/risk/IRisk.sol +0 -26
  717. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  718. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  719. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  720. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  721. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  722. package/contracts/instance/service/DistributionService.sol +0 -59
  723. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  724. package/contracts/instance/service/IDistributionService.sol +0 -12
  725. package/contracts/instance/service/IPoolService.sol +0 -37
  726. package/contracts/instance/service/IProductService.sol +0 -107
  727. package/contracts/instance/service/PoolService.sol +0 -149
  728. package/contracts/instance/service/ProductService.sol +0 -509
  729. package/contracts/registry/IChainNft.sol +0 -21
  730. package/contracts/registry/IRegistryLinked.sol +0 -8
  731. package/contracts/registry/RegistryUpgradeable.sol +0 -473
  732. package/contracts/shared/ERC165.sol +0 -21
  733. package/contracts/shared/IOwnable.sol +0 -6
  734. package/contracts/shared/IVersionable.sol +0 -65
  735. package/contracts/shared/Proxy.sol +0 -94
  736. package/contracts/shared/Versionable.sol +0 -99
  737. package/contracts/shared/VersionableUpgradeable.sol +0 -133
  738. package/contracts/test/TestDistribution.sol +0 -21
  739. package/contracts/test/TestFee.sol +0 -25
  740. package/contracts/test/TestPool.sol +0 -25
  741. package/contracts/test/TestProduct.sol +0 -72
  742. package/contracts/test/TestRegisterable.sol +0 -19
  743. package/contracts/test/TestRoleId.sol +0 -14
  744. package/contracts/test/TestService.sol +0 -32
  745. package/contracts/test/TestToken.sol +0 -26
  746. package/contracts/test/TestVersion.sol +0 -44
  747. package/contracts/test/TestVersionable.sol +0 -17
  748. package/contracts/types/ChainId.sol +0 -38
  749. package/contracts/types/Fee.sol +0 -56
  750. package/contracts/types/NftIdSet.sol +0 -60
  751. package/contracts/types/ObjectType.sol +0 -131
  752. package/contracts/types/ReferralId.sol +0 -48
  753. package/contracts/types/RoleId.sol +0 -38
  754. package/contracts/types/UFixed.sol +0 -209
@@ -1,16 +1,33 @@
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
+ event LogTokenInterceptorAddress(uint256 tokenId, address interceptor);
12
+
13
+ // constants
14
+ string public constant NAME = "Dezentralized Insurance Protocol NFT";
15
+ string public constant SYMBOL = "DIPNFT";
10
16
 
11
17
  uint256 public constant PROTOCOL_NFT_ID = 1101;
12
18
  uint256 public constant GLOBAL_REGISTRY_ID = 2101;
13
19
 
20
+ // custom errors
21
+ error ErrorChainNftCallerNotRegistry(address caller);
22
+ error ErrorChainNftRegistryAddressZero();
23
+ error ErrorChainNftUriEmpty();
24
+ error ErrorChainNftUriAlreadySet();
25
+
26
+ // contract state
27
+
28
+ // remember interceptors
29
+ mapping(uint256 tokenId => address interceptor) private _interceptor;
30
+
14
31
  // remember token uri
15
32
  mapping(uint256 tokenId => string uri) private _uri;
16
33
 
@@ -18,57 +35,97 @@ contract ChainNft is ERC721Enumerable, IChainNft {
18
35
  address private _registry;
19
36
 
20
37
  // only used for _getNextTokenId
21
- uint256 internal _chainIdInt;
22
38
  uint256 internal _chainIdDigits;
23
39
  uint256 internal _chainIdMultiplier;
24
40
  uint256 internal _idNext;
25
41
  uint256 internal _totalMinted;
26
42
 
27
43
  modifier onlyRegistry() {
28
- require(msg.sender == _registry, "ERROR:NFT-001:CALLER_NOT_REGISTRY");
44
+ if (msg.sender != _registry) { revert ErrorChainNftCallerNotRegistry(msg.sender); }
29
45
  _;
30
46
  }
31
47
 
32
- constructor(address registry) ERC721(NAME, SYMBOL) {
33
- require(registry != address(0), "ERROR:NFT-010:REGISTRY_ZERO");
48
+ constructor(address registry)
49
+ ERC721(NAME, SYMBOL)
50
+ {
51
+ if (registry == address(0)) { revert ErrorChainNftRegistryAddressZero(); }
34
52
 
53
+ // NFT contract is deployed by the registry
35
54
  _registry = registry;
36
55
 
37
- _chainIdInt = block.chainid;
38
- _chainIdDigits = _countDigits(_chainIdInt);
56
+ _chainIdDigits = _calculateChainIdDigits(block.chainid);
39
57
  _chainIdMultiplier = 10 ** _chainIdDigits;
40
- _idNext = 3;
58
+
59
+ // the first object registered through normal registration starts with id 4
60
+ // 1 -> protocol
61
+ // 2 -> registry
62
+ // 3 -> staking
63
+ // >= 4 -> all other objects
64
+ _idNext = 4;
65
+ }
66
+
67
+ /**
68
+ * @dev mints a token for a specified token id
69
+ * not part of the IRegistry interface only needed for
70
+ * initial registry setup (protocol and global registry objects)
71
+ */
72
+ function mint(
73
+ address to,
74
+ uint256 tokenId
75
+ )
76
+ external
77
+ onlyRegistry()
78
+ {
79
+ _safeMintWithInterceptorAddress(to, tokenId, address(0));
41
80
  }
42
81
 
43
82
  /**
44
83
  * @dev mints the next token to register new objects
84
+ * non-zero transferInterceptors are recorded and called during nft token transfers.
85
+ * the contract receiving such a notification may decides to revert or record the transfer
45
86
  */
46
87
  function mint(
47
88
  address to,
89
+ address interceptor,
48
90
  string memory uri
49
- ) external override onlyRegistry returns (uint256 tokenId) {
91
+ )
92
+ public
93
+ onlyRegistry()
94
+ returns (uint256 tokenId)
95
+ {
50
96
  tokenId = _getNextTokenId();
51
97
 
98
+ if (interceptor != address(0)) {
99
+ _interceptor[tokenId] = interceptor;
100
+ }
101
+
52
102
  if (bytes(uri).length > 0) {
53
103
  _uri[tokenId] = uri;
54
104
  }
55
105
 
56
- _safeMint(to, tokenId);
57
- _totalMinted++;
106
+ _safeMintWithInterceptorAddress(to, tokenId, interceptor);
107
+
108
+ if(interceptor != address(0)) {
109
+ ITransferInterceptor(interceptor).nftMint(to, tokenId);
110
+ }
58
111
  }
59
112
 
113
+
60
114
  /**
61
- * @dev mints a token for a specified token id
62
- * not part of the IRegistry interface only needed for
63
- * initial registry setup (protocol and global registry objects)
64
- */
65
- function mint(address to, uint256 tokenId) external onlyRegistry {
66
- _totalMinted++;
67
- _safeMint(to, tokenId);
115
+ * @dev amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id
116
+ * this allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
117
+ */
118
+ function transferFrom(address from, address to, uint256 tokenId) public override (ERC721, IERC721) {
119
+ super.transferFrom(from, to, tokenId);
120
+
121
+ if (_interceptor[tokenId] != address(0)) {
122
+ ITransferInterceptor(_interceptor[tokenId]).nftTransferFrom(from, to, tokenId);
123
+ }
68
124
  }
69
125
 
70
- function burn(uint256 tokenId) external override onlyRegistry {
71
- _requireMinted(tokenId);
126
+
127
+ function burn(uint256 tokenId) external onlyRegistry {
128
+ _requireOwned(tokenId);
72
129
  _burn(tokenId);
73
130
  delete _uri[tokenId];
74
131
  }
@@ -76,29 +133,36 @@ contract ChainNft is ERC721Enumerable, IChainNft {
76
133
  function setURI(
77
134
  uint256 tokenId,
78
135
  string memory uri
79
- ) external override onlyRegistry {
80
- require(bytes(uri).length > 0, "ERROR:CRG-011:URI_EMPTY");
136
+ ) external onlyRegistry {
137
+ if (bytes(uri).length == 0) { revert ErrorChainNftUriEmpty(); }
138
+ if (bytes(_uri[tokenId]).length > 0) { revert ErrorChainNftUriAlreadySet(); }
81
139
 
82
- _requireMinted(tokenId);
140
+ _requireOwned(tokenId);
83
141
  _uri[tokenId] = uri;
84
142
  }
85
143
 
86
- function exists(uint256 tokenId) external view override returns (bool) {
87
- return _exists(tokenId);
144
+ function exists(uint256 tokenId) external view returns (bool) {
145
+ return _ownerOf(tokenId) != address(0);
88
146
  }
89
147
 
90
148
  function tokenURI(
91
149
  uint256 tokenId
92
150
  ) public view override returns (string memory) {
93
- _requireMinted(tokenId);
151
+ // gif generally does not revert for view functions
152
+ // this is an exception to keep the openzeppelin nft semantics
153
+ _requireOwned(tokenId);
94
154
  return _uri[tokenId];
95
155
  }
96
156
 
97
- function getRegistryAddress() external view override returns (address) {
157
+ function getInterceptor(uint256 tokenId) external view returns (address) {
158
+ return _interceptor[tokenId];
159
+ }
160
+
161
+ function getRegistryAddress() external view returns (address) {
98
162
  return _registry;
99
163
  }
100
164
 
101
- function totalMinted() external view override returns (uint256) {
165
+ function totalMinted() external view returns (uint256) {
102
166
  return _totalMinted;
103
167
  }
104
168
 
@@ -137,23 +201,50 @@ contract ChainNft is ERC721Enumerable, IChainNft {
137
201
  * (42 * 10 ** 10 + 9876543210) * 100 + 10
138
202
  * (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
139
203
  */
140
- function calculateTokenId(uint256 idIndex) public view returns (uint256 id) {
141
- id =
142
- (idIndex * _chainIdMultiplier + _chainIdInt) *
143
- 100 +
144
- _chainIdDigits;
204
+ function calculateTokenId(uint256 idIndex, uint256 chainId) public view returns (uint256 id) {
205
+ if(chainId == block.chainid) {
206
+ return 100 * (idIndex * _chainIdMultiplier + chainId) + _chainIdDigits;
207
+ } else {
208
+ uint256 chainIdDigits = _calculateChainIdDigits(chainId);
209
+ return 100 * (idIndex * (10 ** chainIdDigits) + chainId) + chainIdDigits;
210
+ }
145
211
  }
146
212
 
213
+ function calculateTokenId(uint256 idIndex) public view returns (uint256) {
214
+ return 100 * (idIndex * _chainIdMultiplier + block.chainid) + _chainIdDigits;
215
+ }
216
+
217
+ function getNextTokenId() external view returns (uint256) {
218
+ return calculateTokenId(_idNext);
219
+ }
220
+
221
+ // ---------------- private functions ----------------- //
222
+
147
223
  function _getNextTokenId() private returns (uint256 id) {
148
224
  id = calculateTokenId(_idNext);
149
225
  _idNext++;
150
226
  }
151
227
 
152
- function _countDigits(uint256 num) private pure returns (uint256 count) {
153
- count = 0;
228
+ function _calculateChainIdDigits(uint256 chainId) private pure returns (uint256) {
229
+ uint256 num = chainId;
230
+ uint256 digits = 0;
154
231
  while (num != 0) {
155
- count++;
232
+ digits++;
156
233
  num /= 10;
157
234
  }
235
+ return digits;
236
+ }
237
+
238
+ function _safeMintWithInterceptorAddress(
239
+ address to,
240
+ uint256 tokenId,
241
+ address interceptor
242
+ )
243
+ private
244
+ {
245
+ emit LogTokenInterceptorAddress(tokenId, interceptor);
246
+
247
+ _totalMinted++;
248
+ _safeMint(to, tokenId);
158
249
  }
159
250
  }
@@ -1,57 +1,168 @@
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 {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
- import {NftId} from "../types/NftId.sol";
7
- import {ObjectType} from "../types/ObjectType.sol";
8
- import {VersionPart} from "../types/Version.sol";
9
- import {IChainNft} from "./IChainNft.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {VersionPart} from "../type/Version.sol";
9
+ import {Timestamp} from "../type/Timestamp.sol";
10
+ import {StateId} from "../type/StateId.sol";
10
11
 
12
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
13
+
14
+ /// @title Chain Registry interface.
15
+ /// A chain registry holds all protocol relevant objects with basic metadata.
16
+ /// Registered objects include services, instances, products, pools, policies, bundles, stakes and more.
17
+ /// Registered objects are represented by NFTs.
18
+ /// When on mainnet registry is global and keeps arbitrary number of chain registries residing on different chain ids.
19
+ /// When not on mainnet registry keeps the only object residing on different chain id (on mainnet) - global registry.
11
20
  interface IRegistry is IERC165 {
21
+
22
+ event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
23
+ event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
24
+ event LogChainRegistryRegistration(NftId nftId, uint256 chainId, address chainRegistryAddress);
25
+
26
+ // initialize
27
+ error ErrorRegistryCallerNotDeployer();
28
+
29
+ // registerRegistry()
30
+ error ErrorRegistryNotOnMainnet(uint256 chainId);
31
+ error ErrorRegistryChainRegistryChainIdZero(NftId nftId);
32
+ error ErrorRegistryChainRegistryAddressZero(NftId nftId, uint256 chainId);
33
+ error ErrorRegistryChainRegistryNftIdInvalid(NftId nftId, uint256 chainId);
34
+ error ErrorRegistryChainRegistryAlreadyRegistered(NftId nftId, uint256 chainId);
35
+
36
+ // registerService()
37
+ error ErrorRegistryServiceAddressZero();
38
+ error ErrorRegistryServiceVersionZero(address service);
39
+ //error ErrorRegistryServiceVersionMismatch(address service, VersionPart serviceVersion, VersionPart releaseVersion);
40
+ //error ErrorRegistryServiceVersionNotDeploying(address service, VersionPart version);
41
+ error ErrorRegistryServiceDomainZero(address service, VersionPart version);
42
+ error ErrorRegistryNotService(address service, ObjectType objectType);
43
+ error ErrorRegistryServiceParentNotRegistry(address service, VersionPart version, NftId parentNftId);
44
+ error ErrorRegistryServiceDomainAlreadyRegistered(address service, VersionPart version, ObjectType domain);
45
+
46
+ // registerWithCustomTypes()
47
+ error ErrorRegistryCoreTypeRegistration();
48
+
49
+ // _register()
50
+ error ErrorRegistryGlobalRegistryAsParent(address objectAddress, ObjectType objectType);
51
+ error ErrorRegistryTypesCombinationInvalid(address objectAddress, ObjectType objectType, ObjectType parentType);
52
+ error ErrorRegistryContractAlreadyRegistered(address objectAddress);
53
+
12
54
  struct ObjectInfo {
13
55
  NftId nftId;
14
56
  NftId parentNftId;
15
57
  ObjectType objectType;
58
+ bool isInterceptor;
16
59
  address objectAddress;
17
60
  address initialOwner;
18
61
  bytes data;
19
62
  }
20
63
 
21
- function register(address objectAddress) external returns (NftId nftId);
64
+ struct ReleaseInfo {
65
+ StateId state;
66
+ VersionPart version;
67
+ bytes32 salt;
68
+ address[] addresses;
69
+ string[] names;
70
+ ObjectType[] domains;
71
+ IServiceAuthorization auth;
72
+ Timestamp activatedAt;
73
+ Timestamp disabledAt;
74
+ }
22
75
 
23
- function registerObjectForInstance(
24
- NftId parentNftid,
25
- ObjectType objectType,
26
- address initialOwner,
27
- bytes memory data
28
- ) external returns (NftId nftId);
76
+ /// @dev Registers a registry contract for a specified chain.
77
+ /// Only one chain registry may be registered per chain
78
+ function registerRegistry(
79
+ NftId nftId,
80
+ uint256 chainId,
81
+ address chainRegistryAddress
82
+ ) external;
29
83
 
30
- function getServiceAddress(string memory serviceName, VersionPart majorVersion) external view returns (address serviceAddress);
84
+ /// @dev Register a service with using the provided domain and version.
85
+ /// The function returns a newly minted service NFT ID.
86
+ /// May only be used to register services.
87
+ function registerService(
88
+ ObjectInfo memory serviceInfo,
89
+ VersionPart serviceVersion,
90
+ ObjectType serviceDomain
91
+ ) external returns(NftId nftId);
31
92
 
32
- function getObjectCount() external view returns (uint256);
93
+ /// @dev Register an object with a known core type.
94
+ /// The function returns a newly minted object NFT ID.
95
+ /// May not be used to register services.
96
+ function register(ObjectInfo memory info) external returns (NftId nftId);
33
97
 
34
- function getNftId() external view returns (NftId nftId);
98
+ /// @dev Register an object with a custom type.
99
+ /// The function returns a newly minted object NFT ID.
100
+ /// This function is reserved for GIF releases > 3.
101
+ /// May not be used to register known core types.
102
+ function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
103
+
104
+ function getInitialVersion() external view returns (VersionPart);
105
+
106
+ function getNextVersion() external view returns (VersionPart);
107
+
108
+ function getLatestVersion() external view returns (VersionPart);
109
+
110
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory);
111
+
112
+ /// @dev Returns the number of supported chains.
113
+ function chainIds() external view returns (uint256);
114
+
115
+ /// @dev Returns the chain id at the specified index.
116
+ function getChainId(uint256 idx) external view returns (uint256);
117
+
118
+ /// @dev Returns the NFT ID of the registry for the specified chain.
119
+ function getRegistryNftId(uint256 chainId) external returns (NftId nftId);
120
+
121
+ function getObjectCount() external view returns (uint256);
35
122
 
36
- function getNftId(
37
- address objectAddress
38
- ) external view returns (NftId nftId);
123
+ function getNftIdForAddress(address objectAddress) external view returns (NftId nftId);
39
124
 
40
- function getObjectInfo(
41
- NftId nftId
42
- ) external view returns (ObjectInfo memory info);
125
+ function ownerOf(NftId nftId) external view returns (address);
43
126
 
44
- function getName(
45
- NftId nftId
46
- ) external view returns (string memory name);
127
+ function ownerOf(address contractAddress) external view returns (address);
47
128
 
48
- function getProtocolOwner() external view returns (address);
129
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory info);
49
130
 
50
- function getOwner(NftId nftId) external view returns (address ownerAddress);
131
+ /// @dev Returns the object info for the specified object address.
132
+ // MUST not be used with chain registry address (resides on different chan id)
133
+ function getObjectInfo(address object) external view returns (ObjectInfo memory info);
51
134
 
52
135
  function isRegistered(NftId nftId) external view returns (bool);
53
136
 
54
- function isRegistered(address objectAddress) external view returns (bool);
137
+ function isRegistered(address contractAddress) external view returns (bool);
138
+
139
+ function isRegisteredService(address contractAddress) external view returns (bool);
140
+
141
+ function isRegisteredComponent(address object) external view returns (bool);
142
+
143
+ function isActiveRelease(VersionPart version) external view returns (bool);
144
+
145
+ function getServiceAddress(
146
+ ObjectType serviceDomain,
147
+ VersionPart releaseVersion
148
+ ) external view returns (address serviceAddress);
149
+
150
+ function getProtocolNftId() external view returns (NftId protocolNftId);
151
+
152
+ function getNftId() external view returns (NftId nftId);
153
+
154
+ function getOwner() external view returns (address);
155
+
156
+ // TODO refactor the address getters below to contract getters
157
+ function getChainNftAddress() external view returns (address);
158
+
159
+ function getReleaseRegistryAddress() external view returns (address);
160
+
161
+ function getStakingAddress() external view returns (address);
162
+
163
+ function getTokenRegistryAddress() external view returns (address);
164
+
165
+ function getRegistryAdminAddress() external view returns (address);
55
166
 
56
- function getChainNft() external view returns (IChainNft);
57
- }
167
+ function getAuthority() external view returns (address);
168
+ }
@@ -0,0 +1,69 @@
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 "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {RoleId} from "../type/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 "../shared/IComponent.sol";
14
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
15
+
16
+
17
+ interface IRegistryService is
18
+ IService
19
+ {
20
+ error ErrorRegistryServiceNotRegistryOwner();
21
+
22
+ error ErrorRegistryServiceNotService(address notService);
23
+ error ErrorRegistryServiceNotInstance(address notInstance);
24
+ error ErrorRegistryServiceNotComponent(address notComponent);
25
+ error ErrorRegistryServiceNotProduct(address notProduct);
26
+ error ErrorRegistryServiceNotPool(address notPool);
27
+ error ErrorRegistryServiceNotDistribution(address notDistribution);
28
+
29
+ error ErrorRegistryServiceRegisterableAddressInvalid(IRegisterable registerable, address found);
30
+ error ErrorRegistryServiceRegisterableTypeInvalid(IRegisterable registerable, ObjectType expected, ObjectType found);
31
+ error ErrorRegistryServiceRegisterableOwnerInvalid(IRegisterable registerable, address expected, address found);
32
+ error ErrorRegistryServiceRegisterableOwnerZero(IRegisterable registerable);
33
+ error ErrorRegistryServiceRegisterableOwnerRegistered(IRegisterable registerable, address owner);
34
+ error ErrorRegistryServiceRegisterableSelfRegistration(IRegisterable registerable);
35
+
36
+ error ErrorRegistryServiceObjectAddressNotZero(ObjectType objectType);
37
+ error ErrorRegistryServiceObjectTypeInvalid(ObjectType expected, ObjectType found);
38
+ error ErrorRegistryServiceObjectOwnerRegistered(ObjectType objectType, address owner);
39
+ error ErrorRegistryServiceObjectOwnerZero(ObjectType objectType);
40
+
41
+ error ErrorRegistryServiceInvalidInitialOwner(address initialOwner);
42
+ error ErrorRegistryServiceInvalidAddress(address registerableAddress);
43
+
44
+ function registerStake(IRegistry.ObjectInfo memory info)
45
+ external returns(NftId nftId);
46
+
47
+ function registerInstance(IRegisterable instance, address owner)
48
+ external returns(IRegistry.ObjectInfo memory info);
49
+
50
+ function registerComponent(IComponent component, ObjectType objectType, address owner)
51
+ external returns(IRegistry.ObjectInfo memory info);
52
+
53
+ // function registerProduct(IComponent product, address owner)
54
+ // external returns(IRegistry.ObjectInfo memory info);
55
+
56
+ // function registerPool(IComponent pool, address owner)
57
+ // external returns(IRegistry.ObjectInfo memory info);
58
+
59
+ // function registerDistribution(IComponent distribution, address owner)
60
+ // external returns(IRegistry.ObjectInfo memory info);
61
+
62
+ function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
63
+
64
+ function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
65
+
66
+ function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
67
+
68
+ }
69
+
@@ -0,0 +1,7 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ interface ITransferInterceptor {
5
+ function nftMint(address to, uint256 tokenId) external;
6
+ function nftTransferFrom(address from, address to, uint256 tokenId) external;
7
+ }