@etherisc/gif-next 0.0.2-fd4931b-974 → 0.0.2-fd5f17a-625

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