@etherisc/gif-next 0.0.2-b3a8633-027 → 0.0.2-b3e9a44-364

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 (449) hide show
  1. package/README.md +19 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +32 -51
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +0 -19
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +101 -248
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +59 -222
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +244 -217
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +109 -101
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +59 -37
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +136 -31
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1507 -0
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1978 -0
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  41. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1427 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1187 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1561 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1996 -0
  51. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +16 -0
  55. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +16 -0
  57. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  58. package/artifacts/contracts/instance/Instance.sol/Instance.json +26 -99
  59. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +96 -99
  61. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  63. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +437 -129
  65. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +55 -146
  67. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +77 -81
  69. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +244 -228
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  73. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  87. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +75 -235
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
  92. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +46 -37
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +16 -0
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +43 -219
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +53 -144
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +76 -80
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +95 -280
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +463 -150
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +170 -86
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +245 -1
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +88 -94
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +376 -171
  117. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/Pool.sol/Pool.json +85 -276
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +525 -350
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +114 -82
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +52 -162
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +73 -89
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +63 -248
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +279 -181
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +120 -100
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +21 -0
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +163 -6
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +310 -118
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +59 -43
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +63 -63
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  146. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +18 -2
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +421 -320
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +120 -100
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.json +136 -259
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +97 -117
  155. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  156. package/artifacts/contracts/product/Product.sol/Product.json +63 -248
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.json +604 -0
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +698 -0
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +22 -3
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +297 -19
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +16 -0
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  168. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/Registry.sol/Registry.json +401 -104
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +121 -134
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +39 -313
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +68 -72
  176. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  178. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +45 -16
  180. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  182. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  184. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  185. package/artifacts/contracts/shared/Component.sol/Component.json +16 -211
  186. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +263 -161
  188. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +121 -95
  190. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +21 -112
  192. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  193. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  194. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +16 -26
  196. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +169 -0
  198. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +35 -37
  200. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  201. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  202. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  204. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  206. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +16 -0
  208. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IService.sol/IService.json +16 -0
  211. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  212. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  214. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +35 -222
  215. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  217. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  218. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  219. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  220. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  221. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  222. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  224. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -97
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  226. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  227. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  228. package/artifacts/contracts/shared/Service.sol/Service.json +21 -112
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  230. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  231. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  232. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  233. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  234. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +43 -27
  235. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  236. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +16 -21
  237. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  239. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  240. package/artifacts/contracts/staking/Staking.sol/Staking.json +101 -262
  241. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  243. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -88
  245. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  247. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +47 -159
  249. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +72 -76
  251. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +89 -84
  253. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  254. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  255. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  256. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  258. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  260. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  262. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  264. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  266. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  268. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  270. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  271. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  272. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  274. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  276. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  278. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  280. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  282. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  284. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  286. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  290. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
  297. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  303. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  304. package/contracts/authorization/AccessAdmin.sol +25 -23
  305. package/contracts/authorization/Authorization.sol +5 -2
  306. package/contracts/authorization/IAccessAdmin.sol +0 -1
  307. package/contracts/distribution/BasicDistribution.sol +6 -15
  308. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  309. package/contracts/distribution/Distribution.sol +25 -12
  310. package/contracts/distribution/DistributionService.sol +114 -54
  311. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  312. package/contracts/distribution/IDistributionComponent.sol +8 -4
  313. package/contracts/distribution/IDistributionService.sol +18 -2
  314. package/contracts/examples/fire/DamageLevel.sol +59 -0
  315. package/contracts/examples/fire/FirePool.sol +75 -0
  316. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  317. package/contracts/examples/fire/FireProduct.sol +411 -0
  318. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  319. package/contracts/examples/fire/FireUSD.sol +26 -0
  320. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  321. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  322. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  323. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  324. package/contracts/instance/IInstance.sol +7 -30
  325. package/contracts/instance/Instance.sol +10 -35
  326. package/contracts/instance/InstanceAdmin.sol +29 -7
  327. package/contracts/instance/InstanceAuthorizationV3.sol +5 -3
  328. package/contracts/instance/InstanceReader.sol +115 -25
  329. package/contracts/instance/InstanceService.sol +63 -41
  330. package/contracts/instance/InstanceServiceManager.sol +6 -7
  331. package/contracts/instance/InstanceStore.sol +12 -1
  332. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  333. package/contracts/instance/module/IBundle.sol +1 -1
  334. package/contracts/instance/module/IComponents.sol +4 -8
  335. package/contracts/instance/module/IDistribution.sol +0 -1
  336. package/contracts/instance/module/IPolicy.sol +24 -24
  337. package/contracts/mock/Dip.sol +1 -1
  338. package/contracts/oracle/IOracleComponent.sol +2 -1
  339. package/contracts/oracle/Oracle.sol +17 -7
  340. package/contracts/oracle/OracleService.sol +41 -33
  341. package/contracts/oracle/OracleServiceManager.sol +6 -6
  342. package/contracts/pool/BasicPool.sol +19 -18
  343. package/contracts/pool/BasicPoolAuthorization.sol +11 -2
  344. package/contracts/pool/BundleService.sol +208 -31
  345. package/contracts/pool/BundleServiceManager.sol +6 -6
  346. package/contracts/pool/IBundleService.sol +42 -5
  347. package/contracts/pool/IPoolComponent.sol +24 -8
  348. package/contracts/pool/IPoolService.sol +57 -36
  349. package/contracts/pool/Pool.sol +81 -35
  350. package/contracts/pool/PoolService.sol +231 -104
  351. package/contracts/pool/PoolServiceManager.sol +4 -4
  352. package/contracts/product/ApplicationService.sol +50 -29
  353. package/contracts/product/ApplicationServiceManager.sol +4 -4
  354. package/contracts/product/BasicProduct.sol +3 -32
  355. package/contracts/product/BasicProductAuthorization.sol +3 -0
  356. package/contracts/product/ClaimService.sol +251 -86
  357. package/contracts/product/ClaimServiceManager.sol +4 -4
  358. package/contracts/product/IApplicationService.sol +1 -0
  359. package/contracts/product/IClaimService.sol +31 -7
  360. package/contracts/product/IPolicyService.sol +34 -32
  361. package/contracts/product/IPricingService.sol +7 -7
  362. package/contracts/product/IProductComponent.sol +18 -4
  363. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  364. package/contracts/product/PolicyService.sol +404 -193
  365. package/contracts/product/PolicyServiceManager.sol +4 -4
  366. package/contracts/product/PricingService.sol +47 -47
  367. package/contracts/product/PricingServiceManager.sol +3 -3
  368. package/contracts/product/Product.sol +93 -51
  369. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  370. package/contracts/product/RiskServiceManager.sol +39 -0
  371. package/contracts/registry/ChainNft.sol +51 -19
  372. package/contracts/registry/IRegistry.sol +53 -12
  373. package/contracts/registry/IRegistryService.sol +0 -9
  374. package/contracts/registry/Registry.sol +320 -172
  375. package/contracts/registry/RegistryAdmin.sol +49 -32
  376. package/contracts/registry/RegistryService.sol +55 -48
  377. package/contracts/registry/RegistryServiceManager.sol +2 -2
  378. package/contracts/registry/ReleaseRegistry.sol +25 -67
  379. package/contracts/registry/ServiceAuthorizationV3.sol +6 -8
  380. package/contracts/shared/Component.sol +24 -44
  381. package/contracts/shared/ComponentService.sol +88 -28
  382. package/contracts/shared/ComponentServiceManager.sol +8 -5
  383. package/contracts/shared/ComponentVerifyingService.sol +2 -3
  384. package/contracts/shared/ContractLib.sol +38 -0
  385. package/contracts/shared/IComponent.sol +4 -4
  386. package/contracts/shared/IComponentService.sol +15 -9
  387. package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
  388. package/contracts/shared/INftOwnable.sol +2 -0
  389. package/contracts/shared/IPolicyHolder.sol +12 -22
  390. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  391. package/contracts/shared/InstanceLinkedComponent.sol +26 -6
  392. package/contracts/shared/NftOwnable.sol +23 -7
  393. package/contracts/shared/PolicyHolder.sol +17 -57
  394. package/contracts/shared/Registerable.sol +4 -4
  395. package/contracts/shared/RegistryLinked.sol +3 -2
  396. package/contracts/shared/Service.sol +16 -11
  397. package/contracts/shared/TokenHandler.sol +100 -19
  398. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  399. package/contracts/staking/IStaking.sol +2 -1
  400. package/contracts/staking/IStakingService.sol +0 -3
  401. package/contracts/staking/StakeManagerLib.sol +18 -25
  402. package/contracts/staking/Staking.sol +16 -28
  403. package/contracts/staking/StakingManager.sol +8 -6
  404. package/contracts/staking/StakingReader.sol +12 -5
  405. package/contracts/staking/StakingService.sol +11 -29
  406. package/contracts/staking/StakingServiceManager.sol +2 -2
  407. package/contracts/staking/TargetManagerLib.sol +7 -3
  408. package/contracts/type/Amount.sol +27 -5
  409. package/contracts/type/Blocknumber.sol +7 -1
  410. package/contracts/type/ClaimId.sol +6 -1
  411. package/contracts/type/NftId.sol +1 -0
  412. package/contracts/type/ObjectType.sol +16 -11
  413. package/contracts/type/PayoutId.sol +10 -10
  414. package/contracts/type/Referral.sol +1 -0
  415. package/contracts/type/RiskId.sol +15 -1
  416. package/contracts/type/Seconds.sol +21 -1
  417. package/contracts/type/StateId.sol +1 -0
  418. package/contracts/type/Timestamp.sol +11 -1
  419. package/contracts/type/UFixed.sol +33 -10
  420. package/contracts/upgradeability/ProxyManager.sol +67 -34
  421. package/contracts/upgradeability/Versionable.sol +2 -2
  422. package/package.json +2 -1
  423. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  424. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  425. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  426. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  427. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  428. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.dbg.json +0 -4
  429. package/artifacts/contracts/registry/GlobalRegistry.sol/GlobalRegistry.json +0 -1503
  430. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.dbg.json +0 -4
  431. package/artifacts/contracts/registry/GlobalRegistryAdmin.sol/GlobalRegistryAdmin.json +0 -1881
  432. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.dbg.json +0 -4
  433. package/artifacts/contracts/registry/IGlobalRegistry.sol/IGlobalRegistry.json +0 -974
  434. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  435. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  436. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  437. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  438. package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.dbg.json +0 -4
  439. package/artifacts/contracts/shared/MainnetId.sol/MainnetContract.json +0 -34
  440. package/artifacts/contracts/shared/MainnetId.sol/MainnetId.dbg.json +0 -4
  441. package/artifacts/contracts/shared/MainnetId.sol/MainnetId.json +0 -24
  442. package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.dbg.json +0 -4
  443. package/artifacts/contracts/shared/MainnetId.sol/SidenetContract.json +0 -34
  444. package/contracts/product/ProductServiceManager.sol +0 -39
  445. package/contracts/registry/GlobalRegistry.sol +0 -95
  446. package/contracts/registry/GlobalRegistryAdmin.sol +0 -38
  447. package/contracts/registry/IGlobalRegistry.sol +0 -17
  448. package/contracts/shared/InitializableCustom.sol +0 -177
  449. package/contracts/shared/MainnetId.sol +0 -29
@@ -8,12 +8,14 @@ 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";
14
16
 
15
17
  uint256 public constant PROTOCOL_NFT_ID = 1101;
16
- uint256 public constant GLOBAL_REGISTRY_ID = 2101; //TODO make dependent of MAINNET_CHAIN_ID constant?
18
+ uint256 public constant GLOBAL_REGISTRY_ID = 2101;
17
19
 
18
20
  // custom errors
19
21
  error ErrorChainNftCallerNotRegistry(address caller);
@@ -33,6 +35,8 @@ contract ChainNft is ERC721Enumerable {
33
35
  address private _registry;
34
36
 
35
37
  // only used for _getNextTokenId
38
+ uint256 internal _chainIdDigits;
39
+ uint256 internal _chainIdMultiplier;
36
40
  uint256 internal _idNext;
37
41
  uint256 internal _totalMinted;
38
42
 
@@ -41,11 +45,17 @@ contract ChainNft is ERC721Enumerable {
41
45
  _;
42
46
  }
43
47
 
44
- constructor(address registry) ERC721(NAME, SYMBOL) {
48
+ constructor(address registry)
49
+ ERC721(NAME, SYMBOL)
50
+ {
45
51
  if (registry == address(0)) { revert ErrorChainNftRegistryAddressZero(); }
46
52
 
53
+ // NFT contract is deployed by the registry
47
54
  _registry = registry;
48
55
 
56
+ _chainIdDigits = _calculateChainIdDigits(block.chainid);
57
+ _chainIdMultiplier = 10 ** _chainIdDigits;
58
+
49
59
  // the first object registered through normal registration starts with id 4
50
60
  // 1 -> protocol
51
61
  // 2 -> registry
@@ -59,12 +69,16 @@ contract ChainNft is ERC721Enumerable {
59
69
  * not part of the IRegistry interface only needed for
60
70
  * initial registry setup (protocol and global registry objects)
61
71
  */
62
- function mint(address to, uint256 tokenId) external onlyRegistry {
63
- _totalMinted++;
64
- _safeMint(to, tokenId);
72
+ function mint(
73
+ address to,
74
+ uint256 tokenId
75
+ )
76
+ external
77
+ onlyRegistry()
78
+ {
79
+ _safeMintWithInterceptorAddress(to, tokenId, address(0));
65
80
  }
66
81
 
67
-
68
82
  /**
69
83
  * @dev mints the next token to register new objects
70
84
  * non-zero transferInterceptors are recorded and called during nft token transfers.
@@ -74,7 +88,11 @@ contract ChainNft is ERC721Enumerable {
74
88
  address to,
75
89
  address interceptor,
76
90
  string memory uri
77
- ) public onlyRegistry returns (uint256 tokenId) {
91
+ )
92
+ public
93
+ onlyRegistry()
94
+ returns (uint256 tokenId)
95
+ {
78
96
  tokenId = _getNextTokenId();
79
97
 
80
98
  if (interceptor != address(0)) {
@@ -85,8 +103,7 @@ contract ChainNft is ERC721Enumerable {
85
103
  _uri[tokenId] = uri;
86
104
  }
87
105
 
88
- _totalMinted++;
89
- _safeMint(to, tokenId);
106
+ _safeMintWithInterceptorAddress(to, tokenId, interceptor);
90
107
 
91
108
  if(interceptor != address(0)) {
92
109
  ITransferInterceptor(interceptor).nftMint(to, tokenId);
@@ -184,29 +201,31 @@ contract ChainNft is ERC721Enumerable {
184
201
  * (42 * 10 ** 10 + 9876543210) * 100 + 10
185
202
  * (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
186
203
  */
187
- // TODO consider situation when chainId = 2^256
188
- function calculateTokenId(uint256 idIndex, uint chainId) public view returns (uint256 id) {
189
- uint256 chainIdDigits = _chainIdDigits(chainId);
190
- id =
191
- (idIndex * (10 ** chainIdDigits) + chainId) *
192
- 100 +
193
- chainIdDigits;
204
+ function calculateTokenId(uint256 idIndex, uint256 chainId) public view returns (uint256 id) {
205
+ if(chainId == block.chainid) {
206
+ return 100 * (idIndex * _chainIdMultiplier + chainId) + _chainIdDigits;
207
+ } else {
208
+ uint256 chainIdDigits = _calculateChainIdDigits(chainId);
209
+ return 100 * (idIndex * (10 ** chainIdDigits) + chainId) + chainIdDigits;
210
+ }
194
211
  }
195
212
 
196
- function calculateTokenId(uint256 idIndex) public view returns (uint256 id) {
197
- id = calculateTokenId(idIndex, block.chainid);
213
+ function calculateTokenId(uint256 idIndex) public view returns (uint256) {
214
+ return 100 * (idIndex * _chainIdMultiplier + block.chainid) + _chainIdDigits;
198
215
  }
199
216
 
200
217
  function getNextTokenId() external view returns (uint256) {
201
218
  return calculateTokenId(_idNext);
202
219
  }
203
220
 
221
+ // ---------------- private functions ----------------- //
222
+
204
223
  function _getNextTokenId() private returns (uint256 id) {
205
224
  id = calculateTokenId(_idNext);
206
225
  _idNext++;
207
226
  }
208
227
 
209
- function _chainIdDigits(uint chainId) internal view returns (uint256) {
228
+ function _calculateChainIdDigits(uint256 chainId) private pure returns (uint256) {
210
229
  uint256 num = chainId;
211
230
  uint256 digits = 0;
212
231
  while (num != 0) {
@@ -215,4 +234,17 @@ contract ChainNft is ERC721Enumerable {
215
234
  }
216
235
  return digits;
217
236
  }
237
+
238
+ function _safeMintWithInterceptorAddress(
239
+ address to,
240
+ uint256 tokenId,
241
+ address interceptor
242
+ )
243
+ private
244
+ {
245
+ emit LogTokenInterceptorAddress(tokenId, interceptor);
246
+
247
+ _totalMinted++;
248
+ _safeMint(to, tokenId);
249
+ }
218
250
  }
@@ -7,34 +7,48 @@ import {NftId} from "../type/NftId.sol";
7
7
  import {ObjectType} from "../type/ObjectType.sol";
8
8
  import {VersionPart} from "../type/Version.sol";
9
9
  import {Timestamp} from "../type/Timestamp.sol";
10
+ import {StateId} from "../type/StateId.sol";
11
+
12
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
10
13
 
11
14
  /// @title Chain Registry interface.
12
15
  /// A chain registry holds all protocol relevant objects with basic metadata.
13
16
  /// Registered objects include services, instances, products, pools, policies, bundles, stakes and more.
14
17
  /// Registered objects are represented by NFTs.
18
+ /// When on mainnet registry is global and keeps arbitrary number of chain registries residing on different chain ids.
19
+ /// When not on mainnet registry keeps the only object residing on different chain id (on mainnet) - global registry.
15
20
  interface IRegistry is IERC165 {
16
21
 
17
22
  event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
18
23
  event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
24
+ event LogChainRegistryRegistration(NftId nftId, uint256 chainId, address chainRegistryAddress);
19
25
 
20
26
  // initialize
21
27
  error ErrorRegistryCallerNotDeployer();
22
28
 
29
+ // registerRegistry()
30
+ error ErrorRegistryNotOnMainnet(uint256 chainId);
31
+ error ErrorRegistryChainRegistryChainIdZero(NftId nftId);
32
+ error ErrorRegistryChainRegistryAddressZero(NftId nftId, uint256 chainId);
33
+ error ErrorRegistryChainRegistryNftIdInvalid(NftId nftId, uint256 chainId);
34
+ error ErrorRegistryChainRegistryAlreadyRegistered(NftId nftId, uint256 chainId);
35
+
23
36
  // registerService()
24
- error ErrorRegistryCallerNotReleaseRegistry();
25
37
  error ErrorRegistryServiceAddressZero();
26
- error ErrorRegistryServiceVersionZero();
38
+ error ErrorRegistryServiceVersionZero(address service);
39
+ //error ErrorRegistryServiceVersionMismatch(address service, VersionPart serviceVersion, VersionPart releaseVersion);
40
+ //error ErrorRegistryServiceVersionNotDeploying(address service, VersionPart version);
41
+ error ErrorRegistryServiceDomainZero(address service, VersionPart version);
27
42
  error ErrorRegistryNotService(address service, ObjectType objectType);
28
- error ErrorRegistryServiceParentNotRegistry(NftId parentNftId);
29
- error ErrorRegistryDomainZero(address service);
30
- error ErrorRegistryDomainAlreadyRegistered(address service, VersionPart version, ObjectType domain);
43
+ error ErrorRegistryServiceParentNotRegistry(address service, VersionPart version, NftId parentNftId);
44
+ error ErrorRegistryServiceDomainAlreadyRegistered(address service, VersionPart version, ObjectType domain);
31
45
 
32
46
  // registerWithCustomTypes()
33
47
  error ErrorRegistryCoreTypeRegistration();
34
48
 
35
49
  // _register()
36
- error ErrorRegistryParentAddressZero();
37
- error ErrorRegistryTypesCombinationInvalid(ObjectType objectType, ObjectType parentType);
50
+ error ErrorRegistryGlobalRegistryAsParent(address objectAddress, ObjectType objectType);
51
+ error ErrorRegistryTypesCombinationInvalid(address objectAddress, ObjectType objectType, ObjectType parentType);
38
52
  error ErrorRegistryContractAlreadyRegistered(address objectAddress);
39
53
 
40
54
  struct ObjectInfo {
@@ -48,19 +62,24 @@ interface IRegistry is IERC165 {
48
62
  }
49
63
 
50
64
  struct ReleaseInfo {
65
+ StateId state;
51
66
  VersionPart version;
52
67
  bytes32 salt;
53
68
  address[] addresses;
54
69
  string[] names;
55
70
  ObjectType[] domains;
71
+ IServiceAuthorization auth;
56
72
  Timestamp activatedAt;
57
73
  Timestamp disabledAt;
58
74
  }
59
75
 
60
- /// @dev Register an object with a known core type.
61
- /// The function returns a newly minted object NFT ID.
62
- /// May not be used to register services.
63
- function register(ObjectInfo memory info) external returns (NftId nftId);
76
+ /// @dev Registers a registry contract for a specified chain.
77
+ /// Only one chain registry may be registered per chain
78
+ function registerRegistry(
79
+ NftId nftId,
80
+ uint256 chainId,
81
+ address chainRegistryAddress
82
+ ) external;
64
83
 
65
84
  /// @dev Register a service with using the provided domain and version.
66
85
  /// The function returns a newly minted service NFT ID.
@@ -71,6 +90,11 @@ interface IRegistry is IERC165 {
71
90
  ObjectType serviceDomain
72
91
  ) external returns(NftId nftId);
73
92
 
93
+ /// @dev Register an object with a known core type.
94
+ /// The function returns a newly minted object NFT ID.
95
+ /// May not be used to register services.
96
+ function register(ObjectInfo memory info) external returns (NftId nftId);
97
+
74
98
  /// @dev Register an object with a custom type.
75
99
  /// The function returns a newly minted object NFT ID.
76
100
  /// This function is reserved for GIF releases > 3.
@@ -85,16 +109,33 @@ interface IRegistry is IERC165 {
85
109
 
86
110
  function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory);
87
111
 
112
+ /// @dev Returns the number of supported chains.
113
+ function chainIds() external view returns (uint256);
114
+
115
+ /// @dev Returns the chain id at the specified index.
116
+ function getChainId(uint256 idx) external view returns (uint256);
117
+
118
+ /// @dev Returns the NFT ID of the registry for the specified chain.
119
+ function getRegistryNftId(uint256 chainId) external returns (NftId nftId);
120
+
88
121
  function getObjectCount() external view returns (uint256);
89
122
 
90
- function getNftId(address objectAddress) external view returns (NftId nftId);
123
+ function getNftIdForAddress(address objectAddress) external view returns (NftId nftId);
91
124
 
92
125
  function ownerOf(NftId nftId) external view returns (address);
93
126
 
127
+ function isOwnerOf(NftId nftId, address expectedOwner) external view returns (bool);
128
+
94
129
  function ownerOf(address contractAddress) external view returns (address);
95
130
 
96
131
  function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory info);
97
132
 
133
+ function isObjectType(NftId nftId, ObjectType expectedObjectType) external view returns (bool);
134
+
135
+ function getObjectAddress(NftId nftId) external view returns (address objectAddress);
136
+
137
+ /// @dev Returns the object info for the specified object address.
138
+ // MUST not be used with chain registry address (resides on different chan id)
98
139
  function getObjectInfo(address object) external view returns (ObjectInfo memory info);
99
140
 
100
141
  function isRegistered(NftId nftId) external view returns (bool);
@@ -50,15 +50,6 @@ interface IRegistryService is
50
50
  function registerComponent(IComponent component, ObjectType objectType, address owner)
51
51
  external returns(IRegistry.ObjectInfo memory info);
52
52
 
53
- // function registerProduct(IComponent product, address owner)
54
- // external returns(IRegistry.ObjectInfo memory info);
55
-
56
- // function registerPool(IComponent pool, address owner)
57
- // external returns(IRegistry.ObjectInfo memory info);
58
-
59
- // function registerDistribution(IComponent distribution, address owner)
60
- // external returns(IRegistry.ObjectInfo memory info);
61
-
62
53
  function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
63
54
 
64
55
  function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId);