@etherisc/gif-next 0.0.2-7f35518-483 → 0.0.2-7fbee0d-269

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 (797) hide show
  1. package/README.md +157 -281
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +810 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1735 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +817 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1400 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +465 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +407 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +652 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +844 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +939 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +950 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +838 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1284 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1474 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +844 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +844 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  53. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +383 -0
  54. package/artifacts/contracts/examples/flight/FlightMessageVerfier.sol/FlightMessageVerifier.dbg.json +4 -0
  55. package/artifacts/contracts/examples/flight/FlightMessageVerfier.sol/FlightMessageVerifier.json +253 -0
  56. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  58. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +849 -0
  60. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  62. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
  64. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2180 -0
  66. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +844 -0
  68. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  69. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  70. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  71. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  81. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
  82. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  84. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  85. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
  86. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/{base/IKeyValueStore.sol/IKeyValueStore.json → BaseStore.sol/BaseStore.json} +87 -184
  88. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  90. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  92. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  93. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +957 -535
  94. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +760 -138
  96. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  97. package/artifacts/contracts/instance/Instance.sol/Instance.json +614 -2806
  98. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  99. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2400 -0
  100. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  101. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +872 -0
  102. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  103. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1919 -679
  104. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +780 -323
  106. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +404 -104
  108. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  109. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3039 -0
  110. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  111. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  112. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  113. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  114. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  115. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  116. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  117. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  118. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  120. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  121. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  122. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  123. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  124. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  125. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  126. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  127. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  128. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  129. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  130. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  131. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  132. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  133. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  134. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  135. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  136. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  137. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +849 -0
  138. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  139. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  140. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  141. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  142. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  143. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  144. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  145. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  146. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  147. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  148. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +830 -0
  150. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  151. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  152. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +844 -0
  154. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  155. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  156. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +886 -0
  158. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  159. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  160. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  161. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +895 -0
  162. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  163. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  164. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  165. package/artifacts/contracts/pool/Pool.sol/Pool.json +1015 -0
  166. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  167. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  168. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  169. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  170. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  171. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +886 -0
  172. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  173. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  174. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +810 -0
  176. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  177. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  178. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  179. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +844 -0
  180. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  181. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  182. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +906 -0
  184. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  185. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +404 -351
  186. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  187. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  188. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  189. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  190. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  191. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +652 -0
  192. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  193. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1006 -0
  194. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  195. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IRiskService.sol/IRiskService.json} +353 -249
  196. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  197. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  198. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  199. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  200. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  201. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +874 -0
  202. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  203. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  204. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  205. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +834 -0
  206. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  207. package/artifacts/contracts/product/Product.sol/Product.json +1107 -0
  208. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  209. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  210. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  211. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +794 -0
  212. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  213. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  214. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  215. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +641 -173
  216. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  217. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +419 -200
  218. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  219. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  220. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  221. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  222. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  223. package/artifacts/contracts/registry/Registry.sol/Registry.json +969 -202
  224. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  225. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2255 -0
  226. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  227. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  228. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  229. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +370 -309
  230. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  231. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +389 -121
  232. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  233. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -0
  234. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  236. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  237. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1401 -0
  238. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  239. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +705 -0
  240. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  241. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +391 -80
  242. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  243. package/artifacts/contracts/shared/Component.sol/Component.json +695 -0
  244. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  245. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  246. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  247. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +882 -0
  248. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  249. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  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 +4 -0
  253. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  254. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  255. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  256. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  257. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/IComponent.sol/IComponent.json} +286 -176
  258. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  259. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  260. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  261. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +697 -0
  262. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  263. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  264. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +61 -22
  266. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  267. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  268. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  269. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +162 -15
  270. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  271. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  272. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  273. package/artifacts/contracts/shared/IService.sol/IService.json +161 -154
  274. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  275. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  276. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  277. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +785 -0
  278. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  279. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  280. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  281. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  282. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  283. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +98 -28
  284. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  285. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  286. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  287. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +178 -55
  288. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  289. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  290. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  291. package/artifacts/contracts/shared/Service.sol/Service.json +177 -163
  292. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  293. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  294. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  295. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  296. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  297. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  298. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  299. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2747 -0
  300. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  301. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  302. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  303. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  304. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  305. package/artifacts/contracts/staking/Staking.sol/Staking.json +3175 -0
  306. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  307. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  308. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  309. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +867 -0
  310. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  311. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  312. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  313. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  314. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  315. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +786 -0
  316. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  317. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  318. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  319. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  320. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  321. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  322. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  323. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  324. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  326. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +270 -0
  328. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  330. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  332. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  334. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  336. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  338. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  339. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  340. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  342. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  343. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  344. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +238 -0
  346. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  348. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +161 -0
  350. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  352. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
  353. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
  354. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  355. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  356. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  357. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  358. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  359. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +308 -0
  360. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  361. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  362. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  363. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  364. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  365. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  366. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  367. package/artifacts/contracts/type/String.sol/StrLib.json +199 -0
  368. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  369. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +344 -0
  370. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  371. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  372. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  373. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  374. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  375. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  376. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  377. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  378. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  379. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +672 -0
  380. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  381. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  382. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  383. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  384. package/contracts/accounting/AccountingService.sol +274 -0
  385. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  386. package/contracts/accounting/IAccountingService.sol +47 -0
  387. package/contracts/authorization/AccessAdmin.sol +679 -0
  388. package/contracts/authorization/AccessAdminLib.sol +678 -0
  389. package/contracts/authorization/AccessManagerCloneable.sol +140 -0
  390. package/contracts/authorization/Authorization.sol +190 -0
  391. package/contracts/authorization/IAccess.sol +66 -0
  392. package/contracts/authorization/IAccessAdmin.sol +142 -0
  393. package/contracts/authorization/IAuthorization.sol +26 -0
  394. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  395. package/contracts/authorization/ServiceAuthorization.sol +300 -0
  396. package/contracts/distribution/BasicDistribution.sol +140 -0
  397. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  398. package/contracts/distribution/Distribution.sol +245 -0
  399. package/contracts/distribution/DistributionService.sol +448 -0
  400. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  401. package/contracts/distribution/IDistributionComponent.sol +45 -0
  402. package/contracts/distribution/IDistributionService.sol +115 -0
  403. package/contracts/examples/fire/DamageLevel.sol +59 -0
  404. package/contracts/examples/fire/FirePool.sol +86 -0
  405. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  406. package/contracts/examples/fire/FireProduct.sol +433 -0
  407. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  408. package/contracts/examples/fire/FireUSD.sol +26 -0
  409. package/contracts/examples/flight/FlightLib.sol +273 -0
  410. package/contracts/examples/flight/FlightMessageVerfier.sol +129 -0
  411. package/contracts/examples/flight/FlightOracle.sol +167 -0
  412. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  413. package/contracts/examples/flight/FlightPool.sol +89 -0
  414. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  415. package/contracts/examples/flight/FlightProduct.sol +464 -0
  416. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  417. package/contracts/examples/flight/FlightUSD.sol +26 -0
  418. package/contracts/examples/flight/originalV1.sol +396 -0
  419. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  420. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  421. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  422. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  423. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  424. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  425. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  426. package/contracts/instance/BaseStore.sol +93 -0
  427. package/contracts/instance/BundleSet.sol +130 -0
  428. package/contracts/instance/IBaseStore.sol +37 -0
  429. package/contracts/instance/IInstance.sol +141 -24
  430. package/contracts/instance/IInstanceService.sol +106 -17
  431. package/contracts/instance/Instance.sol +249 -341
  432. package/contracts/instance/InstanceAdmin.sol +307 -0
  433. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  434. package/contracts/instance/InstanceReader.sol +524 -202
  435. package/contracts/instance/InstanceService.sol +462 -130
  436. package/contracts/instance/InstanceServiceManager.sol +14 -31
  437. package/contracts/instance/InstanceStore.sol +323 -0
  438. package/contracts/instance/ProductStore.sol +290 -0
  439. package/contracts/instance/RiskSet.sol +126 -0
  440. package/contracts/instance/TargetNames.sol +10 -0
  441. package/contracts/instance/base/BalanceStore.sol +121 -0
  442. package/contracts/instance/base/Cloneable.sol +28 -0
  443. package/contracts/instance/base/ObjectCounter.sol +20 -0
  444. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  445. package/contracts/instance/base/ObjectSet.sol +77 -0
  446. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  447. package/contracts/instance/module/IBundle.sol +10 -9
  448. package/contracts/instance/module/IComponents.sol +60 -0
  449. package/contracts/instance/module/IDistribution.sol +25 -10
  450. package/contracts/instance/module/IPolicy.sol +81 -21
  451. package/contracts/instance/module/IRisk.sol +6 -1
  452. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  453. package/contracts/oracle/BasicOracle.sol +44 -0
  454. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  455. package/contracts/oracle/IOracle.sol +41 -0
  456. package/contracts/oracle/IOracleComponent.sol +33 -0
  457. package/contracts/oracle/IOracleService.sol +66 -0
  458. package/contracts/oracle/Oracle.sol +152 -0
  459. package/contracts/oracle/OracleService.sol +310 -0
  460. package/contracts/oracle/OracleServiceManager.sol +39 -0
  461. package/contracts/pool/BasicPool.sol +161 -0
  462. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  463. package/contracts/pool/BundleService.sol +386 -0
  464. package/contracts/pool/BundleServiceManager.sol +39 -0
  465. package/contracts/pool/IBundleService.sol +116 -0
  466. package/contracts/pool/IPoolComponent.sol +62 -0
  467. package/contracts/pool/IPoolService.sol +170 -0
  468. package/contracts/pool/Pool.sol +331 -0
  469. package/contracts/pool/PoolLib.sol +341 -0
  470. package/contracts/pool/PoolService.sol +614 -0
  471. package/contracts/pool/PoolServiceManager.sol +39 -0
  472. package/contracts/product/ApplicationService.sol +327 -0
  473. package/contracts/product/ApplicationServiceManager.sol +38 -0
  474. package/contracts/product/BasicProduct.sol +48 -0
  475. package/contracts/product/BasicProductAuthorization.sol +64 -0
  476. package/contracts/product/ClaimService.sol +626 -0
  477. package/contracts/product/ClaimServiceManager.sol +38 -0
  478. package/contracts/product/IApplicationService.sol +88 -0
  479. package/contracts/product/IClaimService.sol +136 -0
  480. package/contracts/product/IPolicyService.sol +102 -0
  481. package/contracts/product/IPricingService.sol +40 -0
  482. package/contracts/product/IProductComponent.sol +62 -0
  483. package/contracts/product/IRiskService.sol +48 -0
  484. package/contracts/product/PolicyService.sol +645 -0
  485. package/contracts/product/PolicyServiceLib.sol +139 -0
  486. package/contracts/product/PolicyServiceManager.sol +39 -0
  487. package/contracts/product/PricingService.sol +306 -0
  488. package/contracts/product/PricingServiceManager.sol +39 -0
  489. package/contracts/product/Product.sol +491 -0
  490. package/contracts/product/RiskService.sol +189 -0
  491. package/contracts/product/RiskServiceManager.sol +39 -0
  492. package/contracts/registry/ChainNft.sol +82 -35
  493. package/contracts/registry/IRegistry.sol +128 -50
  494. package/contracts/registry/IRegistryService.sol +45 -16
  495. package/contracts/registry/IRelease.sol +29 -0
  496. package/contracts/registry/ITransferInterceptor.sol +1 -1
  497. package/contracts/registry/Registry.sol +551 -304
  498. package/contracts/registry/RegistryAdmin.sol +173 -0
  499. package/contracts/registry/RegistryAuthorization.sol +337 -0
  500. package/contracts/registry/RegistryService.sol +126 -284
  501. package/contracts/registry/RegistryServiceManager.sol +26 -53
  502. package/contracts/registry/ReleaseAdmin.sol +199 -0
  503. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  504. package/contracts/registry/ReleaseRegistry.sol +525 -0
  505. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  506. package/contracts/registry/TokenRegistry.sol +265 -59
  507. package/contracts/shared/Component.sol +210 -0
  508. package/contracts/shared/ComponentService.sol +691 -0
  509. package/contracts/shared/ComponentServiceManager.sol +38 -0
  510. package/contracts/shared/ContractLib.sol +312 -0
  511. package/contracts/shared/EcdsaChecker.sol +5 -0
  512. package/contracts/shared/IComponent.sol +58 -0
  513. package/contracts/shared/IComponentService.sol +111 -0
  514. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  515. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  516. package/contracts/shared/INftOwnable.sol +17 -12
  517. package/contracts/shared/IPolicyHolder.sol +35 -0
  518. package/contracts/shared/IRegisterable.sol +24 -5
  519. package/contracts/shared/IRegistryLinked.sol +11 -0
  520. package/contracts/shared/IService.sol +13 -5
  521. package/contracts/shared/InitializableERC165.sol +35 -0
  522. package/contracts/shared/InstanceLinkedComponent.sol +232 -0
  523. package/contracts/shared/Lifecycle.sol +88 -0
  524. package/contracts/shared/NftIdSet.sol +65 -0
  525. package/contracts/shared/NftOwnable.sol +77 -84
  526. package/contracts/shared/PolicyHolder.sol +63 -0
  527. package/contracts/shared/Registerable.sol +54 -38
  528. package/contracts/shared/RegistryLinked.sol +38 -0
  529. package/contracts/shared/Service.sol +46 -33
  530. package/contracts/shared/TokenHandler.sol +327 -12
  531. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  532. package/contracts/staking/IStaking.sol +366 -0
  533. package/contracts/staking/IStakingService.sol +127 -0
  534. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  535. package/contracts/staking/Staking.sol +797 -0
  536. package/contracts/staking/StakingLib.sol +195 -0
  537. package/contracts/staking/StakingManager.sol +53 -0
  538. package/contracts/staking/StakingReader.sol +171 -0
  539. package/contracts/staking/StakingService.sol +321 -0
  540. package/contracts/staking/StakingServiceManager.sol +46 -0
  541. package/contracts/staking/StakingStore.sol +1368 -0
  542. package/contracts/staking/TargetHandler.sol +132 -0
  543. package/contracts/staking/TargetManagerLib.sol +234 -0
  544. package/contracts/{types → type}/AddressSet.sol +1 -1
  545. package/contracts/type/Amount.sol +154 -0
  546. package/contracts/{types → type}/Blocknumber.sol +38 -19
  547. package/contracts/type/ChainId.sol +101 -0
  548. package/contracts/type/ClaimId.sol +80 -0
  549. package/contracts/{types → type}/DistributorType.sol +2 -2
  550. package/contracts/type/Fee.sol +66 -0
  551. package/contracts/{types → type}/Key32.sol +2 -2
  552. package/contracts/type/Key32Set.sol +62 -0
  553. package/contracts/{types → type}/NftId.sol +28 -15
  554. package/contracts/type/NftIdSet.sol +62 -0
  555. package/contracts/type/ObjectType.sol +278 -0
  556. package/contracts/type/PayoutId.sol +82 -0
  557. package/contracts/{types → type}/Referral.sol +12 -1
  558. package/contracts/type/RequestId.sol +75 -0
  559. package/contracts/type/RequestIdSet.sol +62 -0
  560. package/contracts/type/RiskId.sol +75 -0
  561. package/contracts/type/RoleId.sol +180 -0
  562. package/contracts/type/Seconds.sol +124 -0
  563. package/contracts/type/Selector.sol +107 -0
  564. package/contracts/{types → type}/StateId.sol +48 -4
  565. package/contracts/type/String.sol +95 -0
  566. package/contracts/{types → type}/Timestamp.sol +45 -20
  567. package/contracts/type/UFixed.sol +263 -0
  568. package/contracts/{types → type}/Version.sol +59 -7
  569. package/contracts/{shared → upgradeability}/IVersionable.sol +7 -47
  570. package/contracts/upgradeability/ProxyManager.sol +246 -0
  571. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  572. package/contracts/upgradeability/Versionable.sol +62 -0
  573. package/package.json +13 -8
  574. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  575. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  576. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  577. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -670
  578. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  579. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  580. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  581. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -204
  582. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  583. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  584. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  585. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  586. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  587. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -873
  588. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  589. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  590. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  591. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  592. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  593. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  594. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  595. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  596. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  597. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  598. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  599. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  600. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  601. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  602. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  603. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  604. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  605. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  606. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  607. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  608. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  609. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  610. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  611. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  612. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  613. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  614. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  615. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  616. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  617. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  618. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  619. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  620. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  621. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  622. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  623. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  624. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  625. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  626. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  627. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  628. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  629. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  630. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  631. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  632. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  633. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  634. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  635. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  636. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  637. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  638. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  639. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  640. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  641. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  642. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  643. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  644. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  645. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  646. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -211
  647. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  648. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  649. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  650. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  651. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  652. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -681
  653. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  654. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -436
  655. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  656. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
  657. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  658. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  659. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  660. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  661. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  662. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -820
  663. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  664. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  665. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  666. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  667. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  668. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  669. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  670. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  671. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  672. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  673. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  674. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  675. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  676. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  677. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  678. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  679. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  680. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  681. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  682. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  683. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  684. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  685. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  686. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  687. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  688. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  689. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  690. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  691. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  692. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  693. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  694. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  695. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  696. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  697. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  698. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  699. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  700. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  701. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  702. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  703. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  704. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  705. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  706. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  707. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  708. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  709. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  710. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  711. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  712. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  713. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  714. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  715. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  716. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  717. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  718. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  719. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  720. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  721. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  722. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  723. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  724. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  725. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  726. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  727. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  728. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  729. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  730. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  731. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  732. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  733. package/contracts/components/BaseComponent.sol +0 -91
  734. package/contracts/components/Distribution.sol +0 -166
  735. package/contracts/components/IBaseComponent.sol +0 -25
  736. package/contracts/components/IDistributionComponent.sol +0 -46
  737. package/contracts/components/IPoolComponent.sol +0 -62
  738. package/contracts/components/IProductComponent.sol +0 -35
  739. package/contracts/components/Pool.sol +0 -247
  740. package/contracts/components/Product.sol +0 -297
  741. package/contracts/experiment/cloning/Cloner.sol +0 -47
  742. package/contracts/experiment/errors/Require.sol +0 -38
  743. package/contracts/experiment/errors/Revert.sol +0 -44
  744. package/contracts/experiment/inheritance/A.sol +0 -53
  745. package/contracts/experiment/inheritance/B.sol +0 -28
  746. package/contracts/experiment/inheritance/C.sol +0 -34
  747. package/contracts/experiment/inheritance/IA.sol +0 -13
  748. package/contracts/experiment/inheritance/IB.sol +0 -10
  749. package/contracts/experiment/inheritance/IC.sol +0 -12
  750. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  751. package/contracts/experiment/statemachine/ISM.sol +0 -25
  752. package/contracts/experiment/statemachine/SM.sol +0 -57
  753. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  754. package/contracts/experiment/types/TypeA.sol +0 -47
  755. package/contracts/experiment/types/TypeB.sol +0 -29
  756. package/contracts/instance/AccessManagedSimple.sol +0 -115
  757. package/contracts/instance/AccessManagerSimple.sol +0 -692
  758. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  759. package/contracts/instance/InstanceAccessManager.sol +0 -288
  760. package/contracts/instance/base/ComponentServiceBase.sol +0 -60
  761. package/contracts/instance/base/IInstanceBase.sol +0 -23
  762. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  763. package/contracts/instance/base/KeyValueStore.sol +0 -172
  764. package/contracts/instance/base/Lifecycle.sol +0 -100
  765. package/contracts/instance/module/IAccess.sol +0 -38
  766. package/contracts/instance/module/ISetup.sol +0 -44
  767. package/contracts/instance/module/ITreasury.sol +0 -23
  768. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  769. package/contracts/instance/service/DistributionService.sol +0 -99
  770. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  771. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  772. package/contracts/instance/service/IDistributionService.sol +0 -12
  773. package/contracts/instance/service/IPoolService.sol +0 -37
  774. package/contracts/instance/service/IProductService.sol +0 -107
  775. package/contracts/instance/service/PoolService.sol +0 -205
  776. package/contracts/instance/service/PoolServiceManager.sol +0 -53
  777. package/contracts/shared/ContractDeployerLib.sol +0 -72
  778. package/contracts/shared/ERC165.sol +0 -25
  779. package/contracts/shared/ProxyManager.sol +0 -94
  780. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  781. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  782. package/contracts/shared/Versionable.sol +0 -147
  783. package/contracts/test/TestFee.sol +0 -25
  784. package/contracts/test/TestRegisterable.sol +0 -18
  785. package/contracts/test/TestRoleId.sol +0 -14
  786. package/contracts/test/TestService.sol +0 -24
  787. package/contracts/test/TestToken.sol +0 -26
  788. package/contracts/test/TestVersion.sol +0 -44
  789. package/contracts/test/TestVersionable.sol +0 -17
  790. package/contracts/types/ChainId.sol +0 -38
  791. package/contracts/types/Fee.sol +0 -56
  792. package/contracts/types/NftIdSet.sol +0 -60
  793. package/contracts/types/NumberId.sol +0 -52
  794. package/contracts/types/ObjectType.sol +0 -152
  795. package/contracts/types/RiskId.sol +0 -43
  796. package/contracts/types/RoleId.sol +0 -89
  797. package/contracts/types/UFixed.sol +0 -325
@@ -0,0 +1,691 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
7
+ import {IComponents} from "../instance/module/IComponents.sol";
8
+ import {IComponentService} from "./IComponentService.sol";
9
+ import {IInstance} from "../instance/IInstance.sol";
10
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
11
+ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
12
+ import {InstanceReader} from "../instance/InstanceReader.sol";
13
+ import {InstanceStore} from "../instance/InstanceStore.sol";
14
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
15
+ import {IProductComponent} from "../product/IProductComponent.sol";
16
+ import {IRegistry} from "../registry/IRegistry.sol";
17
+ import {IRegistryService} from "../registry/IRegistryService.sol";
18
+ import {IStaking} from "../staking/IStaking.sol";
19
+ import {IStakingService} from "../staking/IStakingService.sol";
20
+
21
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
22
+ import {Amount, AmountLib} from "../type/Amount.sol";
23
+ import {ChainIdLib} from "../type/ChainId.sol";
24
+ import {ContractLib} from "../shared/ContractLib.sol";
25
+ import {Fee, FeeLib} from "../type/Fee.sol";
26
+ import {KEEP_STATE} from "../type/StateId.sol";
27
+ import {NftId, NftIdLib} from "../type/NftId.sol";
28
+ import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
29
+ import {ProductStore} from "../instance/ProductStore.sol";
30
+ import {Service} from "../shared/Service.sol";
31
+ import {TokenHandler} from "../shared/TokenHandler.sol";
32
+ import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
33
+
34
+
35
+ contract ComponentService is
36
+ Service,
37
+ IComponentService
38
+ {
39
+ bool private constant INCREASE = true;
40
+ bool private constant DECREASE = false;
41
+
42
+ IAccountingService private _accountingService;
43
+ IRegistryService private _registryService;
44
+ IStaking private _staking;
45
+
46
+ function _initialize(
47
+ address owner,
48
+ bytes memory data
49
+ )
50
+ internal
51
+ virtual override
52
+ initializer()
53
+ {
54
+ (
55
+ address authority,
56
+ address registry
57
+ ) = abi.decode(data, (address, address));
58
+
59
+ __Service_init(authority, registry, owner);
60
+
61
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
62
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
63
+ _staking = IStakingService(_getServiceAddress(STAKING())).getStaking();
64
+
65
+ _registerInterface(type(IComponentService).interfaceId);
66
+ }
67
+
68
+ //-------- component ----------------------------------------------------//
69
+
70
+ /// @inheritdoc IComponentService
71
+ function registerComponent(address componentAddress)
72
+ external
73
+ virtual
74
+ restricted()
75
+ returns (NftId componentNftId)
76
+ {
77
+ // checks
78
+ // check sender is registered product
79
+ IRegistry registry = getRegistry();
80
+ if (!registry.isObjectType(msg.sender, PRODUCT())) {
81
+ revert ErrorComponentServiceCallerNotProduct(msg.sender);
82
+ }
83
+
84
+ // check provided address is product contract
85
+ if (!_isInstanceLinkedComponent(componentAddress)) {
86
+ revert ErrorComponentServiceNotComponent(componentAddress);
87
+ }
88
+
89
+ NftId productNftId = registry.getNftIdForAddress(msg.sender);
90
+ IInstance instance = IInstance(
91
+ registry.getObjectAddress(
92
+ registry.getParentNftId(productNftId)));
93
+
94
+ componentNftId = _verifyAndRegister(
95
+ instance,
96
+ componentAddress,
97
+ productNftId, // product is parent of component to be registered
98
+ address(0)); // token will be inhereited from product
99
+ }
100
+
101
+
102
+ /// @inheritdoc IComponentService
103
+ function approveTokenHandler(
104
+ IERC20Metadata token,
105
+ Amount amount
106
+ )
107
+ external
108
+ virtual
109
+ restricted()
110
+ {
111
+ // checks
112
+ (NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
113
+ TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
114
+ componentNftId);
115
+
116
+ // effects
117
+ tokenHandler.approve(token, amount);
118
+ }
119
+
120
+
121
+ /// @inheritdoc IComponentService
122
+ function setWallet(address newWallet)
123
+ external
124
+ virtual
125
+ restricted()
126
+ {
127
+ // checks
128
+ (NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
129
+ TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
130
+ componentNftId);
131
+
132
+ // effects
133
+ tokenHandler.setWallet(newWallet);
134
+ }
135
+
136
+ /// @inheritdoc IComponentService
137
+ function setLocked(bool locked)
138
+ external
139
+ virtual
140
+ restricted()
141
+ {
142
+ (, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
143
+
144
+ address component = msg.sender;
145
+ instance.getInstanceAdmin().setContractLocked(
146
+ component,
147
+ locked);
148
+ emit LogComponentServiceComponentLocked(component, locked);
149
+ }
150
+
151
+
152
+ /// @inheritdoc IComponentService
153
+ function withdrawFees(Amount amount)
154
+ external
155
+ virtual
156
+ restricted()
157
+ returns (Amount withdrawnAmount)
158
+ {
159
+ // checks
160
+ (NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
161
+ InstanceReader instanceReader = instance.getInstanceReader();
162
+
163
+ // determine withdrawn amount
164
+ Amount maxAvailableAmount = instanceReader.getFeeAmount(componentNftId);
165
+ withdrawnAmount = amount;
166
+
167
+ // max amount -> withraw all available fees
168
+ if (amount == AmountLib.max()) {
169
+ withdrawnAmount = maxAvailableAmount;
170
+ }
171
+
172
+ // check modified withdrawn amount
173
+ if (withdrawnAmount.eqz()) {
174
+ revert ErrorComponentServiceWithdrawAmountIsZero();
175
+ } else if (withdrawnAmount > maxAvailableAmount) {
176
+ revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, maxAvailableAmount);
177
+ }
178
+
179
+ // effects
180
+ // decrease fee counters by withdrawnAmount
181
+ _accountingService.decreaseComponentFees(
182
+ instance.getInstanceStore(),
183
+ componentNftId,
184
+ withdrawnAmount);
185
+
186
+ // transfer amount to component owner
187
+ address componentOwner = getRegistry().ownerOf(componentNftId);
188
+ TokenHandler tokenHandler = instanceReader.getTokenHandler(componentNftId);
189
+ emit LogComponentServiceComponentFeesWithdrawn(
190
+ componentNftId,
191
+ componentOwner,
192
+ address(tokenHandler.TOKEN()),
193
+ withdrawnAmount);
194
+
195
+ // interactions
196
+ // transfer amount to component owner
197
+ tokenHandler.pushFeeToken(
198
+ componentOwner,
199
+ withdrawnAmount);
200
+ }
201
+
202
+
203
+ //-------- product ------------------------------------------------------//
204
+
205
+ /// @inheritdoc IComponentService
206
+ function registerProduct(address productAddress, address token)
207
+ external
208
+ virtual
209
+ restricted()
210
+ nonReentrant()
211
+ returns (NftId productNftId)
212
+ {
213
+ // checks
214
+ // check sender is registered instance
215
+ IRegistry registry = getRegistry();
216
+ if (!registry.isObjectType(msg.sender, INSTANCE())) {
217
+ revert ErrorComponentServiceCallerNotInstance(msg.sender);
218
+ }
219
+
220
+ // check provided address is product contract
221
+ if (!_isProduct(productAddress)) {
222
+ revert ErrorComponentServiceNotProduct(productAddress);
223
+ }
224
+
225
+ IInstance instance = IInstance(msg.sender);
226
+ NftId instanceNftId = registry.getNftIdForAddress(msg.sender);
227
+ productNftId = _verifyAndRegister(
228
+ instance,
229
+ productAddress,
230
+ instanceNftId, // instance is parent of product to be registered
231
+ token);
232
+
233
+ // add product specific token for product to staking
234
+ _staking.addTargetToken(
235
+ instanceNftId,
236
+ token);
237
+ }
238
+
239
+
240
+ function _isProduct(address target) internal view virtual returns (bool) {
241
+ if (!_isInstanceLinkedComponent(target)) {
242
+ return false;
243
+ }
244
+
245
+ return IInstanceLinkedComponent(target).getInitialInfo().objectType == PRODUCT();
246
+ }
247
+
248
+
249
+ function _isInstanceLinkedComponent(address target) internal view virtual returns (bool) {
250
+ if (!ContractLib.isContract(target)) {
251
+ return false;
252
+ }
253
+
254
+ return ContractLib.supportsInterface(target, type(IInstanceLinkedComponent).interfaceId);
255
+ }
256
+
257
+
258
+ /// @inheritdoc IComponentService
259
+ function setProductFees(
260
+ Fee memory productFee, // product fee on net premium
261
+ Fee memory processingFee // product fee on payout amounts
262
+ )
263
+ external
264
+ virtual
265
+ restricted()
266
+ nonReentrant()
267
+ {
268
+ (NftId productNftId, IInstance instance) = _getAndVerifyComponent(PRODUCT(), true);
269
+ IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
270
+ bool feesChanged = false;
271
+
272
+ // update product fee if required
273
+ if(!FeeLib.eq(feeInfo.productFee, productFee)) {
274
+ _logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
275
+ feeInfo.productFee = productFee;
276
+ feesChanged = true;
277
+ }
278
+
279
+ // update processing fee if required
280
+ if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
281
+ _logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
282
+ feeInfo.processingFee = processingFee;
283
+ feesChanged = true;
284
+ }
285
+
286
+ if(feesChanged) {
287
+ instance.getProductStore().updateFee(productNftId, feeInfo);
288
+ emit LogComponentServiceProductFeesUpdated(productNftId);
289
+ }
290
+ }
291
+
292
+
293
+ function _createProduct(
294
+ ProductStore productStore,
295
+ NftId productNftId,
296
+ address productAddress
297
+ )
298
+ internal
299
+ virtual
300
+ {
301
+ // create product in instance instanceStore
302
+ IProductComponent product = IProductComponent(productAddress);
303
+ IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
304
+ // force initialization of linked components with empty values to
305
+ // ensure no components are linked upon initialization of the product
306
+ initialProductInfo.poolNftId = NftIdLib.zero();
307
+ initialProductInfo.distributionNftId = NftIdLib.zero();
308
+ initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
309
+
310
+ // create info
311
+ productStore.createProduct(
312
+ productNftId,
313
+ initialProductInfo);
314
+
315
+ productStore.createFee(
316
+ productNftId,
317
+ product.getInitialFeeInfo());
318
+ }
319
+
320
+ //-------- distribution -------------------------------------------------//
321
+
322
+ /// @dev registers the sending component as a distribution component
323
+ function _createDistribution(
324
+ ProductStore productStore,
325
+ NftId productNftId,
326
+ NftId distributionNftId,
327
+ IComponents.ProductInfo memory productInfo
328
+ )
329
+ internal
330
+ virtual
331
+ nonReentrant()
332
+ {
333
+ // check product is still expecting a distribution registration
334
+ if (!productInfo.hasDistribution) {
335
+ revert ErrorProductServiceNoDistributionExpected(productNftId);
336
+ }
337
+ if (productInfo.distributionNftId.gtz()) {
338
+ revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
339
+ }
340
+
341
+ // set distribution in product info
342
+ productInfo.distributionNftId = distributionNftId;
343
+ productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
344
+ }
345
+
346
+
347
+ function setDistributionFees(
348
+ Fee memory distributionFee, // distribution fee for sales that do not include commissions
349
+ Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
350
+ )
351
+ external
352
+ virtual
353
+ restricted()
354
+ {
355
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyComponent(DISTRIBUTION(), true);
356
+ (NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
357
+ instance.getInstanceReader(), distributionNftId);
358
+ bool feesChanged = false;
359
+
360
+ // update distributino fee if required
361
+ if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
362
+ _logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
363
+ feeInfo.distributionFee = distributionFee;
364
+ feesChanged = true;
365
+ }
366
+
367
+ // update min distribution owner fee if required
368
+ if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
369
+ _logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
370
+ feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
371
+ feesChanged = true;
372
+ }
373
+
374
+ if(feesChanged) {
375
+ instance.getProductStore().updateFee(productNftId, feeInfo);
376
+ emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
377
+ }
378
+ }
379
+
380
+ //-------- oracle -------------------------------------------------------//
381
+
382
+ function _createOracle(
383
+ ProductStore productStore,
384
+ NftId productNftId,
385
+ NftId oracleNftId,
386
+ IComponents.ProductInfo memory productInfo
387
+ )
388
+ internal
389
+ virtual
390
+ {
391
+ // check product is still expecting an oracle registration
392
+ if (productInfo.expectedNumberOfOracles == 0) {
393
+ revert ErrorProductServiceNoOraclesExpected(productNftId);
394
+ }
395
+ if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
396
+ revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
397
+ }
398
+
399
+ // update/add oracle to product info
400
+ productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
401
+ productInfo.numberOfOracles++;
402
+ productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
403
+ }
404
+
405
+ //-------- pool ---------------------------------------------------------//
406
+
407
+ function _createPool(
408
+ InstanceStore instanceStore,
409
+ ProductStore productStore,
410
+ NftId productNftId,
411
+ NftId poolNftId,
412
+ address componentAddress,
413
+ IComponents.ProductInfo memory productInfo
414
+ )
415
+ internal
416
+ virtual
417
+ {
418
+ // check product is still expecting a pool registration
419
+ //IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
420
+ if (productInfo.poolNftId.gtz()) {
421
+ revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
422
+ }
423
+
424
+ // create info
425
+ IPoolComponent pool = IPoolComponent(componentAddress);
426
+ instanceStore.createPool(
427
+ poolNftId,
428
+ pool.getInitialPoolInfo());
429
+
430
+ // update pool in product info
431
+ productInfo.poolNftId = poolNftId;
432
+ productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
433
+ }
434
+
435
+
436
+ function setPoolFees(
437
+ Fee memory poolFee, // pool fee on net premium
438
+ Fee memory stakingFee, // pool fee on staked capital from investor
439
+ Fee memory performanceFee // pool fee on profits from capital investors
440
+ )
441
+ external
442
+ virtual
443
+ restricted()
444
+ {
445
+ (NftId poolNftId, IInstance instance) = _getAndVerifyComponent(POOL(), true);
446
+
447
+ (NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
448
+ instance.getInstanceReader(), poolNftId);
449
+ bool feesChanged = false;
450
+
451
+ // update pool fee if required
452
+ if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
453
+ _logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
454
+ feeInfo.poolFee = poolFee;
455
+ feesChanged = true;
456
+ }
457
+
458
+ // update staking fee if required
459
+ if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
460
+ _logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
461
+ feeInfo.stakingFee = stakingFee;
462
+ feesChanged = true;
463
+ }
464
+
465
+ // update performance fee if required
466
+ if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
467
+ _logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
468
+ feeInfo.performanceFee = performanceFee;
469
+ feesChanged = true;
470
+ }
471
+
472
+ if(feesChanged) {
473
+ instance.getProductStore().updateFee(productNftId, feeInfo);
474
+ emit LogComponentServicePoolFeesUpdated(poolNftId);
475
+ }
476
+ }
477
+
478
+
479
+ /// @dev Registers the component represented by the provided address.
480
+ /// The caller must ensure componentAddress is IInstanceLinkedComponent.
481
+ function _verifyAndRegister(
482
+ IInstance instance,
483
+ address componentAddress,
484
+ NftId parentNftId,
485
+ address token
486
+ )
487
+ internal
488
+ virtual
489
+ returns (NftId componentNftId)
490
+ {
491
+ (
492
+ IInstanceLinkedComponent component,
493
+ IRegistry.ObjectInfo memory objectInfo // initial component info
494
+ ) = _getAndVerifyRegisterableComponent(
495
+ componentAddress,
496
+ parentNftId);
497
+
498
+ InstanceStore instanceStore = instance.getInstanceStore();
499
+ ObjectType componentType = objectInfo.objectType;
500
+
501
+ if(componentType == PRODUCT()) {
502
+ // register product with registry
503
+ componentNftId = _registryService.registerProduct(
504
+ component,
505
+ objectInfo.initialOwner).nftId;
506
+
507
+ // create product info in instance store
508
+ _createProduct(instance.getProductStore(), componentNftId, componentAddress);
509
+ } else {
510
+ // register non product component with registry
511
+ componentNftId = _registryService.registerProductLinkedComponent(
512
+ component,
513
+ objectInfo.objectType,
514
+ objectInfo.initialOwner).nftId;
515
+
516
+ InstanceReader instanceReader = instance.getInstanceReader();
517
+
518
+ // create non product component info in instance store
519
+ NftId productNftId = parentNftId;
520
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
521
+ if(componentType == POOL()) {
522
+ _createPool(instanceStore, instance.getProductStore(), productNftId, componentNftId, componentAddress, productInfo);
523
+ } else if(componentType == DISTRIBUTION()) {
524
+ _createDistribution(instance.getProductStore(), productNftId, componentNftId, productInfo);
525
+ } else if(componentType == ORACLE()) {
526
+ _createOracle(instance.getProductStore(), productNftId, componentNftId, productInfo);
527
+ } else {
528
+ revert ErrorComponentServiceComponentTypeNotSupported(componentAddress, componentType);
529
+ }
530
+
531
+ // get product's token
532
+ token = address(instanceReader.getTokenHandler(productNftId).TOKEN());
533
+ }
534
+
535
+ _checkToken(instance, token);
536
+
537
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
538
+
539
+ // deploy and wire token handler
540
+ IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
541
+ componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
542
+ address(getRegistry()),
543
+ address(component), // initially, component is its own wallet
544
+ token,
545
+ instanceAdmin.authority());
546
+
547
+ // register component with instance
548
+ instanceStore.createComponent(
549
+ componentNftId,
550
+ componentInfo);
551
+
552
+ // link component contract to nft id
553
+ component.linkToRegisteredNftId();
554
+
555
+ // authorize
556
+ instanceAdmin.initializeComponentAuthorization(componentAddress, componentType);
557
+
558
+ emit LogComponentServiceRegistered(
559
+ instance.getNftId(),
560
+ componentNftId,
561
+ componentType,
562
+ address(component),
563
+ token,
564
+ objectInfo.initialOwner);
565
+ }
566
+
567
+
568
+ function _checkToken(IInstance instance, address token)
569
+ internal
570
+ view
571
+ {
572
+ if (! instance.isTokenRegistryDisabled()) {
573
+ // check if provided token is whitelisted and active
574
+ if (!ContractLib.isActiveToken(
575
+ getRegistry().getTokenRegistryAddress(),
576
+ ChainIdLib.current(),
577
+ token,
578
+ AccessManagerCloneable(authority()).getRelease())
579
+ ) {
580
+ revert ErrorComponentServiceTokenInvalid(token);
581
+ }
582
+ }
583
+ }
584
+
585
+
586
+ function _logUpdateFee(NftId productNftId, string memory name, Fee memory feeBefore, Fee memory feeAfter)
587
+ internal
588
+ virtual
589
+ {
590
+ emit LogComponentServiceUpdateFee(
591
+ productNftId,
592
+ name,
593
+ feeBefore.fractionalFee,
594
+ feeBefore.fixedFee,
595
+ feeAfter.fractionalFee,
596
+ feeAfter.fixedFee
597
+ );
598
+ }
599
+
600
+
601
+ function _getLinkedFeeInfo(
602
+ InstanceReader instanceReader,
603
+ NftId componentNftId
604
+ )
605
+ internal
606
+ view
607
+ returns(
608
+ NftId productNftId,
609
+ IComponents.FeeInfo memory info
610
+ )
611
+ {
612
+ productNftId = getRegistry().getParentNftId(componentNftId);
613
+ info = instanceReader.getFeeInfo(productNftId);
614
+ }
615
+
616
+
617
+ /// @dev Based on the provided component address required type the component
618
+ /// and related instance contract this function reverts iff:
619
+ /// - the component parent does not match with the required parent
620
+ /// - the component release does not match with the service release
621
+ /// - the component has already been registered
622
+ function _getAndVerifyRegisterableComponent(
623
+ address componentAddress,
624
+ NftId requiredParent
625
+ )
626
+ internal
627
+ view
628
+ returns (
629
+ IInstanceLinkedComponent component,
630
+ IRegistry.ObjectInfo memory info
631
+ )
632
+ {
633
+ component = IInstanceLinkedComponent(componentAddress);
634
+ info = component.getInitialInfo();
635
+
636
+ // check component parent
637
+ if(info.parentNftId != requiredParent) {
638
+ revert ErrorComponentServiceComponentParentInvalid(componentAddress, requiredParent, info.parentNftId);
639
+ }
640
+
641
+ // check component release (must match with service release)
642
+ if(component.getRelease() != getRelease()) {
643
+ revert ErrorComponentServiceComponentReleaseMismatch(componentAddress, getRelease(), component.getRelease());
644
+ }
645
+
646
+ // check component has not already been registered
647
+ if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
648
+ revert ErrorComponentServiceComponentAlreadyRegistered(componentAddress);
649
+ }
650
+ }
651
+
652
+
653
+ function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
654
+ instanceAdmin.setTargetLocked(componentAddress, locked);
655
+ }
656
+
657
+
658
+ function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
659
+ internal
660
+ view
661
+ returns (
662
+ NftId componentNftId,
663
+ IInstance instance
664
+ )
665
+ {
666
+ IRegistry.ObjectInfo memory info;
667
+ address instanceAddress;
668
+
669
+ if (expectedType != COMPONENT()) {
670
+ (info, instanceAddress) = ContractLib.getAndVerifyComponent(
671
+ getRegistry(),
672
+ msg.sender, // caller
673
+ expectedType,
674
+ isActive);
675
+ } else {
676
+ (info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
677
+ getRegistry(),
678
+ msg.sender,
679
+ isActive);
680
+ }
681
+
682
+ // get component nft id and instance
683
+ componentNftId = info.nftId;
684
+ instance = IInstance(instanceAddress);
685
+ }
686
+
687
+
688
+ function _getDomain() internal pure virtual override returns(ObjectType) {
689
+ return COMPONENT();
690
+ }
691
+ }