@etherisc/gif-next 0.0.2-e0ff180-766 → 0.0.2-e14821a-976

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 (739) hide show
  1. package/README.md +153 -22
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1088 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +803 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1416 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +803 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +659 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1247 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +818 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → distribution/Distribution.sol/Distribution.json} +311 -328
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1835 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +943 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/{components/Component.sol/Component.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +276 -280
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +534 -340
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1487 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +818 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2056 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +818 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1442 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +818 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1174 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1650 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +818 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2588 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +818 -0
  66. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  67. package/artifacts/contracts/instance/{base/IKeyValueStore.sol/IKeyValueStore.json → BaseStore.sol/BaseStore.json} +87 -184
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  72. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +573 -1775
  74. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +530 -71
  76. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  77. package/artifacts/contracts/instance/Instance.sol/Instance.json +639 -2578
  78. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2284 -0
  80. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +850 -0
  82. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1866 -636
  84. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +571 -386
  86. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +216 -172
  88. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3039 -0
  90. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  92. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  93. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  94. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  96. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  98. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  100. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  102. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  103. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  104. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  105. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  106. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  108. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  109. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  110. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  111. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  112. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  113. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +960 -0
  115. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +823 -0
  117. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  118. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  119. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  120. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  122. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → oracle/IOracleService.sol/IOracleService.json} +328 -225
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  124. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +876 -0
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  126. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1055 -0
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  128. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +823 -0
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  130. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +357 -488
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  132. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +818 -0
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  134. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1464 -0
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  136. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +879 -0
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  138. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  140. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → pool/IPoolComponent.sol/IPoolComponent.json} +349 -284
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  142. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1397 -0
  143. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  144. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → pool/Pool.sol/Pool.json} +382 -418
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  146. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  148. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1807 -0
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  150. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +879 -0
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  152. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1062 -0
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  154. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +803 -0
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  156. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +492 -497
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  158. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +818 -0
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  160. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1546 -0
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  162. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +891 -0
  163. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  164. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IApplicationService.sol/IApplicationService.json} +334 -374
  165. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  166. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  168. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  169. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  170. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +185 -155
  171. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  172. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1006 -0
  173. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  174. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IRiskService.sol/IRiskService.json} +223 -164
  175. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  176. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1417 -0
  177. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  178. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  179. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  180. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +867 -0
  181. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  182. package/artifacts/contracts/product/PricingService.sol/PricingService.json +958 -0
  183. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  184. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +827 -0
  185. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  186. package/artifacts/contracts/product/Product.sol/Product.json +1120 -0
  187. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  188. package/artifacts/contracts/product/RiskService.sol/RiskService.json +886 -0
  189. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  190. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +787 -0
  191. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  192. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  193. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  194. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +499 -34
  195. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  196. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +315 -109
  197. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  198. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  199. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  201. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  202. package/artifacts/contracts/registry/Registry.sol/Registry.json +987 -131
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  204. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  205. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  206. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1087 -0
  207. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  208. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +415 -262
  209. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  210. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +227 -111
  211. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  212. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  213. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  214. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  215. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  216. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  217. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  218. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +696 -0
  219. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  220. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +360 -137
  221. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  222. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/Component.sol/Component.json} +289 -188
  223. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1577 -0
  225. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +875 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  234. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  235. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  236. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +153 -138
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  238. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IComponentService.sol/IComponentService.json} +584 -738
  239. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  240. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +697 -0
  241. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  242. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  243. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +38 -10
  245. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  247. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +163 -3
  249. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  250. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  251. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  252. package/artifacts/contracts/shared/IService.sol/IService.json +98 -5
  253. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  254. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +66 -0
  255. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  256. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +798 -0
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  258. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  260. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  262. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +57 -67
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  264. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +36 -73
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  266. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +160 -102
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  268. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  269. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  270. package/artifacts/contracts/shared/Service.sol/Service.json +110 -111
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  276. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  278. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2747 -0
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  280. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  281. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  282. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  283. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  284. package/artifacts/contracts/staking/Staking.sol/Staking.json +3188 -0
  285. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  286. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  288. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +860 -0
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  290. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  292. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1357 -0
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  294. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +779 -0
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  296. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  297. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  298. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  299. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  300. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  301. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  302. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  303. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  304. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  305. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  306. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  307. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  308. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  309. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  310. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  311. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  312. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  313. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  314. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  315. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  316. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  317. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  318. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  319. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  320. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  321. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  322. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  323. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  324. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  325. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  326. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  327. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  328. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  329. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  330. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  331. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  332. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  333. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  334. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  335. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  336. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +289 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  340. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  341. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  342. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  343. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  344. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  345. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  346. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  347. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  348. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  349. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  350. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  351. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  352. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  353. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  354. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  355. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  356. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +669 -0
  357. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  358. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  359. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  360. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  361. package/contracts/accounting/AccountingService.sol +274 -0
  362. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  363. package/contracts/accounting/IAccountingService.sol +47 -0
  364. package/contracts/authorization/AccessAdmin.sol +780 -0
  365. package/contracts/authorization/AccessAdminLib.sol +396 -0
  366. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  367. package/contracts/authorization/Authorization.sol +169 -0
  368. package/contracts/authorization/IAccess.sol +67 -0
  369. package/contracts/authorization/IAccessAdmin.sol +144 -0
  370. package/contracts/authorization/IAuthorization.sol +26 -0
  371. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  372. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  373. package/contracts/distribution/BasicDistribution.sol +140 -0
  374. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  375. package/contracts/distribution/Distribution.sol +245 -0
  376. package/contracts/distribution/DistributionService.sol +465 -0
  377. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  378. package/contracts/distribution/IDistributionComponent.sol +45 -0
  379. package/contracts/distribution/IDistributionService.sol +115 -0
  380. package/contracts/examples/fire/DamageLevel.sol +59 -0
  381. package/contracts/examples/fire/FirePool.sol +86 -0
  382. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  383. package/contracts/examples/fire/FireProduct.sol +433 -0
  384. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  385. package/contracts/examples/fire/FireUSD.sol +26 -0
  386. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  387. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  388. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  389. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  390. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  391. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  392. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  393. package/contracts/instance/BaseStore.sol +93 -0
  394. package/contracts/instance/BundleSet.sol +130 -0
  395. package/contracts/instance/IBaseStore.sol +37 -0
  396. package/contracts/instance/IInstance.sol +131 -73
  397. package/contracts/instance/IInstanceService.sol +86 -39
  398. package/contracts/instance/Instance.sol +248 -224
  399. package/contracts/instance/InstanceAdmin.sol +379 -0
  400. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  401. package/contracts/instance/InstanceReader.sol +513 -192
  402. package/contracts/instance/InstanceService.sol +432 -394
  403. package/contracts/instance/InstanceServiceManager.sol +14 -29
  404. package/contracts/instance/InstanceStore.sol +323 -0
  405. package/contracts/instance/ProductStore.sol +290 -0
  406. package/contracts/instance/RiskSet.sol +126 -0
  407. package/contracts/instance/TargetNames.sol +10 -0
  408. package/contracts/instance/base/BalanceStore.sol +121 -0
  409. package/contracts/instance/base/Cloneable.sol +28 -0
  410. package/contracts/instance/base/ObjectCounter.sol +20 -0
  411. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  412. package/contracts/instance/base/ObjectSet.sol +77 -0
  413. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  414. package/contracts/instance/module/IBundle.sol +9 -11
  415. package/contracts/instance/module/IComponents.sol +43 -24
  416. package/contracts/instance/module/IDistribution.sol +25 -12
  417. package/contracts/instance/module/IPolicy.sol +71 -38
  418. package/contracts/instance/module/IRisk.sol +6 -1
  419. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  420. package/contracts/oracle/BasicOracle.sol +44 -0
  421. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  422. package/contracts/oracle/IOracle.sol +41 -0
  423. package/contracts/oracle/IOracleComponent.sol +33 -0
  424. package/contracts/oracle/IOracleService.sol +66 -0
  425. package/contracts/oracle/Oracle.sol +152 -0
  426. package/contracts/oracle/OracleService.sol +310 -0
  427. package/contracts/oracle/OracleServiceManager.sol +39 -0
  428. package/contracts/pool/BasicPool.sol +161 -0
  429. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  430. package/contracts/pool/BundleService.sol +401 -0
  431. package/contracts/pool/BundleServiceManager.sol +39 -0
  432. package/contracts/pool/IBundleService.sol +116 -0
  433. package/contracts/pool/IPoolComponent.sol +62 -0
  434. package/contracts/pool/IPoolService.sol +167 -0
  435. package/contracts/pool/Pool.sol +331 -0
  436. package/contracts/pool/PoolLib.sol +341 -0
  437. package/contracts/pool/PoolService.sol +635 -0
  438. package/contracts/pool/PoolServiceManager.sol +39 -0
  439. package/contracts/product/ApplicationService.sol +343 -0
  440. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  441. package/contracts/product/BasicProduct.sol +48 -0
  442. package/contracts/product/BasicProductAuthorization.sol +63 -0
  443. package/contracts/product/ClaimService.sol +642 -0
  444. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  445. package/contracts/{instance/service → product}/IApplicationService.sol +41 -35
  446. package/contracts/product/IClaimService.sol +136 -0
  447. package/contracts/product/IPolicyService.sol +102 -0
  448. package/contracts/product/IPricingService.sol +40 -0
  449. package/contracts/product/IProductComponent.sol +62 -0
  450. package/contracts/product/IRiskService.sol +48 -0
  451. package/contracts/product/PolicyService.sol +680 -0
  452. package/contracts/product/PolicyServiceLib.sol +139 -0
  453. package/contracts/product/PolicyServiceManager.sol +39 -0
  454. package/contracts/product/PricingService.sol +318 -0
  455. package/contracts/product/PricingServiceManager.sol +39 -0
  456. package/contracts/product/Product.sol +491 -0
  457. package/contracts/product/RiskService.sol +189 -0
  458. package/contracts/product/RiskServiceManager.sol +39 -0
  459. package/contracts/registry/ChainNft.sol +79 -40
  460. package/contracts/registry/IRegistry.sol +104 -33
  461. package/contracts/registry/IRegistryService.sol +34 -40
  462. package/contracts/registry/IRelease.sol +29 -0
  463. package/contracts/registry/ITransferInterceptor.sol +1 -2
  464. package/contracts/registry/Registry.sol +469 -200
  465. package/contracts/registry/RegistryAdmin.sol +191 -0
  466. package/contracts/registry/RegistryAuthorization.sol +336 -0
  467. package/contracts/registry/RegistryService.sol +90 -131
  468. package/contracts/registry/RegistryServiceManager.sol +23 -32
  469. package/contracts/registry/ReleaseAdmin.sol +195 -0
  470. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  471. package/contracts/registry/ReleaseRegistry.sol +525 -0
  472. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  473. package/contracts/registry/TokenRegistry.sol +265 -64
  474. package/contracts/shared/Component.sol +210 -0
  475. package/contracts/shared/ComponentService.sol +705 -0
  476. package/contracts/shared/ComponentServiceManager.sol +38 -0
  477. package/contracts/shared/ContractLib.sol +312 -0
  478. package/contracts/shared/IComponent.sol +58 -0
  479. package/contracts/shared/IComponentService.sol +111 -0
  480. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  481. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  482. package/contracts/shared/INftOwnable.sol +6 -2
  483. package/contracts/shared/IPolicyHolder.sol +23 -14
  484. package/contracts/shared/IRegisterable.sol +22 -1
  485. package/contracts/shared/IRegistryLinked.sol +0 -1
  486. package/contracts/shared/IService.sol +12 -5
  487. package/contracts/shared/InitializableERC165.sol +49 -0
  488. package/contracts/shared/InstanceLinkedComponent.sol +192 -0
  489. package/contracts/shared/Lifecycle.sol +88 -0
  490. package/contracts/shared/NftIdSet.sol +65 -0
  491. package/contracts/shared/NftOwnable.sol +39 -30
  492. package/contracts/shared/PolicyHolder.sol +23 -41
  493. package/contracts/shared/Registerable.sol +54 -22
  494. package/contracts/shared/RegistryLinked.sol +11 -21
  495. package/contracts/shared/Service.sol +36 -41
  496. package/contracts/shared/TokenHandler.sol +322 -13
  497. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  498. package/contracts/staking/IStaking.sol +367 -0
  499. package/contracts/staking/IStakingService.sol +127 -0
  500. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  501. package/contracts/staking/Staking.sol +797 -0
  502. package/contracts/staking/StakingLib.sol +195 -0
  503. package/contracts/staking/StakingManager.sol +53 -0
  504. package/contracts/staking/StakingReader.sol +171 -0
  505. package/contracts/staking/StakingService.sol +320 -0
  506. package/contracts/staking/StakingServiceManager.sol +46 -0
  507. package/contracts/staking/StakingStore.sol +1368 -0
  508. package/contracts/staking/TargetHandler.sol +132 -0
  509. package/contracts/staking/TargetManagerLib.sol +234 -0
  510. package/contracts/{types → type}/AddressSet.sol +1 -1
  511. package/contracts/type/Amount.sol +154 -0
  512. package/contracts/{types → type}/Blocknumber.sol +36 -13
  513. package/contracts/type/ChainId.sol +101 -0
  514. package/contracts/{types → type}/ClaimId.sol +31 -3
  515. package/contracts/{types → type}/Fee.sol +28 -26
  516. package/contracts/{types → type}/Key32.sol +2 -2
  517. package/contracts/type/Key32Set.sol +62 -0
  518. package/contracts/{types → type}/NftId.sol +21 -16
  519. package/contracts/{types → type}/NftIdSet.sol +2 -2
  520. package/contracts/type/ObjectType.sol +307 -0
  521. package/contracts/type/PayoutId.sol +82 -0
  522. package/contracts/{types → type}/Referral.sol +2 -1
  523. package/contracts/type/RequestId.sol +75 -0
  524. package/contracts/type/RiskId.sol +75 -0
  525. package/contracts/type/RoleId.sol +180 -0
  526. package/contracts/type/Seconds.sol +120 -0
  527. package/contracts/type/Selector.sol +107 -0
  528. package/contracts/{types → type}/StateId.sol +47 -4
  529. package/contracts/type/String.sol +65 -0
  530. package/contracts/{types → type}/Timestamp.sol +23 -7
  531. package/contracts/type/UFixed.sol +263 -0
  532. package/contracts/{types → type}/Version.sol +58 -7
  533. package/contracts/{shared → upgradeability}/IVersionable.sol +4 -1
  534. package/contracts/{shared → upgradeability}/ProxyManager.sol +118 -41
  535. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +28 -0
  536. package/contracts/{shared → upgradeability}/Versionable.sol +9 -6
  537. package/package.json +12 -8
  538. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  539. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  540. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  541. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  542. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  543. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  544. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  545. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  546. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  547. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  548. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  549. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  550. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  551. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  552. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  553. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  554. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  555. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  556. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  557. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  558. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  559. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  560. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  561. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  562. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  563. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  564. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  565. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  566. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  567. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  568. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1039
  569. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  570. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
  571. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  572. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
  573. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
  575. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
  577. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  578. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  579. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  580. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  581. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  582. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  583. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  584. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  585. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  586. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -475
  587. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  588. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  589. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  590. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  591. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +0 -450
  592. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  593. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1092
  594. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  595. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  596. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  597. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  598. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  599. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  600. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  601. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  602. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  603. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  604. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  605. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  606. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  607. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  608. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  609. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  610. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  611. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  612. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  613. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  614. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  615. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  616. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  617. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  618. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  619. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  620. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  621. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  622. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  623. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  624. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  625. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  626. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  627. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  628. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  629. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  630. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  631. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  632. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  633. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  634. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  635. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  636. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  638. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  640. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  641. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  642. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  644. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  645. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  646. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  648. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  649. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  650. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  652. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  653. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  654. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  655. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  656. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  657. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  658. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  659. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  660. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  662. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  664. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  665. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  666. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  667. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  668. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  669. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  670. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  671. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  672. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  673. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  674. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  675. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  676. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  677. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  678. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  679. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  680. package/contracts/components/Component.sol +0 -253
  681. package/contracts/components/Distribution.sol +0 -280
  682. package/contracts/components/IComponent.sol +0 -76
  683. package/contracts/components/IDistributionComponent.sol +0 -71
  684. package/contracts/components/IPoolComponent.sol +0 -113
  685. package/contracts/components/IProductComponent.sol +0 -40
  686. package/contracts/components/Pool.sol +0 -303
  687. package/contracts/components/Product.sol +0 -293
  688. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  689. package/contracts/instance/BundleManager.sol +0 -127
  690. package/contracts/instance/Cloneable.sol +0 -51
  691. package/contracts/instance/InstanceAccessManager.sol +0 -527
  692. package/contracts/instance/ObjectManager.sol +0 -82
  693. package/contracts/instance/base/ComponentService.sol +0 -121
  694. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  695. package/contracts/instance/base/KeyValueStore.sol +0 -180
  696. package/contracts/instance/base/Lifecycle.sol +0 -109
  697. package/contracts/instance/module/IAccess.sol +0 -54
  698. package/contracts/instance/module/ISetup.sol +0 -33
  699. package/contracts/instance/module/ITreasury.sol +0 -23
  700. package/contracts/instance/service/ApplicationService.sol +0 -350
  701. package/contracts/instance/service/BundleService.sol +0 -431
  702. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  703. package/contracts/instance/service/ClaimService.sol +0 -151
  704. package/contracts/instance/service/DistributionService.sol +0 -435
  705. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  706. package/contracts/instance/service/IBundleService.sol +0 -93
  707. package/contracts/instance/service/IClaimService.sol +0 -61
  708. package/contracts/instance/service/IDistributionService.sol +0 -99
  709. package/contracts/instance/service/IPolicyService.sol +0 -72
  710. package/contracts/instance/service/IPoolService.sol +0 -99
  711. package/contracts/instance/service/IProductService.sol +0 -40
  712. package/contracts/instance/service/PolicyService.sol +0 -362
  713. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  714. package/contracts/instance/service/PoolService.sol +0 -303
  715. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  716. package/contracts/instance/service/ProductService.sol +0 -210
  717. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  718. package/contracts/registry/RegistryAccessManager.sol +0 -216
  719. package/contracts/registry/ReleaseManager.sol +0 -324
  720. package/contracts/shared/ContractDeployerLib.sol +0 -72
  721. package/contracts/shared/ERC165.sol +0 -27
  722. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  723. package/contracts/test/TestFee.sol +0 -25
  724. package/contracts/test/TestRegisterable.sol +0 -18
  725. package/contracts/test/TestRoleId.sol +0 -14
  726. package/contracts/test/TestService.sol +0 -25
  727. package/contracts/test/TestToken.sol +0 -26
  728. package/contracts/test/TestVersion.sol +0 -44
  729. package/contracts/test/TestVersionable.sol +0 -17
  730. package/contracts/types/Amount.sol +0 -60
  731. package/contracts/types/ChainId.sol +0 -38
  732. package/contracts/types/NumberId.sol +0 -52
  733. package/contracts/types/ObjectType.sol +0 -157
  734. package/contracts/types/PayoutId.sol +0 -54
  735. package/contracts/types/RiskId.sol +0 -43
  736. package/contracts/types/RoleId.sol +0 -97
  737. package/contracts/types/Seconds.sol +0 -54
  738. package/contracts/types/UFixed.sol +0 -326
  739. /package/contracts/{types → type}/DistributorType.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,34 @@ 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;
65
+ _totalMinted = 0;
63
66
  }
64
67
 
65
68
  /**
@@ -67,12 +70,16 @@ contract ChainNft is ERC721Enumerable {
67
70
  * not part of the IRegistry interface only needed for
68
71
  * initial registry setup (protocol and global registry objects)
69
72
  */
70
- function mint(address to, uint256 tokenId) external onlyRegistry {
71
- _totalMinted++;
72
- _safeMint(to, tokenId);
73
+ function mint(
74
+ address to,
75
+ uint256 tokenId
76
+ )
77
+ external
78
+ onlyRegistry()
79
+ {
80
+ _safeMintWithInterceptorAddress(to, tokenId, address(0));
73
81
  }
74
82
 
75
-
76
83
  /**
77
84
  * @dev mints the next token to register new objects
78
85
  * non-zero transferInterceptors are recorded and called during nft token transfers.
@@ -82,7 +89,11 @@ contract ChainNft is ERC721Enumerable {
82
89
  address to,
83
90
  address interceptor,
84
91
  string memory uri
85
- ) public onlyRegistry returns (uint256 tokenId) {
92
+ )
93
+ public
94
+ onlyRegistry()
95
+ returns (uint256 tokenId)
96
+ {
86
97
  tokenId = _getNextTokenId();
87
98
 
88
99
  if (interceptor != address(0)) {
@@ -93,24 +104,21 @@ contract ChainNft is ERC721Enumerable {
93
104
  _uri[tokenId] = uri;
94
105
  }
95
106
 
96
- _totalMinted++;
97
- _safeMint(to, tokenId);
98
-
99
- if(interceptor != address(0)) {
100
- ITransferInterceptor(interceptor).nftMint(to, tokenId);
101
- }
107
+ _safeMintWithInterceptorAddress(to, tokenId, interceptor);
102
108
  }
103
109
 
104
110
 
105
111
  /**
106
- * @dev amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id
107
- * this allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
112
+ * @dev Amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id.
113
+ * This allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
108
114
  */
109
- function transferFrom(address from, address to, uint256 tokenId) public override (ERC721, IERC721) {
115
+ function transferFrom(address from, address to, uint256 tokenId) public override (IERC721, ERC721) {
116
+ // default open zeppelin implementation of transferFrom
110
117
  super.transferFrom(from, to, tokenId);
111
118
 
112
119
  if (_interceptor[tokenId] != address(0)) {
113
- ITransferInterceptor(_interceptor[tokenId]).nftTransferFrom(from, to, tokenId);
120
+ address operator = msg.sender;
121
+ ITransferInterceptor(_interceptor[tokenId]).nftTransferFrom(from, to, tokenId, operator);
114
122
  }
115
123
  }
116
124
 
@@ -125,8 +133,8 @@ contract ChainNft is ERC721Enumerable {
125
133
  uint256 tokenId,
126
134
  string memory uri
127
135
  ) external onlyRegistry {
128
- if (bytes(uri).length == 0) { revert NftUriEmpty(); }
129
- if (bytes(_uri[tokenId]).length > 0) { revert NftUriAlreadySet(); }
136
+ if (bytes(uri).length == 0) { revert ErrorChainNftUriEmpty(); }
137
+ if (bytes(_uri[tokenId]).length > 0) { revert ErrorChainNftUriAlreadySet(); }
130
138
 
131
139
  _requireOwned(tokenId);
132
140
  _uri[tokenId] = uri;
@@ -192,19 +200,50 @@ contract ChainNft is ERC721Enumerable {
192
200
  * (42 * 10 ** 10 + 9876543210) * 100 + 10
193
201
  * (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
194
202
  */
195
- function calculateTokenId(uint256 idIndex) public view returns (uint256 id) {
196
- id =
197
- (idIndex * _chainIdMultiplier + _chainIdInt) *
198
- 100 +
199
- _chainIdDigits;
203
+ function calculateTokenId(uint256 idIndex, uint256 chainId) public view returns (uint256 id) {
204
+ if(chainId == block.chainid) {
205
+ return 100 * (idIndex * _chainIdMultiplier + chainId) + _chainIdDigits;
206
+ } else {
207
+ uint256 chainIdDigits = _calculateChainIdDigits(chainId);
208
+ return 100 * (idIndex * (10 ** chainIdDigits) + chainId) + chainIdDigits;
209
+ }
210
+ }
211
+
212
+ function calculateTokenId(uint256 idIndex) public view returns (uint256) {
213
+ return 100 * (idIndex * _chainIdMultiplier + block.chainid) + _chainIdDigits;
200
214
  }
201
215
 
202
216
  function getNextTokenId() external view returns (uint256) {
203
217
  return calculateTokenId(_idNext);
204
218
  }
205
219
 
220
+ // ---------------- private functions ----------------- //
221
+
206
222
  function _getNextTokenId() private returns (uint256 id) {
207
223
  id = calculateTokenId(_idNext);
208
224
  _idNext++;
209
225
  }
226
+
227
+ function _calculateChainIdDigits(uint256 chainId) private pure returns (uint256) {
228
+ uint256 num = chainId;
229
+ uint256 digits = 0;
230
+ while (num != 0) {
231
+ digits++;
232
+ num /= 10;
233
+ }
234
+ return digits;
235
+ }
236
+
237
+ function _safeMintWithInterceptorAddress(
238
+ address to,
239
+ uint256 tokenId,
240
+ address interceptor
241
+ )
242
+ private
243
+ {
244
+ _totalMinted++;
245
+ _safeMint(to, tokenId);
246
+
247
+ emit LogTokenInterceptorAddress(tokenId, interceptor);
248
+ }
210
249
  }
@@ -3,79 +3,137 @@ 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 {Timestamp} from "../types/Timestamp.sol";
6
+ import {IRelease} from "./IRelease.sol";
10
7
 
11
- interface IRegistry is IERC165 {
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ObjectType} from "../type/ObjectType.sol";
10
+ import {VersionPart} from "../type/Version.sol";
12
11
 
13
- event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
14
- event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
12
+ /// @title Chain Registry interface.
13
+ /// A chain registry holds all protocol relevant objects with basic metadata.
14
+ /// Registered objects include services, instances, products, pools, policies, bundles, stakes and more.
15
+ /// Registered objects are represented by NFTs.
16
+ /// When on mainnet registry is global and keeps arbitrary number of chain registries residing on different chain ids.
17
+ /// When not on mainnet registry keeps the only object residing on different chain id (on mainnet) - global registry.
18
+ interface IRegistry is
19
+ IERC165
20
+ {
15
21
 
16
- // registerService()
17
- error CallerNotReleaseManager();
18
- error ServiceAlreadyRegistered(address service);
22
+ event LogRegistryObjectRegistered(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
23
+ event LogRegistryServiceRegistered(VersionPart majorVersion, ObjectType domain);
24
+ event LogRegistryChainRegistryRegistered(NftId nftId, uint256 chainId, address chainRegistryAddress);
25
+
26
+ // initialize
27
+ error ErrorRegistryCallerNotDeployer();
19
28
 
20
29
  // register()
21
- error CallerNotRegistryService();
22
- error ServiceRegistration();
30
+ error ErrorRegistryObjectTypeNotSupported(ObjectType objectType);
31
+
32
+ // registerRegistry()
33
+ error ErrorRegistryNotOnMainnet(uint256 chainId);
34
+ error ErrorRegistryChainRegistryChainIdZero(NftId nftId);
35
+ error ErrorRegistryChainRegistryAddressZero(NftId nftId, uint256 chainId);
36
+ error ErrorRegistryChainRegistryNftIdInvalid(NftId nftId, uint256 chainId);
37
+ error ErrorRegistryChainRegistryAlreadyRegistered(NftId nftId, uint256 chainId);
38
+
39
+ // registerService()
40
+ error ErrorRegistryServiceAddressZero();
41
+ error ErrorRegistryServiceVersionZero(address service);
42
+
43
+ error ErrorRegistryServiceDomainZero(address service, VersionPart version);
44
+ error ErrorRegistryNotService(address service, ObjectType objectType);
45
+ error ErrorRegistryServiceParentNotRegistry(address service, VersionPart version, NftId parentNftId);
46
+ error ErrorRegistryServiceDomainAlreadyRegistered(address service, VersionPart version, ObjectType domain);
23
47
 
24
48
  // registerWithCustomTypes()
25
- error CoreTypeRegistration();
49
+ error ErrorRegistryCoreTypeRegistration();
26
50
 
27
51
  // _register()
28
- error ZeroParentAddress();
29
- error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
30
- error ContractAlreadyRegistered(address objectAddress);
52
+ error ErrorRegistryGlobalRegistryAsParent(address objectAddress, ObjectType objectType);
53
+ error ErrorRegistryTypeCombinationInvalid(address objectAddress, ObjectType objectType, ObjectType parentType);
54
+ error ErrorRegistryContractAlreadyRegistered(address objectAddress);
31
55
 
32
56
  struct ObjectInfo {
57
+ // slot 0
33
58
  NftId nftId;
34
59
  NftId parentNftId;
35
60
  ObjectType objectType;
36
61
  bool isInterceptor;
62
+ // slot 1
37
63
  address objectAddress;
64
+ // slot 2
38
65
  address initialOwner;
66
+ // slot 3
39
67
  bytes data;
40
- }// TODO delete nftId and initialOwner(if not used) from struct
41
- // TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
42
-
43
- struct ReleaseInfo {
44
- ObjectType[] domains;
45
- Timestamp createdAt;
46
- //Timestamp updatedAt;
47
68
  }
48
69
 
70
+ /// @dev Registers a registry contract for a specified chain.
71
+ /// Only one chain registry may be registered per chain
72
+ function registerRegistry(
73
+ NftId nftId,
74
+ uint256 chainId,
75
+ address chainRegistryAddress
76
+ ) external;
77
+
78
+ /// @dev Register a service with using the provided domain and version.
79
+ /// The function returns a newly minted service NFT ID.
80
+ /// May only be used to register services.
49
81
  function registerService(
50
82
  ObjectInfo memory serviceInfo,
51
83
  VersionPart serviceVersion,
52
84
  ObjectType serviceDomain
53
85
  ) external returns(NftId nftId);
54
86
 
87
+ /// @dev Register an object with a known core type.
88
+ /// The function returns a newly minted object NFT ID.
89
+ /// May not be used to register services.
55
90
  function register(ObjectInfo memory info) external returns (NftId nftId);
56
91
 
92
+ /// @dev Register an object with a custom type.
93
+ /// The function returns a newly minted object NFT ID.
94
+ /// This function is reserved for GIF releases > 3.
95
+ /// May not be used to register known core types.
57
96
  function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
58
97
 
59
- function getInitialVersion() external view returns (VersionPart);
98
+ function getInitialRelease() external view returns (VersionPart);
60
99
 
61
- function getNextVersion() external view returns (VersionPart);
100
+ function getNextRelease() external view returns (VersionPart);
62
101
 
63
- function getLatestVersion() external view returns (VersionPart);
102
+ function getLatestRelease() external view returns (VersionPart);
64
103
 
65
- function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory);
104
+ function getReleaseInfo(VersionPart release) external view returns (IRelease.ReleaseInfo memory);
66
105
 
67
- function getObjectCount() external view returns (uint256);
106
+ /// @dev Returns the number of supported chains.
107
+ function chainIds() external view returns (uint256);
68
108
 
69
- function getNftId() external view returns (NftId nftId);
109
+ /// @dev Returns the chain id at the specified index.
110
+ function getChainId(uint256 idx) external view returns (uint256);
111
+
112
+ /// @dev Returns the NFT ID of the registry for the specified chain.
113
+ function getRegistryNftId(uint256 chainId) external returns (NftId nftId);
70
114
 
71
- function getNftId(address objectAddress) external view returns (NftId nftId);
115
+ function getObjectCount() external view returns (uint256);
116
+
117
+ function getNftIdForAddress(address objectAddress) external view returns (NftId nftId);
72
118
 
73
119
  function ownerOf(NftId nftId) external view returns (address);
74
120
 
121
+ function isOwnerOf(NftId nftId, address expectedOwner) external view returns (bool);
122
+
75
123
  function ownerOf(address contractAddress) external view returns (address);
76
124
 
77
125
  function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory info);
78
126
 
127
+ function getParentNftId(NftId nftId) external view returns (NftId parentNftId);
128
+
129
+ function isObjectType(NftId nftId, ObjectType expectedObjectType) external view returns (bool);
130
+
131
+ function isObjectType(address contractAddress, ObjectType expectedObjectType) external view returns (bool);
132
+
133
+ function getObjectAddress(NftId nftId) external view returns (address objectAddress);
134
+
135
+ /// @dev Returns the object info for the specified object address.
136
+ // MUST not be used with chain registry address (resides on different chan id)
79
137
  function getObjectInfo(address object) external view returns (ObjectInfo memory info);
80
138
 
81
139
  function isRegistered(NftId nftId) external view returns (bool);
@@ -86,16 +144,29 @@ interface IRegistry is IERC165 {
86
144
 
87
145
  function isRegisteredComponent(address object) external view returns (bool);
88
146
 
89
- function isValidRelease(VersionPart version) external view returns (bool);
147
+ function isActiveRelease(VersionPart version) external view returns (bool);
90
148
 
91
149
  function getServiceAddress(
92
150
  ObjectType serviceDomain,
93
151
  VersionPart releaseVersion
94
152
  ) external view returns (address serviceAddress);
95
153
 
96
- function getReleaseManagerAddress() external view returns (address);
154
+ function getProtocolNftId() external view returns (NftId protocolNftId);
97
155
 
98
- function getChainNftAddress() external view returns (address);
156
+ function getNftId() external view returns (NftId nftId);
99
157
 
100
158
  function getOwner() external view returns (address);
159
+
160
+ // TODO refactor the address getters below to contract getters
161
+ function getChainNftAddress() external view returns (address);
162
+
163
+ function getReleaseRegistryAddress() external view returns (address);
164
+
165
+ function getStakingAddress() external view returns (address);
166
+
167
+ function getTokenRegistryAddress() external view returns (address);
168
+
169
+ function getRegistryAdminAddress() external view returns (address);
170
+
171
+ function getAuthority() external view returns (address);
101
172
  }
@@ -3,60 +3,53 @@ pragma solidity ^0.8.20;
3
3
 
4
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
18
  IService
17
- // TODO cleanup
18
- // IAccessManaged
19
19
  {
20
- error SelfRegistration();
21
- error NotRegistryOwner();
22
-
23
- error NotService();
24
- error NotInstance();
25
- error NotProduct();
26
- error NotPool();
27
- error NotDistribution();
28
-
29
- error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
30
- error NotRegisterableOwner(address expectedOwner);
31
- error RegisterableOwnerIsZero();
32
- error RegisterableOwnerIsRegistered();
33
- error InvalidInitialOwner(address initialOwner);
34
- error InvalidAddress(address registerableAddress);
35
-
36
- struct FunctionConfig
37
- {
38
- ObjectType serviceDomain;
39
- bytes4[] selectors;
40
- }
41
-
42
- function getFunctionConfigs()
43
- external
44
- pure
45
- returns(
46
- FunctionConfig[] memory config
47
- );
48
-
49
- // TODO used by service -> add owner arg
20
+ error ErrorRegistryServiceNotRegistryOwner();
21
+
22
+ error ErrorRegistryServiceNotService(address notService);
23
+ error ErrorRegistryServiceNotInstance(address notInstance);
24
+ error ErrorRegistryServiceNotProduct(address notProduct);
25
+ error ErrorRegistryServiceNotComponent(address notComponent);
26
+ error ErrorRegistryServiceNotProductLinkedComponent(address notProductLinkedComponent);
27
+
28
+ error ErrorRegistryServiceRegisterableAddressInvalid(IRegisterable registerable, address found);
29
+ error ErrorRegistryServiceRegisterableTypeInvalid(IRegisterable registerable, ObjectType expected, ObjectType found);
30
+ error ErrorRegistryServiceRegisterableOwnerInvalid(IRegisterable registerable, address expected, address found);
31
+ error ErrorRegistryServiceRegisterableOwnerZero(IRegisterable registerable);
32
+ error ErrorRegistryServiceRegisterableOwnerRegistered(IRegisterable registerable, address owner);
33
+ error ErrorRegistryServiceRegisterableSelfRegistration(IRegisterable registerable);
34
+
35
+ error ErrorRegistryServiceObjectAddressNotZero(ObjectType objectType);
36
+ error ErrorRegistryServiceObjectTypeInvalid(ObjectType expected, ObjectType found);
37
+ error ErrorRegistryServiceObjectOwnerRegistered(ObjectType objectType, address owner);
38
+ error ErrorRegistryServiceObjectOwnerZero(ObjectType objectType);
39
+
40
+ error ErrorRegistryServiceInvalidInitialOwner(address initialOwner);
41
+ error ErrorRegistryServiceInvalidAddress(address registerableAddress);
42
+
43
+ function registerStake(IRegistry.ObjectInfo memory info)
44
+ external returns(NftId nftId);
45
+
50
46
  function registerInstance(IRegisterable instance, address owner)
51
47
  external returns(IRegistry.ObjectInfo memory info);
52
48
 
53
49
  function registerProduct(IComponent product, address owner)
54
50
  external returns(IRegistry.ObjectInfo memory info);
55
51
 
56
- function registerPool(IComponent pool, address owner)
57
- external returns(IRegistry.ObjectInfo memory info);
58
-
59
- function registerDistribution(IComponent distribution, address owner)
52
+ function registerProductLinkedComponent(IComponent component, ObjectType objectType, address owner)
60
53
  external returns(IRegistry.ObjectInfo memory info);
61
54
 
62
55
  function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
@@ -64,5 +57,6 @@ interface IRegistryService is
64
57
  function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
65
58
 
66
59
  function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
60
+
67
61
  }
68
62
 
@@ -0,0 +1,29 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
5
+
6
+ import {StateId} from "../type/StateId.sol";
7
+ import {Timestamp} from "../type/Timestamp.sol";
8
+ import {VersionPart} from "../type/Version.sol";
9
+
10
+ /// @title Marks contracts that are linked to a specific GIF release version.
11
+ interface IRelease {
12
+
13
+ struct ReleaseInfo {
14
+ // slot 0
15
+ address releaseAdmin;
16
+ StateId state;
17
+ VersionPart version;
18
+ Timestamp activatedAt;
19
+ Timestamp disabledAt;
20
+ // slot 1
21
+ IServiceAuthorization auth;
22
+ // slot 2
23
+ bytes32 salt;
24
+ }
25
+
26
+ /// @dev Registers a registry contract for a specified chain.
27
+ /// Only one chain registry may be registered per chain
28
+ function getRelease() external view returns (VersionPart release);
29
+ }
@@ -2,6 +2,5 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  interface ITransferInterceptor {
5
- function nftMint(address to, uint256 tokenId) external;
6
- function nftTransferFrom(address from, address to, uint256 tokenId) external;
5
+ function nftTransferFrom(address from, address to, uint256 tokenId, address operator) external;
7
6
  }