@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
@@ -5,114 +5,376 @@ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165C
5
5
  import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
6
6
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
7
7
 
8
+ import {IInstance} from "../instance/IInstance.sol";
9
+ import {IOracleComponent} from "../oracle/IOracleComponent.sol";
8
10
  import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
9
11
  import {IRegistry} from "../registry/IRegistry.sol";
10
12
  import {IService} from "../shared/IService.sol";
11
13
 
12
14
  import {ChainId} from "../type/ChainId.sol";
13
15
  import {NftId} from "../type/NftId.sol";
14
- import {ObjectType, INSTANCE, PRODUCT, DISTRIBUTION, ORACLE, POOL} from "../type/ObjectType.sol";
16
+ import {ObjectType, INSTANCE, COMPONENT, PRODUCT, DISTRIBUTION, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
17
+ import {TokenRegistry} from "../registry/TokenRegistry.sol";
15
18
  import {VersionPart} from "../type/Version.sol";
16
19
 
17
20
  interface ITargetHelper {
18
21
  function isTargetLocked(address target) external view returns (bool);
19
22
  }
20
23
 
21
- interface IInstanceAdminHelper {
22
- function getInstanceAdmin() external view returns (ITargetHelper);
23
- }
24
+ library ContractLib {
24
25
 
25
- interface ITokenRegistryHelper {
26
- function isActive(ChainId chainId, address token, VersionPart release) external view returns (bool);
27
- }
26
+ error ErrorContractLibCallerNotRegistered(address caller);
27
+ error ErrorContractLibCallerNotComponent(/*address caller, */NftId callerNftId, ObjectType callerType);
28
+ error ErrorContractLibParentNotInstance(/*address component, */NftId componentNftId, NftId parentNftId/*, ObjectType parentType*/);
29
+ error ErrorContractLibParentNotProduct(/*address component, */NftId componentNftId, NftId parentNftId/*, ObjectType parentType*/);
30
+ error ErrorContractLibComponentTypeMismatch(/*address component, */NftId componentNftId, ObjectType expectedType, ObjectType actualType);
31
+ error ErrorContractLibComponentReleaseMismatch(/*address component, */NftId componentNftId, VersionPart expectedRelease, VersionPart actualRelease);
32
+ error ErrorContractLibComponentInactive(/*address component, */NftId componentNftId);
28
33
 
29
- library ContractLib {
34
+ error ErrorContractLibObjectNotRegistered(NftId objectNftId);
35
+ error ErrorContractLibObjectTypeMismatch(NftId objectNftId, ObjectType expectedType, ObjectType actualType);
36
+ error ErrorContractLibObjectReleaseMismatch(NftId objectNftId, VersionPart expectedRelease, VersionPart actualRelease);
37
+ error ErrorContractLibObjectParentMismatch(NftId objectNftId, NftId expectedParentNftId, NftId actualParentNftId);
38
+
39
+ error ErrorContractLibParentsMismatch(NftId componentNftId, NftId componentParentNftId, NftId objectNftId, NftId objectParentNftId);
30
40
 
31
- error ErrorContractLibCallerNotRegistered(address target);
32
- error ErrorContractLibCallerNotComponent(NftId componentNftId, ObjectType objectType);
33
- error ErrorContractLibParentNotInstance(NftId componentNftId, NftId parentNftId);
34
- error ErrorContractLibParentNotProduct(NftId componentNftId, NftId parentNftId);
35
- error ErrorContractLibComponentTypeMismatch(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
36
- error ErrorContractLibComponentInactive(NftId componentNftId);
41
+
42
+
43
+ // update registry address whenever it changes
44
+ address public constant REGISTRY_ADDRESS = address(0x345cA3e014Aaf5dcA488057592ee47305D9B3e10);
45
+
46
+ function getRegistry() internal pure returns (IRegistry) {
47
+ return IRegistry(REGISTRY_ADDRESS);
48
+ }
49
+
50
+ function getAndVerifyProduct(VersionPart expectedRelease)
51
+ external
52
+ view
53
+ returns (
54
+ NftId, // productNftId
55
+ IInstance // instance,
56
+ )
57
+ {
58
+ return getAndVerifyComponent(
59
+ msg.sender,
60
+ PRODUCT(),
61
+ expectedRelease,
62
+ true); // only active product
63
+ }
64
+
65
+ function getAndVerifyPool(VersionPart expectedRelease)
66
+ external
67
+ view
68
+ returns (
69
+ NftId, // poolNftId
70
+ IInstance // instance,
71
+ )
72
+ {
73
+ return getAndVerifyComponent(
74
+ msg.sender,
75
+ POOL(),
76
+ expectedRelease,
77
+ true); // only active pool
78
+ }
79
+
80
+ function getAndVerifyProductForPolicy(NftId policyNftId, VersionPart expectedRelease)
81
+ external
82
+ view
83
+ returns (
84
+ NftId, // productNftId
85
+ IInstance // instance,
86
+ )
87
+ {
88
+ return getAndVerifyComponentWithChild(
89
+ msg.sender, // product
90
+ true, // only active product
91
+ policyNftId, // child nft id
92
+ POLICY(), // child must be policy
93
+ expectedRelease);
94
+ }
95
+
96
+ function getAndVerifyPoolForBundle(NftId bundleNftId, VersionPart expectedRelease)
97
+ external
98
+ view
99
+ returns (
100
+ NftId, // poolNftId
101
+ IInstance // instance,
102
+ )
103
+ {
104
+ return getAndVerifyComponentWithChild({
105
+ component: msg.sender, // pool
106
+ onlyActive: true, // only active pool
107
+ childNftId: bundleNftId, // child nft id
108
+ expectedChildType: BUNDLE(), // child must be bundle
109
+ expectedRelease: expectedRelease});
110
+ }
111
+
112
+ function getAndVerifyPoolForPolicy(NftId policyNftId, VersionPart expectedRelease)
113
+ external
114
+ view
115
+ returns (
116
+ NftId poolNftId,
117
+ IInstance instance
118
+ )
119
+ {
120
+ (poolNftId,, instance) = getAndVerifyComponentAndObject({
121
+ component: msg.sender, // pool
122
+ expectedComponentType: POOL(),
123
+ onlyActive: true,
124
+ objectNftId: policyNftId,
125
+ expectedObjectType: POLICY(),
126
+ expectedRelease: expectedRelease
127
+ });
128
+ }
129
+
130
+ function getAndVerifyComponentAndOracle(
131
+ NftId oracleNftId,
132
+ VersionPart expectedRelease
133
+ )
134
+ external
135
+ view
136
+ returns (
137
+ NftId requesterNftId,
138
+ IOracleComponent oracle,
139
+ IInstance instance
140
+ )
141
+ {
142
+ address oracleAddress;
143
+ (requesterNftId, oracleAddress, instance) = getAndVerifyComponentAndObject({
144
+ component: msg.sender,
145
+ expectedComponentType: COMPONENT(),
146
+ onlyActive: true,
147
+ objectNftId: oracleNftId,
148
+ expectedObjectType: ORACLE(),
149
+ expectedRelease: expectedRelease
150
+ });
151
+
152
+ oracle = IOracleComponent(oracleAddress);
153
+ }
37
154
 
38
155
 
39
156
  function getInfoAndInstance(
40
- IRegistry registry,
41
157
  NftId componentNftId,
158
+ VersionPart release,
42
159
  bool onlyActive
43
160
  )
44
- external
161
+ public
45
162
  view
46
163
  returns (
47
164
  IRegistry.ObjectInfo memory info,
48
- address instance
165
+ IInstance instance
49
166
  )
50
167
  {
168
+ IRegistry registry = getRegistry();
51
169
  info = registry.getObjectInfo(componentNftId);
52
- return _getAndVerifyComponentAndInstance(registry, info, info.objectType, onlyActive);
170
+ (, instance) = _getAndVerifyComponentAndInstance(info, info.objectType, release, onlyActive);
53
171
  }
54
172
 
55
173
 
56
- function getAndVerifyAnyComponent(
57
- IRegistry registry,
174
+ function getAndVerifyComponent(
58
175
  address caller,
176
+ ObjectType expectedType,
177
+ VersionPart expectedRelease,
59
178
  bool onlyActive
60
179
  )
61
- external
180
+ public
62
181
  view
63
182
  returns (
64
- IRegistry.ObjectInfo memory callerInfo,
65
- address instance
183
+ NftId componentNftId,
184
+ IInstance instance
66
185
  )
67
186
  {
68
- // check caller is component
69
- callerInfo = _getAndVerifyObjectInfo(registry, caller);
70
- if(!(callerInfo.objectType == PRODUCT()
71
- || callerInfo.objectType == POOL()
72
- || callerInfo.objectType == DISTRIBUTION()
73
- || callerInfo.objectType == ORACLE())
74
- ) {
75
- revert ErrorContractLibCallerNotComponent(
76
- callerInfo.nftId,
77
- callerInfo.objectType);
187
+ // check caller is registered
188
+ IRegistry.ObjectInfo memory info = _getAndVerifyObjectInfo(caller);
189
+ // check caller info
190
+ return _getAndVerifyComponentAndInstance(info, expectedType, expectedRelease, onlyActive);
191
+ }
192
+
193
+ function getAndVerifyComponentWithChild(
194
+ address component,
195
+ bool onlyActive,
196
+ NftId childNftId,
197
+ ObjectType expectedChildType, // assume valid component type
198
+ VersionPart expectedRelease
199
+ )
200
+ public
201
+ view
202
+ returns (
203
+ //IRegistry.ObjectInfo memory info, // component info
204
+ NftId componentNftId,
205
+ IInstance instance)
206
+ {
207
+ IRegistry registry = getRegistry();
208
+ IRegistry.ObjectInfo memory info = registry.getObjectInfo(childNftId);
209
+
210
+ // check child registration
211
+ if(info.nftId.eqz()) {
212
+ revert ErrorContractLibObjectNotRegistered(childNftId);
78
213
  }
79
214
 
80
- return _getAndVerifyComponentAndInstance(registry, callerInfo, callerInfo.objectType, onlyActive);
81
- }
215
+ // check child type
216
+ if(info.objectType != expectedChildType) {
217
+ revert ErrorContractLibObjectTypeMismatch(
218
+ childNftId,
219
+ expectedChildType,
220
+ info.objectType);
221
+ }
82
222
 
223
+ // check child release
224
+ if(info.release != expectedRelease) {
225
+ revert ErrorContractLibObjectReleaseMismatch(
226
+ childNftId,
227
+ expectedRelease,
228
+ info.release);
229
+ }
83
230
 
84
- function getAndVerifyComponent(
85
- IRegistry registry,
86
- address caller,
87
- ObjectType expectedType,
88
- bool onlyActive
231
+ info = registry.getObjectInfo(info.parentNftId);
232
+ componentNftId = info.nftId;
233
+
234
+ // check parent is component
235
+ if(info.objectAddress != component) {
236
+ revert ErrorContractLibObjectParentMismatch(
237
+ childNftId,
238
+ registry.getNftIdForAddress(component),
239
+ info.nftId);
240
+ }
241
+
242
+ // get instance
243
+ instance = getAndVerifyInstance(info);// _getAndVerifyInstance(info);
244
+
245
+ // check component is active
246
+ _checkComponentActive(
247
+ instance,
248
+ component,
249
+ componentNftId,
250
+ onlyActive);
251
+ }
252
+
253
+ /// @dev
254
+ // component is contract of type COMPONENT
255
+ // objectNftId is either contract of type COMPONENT or object of type POLICY, BUNDLE, etc.
256
+ // is either child of component or have same parent as component
257
+ function getAndVerifyComponentAndObject(
258
+ address component,
259
+ ObjectType expectedComponentType,
260
+ bool onlyActive,
261
+ NftId objectNftId,
262
+ ObjectType expectedObjectType,
263
+ VersionPart expectedRelease
89
264
  )
90
- external
265
+ public
91
266
  view
92
267
  returns (
93
- IRegistry.ObjectInfo memory info,
94
- address instance
95
- )
268
+ NftId componentNftId,
269
+ address objectAddress, // 0 for non contracts objects
270
+ IInstance instance)
96
271
  {
97
- info = _getAndVerifyObjectInfo(registry, caller);
98
- return _getAndVerifyComponentAndInstance(registry, info, expectedType, onlyActive);
272
+ IRegistry registry = getRegistry();
273
+
274
+ IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(component);
275
+ componentNftId = componentInfo.nftId;
276
+
277
+ // check component registered
278
+
279
+ // check component type
280
+ if(expectedComponentType != COMPONENT()) {
281
+ if(componentInfo.objectType != expectedComponentType) {
282
+ revert ErrorContractLibComponentTypeMismatch(
283
+ //component,
284
+ componentInfo.nftId,
285
+ expectedComponentType,
286
+ componentInfo.objectType);
287
+ }
288
+ } else if(
289
+ !(
290
+ componentInfo.objectType == PRODUCT() ||
291
+ componentInfo.objectType == POOL() ||
292
+ componentInfo.objectType == DISTRIBUTION() ||
293
+ componentInfo.objectType == ORACLE()
294
+ )
295
+ ) {
296
+ revert ErrorContractLibCallerNotComponent(
297
+ //component,
298
+ componentInfo.nftId,
299
+ componentInfo.objectType);
300
+ }
301
+
302
+ // check component release
303
+ if(componentInfo.release != expectedRelease) {
304
+ revert ErrorContractLibComponentReleaseMismatch(
305
+ //component,
306
+ componentInfo.nftId,
307
+ expectedRelease,
308
+ componentInfo.release);
309
+ }
310
+
311
+ IRegistry.ObjectInfo memory objectInfo = registry.getObjectInfo(objectNftId);
312
+ objectAddress = objectInfo.objectAddress;
313
+
314
+ // check object type
315
+ if(objectInfo.objectType != expectedObjectType) {
316
+ revert ErrorContractLibObjectTypeMismatch(
317
+ objectNftId,
318
+ expectedObjectType,
319
+ objectInfo.objectType);
320
+ }
321
+
322
+ if(componentInfo.objectType == PRODUCT()) {
323
+ // check object parent is product
324
+ if(componentInfo.nftId != objectInfo.parentNftId) {
325
+ revert ErrorContractLibObjectParentMismatch(
326
+ objectNftId,
327
+ objectInfo.parentNftId,
328
+ componentInfo.nftId);
329
+ }
330
+ } else {
331
+ // check component parent is product
332
+
333
+ // check object parent is same product
334
+ if(componentInfo.parentNftId != objectInfo.parentNftId) {
335
+ revert ErrorContractLibParentsMismatch(
336
+ componentInfo.nftId,
337
+ componentInfo.parentNftId,
338
+ objectNftId,
339
+ objectInfo.parentNftId);
340
+ }
341
+ }
342
+
343
+ // get instance
344
+ instance = getAndVerifyInstance(componentInfo);
345
+
346
+ // check component is active
347
+ _checkComponentActive(
348
+ instance,
349
+ component,
350
+ componentNftId,
351
+ onlyActive);
99
352
  }
100
353
 
101
354
 
102
355
  function getInstanceForComponent(
103
- IRegistry registry,
104
356
  NftId componentNftId
105
357
  )
106
358
  public
107
359
  view
108
360
  returns (address instance)
109
361
  {
362
+ IRegistry registry = getRegistry();
110
363
  NftId productNftId = registry.getParentNftId(componentNftId);
111
364
  NftId instanceNftId = registry.getParentNftId(productNftId);
112
365
  return registry.getObjectInfo(instanceNftId).objectAddress;
113
366
  }
114
367
 
368
+ // TODO check array of nfts and array of types
369
+ // need to call: checkNftType({nftId: {nftId1, nftId2, nftId3}, expectedObjectType: {.., .., ..}})
370
+ /*function checkNftType(NftId nftId, ObjectType expectedObjectType) external view {
371
+ VersionPart expectedRelease = getRelease();
372
+ if(expectedObjectType.eqz() || !_getRegistry().isObjectType(nftId, expectedObjectType, expectedRelease)) {
373
+ revert ErrorNftOwnableInvalidType(nftId, expectedObjectType, expectedRelease);
374
+ }
375
+ }*/
115
376
 
377
+ // TODO hardcoded token registry address?
116
378
  function isActiveToken(
117
379
  address tokenRegistryAddress,
118
380
  ChainId chainId,
@@ -123,7 +385,7 @@ library ContractLib {
123
385
  view
124
386
  returns (bool)
125
387
  {
126
- return ITokenRegistryHelper(
388
+ return TokenRegistry(
127
389
  tokenRegistryAddress).isActive(
128
390
  chainId, token, release);
129
391
  }
@@ -160,16 +422,6 @@ library ContractLib {
160
422
  }
161
423
 
162
424
 
163
- function isRegistered(address registry, address caller, ObjectType expectedType) public view returns (bool) {
164
- NftId nftId = IRegistry(registry).getNftIdForAddress(caller);
165
- if (nftId.eqz()) {
166
- return false;
167
- }
168
-
169
- return IRegistry(registry).getObjectInfo(nftId).objectType == expectedType;
170
- }
171
-
172
-
173
425
  function isService(address service) public view returns (bool) {
174
426
  if (!isContract(service)) {
175
427
  return false;
@@ -179,12 +431,8 @@ library ContractLib {
179
431
  }
180
432
 
181
433
 
182
- function isRegistry(address registry) public view returns (bool) {
183
- if (!isContract(registry)) {
184
- return false;
185
- }
186
-
187
- return supportsInterface(registry, type(IRegistry).interfaceId);
434
+ function isRegistry(address registry) public pure returns (bool) {
435
+ return registry == REGISTRY_ADDRESS;
188
436
  }
189
437
 
190
438
 
@@ -206,39 +454,59 @@ library ContractLib {
206
454
 
207
455
 
208
456
  function _getAndVerifyComponentAndInstance(
209
- IRegistry registry,
210
457
  IRegistry.ObjectInfo memory info,
211
458
  ObjectType expectedType,
459
+ VersionPart expectedRelease,
212
460
  bool onlyActive
213
461
  )
214
462
  internal
215
463
  view
216
464
  returns (
217
- IRegistry.ObjectInfo memory,
218
- address instance
465
+ NftId componentNftId,
466
+ IInstance instance
219
467
  )
220
468
  {
221
- if(info.objectType != expectedType) {
222
- revert ErrorContractLibComponentTypeMismatch(
469
+ if(expectedType != COMPONENT()) {
470
+ if(info.objectType != expectedType) {
471
+ revert ErrorContractLibComponentTypeMismatch(
472
+ //info.objectAddress,
473
+ info.nftId,
474
+ expectedType,
475
+ info.objectType);
476
+ }
477
+ } else if(
478
+ !(
479
+ info.objectType == PRODUCT() ||
480
+ info.objectType == POOL() ||
481
+ info.objectType == DISTRIBUTION() ||
482
+ info.objectType == ORACLE()
483
+ )
484
+ ) {
485
+ revert ErrorContractLibCallerNotComponent(
486
+ //info.objectAddress,
223
487
  info.nftId,
224
- expectedType,
225
488
  info.objectType);
226
489
  }
227
490
 
491
+ if(info.release != expectedRelease) {
492
+ revert ErrorContractLibComponentReleaseMismatch(
493
+ //info.objectAddress,
494
+ info.nftId,
495
+ expectedRelease,
496
+ info.release);
497
+ }
498
+
499
+ componentNftId = info.nftId;
500
+
228
501
  // get instance and check component is active
229
- instance = getAndVerifyInstance(registry, info);
502
+ instance = getAndVerifyInstance(info);
230
503
  _checkComponentActive(instance, info.objectAddress, info.nftId, onlyActive);
231
-
232
- return (
233
- info,
234
- instance
235
- );
236
504
  }
237
505
 
238
506
 
239
507
  function _checkComponentActive(
240
- address instance,
241
- address target,
508
+ IInstance instance,
509
+ address component,
242
510
  NftId componentNftId,
243
511
  bool onlyActive
244
512
  )
@@ -246,11 +514,8 @@ library ContractLib {
246
514
  view
247
515
  {
248
516
  if (onlyActive) {
249
- if (IInstanceAdminHelper(
250
- instance).getInstanceAdmin().isTargetLocked(
251
- target)
252
- ) {
253
- revert ErrorContractLibComponentInactive(componentNftId);
517
+ if (instance.getInstanceAdmin().isTargetLocked(component)) {
518
+ revert ErrorContractLibComponentInactive(/*component, */componentNftId);
254
519
  }
255
520
  }
256
521
  }
@@ -260,13 +525,14 @@ library ContractLib {
260
525
  /// The info may represent a product or any other component.
261
526
  /// If the parent of the provided info is not registered with the correct type, the function reverts.
262
527
  function getAndVerifyInstance(
263
- IRegistry registry,
264
528
  IRegistry.ObjectInfo memory info
265
529
  )
266
530
  public
267
531
  view
268
- returns (address instance)
532
+ returns (IInstance instance)
269
533
  {
534
+ IRegistry registry = getRegistry();
535
+
270
536
  // get instance for product case
271
537
  if (info.objectType == PRODUCT()) {
272
538
  // verify that parent of product is registered instance
@@ -278,7 +544,7 @@ library ContractLib {
278
544
  }
279
545
 
280
546
  // we have verified that parent object is a registerd instance -> we return the instance address
281
- return instanceInfo.objectAddress;
547
+ return IInstance(instanceInfo.objectAddress);
282
548
  }
283
549
 
284
550
  // not product: verify parent is registered product
@@ -290,23 +556,23 @@ library ContractLib {
290
556
  }
291
557
 
292
558
  // we have verified that parent is registerd product -> we can rely on registry that its parent is an instance
293
- return registry.getObjectAddress(info.parentNftId);
559
+ return IInstance(registry.getObjectAddress(info.parentNftId));
294
560
  }
295
561
 
296
-
562
+ // check registration and return info
297
563
  function _getAndVerifyObjectInfo(
298
- IRegistry registry,
299
564
  address caller
300
565
  )
301
566
  internal
302
567
  view
303
568
  returns (IRegistry.ObjectInfo memory info)
304
569
  {
305
- NftId componentNftId = registry.getNftIdForAddress(caller);
306
- if (componentNftId.eqz()) {
570
+ IRegistry registry = getRegistry();
571
+
572
+ info = registry.getObjectInfo(caller);
573
+
574
+ if (info.nftId.eqz()) {
307
575
  revert ErrorContractLibCallerNotRegistered(caller);
308
576
  }
309
-
310
- info = registry.getObjectInfo(componentNftId);
311
577
  }
312
578
  }
@@ -0,0 +1,15 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IComponent} from "../shared/IComponent.sol";
5
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
6
+
7
+ /// @dev component base class
8
+ /// component examples are product, distribution, pool and oracle
9
+ interface IAuthorizedComponent is
10
+ IComponent
11
+ {
12
+ /// @dev returns the initial component authorization specification.
13
+ function getAuthorization() external view returns (IAuthorization authorization);
14
+
15
+ }
@@ -29,6 +29,11 @@ interface IComponent is
29
29
  event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
30
30
  event LogComponentTokenHandlerApproved(address tokenHandler, address token, Amount limit, bool isMaxAmount);
31
31
 
32
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
33
+ /// @param amount the amount to withdraw
34
+ /// @return withdrawnAmount the amount that was actually withdrawn
35
+ function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
36
+
32
37
  /// @dev returns the name of this component
33
38
  /// to successfully register the component with an instance the name MUST be unique in the linked instance
34
39
  function getName() external view returns (string memory name);
@@ -43,9 +48,6 @@ interface IComponent is
43
48
  /// the default address is the token handler address
44
49
  function getWallet() external view returns (address walletAddress);
45
50
 
46
- /// @dev returns true iff this compoent intercepts nft minting and transfers for objects registered by this component
47
- function isNftInterceptor() external view returns(bool isInterceptor);
48
-
49
51
  /// @dev returns true iff this component is registered with the registry
50
52
  function isRegistered() external view returns (bool);
51
53
 
@@ -18,18 +18,11 @@ interface IComponentService is
18
18
  {
19
19
  // registerProduct
20
20
  error ErrorComponentServiceCallerNotInstance(address caller);
21
- error ErrorComponentServiceNotProduct(address product);
22
21
  error ErrorComponentServiceTokenInvalid(address token);
23
22
 
24
23
  // registerComponent
25
24
  error ErrorComponentServiceCallerNotProduct(address caller);
26
- error ErrorComponentServiceNotComponent(address component);
27
-
28
- error ErrorComponentServiceNotInstanceLinkedComponent(address component);
29
25
  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);
33
26
 
34
27
  error ErrorProductServiceNoDistributionExpected(NftId productNftId);
35
28
  error ErrorProductServiceDistributionAlreadyRegistered(NftId productNftId, NftId distributionNftId);
@@ -37,18 +30,11 @@ interface IComponentService is
37
30
  error ErrorProductServiceOraclesAlreadyRegistered(NftId productNftId, uint8 expectedOracles);
38
31
  error ErrorProductServicePoolAlreadyRegistered(NftId productNftId, NftId poolNftId);
39
32
 
40
- error ErrorComponentServiceNewWalletAddressZero();
41
- error ErrorComponentServiceWalletAddressZero();
42
- error ErrorComponentServiceWalletAddressIsSameAsCurrent();
43
-
44
33
  error ErrorComponentServiceWithdrawAmountIsZero();
45
34
  error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
46
- error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
47
35
 
48
36
  event LogComponentServiceComponentLocked(address component, bool locked);
49
37
  event LogComponentServiceRegistered(NftId instanceNftId, NftId componentNftId, ObjectType componentType, address component, address token, address initialOwner);
50
- event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
51
- event LogComponentServiceWalletTokensTransferred(NftId componentNftId, address currentWallet, address newWallet, uint256 currentBalance);
52
38
  event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
53
39
  event LogComponentServiceProductFeesUpdated(NftId productNftId);
54
40
  event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);