@etherisc/gif-next 0.0.2-e2a57af-971 → 0.0.2-e31e2fd-778

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 (692) hide show
  1. package/README.md +59 -18
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1234 -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/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1013 -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 +1405 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +343 -286
  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 +237 -1565
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +369 -198
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +361 -2605
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1623 -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 +1 -1
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +876 -407
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +447 -418
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +348 -107
  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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  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 +1 -1
  75. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  76. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  78. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  79. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  82. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  83. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  84. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  86. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  88. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  90. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  91. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +310 -314
  92. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  94. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +871 -0
  96. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  97. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +927 -0
  98. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +710 -0
  100. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  101. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  102. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  103. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  104. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1367 -0
  106. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +802 -0
  108. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  109. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +457 -265
  110. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  111. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +347 -408
  112. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1198 -0
  114. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  115. package/artifacts/contracts/pool/Pool.sol/Pool.json +1034 -0
  116. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  117. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1474 -0
  118. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +726 -0
  120. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +737 -0
  122. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +698 -0
  124. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  125. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  126. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  127. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  128. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  129. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1346 -0
  130. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +814 -0
  132. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  133. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +216 -230
  134. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  135. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +886 -0
  136. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +364 -295
  138. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +270 -215
  140. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  141. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +363 -364
  142. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  143. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IRiskService.sol/IRiskService.json} +126 -167
  144. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  145. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1191 -0
  146. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +762 -0
  148. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  149. package/artifacts/contracts/product/PricingService.sol/PricingService.json +865 -0
  150. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +746 -0
  152. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  153. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → product/Product.sol/Product.json} +551 -245
  154. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  155. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  156. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  158. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  159. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  160. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  161. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +408 -22
  162. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +226 -267
  164. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  165. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  166. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  167. package/artifacts/contracts/registry/Registry.sol/Registry.json +808 -39
  168. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  169. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1858 -0
  170. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +422 -277
  172. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +333 -96
  174. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  175. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  176. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  177. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  178. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  179. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  180. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +349 -82
  182. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  183. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +247 -218
  184. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1573 -0
  186. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  187. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +794 -0
  188. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  189. package/artifacts/contracts/{components/IComponent.sol/IComponent.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +146 -169
  190. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  191. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  192. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  193. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/IComponent.sol/IComponent.json} +244 -242
  194. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  196. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  197. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +259 -207
  198. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  199. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  200. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  201. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  202. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  204. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  205. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  206. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -30
  208. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  209. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  210. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IService.sol/IService.json +84 -154
  212. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  213. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  214. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  215. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  216. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  217. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +793 -0
  218. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  219. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  220. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  221. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  222. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  223. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  224. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  225. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +58 -36
  226. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  227. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  228. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +43 -61
  230. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  231. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  232. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Service.sol/Service.json +102 -178
  234. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  235. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
  236. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  237. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  238. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  240. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  242. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  244. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  245. package/artifacts/contracts/staking/Staking.sol/Staking.json +1828 -0
  246. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  248. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +750 -0
  250. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  252. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1236 -0
  254. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
  256. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  258. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  260. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  261. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  277. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  292. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  294. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  296. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  298. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  300. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  302. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  304. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  306. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  308. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  310. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  311. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  312. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  313. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  314. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  315. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  316. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  317. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  318. package/contracts/authorization/AccessAdmin.sol +592 -0
  319. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  320. package/contracts/authorization/Authorization.sol +217 -0
  321. package/contracts/authorization/IAccess.sol +48 -0
  322. package/contracts/authorization/IAccessAdmin.sol +135 -0
  323. package/contracts/authorization/IAuthorization.sol +54 -0
  324. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  325. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  326. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  327. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  328. package/contracts/distribution/BasicDistribution.sol +138 -0
  329. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  330. package/contracts/distribution/Distribution.sol +295 -0
  331. package/contracts/distribution/DistributionService.sol +336 -0
  332. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  333. package/contracts/distribution/IDistributionComponent.sol +52 -0
  334. package/contracts/distribution/IDistributionService.sol +101 -0
  335. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  336. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  337. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  338. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  339. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +33 -32
  340. package/contracts/instance/IInstance.sol +43 -52
  341. package/contracts/instance/IInstanceService.sol +72 -21
  342. package/contracts/instance/Instance.sol +161 -201
  343. package/contracts/instance/InstanceAdmin.sol +285 -0
  344. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  345. package/contracts/instance/InstanceReader.sol +202 -65
  346. package/contracts/instance/InstanceService.sol +349 -325
  347. package/contracts/instance/InstanceServiceManager.sol +14 -29
  348. package/contracts/instance/InstanceStore.sol +287 -0
  349. package/contracts/instance/base/BalanceStore.sol +123 -0
  350. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  351. package/contracts/instance/base/ObjectCounter.sol +21 -0
  352. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  353. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +19 -24
  354. package/contracts/instance/module/IAccess.sol +19 -21
  355. package/contracts/instance/module/IBundle.sol +8 -8
  356. package/contracts/instance/module/IComponents.sol +46 -0
  357. package/contracts/instance/module/IDistribution.sol +6 -4
  358. package/contracts/instance/module/IPolicy.sol +58 -19
  359. package/contracts/instance/module/IRisk.sol +1 -1
  360. package/contracts/{test/TestToken.sol → mock/Dip.sol} +6 -6
  361. package/contracts/oracle/BasicOracle.sol +48 -0
  362. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  363. package/contracts/oracle/IOracle.sol +36 -0
  364. package/contracts/oracle/IOracleComponent.sol +33 -0
  365. package/contracts/oracle/IOracleService.sol +65 -0
  366. package/contracts/oracle/Oracle.sol +167 -0
  367. package/contracts/oracle/OracleService.sol +281 -0
  368. package/contracts/oracle/OracleServiceManager.sol +39 -0
  369. package/contracts/pool/BasicPool.sol +166 -0
  370. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  371. package/contracts/pool/BundleService.sol +438 -0
  372. package/contracts/pool/BundleServiceManager.sol +39 -0
  373. package/contracts/pool/IBundleService.sol +134 -0
  374. package/contracts/pool/IPoolComponent.sol +58 -0
  375. package/contracts/pool/IPoolService.sol +160 -0
  376. package/contracts/pool/Pool.sol +326 -0
  377. package/contracts/pool/PoolService.sol +508 -0
  378. package/contracts/pool/PoolServiceManager.sol +39 -0
  379. package/contracts/product/ApplicationService.sol +247 -0
  380. package/contracts/product/ApplicationServiceManager.sol +38 -0
  381. package/contracts/product/BasicProduct.sol +53 -0
  382. package/contracts/product/BasicProductAuthorization.sol +43 -0
  383. package/contracts/product/ClaimService.sol +536 -0
  384. package/contracts/product/ClaimServiceManager.sol +38 -0
  385. package/contracts/product/IApplicationService.sol +63 -0
  386. package/contracts/product/IClaimService.sol +122 -0
  387. package/contracts/product/IPolicyService.sol +75 -0
  388. package/contracts/product/IPricingService.sol +39 -0
  389. package/contracts/product/IProductComponent.sol +39 -0
  390. package/contracts/product/IRiskService.sol +33 -0
  391. package/contracts/product/PolicyService.sol +637 -0
  392. package/contracts/product/PolicyServiceManager.sol +39 -0
  393. package/contracts/product/PricingService.sol +300 -0
  394. package/contracts/product/PricingServiceManager.sol +39 -0
  395. package/contracts/product/Product.sol +425 -0
  396. package/contracts/product/RiskService.sol +96 -0
  397. package/contracts/product/RiskServiceManager.sol +39 -0
  398. package/contracts/registry/ChainNft.sol +80 -32
  399. package/contracts/registry/IRegistry.sol +95 -25
  400. package/contracts/registry/IRegistryService.sol +47 -43
  401. package/contracts/registry/ITransferInterceptor.sol +1 -0
  402. package/contracts/registry/Registry.sol +452 -202
  403. package/contracts/registry/RegistryAdmin.sol +464 -0
  404. package/contracts/registry/RegistryService.sol +105 -115
  405. package/contracts/registry/RegistryServiceManager.sol +24 -33
  406. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  407. package/contracts/registry/ReleaseRegistry.sol +491 -0
  408. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  409. package/contracts/registry/TokenRegistry.sol +263 -60
  410. package/contracts/shared/Component.sol +268 -0
  411. package/contracts/shared/ComponentService.sol +641 -0
  412. package/contracts/shared/ComponentServiceManager.sol +38 -0
  413. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  414. package/contracts/shared/ContractLib.sol +38 -0
  415. package/contracts/shared/IComponent.sol +70 -0
  416. package/contracts/shared/IComponentService.sol +108 -0
  417. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  418. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  419. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  420. package/contracts/shared/INftOwnable.sol +13 -12
  421. package/contracts/shared/IPolicyHolder.sol +35 -0
  422. package/contracts/shared/IRegisterable.sol +3 -3
  423. package/contracts/shared/IRegistryLinked.sol +11 -0
  424. package/contracts/shared/IService.sol +15 -6
  425. package/contracts/shared/InitializableCustom.sol +177 -0
  426. package/contracts/shared/InitializableERC165.sol +27 -0
  427. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  428. package/contracts/shared/KeyValueStore.sol +131 -0
  429. package/contracts/shared/Lifecycle.sol +77 -0
  430. package/contracts/shared/NftIdSet.sol +65 -0
  431. package/contracts/shared/NftOwnable.sol +59 -91
  432. package/contracts/shared/PolicyHolder.sol +58 -0
  433. package/contracts/shared/Registerable.sol +16 -27
  434. package/contracts/shared/RegistryLinked.sol +44 -0
  435. package/contracts/shared/Service.sol +58 -31
  436. package/contracts/shared/TokenHandler.sol +122 -10
  437. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  438. package/contracts/staking/IStaking.sol +168 -0
  439. package/contracts/staking/IStakingService.sol +160 -0
  440. package/contracts/staking/StakeManagerLib.sol +224 -0
  441. package/contracts/staking/Staking.sol +498 -0
  442. package/contracts/staking/StakingLifecycle.sol +23 -0
  443. package/contracts/staking/StakingManager.sol +52 -0
  444. package/contracts/staking/StakingReader.sol +183 -0
  445. package/contracts/staking/StakingService.sol +407 -0
  446. package/contracts/staking/StakingServiceManager.sol +44 -0
  447. package/contracts/staking/StakingStore.sol +605 -0
  448. package/contracts/staking/TargetManagerLib.sol +211 -0
  449. package/contracts/{types → type}/AddressSet.sol +1 -1
  450. package/contracts/type/Amount.sol +135 -0
  451. package/contracts/{types → type}/Blocknumber.sol +27 -3
  452. package/contracts/type/ClaimId.sol +75 -0
  453. package/contracts/{types → type}/DistributorType.sol +2 -2
  454. package/contracts/{types → type}/Fee.sol +33 -23
  455. package/contracts/{types → type}/NftId.sol +21 -15
  456. package/contracts/{types → type}/NftIdSet.sol +2 -2
  457. package/contracts/type/ObjectType.sol +275 -0
  458. package/contracts/type/PayoutId.sol +82 -0
  459. package/contracts/{types → type}/Referral.sol +6 -1
  460. package/contracts/type/RequestId.sol +75 -0
  461. package/contracts/{types → type}/RiskId.sol +1 -1
  462. package/contracts/type/RoleId.sol +174 -0
  463. package/contracts/type/Seconds.sol +101 -0
  464. package/contracts/type/Selector.sol +102 -0
  465. package/contracts/{types → type}/StateId.sol +35 -4
  466. package/contracts/type/String.sol +53 -0
  467. package/contracts/{types → type}/Timestamp.sol +34 -15
  468. package/contracts/{types → type}/UFixed.sol +35 -9
  469. package/contracts/{types → type}/Version.sol +5 -2
  470. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  471. package/contracts/upgradeability/ProxyManager.sol +231 -0
  472. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  473. package/contracts/upgradeability/Versionable.sol +59 -0
  474. package/package.json +10 -7
  475. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  476. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  477. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  478. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  479. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  480. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  481. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  482. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  485. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  487. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  489. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  491. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  493. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  494. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  495. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  497. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  499. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  501. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  503. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  506. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  508. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  510. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  512. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  513. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  514. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  515. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  516. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  517. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  518. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  519. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  520. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  521. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  522. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  523. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  524. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  525. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
  526. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  527. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  528. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  529. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  530. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  531. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  532. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  533. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  534. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  535. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  536. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1102
  539. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
  541. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
  543. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
  545. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  546. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  548. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  550. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  551. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
  552. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  553. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
  554. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  555. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
  556. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  557. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
  558. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  559. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
  560. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  561. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
  562. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  563. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  564. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  565. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  566. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  567. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  568. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  569. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  570. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  571. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  572. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  573. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -362
  574. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  575. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  576. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  577. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  578. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  579. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  580. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  581. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
  582. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  583. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  584. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  585. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
  586. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  587. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  588. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  589. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  590. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  591. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  592. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  593. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  594. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  595. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  596. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  598. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  600. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  602. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  604. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  605. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  606. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  608. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  609. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  610. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  612. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  614. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  616. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  618. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  620. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  623. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  624. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  625. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  627. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  628. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  629. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  631. package/contracts/components/Component.sol +0 -216
  632. package/contracts/components/Distribution.sol +0 -151
  633. package/contracts/components/IComponent.sol +0 -43
  634. package/contracts/components/IDistributionComponent.sol +0 -47
  635. package/contracts/components/IPoolComponent.sol +0 -60
  636. package/contracts/components/IProductComponent.sol +0 -39
  637. package/contracts/components/Pool.sol +0 -227
  638. package/contracts/components/Product.sol +0 -265
  639. package/contracts/experiment/cloning/Cloner.sol +0 -47
  640. package/contracts/experiment/errors/Require.sol +0 -38
  641. package/contracts/experiment/errors/Revert.sol +0 -44
  642. package/contracts/experiment/inheritance/A.sol +0 -53
  643. package/contracts/experiment/inheritance/B.sol +0 -28
  644. package/contracts/experiment/inheritance/C.sol +0 -34
  645. package/contracts/experiment/inheritance/IA.sol +0 -13
  646. package/contracts/experiment/inheritance/IB.sol +0 -10
  647. package/contracts/experiment/inheritance/IC.sol +0 -12
  648. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  649. package/contracts/experiment/statemachine/ISM.sol +0 -25
  650. package/contracts/experiment/statemachine/SM.sol +0 -57
  651. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  652. package/contracts/experiment/types/TypeA.sol +0 -47
  653. package/contracts/experiment/types/TypeB.sol +0 -29
  654. package/contracts/instance/InstanceAccessManager.sol +0 -298
  655. package/contracts/instance/base/ComponentService.sol +0 -134
  656. package/contracts/instance/base/KeyValueStore.sol +0 -172
  657. package/contracts/instance/base/Lifecycle.sol +0 -100
  658. package/contracts/instance/module/ISetup.sol +0 -46
  659. package/contracts/instance/module/ITreasury.sol +0 -23
  660. package/contracts/instance/service/BundleService.sol +0 -293
  661. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  662. package/contracts/instance/service/DistributionService.sol +0 -106
  663. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  664. package/contracts/instance/service/IBundleService.sol +0 -44
  665. package/contracts/instance/service/IDistributionService.sol +0 -12
  666. package/contracts/instance/service/IPolicyService.sol +0 -94
  667. package/contracts/instance/service/IPoolService.sol +0 -20
  668. package/contracts/instance/service/IProductService.sol +0 -40
  669. package/contracts/instance/service/PolicyService.sol +0 -538
  670. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  671. package/contracts/instance/service/PoolService.sol +0 -110
  672. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  673. package/contracts/instance/service/ProductService.sol +0 -234
  674. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  675. package/contracts/registry/RegistryAccessManager.sol +0 -216
  676. package/contracts/registry/ReleaseManager.sol +0 -332
  677. package/contracts/shared/ContractDeployerLib.sol +0 -72
  678. package/contracts/shared/ERC165.sol +0 -25
  679. package/contracts/shared/ProxyManager.sol +0 -94
  680. package/contracts/shared/Versionable.sol +0 -147
  681. package/contracts/test/TestFee.sol +0 -25
  682. package/contracts/test/TestRegisterable.sol +0 -18
  683. package/contracts/test/TestRoleId.sol +0 -14
  684. package/contracts/test/TestService.sol +0 -25
  685. package/contracts/test/TestVersion.sol +0 -44
  686. package/contracts/test/TestVersionable.sol +0 -17
  687. package/contracts/test/Usdc.sol +0 -26
  688. package/contracts/types/ChainId.sol +0 -38
  689. package/contracts/types/NumberId.sol +0 -52
  690. package/contracts/types/ObjectType.sol +0 -152
  691. package/contracts/types/RoleId.sol +0 -90
  692. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -8,6 +8,8 @@ import {ITransferInterceptor} from "./ITransferInterceptor.sol";
8
8
 
9
9
  contract ChainNft is ERC721Enumerable {
10
10
 
11
+ event LogTokenInterceptorAddress(uint256 tokenId, address interceptor);
12
+
11
13
  // constants
12
14
  string public constant NAME = "Dezentralized Insurance Protocol NFT";
13
15
  string public constant SYMBOL = "DIPNFT";
@@ -16,10 +18,10 @@ contract ChainNft is ERC721Enumerable {
16
18
  uint256 public constant GLOBAL_REGISTRY_ID = 2101;
17
19
 
18
20
  // custom errors
19
- error CallerNotRegistry(address caller);
20
- error RegistryAddressZero();
21
- error NftUriEmpty();
22
- error NftUriAlreadySet();
21
+ error ErrorChainNftCallerNotRegistry(address caller);
22
+ error ErrorChainNftRegistryAddressZero();
23
+ error ErrorChainNftUriEmpty();
24
+ error ErrorChainNftUriAlreadySet();
23
25
 
24
26
  // contract state
25
27
 
@@ -33,33 +35,33 @@ contract ChainNft is ERC721Enumerable {
33
35
  address private _registry;
34
36
 
35
37
  // only used for _getNextTokenId
36
- uint256 internal _chainIdInt;
37
38
  uint256 internal _chainIdDigits;
38
39
  uint256 internal _chainIdMultiplier;
39
40
  uint256 internal _idNext;
40
41
  uint256 internal _totalMinted;
41
42
 
42
43
  modifier onlyRegistry() {
43
- if (msg.sender != _registry) { revert CallerNotRegistry(msg.sender); }
44
+ if (msg.sender != _registry) { revert ErrorChainNftCallerNotRegistry(msg.sender); }
44
45
  _;
45
46
  }
46
47
 
47
- constructor(address registry) ERC721(NAME, SYMBOL) {
48
- if (registry == address(0)) { revert RegistryAddressZero(); }
48
+ constructor(address registry)
49
+ ERC721(NAME, SYMBOL)
50
+ {
51
+ if (registry == address(0)) { revert ErrorChainNftRegistryAddressZero(); }
49
52
 
53
+ // NFT contract is deployed by the registry
50
54
  _registry = registry;
51
- _chainIdInt = block.chainid;
52
- _chainIdDigits = 0;
53
-
54
- // count digis
55
- uint256 num = _chainIdInt;
56
- while (num != 0) {
57
- _chainIdDigits++;
58
- num /= 10;
59
- }
60
55
 
56
+ _chainIdDigits = _calculateChainIdDigits(block.chainid);
61
57
  _chainIdMultiplier = 10 ** _chainIdDigits;
62
- _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;
63
65
  }
64
66
 
65
67
  /**
@@ -67,12 +69,16 @@ contract ChainNft is ERC721Enumerable {
67
69
  * not part of the IRegistry interface only needed for
68
70
  * initial registry setup (protocol and global registry objects)
69
71
  */
70
- function mint(address to, uint256 tokenId) external onlyRegistry {
71
- _totalMinted++;
72
- _safeMint(to, tokenId);
72
+ function mint(
73
+ address to,
74
+ uint256 tokenId
75
+ )
76
+ external
77
+ onlyRegistry()
78
+ {
79
+ _safeMintWithInterceptorAddress(to, tokenId, address(0));
73
80
  }
74
81
 
75
-
76
82
  /**
77
83
  * @dev mints the next token to register new objects
78
84
  * non-zero transferInterceptors are recorded and called during nft token transfers.
@@ -82,7 +88,11 @@ contract ChainNft is ERC721Enumerable {
82
88
  address to,
83
89
  address interceptor,
84
90
  string memory uri
85
- ) public onlyRegistry returns (uint256 tokenId) {
91
+ )
92
+ public
93
+ onlyRegistry()
94
+ returns (uint256 tokenId)
95
+ {
86
96
  tokenId = _getNextTokenId();
87
97
 
88
98
  if (interceptor != address(0)) {
@@ -93,8 +103,11 @@ contract ChainNft is ERC721Enumerable {
93
103
  _uri[tokenId] = uri;
94
104
  }
95
105
 
96
- _totalMinted++;
97
- _safeMint(to, tokenId);
106
+ _safeMintWithInterceptorAddress(to, tokenId, interceptor);
107
+
108
+ if(interceptor != address(0)) {
109
+ ITransferInterceptor(interceptor).nftMint(to, tokenId);
110
+ }
98
111
  }
99
112
 
100
113
 
@@ -121,8 +134,8 @@ contract ChainNft is ERC721Enumerable {
121
134
  uint256 tokenId,
122
135
  string memory uri
123
136
  ) external onlyRegistry {
124
- if (bytes(uri).length == 0) { revert NftUriEmpty(); }
125
- if (bytes(_uri[tokenId]).length > 0) { revert NftUriAlreadySet(); }
137
+ if (bytes(uri).length == 0) { revert ErrorChainNftUriEmpty(); }
138
+ if (bytes(_uri[tokenId]).length > 0) { revert ErrorChainNftUriAlreadySet(); }
126
139
 
127
140
  _requireOwned(tokenId);
128
141
  _uri[tokenId] = uri;
@@ -188,15 +201,50 @@ contract ChainNft is ERC721Enumerable {
188
201
  * (42 * 10 ** 10 + 9876543210) * 100 + 10
189
202
  * (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
190
203
  */
191
- function calculateTokenId(uint256 idIndex) public view returns (uint256 id) {
192
- id =
193
- (idIndex * _chainIdMultiplier + _chainIdInt) *
194
- 100 +
195
- _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
+ }
196
211
  }
197
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
+
198
223
  function _getNextTokenId() private returns (uint256 id) {
199
224
  id = calculateTokenId(_idNext);
200
225
  _idNext++;
201
226
  }
227
+
228
+ function _calculateChainIdDigits(uint256 chainId) private pure returns (uint256) {
229
+ uint256 num = chainId;
230
+ uint256 digits = 0;
231
+ while (num != 0) {
232
+ digits++;
233
+ num /= 10;
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);
249
+ }
202
250
  }
@@ -3,32 +3,53 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
- import {ChainNft} from "./ChainNft.sol";
7
- import {NftId} from "../types/NftId.sol";
8
- import {ObjectType} from "../types/ObjectType.sol";
9
- import {VersionPart} from "../types/Version.sol";
10
- import {Timestamp} from "../types/Timestamp.sol";
11
-
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";
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.
12
20
  interface IRegistry is IERC165 {
13
21
 
14
22
  event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
15
23
  event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
24
+ event LogChainRegistryRegistration(NftId nftId, uint256 chainId, address chainRegistryAddress);
16
25
 
17
- // registerService()
18
- error CallerNotReleaseManager();
19
- error ServiceAlreadyRegistered(address service);
26
+ // initialize
27
+ error ErrorRegistryCallerNotDeployer();
20
28
 
21
- // register()
22
- error CallerNotRegistryService();
23
- error ServiceRegistration();
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);
24
45
 
25
46
  // registerWithCustomTypes()
26
- error CoreTypeRegistration();
47
+ error ErrorRegistryCoreTypeRegistration();
27
48
 
28
49
  // _register()
29
- error ZeroParentAddress();
30
- error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
31
- error ContractAlreadyRegistered(address objectAddress);
50
+ error ErrorRegistryGlobalRegistryAsParent(address objectAddress, ObjectType objectType);
51
+ error ErrorRegistryTypesCombinationInvalid(address objectAddress, ObjectType objectType, ObjectType parentType);
52
+ error ErrorRegistryContractAlreadyRegistered(address objectAddress);
32
53
 
33
54
  struct ObjectInfo {
34
55
  NftId nftId;
@@ -38,23 +59,46 @@ interface IRegistry is IERC165 {
38
59
  address objectAddress;
39
60
  address initialOwner;
40
61
  bytes data;
41
- }// TODO delete nftId and initialOwner(if not used) from struct
42
- // TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
62
+ }
43
63
 
44
64
  struct ReleaseInfo {
65
+ StateId state;
66
+ VersionPart version;
67
+ bytes32 salt;
68
+ address[] addresses;
69
+ string[] names;
45
70
  ObjectType[] domains;
46
- Timestamp createdAt;
47
- //Timestamp updatedAt;
71
+ IServiceAuthorization auth;
72
+ Timestamp activatedAt;
73
+ Timestamp disabledAt;
48
74
  }
49
75
 
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;
83
+
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.
50
87
  function registerService(
51
88
  ObjectInfo memory serviceInfo,
52
89
  VersionPart serviceVersion,
53
90
  ObjectType serviceDomain
54
91
  ) external returns(NftId nftId);
55
92
 
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.
56
96
  function register(ObjectInfo memory info) external returns (NftId nftId);
57
97
 
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.
58
102
  function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
59
103
 
60
104
  function getInitialVersion() external view returns (VersionPart);
@@ -65,11 +109,18 @@ interface IRegistry is IERC165 {
65
109
 
66
110
  function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory);
67
111
 
68
- function getObjectCount() external view returns (uint256);
112
+ /// @dev Returns the number of supported chains.
113
+ function chainIds() external view returns (uint256);
69
114
 
70
- function getNftId() external view returns (NftId nftId);
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);
71
122
 
72
- function getNftId(address objectAddress) external view returns (NftId nftId);
123
+ function getNftIdForAddress(address objectAddress) external view returns (NftId nftId);
73
124
 
74
125
  function ownerOf(NftId nftId) external view returns (address);
75
126
 
@@ -77,6 +128,8 @@ interface IRegistry is IERC165 {
77
128
 
78
129
  function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory info);
79
130
 
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)
80
133
  function getObjectInfo(address object) external view returns (ObjectInfo memory info);
81
134
 
82
135
  function isRegistered(NftId nftId) external view returns (bool);
@@ -85,14 +138,31 @@ interface IRegistry is IERC165 {
85
138
 
86
139
  function isRegisteredService(address contractAddress) external view returns (bool);
87
140
 
88
- function isValidRelease(VersionPart version) external view returns (bool);
141
+ function isRegisteredComponent(address object) external view returns (bool);
142
+
143
+ function isActiveRelease(VersionPart version) external view returns (bool);
89
144
 
90
145
  function getServiceAddress(
91
146
  ObjectType serviceDomain,
92
147
  VersionPart releaseVersion
93
148
  ) external view returns (address serviceAddress);
94
149
 
95
- function getChainNft() external view returns (ChainNft);
150
+ function getProtocolNftId() external view returns (NftId protocolNftId);
151
+
152
+ function getNftId() external view returns (NftId nftId);
96
153
 
97
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);
166
+
167
+ function getAuthority() external view returns (address);
98
168
  }
@@ -1,65 +1,69 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
4
+ // import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
- import {NftId} from "../types/NftId.sol";
7
- import {ObjectType} from "../types/ObjectType.sol";
8
- import {RoleId} from "../types/RoleId.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {RoleId} from "../type/RoleId.sol";
9
9
  import {IService} from "../shared/IService.sol";
10
10
  import {IRegistry} from "./IRegistry.sol";
11
11
 
12
12
  import {IRegisterable} from "../shared/IRegisterable.sol";
13
- import {IComponent} from "../components/IComponent.sol";
13
+ import {IComponent} from "../shared/IComponent.sol";
14
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
15
+
14
16
 
15
17
  interface IRegistryService is
16
- IService,
17
- IAccessManaged
18
+ IService
18
19
  {
19
- error SelfRegistration();
20
- error NotRegistryOwner();
21
-
22
- error NotService();
23
- error NotInstance();
24
- error NotProduct();
25
- error NotPool();
26
- error NotDistribution();
27
-
28
- error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
29
- error NotRegisterableOwner(address expectedOwner);
30
- error RegisterableOwnerIsZero();
31
- error RegisterableOwnerIsRegistered();
32
- error InvalidInitialOwner(address initialOwner);
33
- error InvalidAddress(address registerableAddress);
34
-
35
- struct FunctionConfig
36
- {
37
- ObjectType serviceDomain;
38
- bytes4 selector;
39
- }
40
-
41
- function getFunctionConfigs()
42
- external
43
- pure
44
- returns(
45
- FunctionConfig[] memory config
46
- );
47
-
48
- // TODO used by service -> add owner arg
49
- function registerInstance(IRegisterable instance, address owner)
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)
50
48
  external returns(IRegistry.ObjectInfo memory info);
51
49
 
52
- function registerProduct(IComponent product, address owner)
50
+ function registerComponent(IComponent component, ObjectType objectType, address owner)
53
51
  external returns(IRegistry.ObjectInfo memory info);
54
52
 
55
- function registerPool(IComponent pool, address owner)
56
- external returns(IRegistry.ObjectInfo memory info);
53
+ // function registerProduct(IComponent product, address owner)
54
+ // external returns(IRegistry.ObjectInfo memory info);
57
55
 
58
- function registerDistribution(IComponent distribution, address owner)
59
- external returns(IRegistry.ObjectInfo memory info);
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);
60
63
 
61
64
  function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
62
65
 
63
66
  function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
67
+
64
68
  }
65
69
 
@@ -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
  }