@etherisc/gif-next 0.0.2-93a7619-595 → 0.0.2-93ee1cf-782

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 (417) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
  4. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  6. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -13
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +143 -182
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +77 -17
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +83 -98
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +175 -86
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +104 -60
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +73 -83
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -0
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +113 -196
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +114 -22
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +215 -235
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +81 -25
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  45. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +155 -157
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +114 -129
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +230 -190
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +508 -228
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  53. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +98 -30
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +53 -88
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +131 -42
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +168 -125
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -85
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +327 -84
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +113 -135
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +72 -40
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +172 -111
  72. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  73. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  79. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  81. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  83. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  89. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +102 -141
  92. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +77 -17
  94. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +68 -78
  97. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  99. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +78 -93
  101. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +142 -79
  103. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +92 -36
  105. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +78 -121
  107. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  108. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  109. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +143 -214
  111. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  112. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +84 -84
  113. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  114. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +48 -57
  115. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +68 -117
  117. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  118. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +106 -88
  119. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/Pool.sol/Pool.json +78 -132
  121. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +195 -188
  123. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +87 -51
  125. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  126. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +114 -45
  127. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -36
  129. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  130. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +123 -94
  131. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  132. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +77 -17
  133. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  134. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +175 -88
  135. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  136. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +97 -61
  137. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +63 -7
  139. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +66 -0
  141. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +67 -19
  143. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  144. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
  145. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  146. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +109 -75
  147. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  148. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
  149. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +174 -129
  151. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +96 -56
  153. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  154. package/artifacts/contracts/product/PricingService.sol/PricingService.json +165 -107
  155. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +85 -45
  157. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  158. package/artifacts/contracts/product/Product.sol/Product.json +119 -90
  159. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  160. package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -26
  161. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -30
  163. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  164. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  165. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  166. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +72 -15
  167. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  168. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  169. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  170. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  171. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  172. package/artifacts/contracts/registry/Registry.sol/Registry.json +116 -51
  173. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  174. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +206 -165
  175. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  176. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +161 -61
  177. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +65 -29
  179. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  181. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +123 -225
  183. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  184. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  185. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  186. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  187. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  188. package/artifacts/contracts/shared/Component.sol/Component.json +76 -87
  189. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +442 -180
  191. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +115 -63
  193. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  194. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
  195. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
  197. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  198. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  199. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  200. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  201. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -72
  203. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
  205. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +68 -78
  207. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  209. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  211. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  213. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  216. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  217. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  219. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  220. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  221. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +78 -93
  222. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  223. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  224. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  225. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  226. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  227. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  228. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  230. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  231. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  232. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
  234. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  235. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  236. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Service.sol/Service.json +42 -0
  238. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  239. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  240. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  241. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  242. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  243. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  244. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  245. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +84 -108
  246. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  247. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  248. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  249. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  250. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  251. package/artifacts/contracts/staking/Staking.sol/Staking.json +154 -187
  252. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  253. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  254. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +81 -51
  256. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  258. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  259. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +82 -53
  260. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  261. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +69 -33
  262. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  263. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
  264. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  265. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  266. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  267. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  271. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  273. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  276. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  277. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  278. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  280. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  281. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  282. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  284. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  286. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  288. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  290. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +43 -5
  292. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  294. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  299. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  306. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  307. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
  308. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  309. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  310. package/contracts/authorization/AccessAdmin.sol +86 -62
  311. package/contracts/authorization/Authorization.sol +106 -38
  312. package/contracts/authorization/IAccess.sol +1 -0
  313. package/contracts/authorization/IAccessAdmin.sol +4 -2
  314. package/contracts/authorization/IAuthorization.sol +13 -7
  315. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  316. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  317. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  318. package/contracts/distribution/BasicDistribution.sol +4 -3
  319. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  320. package/contracts/distribution/Distribution.sol +11 -22
  321. package/contracts/distribution/DistributionService.sol +69 -51
  322. package/contracts/distribution/IDistributionComponent.sol +1 -1
  323. package/contracts/distribution/IDistributionService.sol +5 -6
  324. package/contracts/examples/fire/FirePool.sol +19 -8
  325. package/contracts/examples/fire/FireProduct.sol +33 -13
  326. package/contracts/examples/fire/FireProductAuthorization.sol +1 -2
  327. package/contracts/examples/unpermissioned/SimpleDistribution.sol +12 -4
  328. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  329. package/contracts/examples/unpermissioned/SimplePool.sol +38 -6
  330. package/contracts/examples/unpermissioned/SimpleProduct.sol +17 -23
  331. package/contracts/instance/BundleSet.sol +38 -34
  332. package/contracts/instance/IInstance.sol +10 -1
  333. package/contracts/instance/IInstanceService.sol +7 -25
  334. package/contracts/instance/Instance.sol +34 -22
  335. package/contracts/instance/InstanceAdmin.sol +20 -30
  336. package/contracts/instance/InstanceAuthorizationV3.sol +38 -25
  337. package/contracts/instance/InstanceReader.sol +85 -1
  338. package/contracts/instance/InstanceService.sol +46 -87
  339. package/contracts/instance/RiskSet.sol +119 -0
  340. package/contracts/instance/base/ObjectLifecycle.sol +1 -1
  341. package/contracts/instance/base/ObjectSet.sol +24 -25
  342. package/contracts/instance/module/IComponents.sol +7 -5
  343. package/contracts/instance/module/IPolicy.sol +2 -1
  344. package/contracts/instance/module/IRisk.sol +1 -0
  345. package/contracts/oracle/BasicOracle.sol +0 -1
  346. package/contracts/oracle/IOracleService.sol +2 -1
  347. package/contracts/oracle/Oracle.sol +4 -15
  348. package/contracts/oracle/OracleService.sol +103 -75
  349. package/contracts/pool/BasicPool.sol +33 -24
  350. package/contracts/pool/BasicPoolAuthorization.sol +12 -2
  351. package/contracts/pool/BundleService.sol +60 -98
  352. package/contracts/pool/IBundleService.sol +2 -23
  353. package/contracts/pool/IPoolComponent.sol +1 -7
  354. package/contracts/pool/IPoolService.sol +12 -30
  355. package/contracts/pool/Pool.sol +118 -126
  356. package/contracts/pool/PoolService.sol +191 -142
  357. package/contracts/product/ApplicationService.sol +21 -13
  358. package/contracts/product/BasicProduct.sol +8 -12
  359. package/contracts/product/BasicProductAuthorization.sol +0 -1
  360. package/contracts/product/ClaimService.sol +113 -51
  361. package/contracts/product/IApplicationService.sol +5 -2
  362. package/contracts/product/IClaimService.sol +7 -0
  363. package/contracts/product/IPolicyService.sol +17 -7
  364. package/contracts/product/IPricingService.sol +9 -9
  365. package/contracts/product/IProductComponent.sol +6 -0
  366. package/contracts/product/PolicyService.sol +241 -194
  367. package/contracts/product/PricingService.sol +8 -8
  368. package/contracts/product/Product.sol +56 -61
  369. package/contracts/product/RiskService.sol +14 -3
  370. package/contracts/registry/ChainNft.sol +6 -9
  371. package/contracts/registry/IRegistry.sol +6 -3
  372. package/contracts/registry/IRegistryService.sol +6 -4
  373. package/contracts/registry/ITransferInterceptor.sol +1 -2
  374. package/contracts/registry/Registry.sol +22 -4
  375. package/contracts/registry/RegistryAdmin.sol +21 -34
  376. package/contracts/registry/RegistryService.sol +37 -55
  377. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  378. package/contracts/registry/ReleaseRegistry.sol +202 -208
  379. package/contracts/registry/ServiceAuthorizationV3.sol +17 -40
  380. package/contracts/shared/Component.sol +47 -106
  381. package/contracts/shared/ComponentService.sol +322 -157
  382. package/contracts/shared/ComponentVerifyingService.sol +27 -15
  383. package/contracts/shared/ContractLib.sol +196 -10
  384. package/contracts/shared/IComponent.sol +10 -16
  385. package/contracts/shared/IComponentService.sol +38 -16
  386. package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
  387. package/contracts/shared/ILifecycle.sol +3 -1
  388. package/contracts/shared/INftOwnable.sol +2 -0
  389. package/contracts/shared/IRegisterable.sol +11 -0
  390. package/contracts/shared/InstanceLinkedComponent.sol +66 -32
  391. package/contracts/shared/KeyValueStore.sol +1 -1
  392. package/contracts/shared/Lifecycle.sol +15 -4
  393. package/contracts/shared/NftOwnable.sol +23 -3
  394. package/contracts/shared/Registerable.sol +15 -7
  395. package/contracts/shared/RegistryLinked.sol +6 -12
  396. package/contracts/shared/Service.sol +4 -7
  397. package/contracts/shared/TokenHandler.sol +316 -66
  398. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  399. package/contracts/staking/IStaking.sol +9 -4
  400. package/contracts/staking/IStakingService.sol +0 -3
  401. package/contracts/staking/Staking.sol +31 -24
  402. package/contracts/staking/StakingService.sol +56 -23
  403. package/contracts/type/Key32.sol +2 -2
  404. package/contracts/type/Key32Set.sol +62 -0
  405. package/contracts/type/NftId.sol +6 -0
  406. package/contracts/type/ObjectType.sol +2 -0
  407. package/contracts/type/RiskId.sol +18 -6
  408. package/contracts/type/RoleId.sol +0 -12
  409. package/contracts/type/StateId.sol +14 -1
  410. package/contracts/upgradeability/ProxyManager.sol +2 -1
  411. package/package.json +3 -3
  412. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  413. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  414. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  415. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  416. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  417. package/contracts/authorization/ModuleAuthorization.sol +0 -78
@@ -17,7 +17,7 @@ import {IInstance} from "../instance/IInstance.sol";
17
17
  import {InstanceReader} from "../instance/InstanceReader.sol";
18
18
  import {IRegistry} from "../registry/IRegistry.sol";
19
19
  import {NftId} from "../type/NftId.sol";
20
- import {ObjectType, COMPONENT, INSTANCE} from "../type/ObjectType.sol";
20
+ import {ObjectType, COMPONENT, INSTANCE, PRODUCT} from "../type/ObjectType.sol";
21
21
  import {VersionPart} from "../type/Version.sol";
22
22
  import {RoleId, RoleIdLib} from "../type/RoleId.sol";
23
23
  import {IAccess} from "../instance/module/IAccess.sol";
@@ -48,18 +48,6 @@ abstract contract InstanceLinkedComponent is
48
48
  IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
49
49
  }
50
50
 
51
- function getInstance() public view override returns (IInstance instance) {
52
- return _getInstanceLinkedComponentStorage()._instance;
53
- }
54
-
55
- function getProductNftId() public view override returns (NftId productNftId) {
56
- return getComponentInfo().productNftId;
57
- }
58
-
59
- function getAuthorization() external view returns (IAuthorization authorization) {
60
- return _getInstanceLinkedComponentStorage()._initialAuthorization;
61
- }
62
-
63
51
  /// @inheritdoc IInstanceLinkedComponent
64
52
  function withdrawFees(Amount amount)
65
53
  external
@@ -71,6 +59,16 @@ abstract contract InstanceLinkedComponent is
71
59
  return _withdrawFees(amount);
72
60
  }
73
61
 
62
+ /// @inheritdoc IInstanceLinkedComponent
63
+ function getInstance() public view override returns (IInstance instance) {
64
+ return _getInstanceLinkedComponentStorage()._instance;
65
+ }
66
+
67
+ /// @inheritdoc IInstanceLinkedComponent
68
+ function getAuthorization() external view returns (IAuthorization authorization) {
69
+ return _getInstanceLinkedComponentStorage()._initialAuthorization;
70
+ }
71
+
74
72
  function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
75
73
  assembly {
76
74
  $.slot := INSTANCE_LINKED_COMPONENT_LOCATION_V1
@@ -79,50 +77,94 @@ abstract contract InstanceLinkedComponent is
79
77
 
80
78
  function _initializeInstanceLinkedComponent(
81
79
  address registry,
82
- NftId instanceNftId,
80
+ NftId parentNftId,
83
81
  string memory name,
84
82
  address token,
85
83
  ObjectType componentType,
86
84
  IAuthorization authorization,
87
85
  bool isInterceptor,
88
86
  address initialOwner,
89
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
90
87
  bytes memory componentData // data that will saved with the component info in the instance store
91
88
  )
92
89
  internal
93
90
  virtual
94
91
  onlyInitializing()
95
92
  {
93
+ // validate registry, nft ids and get parent nft id
94
+ NftId instanceNftId = _checkAndGetInstanceNftId(
95
+ registry,
96
+ parentNftId,
97
+ componentType);
98
+
96
99
  // set and check linked instance
97
100
  InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
98
101
  $._instance = IInstance(
99
102
  IRegistry(registry).getObjectAddress(instanceNftId));
100
103
 
101
- if(!$._instance.supportsInterface(type(IInstance).interfaceId)) {
102
- revert ErrorComponentNotInstance(instanceNftId);
103
- }
104
-
104
+ // set component specific parameters
105
105
  _initializeComponent(
106
- $._instance.authority(),
106
+ $._instance.authority(), // instance linked components need to point to instance admin
107
107
  registry,
108
- instanceNftId,
108
+ parentNftId,
109
109
  name,
110
110
  token,
111
111
  componentType,
112
112
  isInterceptor,
113
113
  initialOwner,
114
- registryData,
114
+ "", // registry data
115
115
  componentData);
116
116
 
117
- // set component state
117
+ // set instance linked specific parameters
118
118
  $._instanceReader = $._instance.getInstanceReader();
119
119
  $._initialAuthorization = authorization;
120
120
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
121
121
 
122
+ // register interfaces
122
123
  _registerInterface(type(IAccessManaged).interfaceId);
123
124
  _registerInterface(type(IInstanceLinkedComponent).interfaceId);
124
125
  }
125
126
 
127
+
128
+ function _checkAndGetInstanceNftId(
129
+ address registryAddress,
130
+ NftId parentNftId,
131
+ ObjectType componentType
132
+ )
133
+ internal
134
+ view
135
+ returns (NftId instanceNftId)
136
+ {
137
+ // if product, then parent is already instance
138
+ if (componentType == PRODUCT()) {
139
+ _checkAndGetRegistry(registryAddress, parentNftId, INSTANCE());
140
+ return parentNftId;
141
+ }
142
+
143
+ // if not product parent is product, and parent of product is instance
144
+ IRegistry registry = _checkAndGetRegistry(registryAddress, parentNftId, PRODUCT());
145
+ return registry.getObjectInfo(parentNftId).parentNftId;
146
+ }
147
+
148
+ /// @dev checks the and gets registry.
149
+ /// validates registry using a provided nft id and expected object type.
150
+ function _checkAndGetRegistry(
151
+ address registryAddress,
152
+ NftId objectNftId,
153
+ ObjectType requiredType
154
+ )
155
+ internal
156
+ view
157
+ returns (IRegistry registry)
158
+ {
159
+ registry = IRegistry(registryAddress);
160
+ IRegistry.ObjectInfo memory info = registry.getObjectInfo(objectNftId);
161
+
162
+ if (info.objectType != requiredType) {
163
+ revert ErrorInstanceLinkedComponentTypeMismatch(requiredType, info.objectType);
164
+ }
165
+ }
166
+
167
+
126
168
  /// @dev for instance linked components the wallet address stored in the instance store.
127
169
  /// updating needs to go throug component service
128
170
  function _setWallet(address newWallet) internal virtual override onlyOwner {
@@ -139,7 +181,7 @@ abstract contract InstanceLinkedComponent is
139
181
  info = _getInstanceReader().getComponentInfo(getNftId());
140
182
 
141
183
  // check if also registered with instance
142
- if (info.wallet != address(0)) {
184
+ if (address(info.tokenHandler) != address(0)) {
143
185
  return info;
144
186
  }
145
187
  }
@@ -160,12 +202,4 @@ abstract contract InstanceLinkedComponent is
160
202
  {
161
203
  return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
162
204
  }
163
-
164
-
165
- /// @dev returns the service address for the specified domain
166
- /// gets address via lookup from registry using the major version form the linked instance
167
- function _getServiceAddress(ObjectType domain) internal view returns (address service) {
168
- VersionPart majorVersion = _getInstanceLinkedComponentStorage()._instance.getMajorVersion();
169
- return getRegistry().getServiceAddress(domain, majorVersion);
170
- }
171
205
  }
@@ -94,7 +94,7 @@ abstract contract KeyValueStore is
94
94
 
95
95
  // update state
96
96
  if(state != KEEP_STATE()) {
97
- checkTransition(metadata.objectType, stateOld, state);
97
+ checkTransition(stateOld, metadata.objectType, stateOld, state);
98
98
  metadata.state = state;
99
99
 
100
100
  // solhint-disable-next-line avoid-tx-origin
@@ -49,8 +49,9 @@ abstract contract Lifecycle is
49
49
  }
50
50
 
51
51
  function checkTransition(
52
+ StateId stateId,
52
53
  ObjectType objectType,
53
- StateId fromId,
54
+ StateId expectedFromId,
54
55
  StateId toId
55
56
  )
56
57
  public
@@ -58,12 +59,22 @@ abstract contract Lifecycle is
58
59
  {
59
60
  // revert if no life cycle support
60
61
  if (_initialState[objectType].eqz()) {
61
- revert ErrorNoLifecycle(objectType);
62
+ revert ErrorNoLifecycle(address(this), objectType);
63
+ }
64
+
65
+ // revert if current state is not expected `from` state
66
+ if(stateId != expectedFromId) {
67
+ revert ErrorFromStateMissmatch(address(this), objectType, stateId, expectedFromId);
62
68
  }
63
69
 
64
70
  // enforce valid state transition
65
- if (!_isValidTransition[objectType][fromId][toId]) {
66
- revert ErrorInvalidStateTransition(objectType, fromId, toId);
71
+ if (!_isValidTransition[objectType][stateId][toId]) {
72
+ revert ErrorInvalidStateTransition(
73
+ address(this),
74
+ objectType,
75
+ stateId,
76
+ toId
77
+ );
67
78
  }
68
79
  }
69
80
 
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {InitializableERC165} from "./InitializableERC165.sol";
5
5
  import {INftOwnable} from "./INftOwnable.sol";
6
6
  import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
7
8
  import {RegistryLinked} from "./RegistryLinked.sol";
8
9
 
9
10
  contract NftOwnable is
@@ -27,18 +28,36 @@ contract NftOwnable is
27
28
  _;
28
29
  }
29
30
 
31
+ modifier onlyNftOwner(NftId nftId) {
32
+ if(!getRegistry().isOwnerOf(nftId, msg.sender)) {
33
+ revert ErrorNftOwnableNotOwner(msg.sender);
34
+ }
35
+ _;
36
+ }
37
+
38
+ modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
39
+ _checkNftType(nftId, expectedObjectType);
40
+ _;
41
+ }
42
+
43
+ function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
44
+ if(!getRegistry().isObjectType(nftId, expectedObjectType)) {
45
+ revert ErrorNftOwnableInvalidType(nftId, expectedObjectType);
46
+ }
47
+ }
48
+
30
49
 
31
50
  /// @dev initialization for upgradable contracts
32
51
  // used in _initializeRegisterable
33
52
  function _initializeNftOwnable(
34
- address initialOwner,
35
- address registryAddress
53
+ address registry,
54
+ address initialOwner
36
55
  )
37
56
  internal
38
57
  virtual
39
58
  onlyInitializing()
40
59
  {
41
- _initializeRegistryLinked(registryAddress);
60
+ _initializeRegistryLinked(registry);
42
61
  _initializeERC165();
43
62
 
44
63
  if(initialOwner == address(0)) {
@@ -100,6 +119,7 @@ contract NftOwnable is
100
119
 
101
120
 
102
121
  function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
122
+ // solhint-disable-next-line no-inline-assembly
103
123
  assembly {
104
124
  $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
105
125
  }
@@ -1,11 +1,10 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
-
6
4
  import {NftId, NftIdLib} from "../type/NftId.sol";
7
5
  import {NftOwnable} from "../shared/NftOwnable.sol";
8
6
  import {ObjectType} from "../type/ObjectType.sol";
7
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
9
8
 
10
9
  import {IRegistry} from "../registry/IRegistry.sol";
11
10
  import {IRegisterable} from "./IRegisterable.sol";
@@ -14,6 +13,8 @@ contract Registerable is
14
13
  NftOwnable,
15
14
  IRegisterable
16
15
  {
16
+ uint256 public constant GIF_RELEASE = 3;
17
+
17
18
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
18
19
  bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
19
20
 
@@ -25,20 +26,20 @@ contract Registerable is
25
26
  }
26
27
 
27
28
  function _initializeRegisterable(
28
- address registryAddress,
29
+ address registry,
29
30
  NftId parentNftId,
30
31
  ObjectType objectType,
31
32
  bool isInterceptor,
32
33
  address initialOwner,
33
- bytes memory registryData // writeonly data that will saved in the object info record of the registry
34
+ bytes memory data // writeonly data that will saved in the object info record of the registry
34
35
  )
35
36
  internal
36
37
  virtual
37
38
  onlyInitializing()
38
39
  {
39
40
  _initializeNftOwnable(
40
- initialOwner,
41
- registryAddress);
41
+ registry,
42
+ initialOwner);
42
43
 
43
44
  RegisterableStorage storage $;
44
45
  assembly {
@@ -48,10 +49,17 @@ contract Registerable is
48
49
  $._parentNftId = parentNftId;
49
50
  $._objectType = objectType;
50
51
  $._isInterceptor = isInterceptor;
51
- $._data = registryData;
52
+ $._data = data;
53
+ }
54
+
55
+
56
+ /// @inheritdoc IRegisterable
57
+ function getRelease() public virtual pure returns (VersionPart release) {
58
+ return VersionPartLib.toVersionPart(GIF_RELEASE);
52
59
  }
53
60
 
54
61
 
62
+ /// @inheritdoc IRegisterable
55
63
  function getInitialInfo()
56
64
  public
57
65
  view
@@ -2,6 +2,8 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
6
+ import {ContractLib} from "../shared/ContractLib.sol";
5
7
  import {IRegistry} from "../registry/IRegistry.sol";
6
8
  import {IRegistryLinked} from "./IRegistryLinked.sol";
7
9
 
@@ -16,25 +18,17 @@ contract RegistryLinked is
16
18
  /// @dev initialization for upgradable contracts
17
19
  // used in _initializeRegisterable
18
20
  function _initializeRegistryLinked(
19
- address registryAddress
21
+ address registry
20
22
  )
21
23
  internal
22
24
  virtual
23
25
  onlyInitializing()
24
26
  {
25
- if (registryAddress.code.length == 0) {
26
- revert ErrorNotRegistry(registryAddress);
27
+ if (!ContractLib.isRegistry(registry)) {
28
+ revert ErrorNotRegistry(registry);
27
29
  }
28
30
 
29
- _registry = IRegistry(registryAddress);
30
-
31
- try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
32
- if (!isRegistry) {
33
- revert ErrorNotRegistry(registryAddress);
34
- }
35
- } catch {
36
- revert ErrorNotRegistry(registryAddress);
37
- }
31
+ _registry = IRegistry(registry);
38
32
  }
39
33
 
40
34
 
@@ -24,9 +24,6 @@ abstract contract Service is
24
24
  IService
25
25
  {
26
26
 
27
- uint8 private constant GIF_MAJOR_VERSION = 3;
28
-
29
-
30
27
  function _initializeService(
31
28
  address registry,
32
29
  address authority, // real authority for registry service adress(0) for other services
@@ -66,22 +63,22 @@ abstract contract Service is
66
63
  }
67
64
 
68
65
  function getRoleId() external virtual pure returns(RoleId serviceRoleId) {
69
- return RoleIdLib.roleForTypeAndVersion(_getDomain(), VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
66
+ return RoleIdLib.roleForTypeAndVersion(_getDomain(), getRelease());
70
67
  }
71
68
 
72
- // from Versionable
69
+ /// @inheritdoc IVersionable
73
70
  function getVersion()
74
71
  public
75
72
  pure
76
73
  virtual override (IVersionable, Versionable)
77
74
  returns(Version)
78
75
  {
79
- return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
76
+ return VersionLib.toVersion(GIF_RELEASE,0,0);
80
77
  }
81
78
 
82
79
  function _getDomain() internal virtual pure returns (ObjectType);
83
80
 
84
81
  function _getServiceAddress(ObjectType domain) internal view returns (address) {
85
- return getRegistry().getServiceAddress(domain, VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
82
+ return getRegistry().getServiceAddress(domain, getRelease());
86
83
  }
87
84
  }