@etherisc/gif-next 3.0.0-ab0fcb2-112 → 3.0.0-ab43904-022

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