@etherisc/gif-next 0.0.2-b1fb5f9 → 0.0.2-b2070b1-995

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 (696) hide show
  1. package/README.md +477 -21
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -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 +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/access → authorization}/IAccess.sol/IAccess.json +1 -1
  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 +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +949 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +930 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +848 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1284 -0
  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 +1484 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -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/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  53. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1208 -0
  54. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  57. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1476 -0
  58. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +805 -0
  60. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  61. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2609 -0
  62. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +805 -0
  64. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  66. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  67. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  68. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  69. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  71. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  81. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  82. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  83. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
  84. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  85. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  86. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  88. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  89. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +722 -449
  90. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +1092 -0
  92. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  93. package/artifacts/contracts/instance/Instance.sol/Instance.json +800 -530
  94. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  95. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2284 -0
  96. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  97. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
  98. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  99. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2740 -0
  100. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1338 -0
  102. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +772 -0
  104. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  105. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3378 -0
  106. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  107. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +1539 -0
  108. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  109. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  110. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  111. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  112. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  113. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  114. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  115. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  116. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  117. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  118. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  120. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  121. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  122. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  123. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  124. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  125. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  126. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  127. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  128. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  129. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  130. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  131. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  132. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  133. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  134. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  135. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  136. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  137. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +805 -0
  138. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  139. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  140. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  141. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  142. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  143. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  144. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  145. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
  146. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  147. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  148. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  150. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  151. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  152. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  154. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  155. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  156. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  158. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  159. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  160. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  161. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +905 -0
  162. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  163. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  164. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  165. package/artifacts/contracts/pool/Pool.sol/Pool.json +1025 -0
  166. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  167. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  168. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  169. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  170. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  171. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  172. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  173. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  174. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  176. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  177. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  178. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  179. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  180. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  181. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  182. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  184. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  185. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +804 -0
  186. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  187. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  188. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  189. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  190. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  191. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +652 -0
  192. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  193. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1016 -0
  194. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  195. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +665 -0
  196. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  197. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  198. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  199. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  200. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  201. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  202. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  203. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  204. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  205. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  206. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  207. package/artifacts/contracts/product/Product.sol/Product.json +1117 -0
  208. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  209. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  210. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  211. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  212. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  213. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +295 -2
  214. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  215. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1055 -113
  216. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  217. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1072 -0
  218. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  219. package/artifacts/contracts/{instance/component/IComponent.sol/IInstanceLinked.json → registry/IRelease.sol/IRelease.json} +6 -6
  220. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  221. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  222. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  223. package/artifacts/contracts/registry/Registry.sol/Registry.json +1543 -176
  224. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  225. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  226. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  227. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  228. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  229. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1298 -0
  230. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  231. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +773 -0
  232. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  233. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  234. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  236. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  237. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  238. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  239. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  240. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  241. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +721 -0
  242. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  243. package/artifacts/contracts/shared/Component.sol/Component.json +705 -0
  244. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  245. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  246. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  247. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  248. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  249. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  250. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  251. package/artifacts/contracts/{registry/IRegistry.sol/IOwnable.json → shared/ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  252. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  253. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/ContractLib.sol/ITargetHelper.json} +4 -9
  254. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  255. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  256. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  257. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +630 -0
  258. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  259. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  260. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  261. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +707 -0
  262. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  263. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +547 -0
  264. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  265. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +146 -0
  266. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  267. package/artifacts/contracts/{registry/IRegistry.sol/IRegisterable.json → shared/INftOwnable.sol/INftOwnable.json} +72 -72
  268. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  269. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  270. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  271. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → shared/IRegisterable.sol/IRegisterable.json} +179 -158
  272. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  273. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +5 -19
  274. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  275. package/artifacts/contracts/shared/IService.sol/IService.json +428 -0
  276. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  277. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  278. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  279. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +795 -0
  280. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  281. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +575 -0
  282. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  283. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  284. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  285. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  286. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  287. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +228 -0
  288. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  289. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  290. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  291. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +397 -0
  292. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  293. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  294. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  295. package/artifacts/contracts/shared/Service.sol/Service.json +482 -0
  296. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  297. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  298. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  299. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  300. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  301. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  302. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  303. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2757 -0
  304. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  305. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  306. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  307. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  308. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  309. package/artifacts/contracts/staking/Staking.sol/Staking.json +3185 -0
  310. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  311. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  312. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  313. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +847 -0
  314. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  315. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  316. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  317. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  318. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  319. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  320. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  321. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  322. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  323. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  324. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  325. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  326. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  327. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  328. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  330. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  332. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  334. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  336. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  338. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  340. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  342. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  343. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  344. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  346. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  347. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  348. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +238 -0
  350. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  352. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +161 -0
  354. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  355. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  356. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.dbg.json +4 -0
  357. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.json +33 -0
  358. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  359. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  360. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  361. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  362. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  363. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +308 -0
  364. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  365. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  366. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  367. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  368. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  369. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  370. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  371. package/artifacts/contracts/type/String.sol/StrLib.json +199 -0
  372. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  373. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +344 -0
  374. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  375. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  376. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  377. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  378. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  379. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  380. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  381. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  382. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  383. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  384. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  385. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  386. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  387. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  388. package/contracts/accounting/AccountingService.sol +274 -0
  389. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  390. package/contracts/accounting/IAccountingService.sol +47 -0
  391. package/contracts/authorization/AccessAdmin.sol +780 -0
  392. package/contracts/authorization/AccessAdminLib.sol +396 -0
  393. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  394. package/contracts/authorization/Authorization.sol +169 -0
  395. package/contracts/authorization/IAccess.sol +67 -0
  396. package/contracts/authorization/IAccessAdmin.sol +144 -0
  397. package/contracts/authorization/IAuthorization.sol +26 -0
  398. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  399. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  400. package/contracts/distribution/BasicDistribution.sol +141 -0
  401. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  402. package/contracts/distribution/Distribution.sol +247 -0
  403. package/contracts/distribution/DistributionService.sol +448 -0
  404. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  405. package/contracts/distribution/IDistributionComponent.sol +45 -0
  406. package/contracts/distribution/IDistributionService.sol +115 -0
  407. package/contracts/examples/fire/DamageLevel.sol +59 -0
  408. package/contracts/examples/fire/FirePool.sol +86 -0
  409. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  410. package/contracts/examples/fire/FireProduct.sol +433 -0
  411. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  412. package/contracts/examples/fire/FireUSD.sol +26 -0
  413. package/contracts/examples/flight/FlightOracle.sol +167 -0
  414. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  415. package/contracts/examples/flight/FlightPool.sol +89 -0
  416. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  417. package/contracts/examples/flight/FlightProduct.sol +728 -0
  418. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  419. package/contracts/examples/flight/FlightUSD.sol +26 -0
  420. package/contracts/examples/flight/originalV1.sol +396 -0
  421. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  422. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  423. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  424. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  425. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  426. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  427. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  428. package/contracts/instance/BaseStore.sol +93 -0
  429. package/contracts/instance/BundleSet.sol +130 -0
  430. package/contracts/instance/IBaseStore.sol +37 -0
  431. package/contracts/instance/IInstance.sol +155 -17
  432. package/contracts/instance/IInstanceService.sol +119 -0
  433. package/contracts/instance/Instance.sol +335 -48
  434. package/contracts/instance/InstanceAdmin.sol +379 -0
  435. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  436. package/contracts/instance/InstanceReader.sol +656 -0
  437. package/contracts/instance/InstanceService.sol +514 -0
  438. package/contracts/instance/InstanceServiceManager.sol +39 -0
  439. package/contracts/instance/InstanceStore.sol +268 -0
  440. package/contracts/instance/ProductStore.sol +119 -0
  441. package/contracts/instance/RiskSet.sol +126 -0
  442. package/contracts/instance/TargetNames.sol +10 -0
  443. package/contracts/instance/base/BalanceStore.sol +121 -0
  444. package/contracts/instance/base/Cloneable.sol +28 -0
  445. package/contracts/instance/base/ObjectCounter.sol +20 -0
  446. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  447. package/contracts/instance/base/ObjectSet.sol +77 -0
  448. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  449. package/contracts/instance/module/IBundle.sol +21 -0
  450. package/contracts/instance/module/IComponents.sol +62 -0
  451. package/contracts/instance/module/IDistribution.sol +54 -0
  452. package/contracts/instance/module/IPolicy.sol +105 -0
  453. package/contracts/instance/module/IRisk.sol +16 -0
  454. package/contracts/mock/Dip.sol +26 -0
  455. package/contracts/oracle/BasicOracle.sol +45 -0
  456. package/contracts/oracle/BasicOracleAuthorization.sol +52 -0
  457. package/contracts/oracle/IOracle.sol +41 -0
  458. package/contracts/oracle/IOracleComponent.sol +33 -0
  459. package/contracts/oracle/IOracleService.sol +66 -0
  460. package/contracts/oracle/Oracle.sol +154 -0
  461. package/contracts/oracle/OracleService.sol +310 -0
  462. package/contracts/oracle/OracleServiceManager.sol +39 -0
  463. package/contracts/pool/BasicPool.sol +162 -0
  464. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  465. package/contracts/pool/BundleService.sol +386 -0
  466. package/contracts/pool/BundleServiceManager.sol +39 -0
  467. package/contracts/pool/IBundleService.sol +116 -0
  468. package/contracts/pool/IPoolComponent.sol +62 -0
  469. package/contracts/pool/IPoolService.sol +170 -0
  470. package/contracts/pool/Pool.sol +333 -0
  471. package/contracts/pool/PoolLib.sol +341 -0
  472. package/contracts/pool/PoolService.sol +614 -0
  473. package/contracts/pool/PoolServiceManager.sol +39 -0
  474. package/contracts/product/ApplicationService.sol +327 -0
  475. package/contracts/product/ApplicationServiceManager.sol +38 -0
  476. package/contracts/product/BasicProduct.sol +49 -0
  477. package/contracts/product/BasicProductAuthorization.sol +64 -0
  478. package/contracts/product/ClaimService.sol +626 -0
  479. package/contracts/product/ClaimServiceManager.sol +38 -0
  480. package/contracts/product/IApplicationService.sol +88 -0
  481. package/contracts/product/IClaimService.sol +136 -0
  482. package/contracts/product/IPolicyService.sol +102 -0
  483. package/contracts/product/IPricingService.sol +40 -0
  484. package/contracts/product/IProductComponent.sol +62 -0
  485. package/contracts/product/IRiskService.sol +48 -0
  486. package/contracts/product/PolicyService.sol +645 -0
  487. package/contracts/product/PolicyServiceLib.sol +139 -0
  488. package/contracts/product/PolicyServiceManager.sol +39 -0
  489. package/contracts/product/PricingService.sol +306 -0
  490. package/contracts/product/PricingServiceManager.sol +39 -0
  491. package/contracts/product/Product.sol +493 -0
  492. package/contracts/product/RiskService.sol +190 -0
  493. package/contracts/product/RiskServiceManager.sol +39 -0
  494. package/contracts/registry/ChainNft.sol +175 -61
  495. package/contracts/registry/IRegistry.sol +143 -51
  496. package/contracts/registry/IRegistryService.sol +62 -0
  497. package/contracts/registry/IRelease.sol +29 -0
  498. package/contracts/registry/ITransferInterceptor.sol +6 -0
  499. package/contracts/registry/Registry.sol +667 -140
  500. package/contracts/registry/RegistryAdmin.sol +191 -0
  501. package/contracts/registry/RegistryAuthorization.sol +336 -0
  502. package/contracts/registry/RegistryService.sol +241 -0
  503. package/contracts/registry/RegistryServiceManager.sol +53 -0
  504. package/contracts/registry/ReleaseAdmin.sol +195 -0
  505. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  506. package/contracts/registry/ReleaseRegistry.sol +525 -0
  507. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  508. package/contracts/registry/TokenRegistry.sol +317 -0
  509. package/contracts/shared/Component.sol +214 -0
  510. package/contracts/shared/ComponentService.sol +687 -0
  511. package/contracts/shared/ComponentServiceManager.sol +38 -0
  512. package/contracts/shared/ContractLib.sol +312 -0
  513. package/contracts/shared/IComponent.sol +58 -0
  514. package/contracts/shared/IComponentService.sol +111 -0
  515. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  516. package/contracts/shared/IKeyValueStore.sol +62 -0
  517. package/contracts/shared/ILifecycle.sol +31 -0
  518. package/contracts/shared/INftOwnable.sol +27 -0
  519. package/contracts/shared/IPolicyHolder.sol +35 -0
  520. package/contracts/shared/IRegisterable.sol +36 -0
  521. package/contracts/shared/IRegistryLinked.sol +11 -0
  522. package/contracts/shared/IService.sol +23 -0
  523. package/contracts/shared/InitializableERC165.sol +35 -0
  524. package/contracts/shared/InstanceLinkedComponent.sol +234 -0
  525. package/contracts/shared/KeyValueStore.sol +131 -0
  526. package/contracts/shared/Lifecycle.sol +88 -0
  527. package/contracts/shared/NftIdSet.sol +65 -0
  528. package/contracts/shared/NftOwnable.sol +129 -0
  529. package/contracts/shared/PolicyHolder.sol +63 -0
  530. package/contracts/shared/Registerable.sol +106 -0
  531. package/contracts/shared/RegistryLinked.sol +38 -0
  532. package/contracts/shared/Service.sol +67 -0
  533. package/contracts/shared/TokenHandler.sol +342 -0
  534. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  535. package/contracts/staking/IStaking.sol +367 -0
  536. package/contracts/staking/IStakingService.sol +127 -0
  537. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  538. package/contracts/staking/Staking.sol +798 -0
  539. package/contracts/staking/StakingLib.sol +195 -0
  540. package/contracts/staking/StakingManager.sol +53 -0
  541. package/contracts/staking/StakingReader.sol +171 -0
  542. package/contracts/staking/StakingService.sol +321 -0
  543. package/contracts/staking/StakingServiceManager.sol +46 -0
  544. package/contracts/staking/StakingStore.sol +1368 -0
  545. package/contracts/staking/TargetHandler.sol +132 -0
  546. package/contracts/staking/TargetManagerLib.sol +234 -0
  547. package/contracts/type/AddressSet.sol +58 -0
  548. package/contracts/type/Amount.sol +154 -0
  549. package/contracts/{types → type}/Blocknumber.sol +36 -12
  550. package/contracts/type/ChainId.sol +101 -0
  551. package/contracts/type/ClaimId.sol +80 -0
  552. package/contracts/type/DistributorType.sol +55 -0
  553. package/contracts/type/Fee.sol +66 -0
  554. package/contracts/type/Key32.sol +50 -0
  555. package/contracts/type/Key32Set.sol +62 -0
  556. package/contracts/type/NftId.sol +85 -0
  557. package/contracts/type/NftIdSet.sol +62 -0
  558. package/contracts/type/ObjectType.sol +278 -0
  559. package/contracts/type/PayoutId.sol +82 -0
  560. package/contracts/type/Referral.sol +96 -0
  561. package/contracts/type/RequestId.sol +75 -0
  562. package/contracts/type/RequestIdSet.sol +62 -0
  563. package/contracts/type/RiskId.sol +75 -0
  564. package/contracts/type/RoleId.sol +180 -0
  565. package/contracts/type/Seconds.sol +124 -0
  566. package/contracts/type/Selector.sol +107 -0
  567. package/contracts/type/StateId.sol +149 -0
  568. package/contracts/type/String.sol +95 -0
  569. package/contracts/{types → type}/Timestamp.sol +62 -12
  570. package/contracts/{types → type}/UFixed.sol +97 -39
  571. package/contracts/type/Version.sol +159 -0
  572. package/contracts/upgradeability/IVersionable.sol +56 -0
  573. package/contracts/upgradeability/ProxyManager.sol +246 -0
  574. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  575. package/contracts/upgradeability/Versionable.sol +62 -0
  576. package/package.json +22 -7
  577. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  578. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  579. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  580. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  581. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  582. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  583. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  584. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  585. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  586. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  587. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  588. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  589. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  590. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  591. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  592. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  593. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  594. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  595. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  596. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  597. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  598. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  599. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  600. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  601. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  602. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  603. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  604. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  605. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  606. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  607. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  608. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  609. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  610. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  611. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  612. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  613. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  614. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  615. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  616. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  617. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  618. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  619. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  620. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  621. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  622. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  623. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  624. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  625. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  626. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  627. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  628. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  629. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  630. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  631. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  632. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  633. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  634. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  635. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  636. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  637. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  638. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  639. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  640. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  641. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  642. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  643. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  644. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  645. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  646. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  647. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  648. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  649. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  650. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  651. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  652. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  653. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  654. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  655. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  656. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  657. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  658. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  659. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  660. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  661. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  662. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  663. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  665. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  666. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  667. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  668. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  669. package/contracts/components/Component.sol +0 -60
  670. package/contracts/components/IPool.sol +0 -9
  671. package/contracts/components/IProduct.sol +0 -9
  672. package/contracts/components/Pool.sol +0 -22
  673. package/contracts/components/Product.sol +0 -55
  674. package/contracts/experiment/errors/Require.sol +0 -38
  675. package/contracts/experiment/errors/Revert.sol +0 -44
  676. package/contracts/experiment/inheritance/A.sol +0 -53
  677. package/contracts/experiment/inheritance/B.sol +0 -28
  678. package/contracts/experiment/inheritance/C.sol +0 -34
  679. package/contracts/experiment/inheritance/IA.sol +0 -13
  680. package/contracts/experiment/inheritance/IB.sol +0 -10
  681. package/contracts/experiment/inheritance/IC.sol +0 -12
  682. package/contracts/experiment/types/TypeA.sol +0 -47
  683. package/contracts/experiment/types/TypeB.sol +0 -29
  684. package/contracts/instance/access/Access.sol +0 -165
  685. package/contracts/instance/access/IAccess.sol +0 -63
  686. package/contracts/instance/component/ComponentModule.sol +0 -213
  687. package/contracts/instance/component/IComponent.sol +0 -73
  688. package/contracts/instance/policy/IPolicy.sol +0 -51
  689. package/contracts/instance/policy/PolicyModule.sol +0 -91
  690. package/contracts/instance/pool/IPoolModule.sol +0 -29
  691. package/contracts/instance/pool/PoolModule.sol +0 -73
  692. package/contracts/instance/product/IProductService.sol +0 -36
  693. package/contracts/instance/product/ProductService.sol +0 -112
  694. package/contracts/registry/IChainNft.sol +0 -21
  695. package/contracts/types/ChainId.sol +0 -38
  696. package/contracts/types/NftId.sol +0 -51
@@ -1,12 +1,32 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {ERC721, ERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
5
- import {IChainNft} from "./IChainNft.sol";
5
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
6
6
 
7
- contract ChainNft is ERC721Enumerable, IChainNft {
8
- string public constant NAME = "Dezentralized Insurance Protocol Registry";
9
- string public constant SYMBOL = "DIPR";
7
+ import {ITransferInterceptor} from "./ITransferInterceptor.sol";
8
+
9
+ contract ChainNft is ERC721Enumerable {
10
+
11
+ event LogTokenInterceptorAddress(uint256 tokenId, address interceptor);
12
+
13
+ // constants
14
+ string public constant NAME = "Dezentralized Insurance Protocol NFT";
15
+ string public constant SYMBOL = "DIPNFT";
16
+
17
+ uint256 public constant PROTOCOL_NFT_ID = 1101;
18
+ uint256 public constant GLOBAL_REGISTRY_ID = 2101;
19
+
20
+ // custom errors
21
+ error ErrorChainNftCallerNotRegistry(address caller);
22
+ error ErrorChainNftRegistryAddressZero();
23
+ error ErrorChainNftUriEmpty();
24
+ error ErrorChainNftUriAlreadySet();
25
+
26
+ // contract state
27
+
28
+ // remember interceptors
29
+ mapping(uint256 tokenId => address interceptor) private _interceptor;
10
30
 
11
31
  // remember token uri
12
32
  mapping(uint256 tokenId => string uri) private _uri;
@@ -15,50 +35,96 @@ contract ChainNft is ERC721Enumerable, IChainNft {
15
35
  address private _registry;
16
36
 
17
37
  // only used for _getNextTokenId
18
- uint256 internal _chainIdInt;
19
38
  uint256 internal _chainIdDigits;
20
39
  uint256 internal _chainIdMultiplier;
21
40
  uint256 internal _idNext;
22
41
  uint256 internal _totalMinted;
23
42
 
24
43
  modifier onlyRegistry() {
25
- require(msg.sender == _registry, "ERROR:NFT-001:CALLER_NOT_REGISTRY");
44
+ if (msg.sender != _registry) { revert ErrorChainNftCallerNotRegistry(msg.sender); }
26
45
  _;
27
46
  }
28
47
 
29
- constructor(address registry) ERC721(NAME, SYMBOL) {
30
- require(registry != address(0), "ERROR:NFT-010:REGISTRY_ZERO");
48
+ constructor(address registry)
49
+ ERC721(NAME, SYMBOL)
50
+ {
51
+ if (registry == address(0)) { revert ErrorChainNftRegistryAddressZero(); }
31
52
 
53
+ // NFT contract is deployed by the registry
32
54
  _registry = registry;
33
55
 
34
- _chainIdInt = block.chainid;
35
- _chainIdDigits = _countDigits(_chainIdInt);
56
+ _chainIdDigits = _calculateChainIdDigits(block.chainid);
36
57
  _chainIdMultiplier = 10 ** _chainIdDigits;
37
58
 
38
- // on mainnet/goerli start /1 (reserved for protocol nft) on other chains with 2
39
- if (block.chainid == 1 || block.chainid == 5) {
40
- _idNext = 1;
41
- } else {
42
- _idNext = 2;
43
- }
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;
66
+ }
67
+
68
+ /**
69
+ * @dev mints a token for a specified token id
70
+ * not part of the IRegistry interface only needed for
71
+ * initial registry setup (protocol and global registry objects)
72
+ */
73
+ function mint(
74
+ address to,
75
+ uint256 tokenId
76
+ )
77
+ external
78
+ onlyRegistry()
79
+ {
80
+ _safeMintWithInterceptorAddress(to, tokenId, address(0));
44
81
  }
45
82
 
83
+ /**
84
+ * @dev mints the next token to register new objects
85
+ * non-zero transferInterceptors are recorded and called during nft token transfers.
86
+ * the contract receiving such a notification may decides to revert or record the transfer
87
+ */
46
88
  function mint(
47
89
  address to,
90
+ address interceptor,
48
91
  string memory uri
49
- ) external override onlyRegistry returns (uint256 tokenId) {
92
+ )
93
+ public
94
+ onlyRegistry()
95
+ returns (uint256 tokenId)
96
+ {
50
97
  tokenId = _getNextTokenId();
51
- _totalMinted++;
52
98
 
53
- _safeMint(to, tokenId);
99
+ if (interceptor != address(0)) {
100
+ _interceptor[tokenId] = interceptor;
101
+ }
54
102
 
55
103
  if (bytes(uri).length > 0) {
56
104
  _uri[tokenId] = uri;
57
105
  }
106
+
107
+ _safeMintWithInterceptorAddress(to, tokenId, interceptor);
108
+ }
109
+
110
+
111
+ /**
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.
114
+ */
115
+ function transferFrom(address from, address to, uint256 tokenId) public override (IERC721, ERC721) {
116
+ // default open zeppelin implementation of transferFrom
117
+ super.transferFrom(from, to, tokenId);
118
+
119
+ if (_interceptor[tokenId] != address(0)) {
120
+ address operator = msg.sender;
121
+ ITransferInterceptor(_interceptor[tokenId]).nftTransferFrom(from, to, tokenId, operator);
122
+ }
58
123
  }
59
124
 
60
- function burn(uint256 tokenId) external override onlyRegistry {
61
- _requireMinted(tokenId);
125
+
126
+ function burn(uint256 tokenId) external onlyRegistry {
127
+ _requireOwned(tokenId);
62
128
  _burn(tokenId);
63
129
  delete _uri[tokenId];
64
130
  }
@@ -66,70 +132,118 @@ contract ChainNft is ERC721Enumerable, IChainNft {
66
132
  function setURI(
67
133
  uint256 tokenId,
68
134
  string memory uri
69
- ) external override onlyRegistry {
70
- require(bytes(uri).length > 0, "ERROR:CRG-011:URI_EMPTY");
135
+ ) external onlyRegistry {
136
+ if (bytes(uri).length == 0) { revert ErrorChainNftUriEmpty(); }
137
+ if (bytes(_uri[tokenId]).length > 0) { revert ErrorChainNftUriAlreadySet(); }
71
138
 
72
- _requireMinted(tokenId);
139
+ _requireOwned(tokenId);
73
140
  _uri[tokenId] = uri;
74
141
  }
75
142
 
76
- function exists(uint256 tokenId) external view override returns (bool) {
77
- return _exists(tokenId);
143
+ function exists(uint256 tokenId) external view returns (bool) {
144
+ return _ownerOf(tokenId) != address(0);
78
145
  }
79
146
 
80
147
  function tokenURI(
81
148
  uint256 tokenId
82
149
  ) public view override returns (string memory) {
83
- _requireMinted(tokenId);
150
+ // gif generally does not revert for view functions
151
+ // this is an exception to keep the openzeppelin nft semantics
152
+ _requireOwned(tokenId);
84
153
  return _uri[tokenId];
85
154
  }
86
155
 
87
- function getRegistryAddress() external view override returns (address) {
156
+ function getInterceptor(uint256 tokenId) external view returns (address) {
157
+ return _interceptor[tokenId];
158
+ }
159
+
160
+ function getRegistryAddress() external view returns (address) {
88
161
  return _registry;
89
162
  }
90
163
 
91
- function totalMinted() external view override returns (uint256) {
164
+ function totalMinted() external view returns (uint256) {
92
165
  return _totalMinted;
93
166
  }
94
167
 
95
- // requirement: each chain registry produces token ids that
96
- // are guaranteed to not collide with any token id genereated
97
- // on a different chain
98
- //
99
- // format concat(counter,chainid,2 digits for len-of-chain-id)
100
- // restriction chainid up to 99 digits
101
- // decode: from right to left:
102
- // - 2 right most digits encode length of chainid
103
- // - move number of digits to left as determined above (-> chainid)
104
- // - the reminder to the left is the counter
105
- // examples
106
- // 1101
107
- // ^^ ^
108
- // || +- 1-digit chain id
109
- // |+-- chain id = 1 (mainnet)
110
- // +-- 1st token id on mainnet
111
- // (1 * 10 ** 1 + 1) * 100 + 1
112
- // 42987654321010
113
- // ^ ^ ^
114
- // | | +- 10-digit chain id
115
- // | +-- chain id = 9876543210 (hypothetical chainid)
116
- // +-- 42nd token id on this chain
117
- // (42 * 10 ** 10 + 9876543210) * 100 + 10
118
- // (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
168
+ /**
169
+ * @dev token id calculation based on an index value that is supposed
170
+ * to increase with every minted token
171
+ *
172
+ * requirement: each chain registry produces token ids that
173
+ * are guaranteed to not collide with any token id genereated
174
+ * on a different chain
175
+ *
176
+ * format concat(counter,chainid,2 digits for len-of-chain-id)
177
+ * restriction chainid up to 99 digits
178
+ * decode: from right to left:
179
+ * - 2 right most digits encode length of chainid
180
+ * - move number of digits to left as determined above (-> chainid)
181
+ * - the reminder to the left is the counter
182
+ *
183
+ * special cases
184
+ * 1101 -> decentralized insurance protocol
185
+ * 2102 -> global registry
186
+ * 2xxxxx -> chain registry, where xxxxx = <chain-part>
187
+ *
188
+ * examples
189
+ * 1101
190
+ * ^^ ^
191
+ * || +- 1-digit chain id
192
+ * |+-- chain id = 1 (mainnet)
193
+ * +-- 1st token id on mainnet
194
+ * (1 * 10 ** 1 + 1) * 100 + 1
195
+ * 42987654321010
196
+ * ^ ^ ^
197
+ * | | +- 10-digit chain id
198
+ * | +-- chain id = 9876543210 (hypothetical chainid)
199
+ * +-- 42nd token id on this chain
200
+ * (42 * 10 ** 10 + 9876543210) * 100 + 10
201
+ * (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
202
+ */
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;
214
+ }
215
+
216
+ function getNextTokenId() external view returns (uint256) {
217
+ return calculateTokenId(_idNext);
218
+ }
219
+
220
+ // ---------------- private functions ----------------- //
119
221
 
120
222
  function _getNextTokenId() private returns (uint256 id) {
121
- id =
122
- (_idNext * _chainIdMultiplier + _chainIdInt) *
123
- 100 +
124
- _chainIdDigits;
223
+ id = calculateTokenId(_idNext);
125
224
  _idNext++;
126
225
  }
127
226
 
128
- function _countDigits(uint256 num) private pure returns (uint256 count) {
129
- count = 0;
227
+ function _calculateChainIdDigits(uint256 chainId) private pure returns (uint256) {
228
+ uint256 num = chainId;
229
+ uint256 digits = 0;
130
230
  while (num != 0) {
131
- count++;
231
+ digits++;
132
232
  num /= 10;
133
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);
134
248
  }
135
249
  }
@@ -1,80 +1,172 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+
6
+ import {IRelease} from "./IRelease.sol";
7
+
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ObjectType} from "../type/ObjectType.sol";
10
+ import {VersionPart} from "../type/Version.sol";
11
+
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
+ {
21
+
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();
28
+
29
+ // register()
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);
47
+
48
+ // registerWithCustomTypes()
49
+ error ErrorRegistryCoreTypeRegistration();
50
+
51
+ // _register()
52
+ error ErrorRegistryGlobalRegistryAsParent(address objectAddress, ObjectType objectType);
53
+ error ErrorRegistryTypeCombinationInvalid(address objectAddress, ObjectType objectType, ObjectType parentType);
54
+ error ErrorRegistryContractAlreadyRegistered(address objectAddress);
55
+
56
+ struct ObjectInfo {
57
+ // slot 0
58
+ NftId nftId;
59
+ NftId parentNftId;
60
+ ObjectType objectType;
61
+ bool isInterceptor;
62
+ // slot 1
63
+ address objectAddress;
64
+ // slot 2
65
+ address initialOwner;
66
+ // slot 3
67
+ bytes data;
68
+ }
3
69
 
4
- import {NftId} from "../types/NftId.sol";
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;
5
77
 
6
- interface IOwnable {
7
- function getOwner() external view returns (address owner);
8
- }
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.
81
+ function registerService(
82
+ ObjectInfo memory serviceInfo,
83
+ VersionPart serviceVersion,
84
+ ObjectType serviceDomain
85
+ ) external returns(NftId nftId);
9
86
 
10
- interface IRegistryLinked {
11
- event LogDebug(uint256 idx, address module, string comment);
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.
90
+ function register(ObjectInfo memory info) external returns (NftId nftId);
12
91
 
13
- function getRegistry() external view returns (IRegistry registry);
14
- }
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.
96
+ function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
15
97
 
16
- interface IRegisterable is IOwnable, IRegistryLinked {
17
- function register() external returns (NftId nftId);
98
+ function getInitialRelease() external view returns (VersionPart);
18
99
 
19
- function getNftId() external view returns (NftId nftId);
100
+ function getNextRelease() external view returns (VersionPart);
20
101
 
21
- function getParentNftId() external view returns (NftId parentNftId);
102
+ function getLatestRelease() external view returns (VersionPart);
22
103
 
23
- function getType() external view returns (uint256 objectType);
104
+ function getReleaseInfo(VersionPart release) external view returns (IRelease.ReleaseInfo memory);
24
105
 
25
- function getData() external view returns (bytes memory data);
106
+ /// @dev Returns the number of supported chains.
107
+ function chainIds() external view returns (uint256);
26
108
 
27
- function isRegisterable() external pure returns (bool);
109
+ /// @dev Returns the chain id at the specified index.
110
+ function getChainId(uint256 idx) external view returns (uint256);
28
111
 
29
- function getInitialOwner() external view returns (address initialOwner);
112
+ /// @dev Returns the NFT ID of the registry for the specified chain.
113
+ function getRegistryNftId(uint256 chainId) external returns (NftId nftId);
30
114
 
31
- function isRegistered() external view returns (bool);
32
- }
115
+ function getObjectCount() external view returns (uint256);
33
116
 
34
- interface IRegistry {
35
- struct RegistryInfo {
36
- NftId nftId;
37
- NftId parentNftId;
38
- uint256 objectType;
39
- address objectAddress;
40
- address initialOwner;
41
- }
117
+ function getNftIdForAddress(address objectAddress) external view returns (NftId nftId);
42
118
 
43
- function TOKEN() external pure returns (uint256);
119
+ function ownerOf(NftId nftId) external view returns (address);
44
120
 
45
- function INSTANCE() external pure returns (uint256);
121
+ function isOwnerOf(NftId nftId, address expectedOwner) external view returns (bool);
46
122
 
47
- function PRODUCT() external pure returns (uint256);
123
+ function ownerOf(address contractAddress) external view returns (address);
48
124
 
49
- function ORACLE() external pure returns (uint256);
125
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory info);
50
126
 
51
- function POOL() external pure returns (uint256);
127
+ function getParentNftId(NftId nftId) external view returns (NftId parentNftId);
52
128
 
53
- function POLICY() external pure returns (uint256);
129
+ function isObjectType(NftId nftId, ObjectType expectedObjectType) external view returns (bool);
54
130
 
55
- function BUNDLE() external pure returns (uint256);
131
+ function isObjectType(address contractAddress, ObjectType expectedObjectType) external view returns (bool);
56
132
 
57
- function register(address objectAddress) external returns (NftId nftId);
133
+ function getObjectAddress(NftId nftId) external view returns (address objectAddress);
58
134
 
59
- function registerObjectForInstance(
60
- NftId parentNftid,
61
- uint256 objectType,
62
- address initialOwner
63
- ) external returns (NftId nftId);
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)
137
+ function getObjectInfo(address object) external view returns (ObjectInfo memory info);
64
138
 
65
- function getObjectCount() external view returns (uint256);
139
+ function isRegistered(NftId nftId) external view returns (bool);
140
+
141
+ function isRegistered(address contractAddress) external view returns (bool);
142
+
143
+ function isRegisteredService(address contractAddress) external view returns (bool);
144
+
145
+ function isRegisteredComponent(address object) external view returns (bool);
146
+
147
+ function isActiveRelease(VersionPart version) external view returns (bool);
148
+
149
+ function getServiceAddress(
150
+ ObjectType serviceDomain,
151
+ VersionPart releaseVersion
152
+ ) external view returns (address serviceAddress);
153
+
154
+ function getProtocolNftId() external view returns (NftId protocolNftId);
155
+
156
+ function getNftId() external view returns (NftId nftId);
157
+
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);
66
162
 
67
- function getNftId(
68
- address objectAddress
69
- ) external view returns (NftId nftId);
163
+ function getReleaseRegistryAddress() external view returns (address);
70
164
 
71
- function getInfo(
72
- NftId nftId
73
- ) external view returns (RegistryInfo memory info);
165
+ function getStakingAddress() external view returns (address);
74
166
 
75
- function getOwner(NftId nftId) external view returns (address ownerAddress);
167
+ function getTokenRegistryAddress() external view returns (address);
76
168
 
77
- function isRegistered(address objectAddress) external view returns (bool);
169
+ function getRegistryAdminAddress() external view returns (address);
78
170
 
79
- function getNftAddress() external view returns (address nft);
80
- }
171
+ function getAuthority() external view returns (address);
172
+ }
@@ -0,0 +1,62 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ // import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {RoleId} from "../type/RoleId.sol";
9
+ import {IService} from "../shared/IService.sol";
10
+ import {IRegistry} from "./IRegistry.sol";
11
+
12
+ import {IRegisterable} from "../shared/IRegisterable.sol";
13
+ import {IComponent} from "../shared/IComponent.sol";
14
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
15
+
16
+
17
+ interface IRegistryService is
18
+ IService
19
+ {
20
+ error ErrorRegistryServiceNotRegistryOwner();
21
+
22
+ error ErrorRegistryServiceNotService(address notService);
23
+ error ErrorRegistryServiceNotInstance(address notInstance);
24
+ error 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
+
46
+ function registerInstance(IRegisterable instance, address owner)
47
+ external returns(IRegistry.ObjectInfo memory info);
48
+
49
+ function registerProduct(IComponent product, address owner)
50
+ external returns(IRegistry.ObjectInfo memory info);
51
+
52
+ function registerProductLinkedComponent(IComponent component, ObjectType objectType, address owner)
53
+ external returns(IRegistry.ObjectInfo memory info);
54
+
55
+ function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
56
+
57
+ function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
58
+
59
+ function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
60
+
61
+ }
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
+ }
@@ -0,0 +1,6 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ interface ITransferInterceptor {
5
+ function nftTransferFrom(address from, address to, uint256 tokenId, address operator) external;
6
+ }