@etherisc/gif-next 3.0.0-1a7e54a-113 → 3.0.0-1b49bd6-565

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 (472) hide show
  1. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +139 -72
  3. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +110 -116
  5. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +72 -33
  7. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +89 -66
  9. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +122 -101
  11. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +20 -65
  13. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +31 -55
  15. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +20 -10
  18. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +1 -1
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +18 -42
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +126 -75
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +41 -65
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +72 -57
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +198 -139
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +140 -150
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +84 -56
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +71 -32
  38. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +166 -104
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +41 -65
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +200 -138
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +41 -65
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  48. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
  49. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +160 -56
  50. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
  51. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
  52. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +173 -116
  53. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
  54. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +41 -65
  55. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +170 -108
  57. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +41 -65
  59. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +580 -134
  61. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +41 -65
  63. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
  64. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +212 -2
  65. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
  66. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  67. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +159 -102
  68. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  69. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +41 -65
  70. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  71. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +163 -106
  72. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  73. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +177 -120
  74. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  75. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +41 -65
  76. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  77. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +171 -114
  78. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  79. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +41 -65
  80. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  81. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  82. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +49 -54
  83. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  85. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +77 -25
  86. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +83 -44
  88. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  89. package/artifacts/contracts/instance/Instance.sol/Instance.json +144 -50
  90. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  91. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +169 -147
  92. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  93. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +43 -67
  94. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  95. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +36 -36
  96. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +138 -75
  98. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +104 -112
  100. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  101. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2 -2
  102. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  103. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2 -2
  104. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  105. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +53 -58
  106. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  107. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  108. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  109. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +1 -1
  110. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  111. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  112. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  113. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  114. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  115. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +3 -8
  116. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  117. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  118. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  119. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  120. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  121. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  122. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  123. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  124. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  125. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +132 -81
  126. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  127. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +41 -65
  128. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  129. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  130. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +94 -66
  131. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  132. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +80 -83
  133. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  134. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +82 -67
  135. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  136. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +149 -148
  137. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +111 -129
  139. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  140. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +88 -73
  141. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  142. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +41 -65
  143. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  144. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +176 -117
  145. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +129 -139
  147. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  148. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +71 -32
  149. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  150. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +100 -72
  151. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  152. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +94 -86
  153. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  154. package/artifacts/contracts/pool/Pool.sol/Pool.json +88 -73
  155. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  156. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +24 -247
  157. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  158. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +233 -165
  159. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  160. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +140 -130
  161. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  162. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +138 -63
  163. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  164. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +110 -112
  165. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  166. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +72 -57
  167. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  168. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +41 -65
  169. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  170. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +182 -115
  171. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +132 -138
  173. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  174. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +71 -32
  175. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  176. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +71 -32
  177. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  178. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +82 -64
  179. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  180. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +82 -43
  181. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  182. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +84 -56
  183. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  184. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +75 -36
  185. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  186. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +173 -127
  187. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  188. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +2 -2
  189. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +122 -128
  191. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  192. package/artifacts/contracts/product/PricingService.sol/PricingService.json +161 -94
  193. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  194. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +116 -122
  195. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  196. package/artifacts/contracts/product/Product.sol/Product.json +72 -57
  197. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  198. package/artifacts/contracts/product/RiskService.sol/RiskService.json +146 -63
  199. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  200. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +109 -107
  201. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  202. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  203. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +155 -56
  204. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  205. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +202 -216
  206. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  207. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +1 -15
  208. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  209. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  210. package/artifacts/contracts/registry/Registry.sol/Registry.json +314 -96
  211. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  212. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +163 -142
  213. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  214. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +57 -77
  215. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  216. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +285 -244
  217. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  218. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +115 -110
  219. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  220. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +159 -150
  221. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  222. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  223. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  224. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +127 -185
  225. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  226. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +32 -56
  227. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  228. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +13 -29
  229. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  230. package/artifacts/contracts/shared/Component.sol/Component.json +84 -39
  231. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  232. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +164 -320
  233. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  234. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +115 -141
  235. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  236. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +421 -169
  237. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +691 -0
  240. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +96 -38
  242. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +82 -226
  244. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +84 -56
  246. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  247. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +1 -28
  249. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  250. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +1 -12
  251. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  252. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +77 -25
  253. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  254. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +1 -12
  255. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  256. package/artifacts/contracts/shared/IService.sol/IService.json +71 -32
  257. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  258. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +74 -0
  259. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  260. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  261. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +72 -57
  262. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  263. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  264. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  265. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  266. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -34
  267. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  268. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +3 -14
  269. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  270. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +76 -24
  271. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  272. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +3 -37
  273. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  274. package/artifacts/contracts/shared/Service.sol/Service.json +70 -31
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  276. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +42 -29
  277. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  278. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +30 -17
  279. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  280. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +34 -34
  281. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  282. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +74 -0
  283. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  284. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +101 -56
  285. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  286. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +75 -36
  287. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  288. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  289. package/artifacts/contracts/staking/Staking.sol/Staking.json +170 -109
  290. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +26 -31
  292. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  293. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +112 -124
  294. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  295. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +5 -22
  296. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  297. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +132 -65
  298. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  299. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +105 -111
  300. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  301. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +212 -204
  302. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  303. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +27 -19
  304. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  305. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +16 -16
  306. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  307. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
  311. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  313. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  315. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  318. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  319. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  320. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  322. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  323. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  324. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +6 -6
  326. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  328. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  330. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  332. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
  333. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +2 -2
  334. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  336. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +4 -4
  338. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  346. package/artifacts/contracts/type/Version.sol/VersionLib.json +10 -10
  347. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  348. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +19 -6
  349. package/artifacts/contracts/upgradeability/IUpgradeable.sol/IUpgradeable.dbg.json +4 -0
  350. package/artifacts/contracts/upgradeability/{IVersionable.sol/IVersionable.json → IUpgradeable.sol/IUpgradeable.json} +54 -4
  351. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  352. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +63 -86
  353. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  354. package/artifacts/contracts/upgradeability/Upgradeable.sol/Upgradeable.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/{Versionable.sol/Versionable.json → Upgradeable.sol/Upgradeable.json} +54 -4
  356. package/contracts/accounting/AccountingService.sol +5 -6
  357. package/contracts/accounting/AccountingServiceManager.sol +4 -6
  358. package/contracts/accounting/IAccountingService.sol +1 -1
  359. package/contracts/authorization/AccessAdmin.sol +22 -19
  360. package/contracts/authorization/AccessAdminLib.sol +14 -11
  361. package/contracts/authorization/AccessManagerCloneable.sol +24 -48
  362. package/contracts/authorization/Authorization.sol +2 -2
  363. package/contracts/authorization/IAccessAdmin.sol +3 -3
  364. package/contracts/authorization/IServiceAuthorization.sol +1 -1
  365. package/contracts/authorization/ServiceAuthorization.sol +4 -4
  366. package/contracts/distribution/BasicDistribution.sol +0 -2
  367. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -4
  368. package/contracts/distribution/Distribution.sol +0 -2
  369. package/contracts/distribution/DistributionService.sol +24 -20
  370. package/contracts/distribution/DistributionServiceManager.sol +4 -6
  371. package/contracts/examples/fire/FirePool.sol +0 -4
  372. package/contracts/examples/fire/FireProduct.sol +0 -4
  373. package/contracts/examples/flight/FlightLib.sol +48 -37
  374. package/contracts/examples/flight/FlightOracle.sol +0 -4
  375. package/contracts/examples/flight/FlightPool.sol +0 -4
  376. package/contracts/examples/flight/FlightProduct.sol +120 -15
  377. package/contracts/examples/flight/FlightProductAuthorization.sol +2 -1
  378. package/contracts/examples/flight/FlightUSD.sol +3 -1
  379. package/contracts/examples/unpermissioned/SimpleDistribution.sol +0 -4
  380. package/contracts/examples/unpermissioned/SimpleOracle.sol +0 -4
  381. package/contracts/examples/unpermissioned/SimplePool.sol +0 -4
  382. package/contracts/examples/unpermissioned/SimpleProduct.sol +0 -4
  383. package/contracts/instance/Instance.sol +7 -11
  384. package/contracts/instance/InstanceAdmin.sol +10 -17
  385. package/contracts/instance/InstanceAuthorizationV3.sol +4 -2
  386. package/contracts/instance/InstanceReader.sol +15 -15
  387. package/contracts/instance/InstanceService.sol +18 -20
  388. package/contracts/instance/InstanceServiceManager.sol +4 -6
  389. package/contracts/instance/base/Cloneable.sol +4 -10
  390. package/contracts/instance/base/ObjectSet.sol +2 -2
  391. package/contracts/oracle/BasicOracle.sol +0 -2
  392. package/contracts/oracle/BasicOracleAuthorization.sol +3 -1
  393. package/contracts/oracle/IOracleService.sol +0 -4
  394. package/contracts/oracle/Oracle.sol +3 -4
  395. package/contracts/oracle/OracleService.sol +37 -67
  396. package/contracts/oracle/OracleServiceManager.sol +4 -6
  397. package/contracts/pool/BasicPool.sol +2 -4
  398. package/contracts/pool/BasicPoolAuthorization.sol +5 -4
  399. package/contracts/pool/BundleService.sol +25 -19
  400. package/contracts/pool/BundleServiceManager.sol +5 -7
  401. package/contracts/pool/IPoolService.sol +5 -6
  402. package/contracts/pool/Pool.sol +1 -3
  403. package/contracts/pool/PoolLib.sol +5 -102
  404. package/contracts/pool/PoolService.sol +67 -101
  405. package/contracts/pool/PoolServiceManager.sol +4 -6
  406. package/contracts/product/ApplicationService.sol +13 -34
  407. package/contracts/product/ApplicationServiceManager.sol +4 -6
  408. package/contracts/product/BasicProduct.sol +0 -2
  409. package/contracts/product/BasicProductAuthorization.sol +5 -4
  410. package/contracts/product/ClaimService.sol +10 -34
  411. package/contracts/product/ClaimServiceManager.sol +5 -7
  412. package/contracts/product/IPolicyService.sol +0 -1
  413. package/contracts/product/PolicyService.sol +44 -57
  414. package/contracts/product/PolicyServiceManager.sol +4 -6
  415. package/contracts/product/PricingService.sol +7 -8
  416. package/contracts/product/PricingServiceManager.sol +4 -6
  417. package/contracts/product/Product.sol +0 -2
  418. package/contracts/product/RiskService.sol +8 -40
  419. package/contracts/product/RiskServiceManager.sol +4 -6
  420. package/contracts/registry/IRegistry.sol +20 -14
  421. package/contracts/registry/IRegistryService.sol +10 -14
  422. package/contracts/registry/IRelease.sol +0 -3
  423. package/contracts/registry/Registry.sol +124 -78
  424. package/contracts/registry/RegistryAdmin.sol +11 -22
  425. package/contracts/registry/RegistryAuthorization.sol +4 -3
  426. package/contracts/registry/RegistryService.sol +99 -82
  427. package/contracts/registry/RegistryServiceManager.sol +4 -11
  428. package/contracts/registry/ReleaseAdmin.sol +9 -16
  429. package/contracts/registry/ReleaseRegistry.sol +64 -74
  430. package/contracts/registry/ServiceAuthorizationV3.sol +4 -3
  431. package/contracts/registry/TokenRegistry.sol +6 -15
  432. package/contracts/shared/Component.sol +27 -22
  433. package/contracts/shared/ComponentService.sol +45 -130
  434. package/contracts/shared/ComponentServiceManager.sol +5 -7
  435. package/contracts/shared/ContractLib.sol +359 -93
  436. package/contracts/shared/IAuthorizedComponent.sol +15 -0
  437. package/contracts/shared/IComponent.sol +5 -3
  438. package/contracts/shared/IComponentService.sol +0 -14
  439. package/contracts/shared/IInstanceLinkedComponent.sol +5 -12
  440. package/contracts/shared/INftOwnable.sol +0 -2
  441. package/contracts/shared/IRegisterable.sol +14 -3
  442. package/contracts/shared/IRegistryLinked.sol +1 -3
  443. package/contracts/shared/IService.sol +2 -2
  444. package/contracts/shared/IVersionable.sol +19 -0
  445. package/contracts/shared/InstanceLinkedComponent.sol +31 -65
  446. package/contracts/shared/NftOwnable.sol +9 -22
  447. package/contracts/shared/PolicyHolder.sol +2 -4
  448. package/contracts/shared/Registerable.sol +37 -20
  449. package/contracts/shared/RegistryLinked.sol +4 -23
  450. package/contracts/shared/Service.sol +8 -9
  451. package/contracts/shared/TokenHandler.sol +4 -1
  452. package/contracts/shared/Versionable.sol +47 -0
  453. package/contracts/staking/IStaking.sol +2 -2
  454. package/contracts/staking/Staking.sol +28 -33
  455. package/contracts/staking/StakingLib.sol +3 -1
  456. package/contracts/staking/StakingManager.sol +3 -6
  457. package/contracts/staking/StakingReader.sol +9 -17
  458. package/contracts/staking/StakingService.sol +16 -13
  459. package/contracts/staking/StakingServiceManager.sol +4 -8
  460. package/contracts/staking/StakingStore.sol +8 -8
  461. package/contracts/staking/TargetHandler.sol +4 -5
  462. package/contracts/type/Version.sol +15 -16
  463. package/contracts/upgradeability/{IVersionable.sol → IUpgradeable.sol} +13 -19
  464. package/contracts/upgradeability/ProxyManager.sol +46 -54
  465. package/contracts/upgradeability/{Versionable.sol → Upgradeable.sol} +25 -14
  466. package/package.json +1 -1
  467. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +0 -4
  468. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +0 -24
  469. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +0 -4
  470. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +0 -40
  471. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +0 -4
  472. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +0 -4
@@ -2,29 +2,22 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
- import {IComponent} from "../shared/IComponent.sol";
5
+ import {IAuthorizedComponent} from "../shared/IAuthorizedComponent.sol";
6
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
7
7
  import {IInstance} from "../instance/IInstance.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
9
  import {ObjectType} from "../type/ObjectType.sol";
10
+ import {VersionPart} from "../type/Version.sol";
10
11
 
11
12
  /// @dev component base class
12
13
  /// component examples are product, distribution, pool and oracle
13
14
  interface IInstanceLinkedComponent is
14
- IComponent
15
+ IAuthorizedComponent
15
16
  {
16
- error ErrorInstanceLinkedComponentTypeMismatch(ObjectType requiredType, ObjectType objectType);
17
- error ErrorInstanceLinkedComponentNotProduct(NftId nftId, ObjectType objectType);
18
-
19
- /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
20
- /// @param amount the amount to withdraw
21
- /// @return withdrawnAmount the amount that was actually withdrawn
22
- function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
17
+ error ErrorInstanceLinkedComponentInstanceInvalid();
18
+ error ErrorInstanceLinkedComponentInstanceMismatch(VersionPart instanceRelease, VersionPart componentRelease);
23
19
 
24
20
  /// @dev defines the instance to which this component is linked to
25
21
  function getInstance() external view returns (IInstance instance);
26
22
 
27
- /// @dev returns the initial component authorization specification.
28
- function getAuthorization() external view returns (IAuthorization authorization);
29
-
30
23
  }
@@ -5,7 +5,6 @@ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
6
  import {IRegistryLinked} from "./IRegistryLinked.sol";
7
7
  import {NftId} from "../type/NftId.sol";
8
- import {ObjectType} from "../type/ObjectType.sol";
9
8
 
10
9
  interface INftOwnable is
11
10
  IERC165,
@@ -15,7 +14,6 @@ interface INftOwnable is
15
14
 
16
15
  error ErrorNftOwnableInitialOwnerZero();
17
16
  error ErrorNftOwnableNotOwner(address account);
18
- error ErrorNftOwnableInvalidType(NftId nftId, ObjectType expectedObjectType);
19
17
 
20
18
  error ErrorNftOwnableAlreadyLinked(NftId nftId);
21
19
  error ErrorNftOwnableContractNotRegistered(address contractAddress);
@@ -4,8 +4,11 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
6
  import {INftOwnable} from "./INftOwnable.sol";
7
- import {IRelease} from "../registry/IRelease.sol";
8
7
  import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IVersionable} from "./IVersionable.sol";
9
+ import {ObjectType} from "../type/ObjectType.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {VersionPart} from "../type/Version.sol";
9
12
 
10
13
  /// @title IRegisterable
11
14
  /// @dev Marks contracts that are intended to be registered in the registry.
@@ -13,7 +16,7 @@ import {IRegistry} from "../registry/IRegistry.sol";
13
16
  interface IRegisterable is
14
17
  IAccessManaged,
15
18
  INftOwnable,
16
- IRelease
19
+ IVersionable
17
20
  {
18
21
  // __Registerable_init
19
22
  error ErrorAuthorityInvalid(address authority);
@@ -21,6 +24,9 @@ interface IRegisterable is
21
24
  // onlyActive()
22
25
  error ErrorRegisterableNotActive();
23
26
 
27
+ //_checkNftType()
28
+ error ErrorRegisterableInvalidType(NftId nftId, ObjectType expectedType, VersionPart expectedRelease);
29
+
24
30
  /// @dev Returns true iff this contract managed by its authority is active.
25
31
  /// Queries the IAccessManaged.authority().
26
32
  function isActive() external view returns (bool active);
@@ -32,5 +38,10 @@ interface IRegisterable is
32
38
  function getInitialInfo()
33
39
  external
34
40
  view
35
- returns (IRegistry.ObjectInfo memory);
41
+ returns (IRegistry.ObjectInfo memory info);
42
+
43
+ function getInitialData()
44
+ external
45
+ view
46
+ returns (bytes memory data);
36
47
  }
@@ -5,7 +5,5 @@ import {IRegistry} from "../registry/IRegistry.sol";
5
5
 
6
6
  interface IRegistryLinked {
7
7
 
8
- error ErrorNotRegistry(address registryAddress);
9
-
10
- function getRegistry() external view returns (IRegistry);
8
+ function getRegistry() external pure returns (IRegistry);
11
9
  }
@@ -4,14 +4,14 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
6
  import {IRegisterable} from "./IRegisterable.sol";
7
- import {IVersionable} from "../upgradeability/IVersionable.sol";
7
+ import {IUpgradeable} from "../upgradeability/IUpgradeable.sol";
8
8
  import {ObjectType} from "../type/ObjectType.sol";
9
9
  import {RoleId} from "../type/RoleId.sol";
10
10
 
11
11
  interface IService is
12
12
  IAccessManaged,
13
13
  IRegisterable,
14
- IVersionable
14
+ IUpgradeable
15
15
  {
16
16
  /// @dev returns the domain for this service.
17
17
  /// In any GIF release only one service for any given domain may be deployed.
@@ -0,0 +1,19 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Version, VersionPart} from "../type/Version.sol";
5
+
6
+ interface IVersionable {
7
+
8
+ error ErrorVersionableReleaseInvalid(address target, VersionPart invalidRelease);
9
+ error ErrorVersionableReleaseMismatch(address target, VersionPart expected, VersionPart actual);
10
+
11
+ /**
12
+ * @dev returns version of this contract
13
+ * implementation MUST define version in this function
14
+ * version number MUST increase
15
+ */
16
+ function getVersion() external pure returns(Version);
17
+
18
+ function getRelease() external pure returns(VersionPart);
19
+ }
@@ -2,6 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IAuthorization} from "../authorization/IAuthorization.sol";
5
+ import {IAuthorizedComponent} from "../shared/IAuthorizedComponent.sol";
5
6
  import {IComponents} from "../instance/module/IComponents.sol";
6
7
  import {IComponentService} from "./IComponentService.sol";
7
8
  import {IInstance} from "../instance/IInstance.sol";
@@ -32,7 +33,6 @@ abstract contract InstanceLinkedComponent is
32
33
 
33
34
  struct InstanceLinkedComponentStorage {
34
35
  IInstance _instance; // instance for this component
35
- InstanceReader _instanceReader; // instance reader for this component
36
36
  IAuthorization _initialAuthorization;
37
37
  IComponentService _componentService;
38
38
  IOracleService _oracleService;
@@ -46,22 +46,13 @@ abstract contract InstanceLinkedComponent is
46
46
  }
47
47
 
48
48
 
49
- /// @inheritdoc IInstanceLinkedComponent
49
+ /// @inheritdoc IAuthorizedComponent
50
50
  function getAuthorization() external view virtual returns (IAuthorization authorization) {
51
51
  return _getInstanceLinkedComponentStorage()._initialAuthorization;
52
52
  }
53
53
 
54
54
 
55
- /// @inheritdoc IInstanceLinkedComponent
56
- function withdrawFees(Amount amount)
57
- external
58
- virtual
59
- restricted()
60
- onlyOwner()
61
- returns (Amount withdrawnAmount)
62
- {
63
- return _withdrawFees(amount);
64
- }
55
+ //function setInstanceReader(address readerAddress);
65
56
 
66
57
  //--- internal functions ------------------------------------------------//
67
58
 
@@ -83,6 +74,7 @@ abstract contract InstanceLinkedComponent is
83
74
  }
84
75
 
85
76
 
77
+
86
78
  function _cancelRequest(RequestId requestId)
87
79
  internal
88
80
  virtual
@@ -107,7 +99,6 @@ abstract contract InstanceLinkedComponent is
107
99
 
108
100
 
109
101
  function __InstanceLinkedComponent_init(
110
- address registry,
111
102
  NftId parentNftId,
112
103
  string memory name,
113
104
  ObjectType componentType,
@@ -115,34 +106,25 @@ abstract contract InstanceLinkedComponent is
115
106
  bool isInterceptor,
116
107
  address initialOwner
117
108
  )
118
- internal
109
+ internal
119
110
  virtual
120
111
  onlyInitializing()
121
112
  {
122
- // validate registry, nft ids and get parent nft id
123
- NftId instanceNftId = _checkAndGetInstanceNftId(
124
- registry,
125
- parentNftId,
126
- componentType);
127
-
128
- // set and check linked instance
129
- InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
130
- $._instance = IInstance(
131
- IRegistry(registry).getObjectAddress(instanceNftId));
113
+ IInstance instance = _checkAndGetInstance(parentNftId, componentType);
132
114
 
133
115
  // set component specific parameters
134
116
  __Component_init(
135
- $._instance.authority(), // instance linked components need to point to instance admin
136
- registry,
117
+ instance.authority(),
137
118
  parentNftId,
138
119
  name,
139
- componentType,
120
+ componentType,
140
121
  isInterceptor,
141
122
  initialOwner,
142
123
  ""); // registry data
143
124
 
144
125
  // set instance linked specific parameters
145
- $._instanceReader = $._instance.getInstanceReader();
126
+ InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
127
+ $._instance = instance;
146
128
  $._initialAuthorization = authorization;
147
129
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
148
130
  $._oracleService = IOracleService(_getServiceAddress(ORACLE()));
@@ -151,44 +133,35 @@ abstract contract InstanceLinkedComponent is
151
133
  _registerInterface(type(IInstanceLinkedComponent).interfaceId);
152
134
  }
153
135
 
154
-
155
- function _checkAndGetInstanceNftId(
156
- address registryAddress,
136
+ function _checkAndGetInstance(
157
137
  NftId parentNftId,
158
138
  ObjectType componentType
159
139
  )
160
- internal
140
+ private
161
141
  view
162
- returns (NftId instanceNftId)
142
+ returns (IInstance instance)
163
143
  {
164
- // if product, then parent is already instance
165
- if (componentType == PRODUCT()) {
166
- _checkAndGetRegistry(registryAddress, parentNftId, INSTANCE());
167
- return parentNftId;
144
+ NftId instanceNftId;
145
+ IRegistry registry = _getRegistry();
146
+
147
+ if(componentType == PRODUCT()) {
148
+ instanceNftId = parentNftId;
149
+ } else {
150
+ NftId productNftId = parentNftId;
151
+ instanceNftId = registry.getParentNftId(productNftId);
168
152
  }
169
153
 
170
- // if not product parent is product, and parent of product is instance
171
- IRegistry registry = _checkAndGetRegistry(registryAddress, parentNftId, PRODUCT());
172
- return registry.getParentNftId(parentNftId);
173
- }
154
+ IRegistry.ObjectInfo memory info = registry.getObjectInfo(instanceNftId);
174
155
 
175
- /// @dev checks the and gets registry.
176
- /// validates registry using a provided nft id and expected object type.
177
- function _checkAndGetRegistry(
178
- address registryAddress,
179
- NftId objectNftId,
180
- ObjectType requiredType
181
- )
182
- internal
183
- view
184
- returns (IRegistry registry)
185
- {
186
- registry = IRegistry(registryAddress);
187
- IRegistry.ObjectInfo memory info = registry.getObjectInfo(objectNftId);
156
+ if (info.objectType != INSTANCE()) {
157
+ revert ErrorInstanceLinkedComponentInstanceInvalid();
158
+ }
188
159
 
189
- if (info.objectType != requiredType) {
190
- revert ErrorInstanceLinkedComponentTypeMismatch(requiredType, info.objectType);
160
+ if(info.release != getRelease()) {
161
+ revert ErrorInstanceLinkedComponentInstanceMismatch(info.release, getRelease());
191
162
  }
163
+
164
+ instance = IInstance(info.objectAddress);
192
165
  }
193
166
 
194
167
 
@@ -200,7 +173,7 @@ abstract contract InstanceLinkedComponent is
200
173
 
201
174
 
202
175
  function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
203
- NftId componentNftId = getRegistry().getNftIdForAddress(address(this));
176
+ NftId componentNftId = _getRegistry().getNftIdForAddress(address(this));
204
177
 
205
178
  // if registered, attempt to return component info via instance reader
206
179
  if (componentNftId.gtz()) {
@@ -220,13 +193,6 @@ abstract contract InstanceLinkedComponent is
220
193
 
221
194
  /// @dev returns reader for linked instance
222
195
  function _getInstanceReader() internal view returns (InstanceReader reader) {
223
- return _getInstanceLinkedComponentStorage()._instanceReader;
224
- }
225
-
226
- function _withdrawFees(Amount amount)
227
- internal
228
- returns (Amount withdrawnAmount)
229
- {
230
- return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
196
+ return _getInstanceLinkedComponentStorage()._instance.getInstanceReader();
231
197
  }
232
198
  }
@@ -4,7 +4,6 @@ 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";
8
7
  import {RegistryLinked} from "./RegistryLinked.sol";
9
8
 
10
9
  contract NftOwnable is
@@ -29,28 +28,15 @@ contract NftOwnable is
29
28
  }
30
29
 
31
30
  modifier onlyNftOwner(NftId nftId) {
32
- if(!getRegistry().isOwnerOf(nftId, msg.sender)) {
31
+ if(!_getRegistry().isOwnerOf(nftId, msg.sender)) {
33
32
  revert ErrorNftOwnableNotOwner(msg.sender);
34
33
  }
35
34
  _;
36
35
  }
37
36
 
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(expectedObjectType.eqz() || !getRegistry().isObjectType(nftId, expectedObjectType)) {
45
- revert ErrorNftOwnableInvalidType(nftId, expectedObjectType);
46
- }
47
- }
48
-
49
-
50
37
  /// @dev Initialization for upgradable contracts.
51
- // used in __Registerable_init, ProxyManager._preDeployChecksAndSetup
38
+ // used in __Registerable_init, ProxyManager.initialize
52
39
  function __NftOwnable_init(
53
- address registry,
54
40
  address initialOwner
55
41
  )
56
42
  internal
@@ -58,7 +44,6 @@ contract NftOwnable is
58
44
  onlyInitializing()
59
45
  {
60
46
  __ERC165_init();
61
- __RegistryLinked_init(registry);
62
47
 
63
48
  if(initialOwner == address(0)) {
64
49
  revert ErrorNftOwnableInitialOwnerZero();
@@ -88,7 +73,7 @@ contract NftOwnable is
88
73
  NftOwnableStorage storage $ = _getNftOwnableStorage();
89
74
 
90
75
  if ($._nftId.gtz()) {
91
- return getRegistry().ownerOf($._nftId);
76
+ return _getRegistry().ownerOf($._nftId);
92
77
  }
93
78
 
94
79
  return $._initialOwner;
@@ -108,15 +93,17 @@ contract NftOwnable is
108
93
  revert ErrorNftOwnableAlreadyLinked($._nftId);
109
94
  }
110
95
 
111
- if (!getRegistry().isRegistered(nftOwnableAddress)) {
96
+ NftId nftId = _getRegistry().getNftIdForAddress(nftOwnableAddress);
97
+
98
+ if (nftId.eqz()) {
112
99
  revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
113
100
  }
114
101
 
115
- $._nftId = getRegistry().getNftIdForAddress(nftOwnableAddress);
102
+ $._nftId = nftId;
116
103
 
117
- emit LogNftOwnableNftLinkedToAddress($._nftId, getOwner());
104
+ emit LogNftOwnableNftLinkedToAddress(nftId, getOwner());
118
105
 
119
- return $._nftId;
106
+ return nftId;
120
107
  }
121
108
 
122
109
 
@@ -23,14 +23,12 @@ contract PolicyHolder is
23
23
  // callbacks must only be allowed from the policy and claim services
24
24
  // will need a release parameter to fetch the right service addresses for the modifiers
25
25
 
26
- function _initializePolicyHolder(
27
- address registryAddress
26
+ function __PolicyHolder_init(
28
27
  )
29
28
  internal
30
29
  virtual
31
30
  onlyInitializing()
32
31
  {
33
- __RegistryLinked_init(registryAddress);
34
32
  _initializeERC165();
35
33
  _registerInterface(type(IPolicyHolder).interfaceId);
36
34
  }
@@ -47,7 +45,7 @@ contract PolicyHolder is
47
45
  /// @dev empty default implementation
48
46
  function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external virtual {}
49
47
 
50
- //--- IERC165 functions ---------------//
48
+ //--- IERC721 functions ---------------//
51
49
  function onERC721Received(
52
50
  address, // operator
53
51
  address, // from
@@ -9,15 +9,16 @@ import {ContractLib} from "../shared/ContractLib.sol";
9
9
  import {NftId, NftIdLib} from "../type/NftId.sol";
10
10
  import {NftOwnable} from "../shared/NftOwnable.sol";
11
11
  import {ObjectType} from "../type/ObjectType.sol";
12
+ import {Versionable} from "../shared/Versionable.sol";
12
13
  import {VersionPart, VersionPartLib} from "../type/Version.sol";
13
14
 
14
15
  import {IRegistry} from "../registry/IRegistry.sol";
15
16
  import {IRegisterable} from "./IRegisterable.sol";
16
- import {IRelease} from "../registry/IRelease.sol";
17
17
 
18
18
  abstract contract Registerable is
19
19
  AccessManagedUpgradeable,
20
20
  NftOwnable,
21
+ Versionable,
21
22
  IRegisterable
22
23
  {
23
24
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
@@ -37,14 +38,27 @@ abstract contract Registerable is
37
38
  _;
38
39
  }
39
40
 
41
+ modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
42
+ _checkNftType(nftId, expectedObjectType);
43
+ _;
44
+ }
45
+
46
+ // TODO move to registerables verification library
47
+ // TODO and check the owner here?
48
+ function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
49
+ VersionPart expectedRelease = getRelease();
50
+ if(expectedObjectType.eqz() || !_getRegistry().isObjectType(nftId, expectedObjectType, expectedRelease)) {
51
+ revert ErrorRegisterableInvalidType(nftId, expectedObjectType, expectedRelease);
52
+ }
53
+ }
54
+
40
55
  function __Registerable_init(
41
56
  address authority,
42
- address registry,
43
57
  NftId parentNftId,
44
58
  ObjectType objectType,
45
59
  bool isInterceptor,
46
60
  address initialOwner,
47
- bytes memory data // writeonly data that will saved in the object info record of the registry
61
+ bytes memory data
48
62
  )
49
63
  internal
50
64
  virtual
@@ -54,14 +68,19 @@ abstract contract Registerable is
54
68
  revert ErrorAuthorityInvalid(authority);
55
69
  }
56
70
 
71
+ VersionPart release = AccessManagerCloneable(authority).getRelease();
72
+
57
73
  __AccessManaged_init(authority);
58
- __NftOwnable_init(registry, initialOwner);
74
+ __NftOwnable_init(initialOwner);
75
+ __Versionable_init(release);
59
76
 
60
77
  RegisterableStorage storage $ = _getRegisterableStorage();
61
78
  $._parentNftId = parentNftId;
62
79
  $._objectType = objectType;
63
80
  $._isInterceptor = isInterceptor;
64
- $._data = data;
81
+ if(data.length > 0) {
82
+ $._data = data;
83
+ }
65
84
 
66
85
  _registerInterface(type(IAccessManaged).interfaceId);
67
86
  }
@@ -72,13 +91,6 @@ abstract contract Registerable is
72
91
  return !AccessManagerCloneable(authority()).isTargetClosed(address(this));
73
92
  }
74
93
 
75
-
76
- /// @inheritdoc IRelease
77
- function getRelease() public virtual view returns (VersionPart release) {
78
- return AccessManagerCloneable(authority()).getRelease();
79
- }
80
-
81
-
82
94
  /// @inheritdoc IRegisterable
83
95
  function getInitialInfo()
84
96
  public
@@ -87,14 +99,19 @@ abstract contract Registerable is
87
99
  returns (IRegistry.ObjectInfo memory info)
88
100
  {
89
101
  RegisterableStorage storage $ = _getRegisterableStorage();
90
- return IRegistry.ObjectInfo(
91
- NftIdLib.zero(),
92
- $._parentNftId,
93
- $._objectType,
94
- $._isInterceptor,
95
- address(this),
96
- getOwner(),
97
- $._data);
102
+ return (
103
+ IRegistry.ObjectInfo(
104
+ NftIdLib.zero(),
105
+ $._parentNftId,
106
+ $._objectType,
107
+ getRelease(),
108
+ $._isInterceptor,
109
+ address(this))
110
+ );
111
+ }
112
+
113
+ function getInitialData() public view virtual returns (bytes memory data) {
114
+ return _getRegisterableStorage()._data;
98
115
  }
99
116
 
100
117
 
@@ -1,38 +1,19 @@
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
4
 
6
5
  import {ContractLib} from "../shared/ContractLib.sol";
7
6
  import {IRegistry} from "../registry/IRegistry.sol";
8
7
  import {IRegistryLinked} from "./IRegistryLinked.sol";
9
8
 
10
9
  contract RegistryLinked is
11
- Initializable,
12
10
  IRegistryLinked
13
11
  {
14
-
15
- // priorize simplicity and size over using standard upgradeability structs
16
- IRegistry private _registry;
17
-
18
- /// @dev initialization for upgradable contracts
19
- // used in _initializeRegisterable
20
- function __RegistryLinked_init(
21
- address registry
22
- )
23
- internal
24
- virtual
25
- onlyInitializing()
26
- {
27
- if (!ContractLib.isRegistry(registry)) {
28
- revert ErrorNotRegistry(registry);
29
- }
30
-
31
- _registry = IRegistry(registry);
12
+ function getRegistry() external pure returns (IRegistry) {
13
+ return ContractLib.getRegistry();
32
14
  }
33
15
 
34
-
35
- function getRegistry() public view returns (IRegistry) {
36
- return _registry;
16
+ function _getRegistry() internal pure returns (IRegistry) {
17
+ return ContractLib.getRegistry();
37
18
  }
38
19
  }
@@ -5,25 +5,25 @@ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/ut
5
5
 
6
6
  import {IRegistry} from "../registry/IRegistry.sol";
7
7
  import {IService} from "./IService.sol";
8
- import {IVersionable} from "../upgradeability/IVersionable.sol";
8
+ import {IVersionable} from "../shared/IVersionable.sol";
9
9
  import {ObjectType, SERVICE} from "../type/ObjectType.sol";
10
10
  import {Registerable} from "./Registerable.sol";
11
11
  import {RoleId, RoleIdLib} from "../type/RoleId.sol";
12
- import {Version, VersionLib} from "../type/Version.sol";
13
- import {Versionable} from "../upgradeability/Versionable.sol";
12
+ import {Version, VersionLib, VersionPartLib} from "../type/Version.sol";
13
+ import {Versionable} from "../shared/Versionable.sol";
14
+ import {Upgradeable} from "../upgradeability/Upgradeable.sol";
14
15
 
15
16
 
16
17
  /// @dev service base contract
17
18
  abstract contract Service is
18
- Registerable,
19
- Versionable,
19
+ Registerable,
20
+ Upgradeable,
20
21
  ReentrancyGuardUpgradeable,
21
22
  IService
22
23
  {
23
24
 
24
25
  function __Service_init(
25
26
  address authority, // real authority for registry service adress(0) for other services
26
- address registry,
27
27
  address initialOwner
28
28
  )
29
29
  internal
@@ -34,8 +34,7 @@ abstract contract Service is
34
34
 
35
35
  __Registerable_init(
36
36
  authority,
37
- registry,
38
- IRegistry(registry).getNftId(),
37
+ _getRegistry().getNftId(),
39
38
  SERVICE(),
40
39
  false, // is interceptor
41
40
  initialOwner,
@@ -62,6 +61,6 @@ abstract contract Service is
62
61
 
63
62
 
64
63
  function _getServiceAddress(ObjectType domain) internal view returns (address) {
65
- return getRegistry().getServiceAddress(domain, getRelease());
64
+ return _getRegistry().getServiceAddress(domain, getRelease());
66
65
  }
67
66
  }
@@ -10,6 +10,7 @@ import {ContractLib} from "../shared/ContractLib.sol";
10
10
  import {IRegistry} from "../registry/IRegistry.sol";
11
11
  import {NftId} from "../type/NftId.sol";
12
12
  import {SERVICE} from "../type/ObjectType.sol";
13
+ import {VersionPart} from "../type/Version.sol";
13
14
 
14
15
 
15
16
  /// @dev Token specific transfer helper base contract.
@@ -49,6 +50,7 @@ contract TokenHandlerBase {
49
50
  IERC20Metadata public immutable TOKEN;
50
51
  address public immutable COMPONENT;
51
52
  NftId public immutable NFT_ID;
53
+ VersionPart public immutable RELEASE;
52
54
 
53
55
  address internal _wallet;
54
56
 
@@ -69,6 +71,7 @@ contract TokenHandlerBase {
69
71
  REGISTRY = IRegistry(registry);
70
72
  COMPONENT = component;
71
73
  NFT_ID = REGISTRY.getNftIdForAddress(component);
74
+ RELEASE = REGISTRY.getObjectRelease(NFT_ID);
72
75
 
73
76
  if (NFT_ID.eqz()) {
74
77
  revert ErrorTokenHandlerComponentNotRegistered(component);
@@ -254,7 +257,7 @@ contract TokenHandler is
254
257
  error ErrorTokenHandlerNotService(address service);
255
258
 
256
259
  modifier onlyService() {
257
- if (!REGISTRY.isObjectType(msg.sender, SERVICE())) {
260
+ if (!REGISTRY.isObjectType(msg.sender, SERVICE(), RELEASE)) {
258
261
  revert ErrorTokenHandlerNotService(msg.sender);
259
262
  }
260
263
  _;