@etherisc/gif-next 0.0.2-c336201-668 → 0.0.2-c37b622-555

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 (826) hide show
  1. package/README.md +384 -20
  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 +790 -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 +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -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 +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -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 +805 -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 +930 -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 +805 -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 +805 -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 +408 -0
  54. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  55. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  56. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +805 -0
  58. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  60. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2185 -0
  64. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +805 -0
  66. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  67. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  68. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  69. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  71. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  81. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  82. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  84. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
  86. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  88. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  90. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  91. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +584 -1285
  92. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +1092 -0
  94. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  95. package/artifacts/contracts/instance/Instance.sol/Instance.json +675 -1534
  96. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  97. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2284 -0
  98. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  99. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
  100. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  101. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2621 -0
  102. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1338 -0
  104. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +772 -0
  106. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  107. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3039 -0
  108. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  109. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  110. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  111. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  112. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  113. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  114. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  115. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  116. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  117. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  118. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  120. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  121. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  122. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  123. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  124. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  125. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  126. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  127. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  128. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  129. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  130. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  131. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  132. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  133. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  134. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  135. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  136. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  137. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  138. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  139. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +805 -0
  140. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  141. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  142. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  143. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  144. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  145. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  146. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  147. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  148. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  149. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  150. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  152. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  153. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  154. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  155. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  156. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  157. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  158. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  160. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  161. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  162. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  163. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +895 -0
  164. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  165. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  166. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  167. package/artifacts/contracts/pool/Pool.sol/Pool.json +1015 -0
  168. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  169. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  170. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  171. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  172. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  173. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  174. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  175. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  176. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  178. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  179. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  180. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  181. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  182. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  183. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  184. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  186. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  187. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +804 -0
  188. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  189. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  190. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  191. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  192. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  193. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +652 -0
  194. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  195. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1006 -0
  196. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  197. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +665 -0
  198. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  199. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  200. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  201. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  202. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  203. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  204. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  205. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  206. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  207. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  208. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  209. package/artifacts/contracts/product/Product.sol/Product.json +1107 -0
  210. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  211. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  212. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  213. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  214. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  215. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +242 -12
  216. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  217. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1035 -119
  218. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  219. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1072 -0
  220. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  221. package/artifacts/contracts/{instance/IInstanceLinked.sol/IInstanceLinked.json → registry/IRelease.sol/IRelease.json} +6 -6
  222. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  223. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  224. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  225. package/artifacts/contracts/registry/Registry.sol/Registry.json +1473 -231
  226. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  227. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  228. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  229. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  230. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  231. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1298 -0
  232. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  233. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +773 -0
  234. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  235. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  236. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  237. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  238. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  239. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  240. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  241. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  242. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  243. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +721 -0
  244. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  245. package/artifacts/contracts/shared/Component.sol/Component.json +695 -0
  246. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  247. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  248. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  249. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  250. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  251. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  252. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  253. package/artifacts/contracts/shared/{IOwnable.sol/IOwnable.json → ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  254. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  255. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  256. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  257. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  258. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  259. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +620 -0
  260. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  261. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  262. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  263. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +697 -0
  264. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  265. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  266. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  267. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +62 -70
  268. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  269. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  270. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  271. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +248 -21
  272. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  273. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  274. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  275. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +224 -160
  276. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  277. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  278. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  279. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +785 -0
  280. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  281. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  282. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  283. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  284. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  285. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +228 -0
  286. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  287. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  288. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  289. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +294 -18
  290. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  291. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  292. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  293. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → shared/Service.sol/Service.json} +239 -234
  294. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  295. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  296. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  297. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  298. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  299. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  300. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  301. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2747 -0
  302. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  303. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  304. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  305. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  306. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  307. package/artifacts/contracts/staking/Staking.sol/Staking.json +3175 -0
  308. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  309. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  310. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  311. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +847 -0
  312. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  313. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  314. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  315. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  316. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  317. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  318. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  319. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  320. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  321. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  322. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  323. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  324. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  325. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  326. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  328. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  330. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  332. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  334. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  336. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  338. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  340. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  341. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  342. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  344. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  345. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  346. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +238 -0
  348. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  350. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +161 -0
  352. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  354. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.dbg.json +4 -0
  355. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.json +33 -0
  356. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  357. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  358. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  359. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  360. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  361. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +308 -0
  362. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  363. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  364. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  365. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  366. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  367. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  368. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  369. package/artifacts/contracts/type/String.sol/StrLib.json +199 -0
  370. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  371. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +344 -0
  372. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  373. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  374. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  375. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  376. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  377. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  378. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  379. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  380. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  381. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  382. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  383. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  384. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  385. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  386. package/contracts/accounting/AccountingService.sol +274 -0
  387. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  388. package/contracts/accounting/IAccountingService.sol +47 -0
  389. package/contracts/authorization/AccessAdmin.sol +780 -0
  390. package/contracts/authorization/AccessAdminLib.sol +396 -0
  391. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  392. package/contracts/authorization/Authorization.sol +169 -0
  393. package/contracts/authorization/IAccess.sol +67 -0
  394. package/contracts/authorization/IAccessAdmin.sol +144 -0
  395. package/contracts/authorization/IAuthorization.sol +26 -0
  396. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  397. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  398. package/contracts/distribution/BasicDistribution.sol +140 -0
  399. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  400. package/contracts/distribution/Distribution.sol +245 -0
  401. package/contracts/distribution/DistributionService.sol +448 -0
  402. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  403. package/contracts/distribution/IDistributionComponent.sol +45 -0
  404. package/contracts/distribution/IDistributionService.sol +115 -0
  405. package/contracts/examples/fire/DamageLevel.sol +59 -0
  406. package/contracts/examples/fire/FirePool.sol +86 -0
  407. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  408. package/contracts/examples/fire/FireProduct.sol +433 -0
  409. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  410. package/contracts/examples/fire/FireUSD.sol +26 -0
  411. package/contracts/examples/flight/FlightLib.sol +279 -0
  412. package/contracts/examples/flight/FlightOracle.sol +167 -0
  413. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  414. package/contracts/examples/flight/FlightPool.sol +89 -0
  415. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  416. package/contracts/examples/flight/FlightProduct.sol +470 -0
  417. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  418. package/contracts/examples/flight/FlightUSD.sol +26 -0
  419. package/contracts/examples/flight/originalV1.sol +396 -0
  420. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  421. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  422. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  423. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  424. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  425. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  426. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  427. package/contracts/instance/BaseStore.sol +93 -0
  428. package/contracts/instance/BundleSet.sol +130 -0
  429. package/contracts/instance/IBaseStore.sol +37 -0
  430. package/contracts/instance/IInstance.sol +149 -45
  431. package/contracts/instance/IInstanceService.sol +119 -0
  432. package/contracts/instance/Instance.sol +337 -54
  433. package/contracts/instance/InstanceAdmin.sol +379 -0
  434. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  435. package/contracts/instance/InstanceReader.sol +634 -0
  436. package/contracts/instance/InstanceService.sol +514 -0
  437. package/contracts/instance/InstanceServiceManager.sol +39 -0
  438. package/contracts/instance/InstanceStore.sol +323 -0
  439. package/contracts/instance/ProductStore.sol +290 -0
  440. package/contracts/instance/RiskSet.sol +126 -0
  441. package/contracts/instance/TargetNames.sol +10 -0
  442. package/contracts/instance/base/BalanceStore.sol +121 -0
  443. package/contracts/instance/base/Cloneable.sol +28 -0
  444. package/contracts/instance/base/ObjectCounter.sol +20 -0
  445. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  446. package/contracts/instance/base/ObjectSet.sol +77 -0
  447. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  448. package/contracts/instance/module/IBundle.sol +21 -0
  449. package/contracts/instance/module/IComponents.sol +60 -0
  450. package/contracts/instance/module/IDistribution.sol +54 -0
  451. package/contracts/instance/module/IPolicy.sol +105 -0
  452. package/contracts/instance/module/IRisk.sol +16 -0
  453. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  454. package/contracts/oracle/BasicOracle.sol +44 -0
  455. package/contracts/oracle/BasicOracleAuthorization.sol +52 -0
  456. package/contracts/oracle/IOracle.sol +41 -0
  457. package/contracts/oracle/IOracleComponent.sol +33 -0
  458. package/contracts/oracle/IOracleService.sol +66 -0
  459. package/contracts/oracle/Oracle.sol +152 -0
  460. package/contracts/oracle/OracleService.sol +310 -0
  461. package/contracts/oracle/OracleServiceManager.sol +39 -0
  462. package/contracts/pool/BasicPool.sol +161 -0
  463. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  464. package/contracts/pool/BundleService.sol +386 -0
  465. package/contracts/pool/BundleServiceManager.sol +39 -0
  466. package/contracts/pool/IBundleService.sol +116 -0
  467. package/contracts/pool/IPoolComponent.sol +62 -0
  468. package/contracts/pool/IPoolService.sol +170 -0
  469. package/contracts/pool/Pool.sol +331 -0
  470. package/contracts/pool/PoolLib.sol +341 -0
  471. package/contracts/pool/PoolService.sol +614 -0
  472. package/contracts/pool/PoolServiceManager.sol +39 -0
  473. package/contracts/product/ApplicationService.sol +327 -0
  474. package/contracts/product/ApplicationServiceManager.sol +38 -0
  475. package/contracts/product/BasicProduct.sol +48 -0
  476. package/contracts/product/BasicProductAuthorization.sol +64 -0
  477. package/contracts/product/ClaimService.sol +626 -0
  478. package/contracts/product/ClaimServiceManager.sol +38 -0
  479. package/contracts/product/IApplicationService.sol +88 -0
  480. package/contracts/product/IClaimService.sol +136 -0
  481. package/contracts/product/IPolicyService.sol +102 -0
  482. package/contracts/product/IPricingService.sol +40 -0
  483. package/contracts/product/IProductComponent.sol +62 -0
  484. package/contracts/product/IRiskService.sol +48 -0
  485. package/contracts/product/PolicyService.sol +645 -0
  486. package/contracts/product/PolicyServiceLib.sol +139 -0
  487. package/contracts/product/PolicyServiceManager.sol +39 -0
  488. package/contracts/product/PricingService.sol +306 -0
  489. package/contracts/product/PricingServiceManager.sol +39 -0
  490. package/contracts/product/Product.sol +491 -0
  491. package/contracts/product/RiskService.sol +189 -0
  492. package/contracts/product/RiskServiceManager.sol +39 -0
  493. package/contracts/registry/ChainNft.sol +130 -40
  494. package/contracts/registry/IRegistry.sol +144 -29
  495. package/contracts/registry/IRegistryService.sol +62 -0
  496. package/contracts/registry/IRelease.sol +29 -0
  497. package/contracts/registry/ITransferInterceptor.sol +6 -0
  498. package/contracts/registry/Registry.sol +637 -282
  499. package/contracts/registry/RegistryAdmin.sol +191 -0
  500. package/contracts/registry/RegistryAuthorization.sol +336 -0
  501. package/contracts/registry/RegistryService.sol +241 -0
  502. package/contracts/registry/RegistryServiceManager.sol +53 -0
  503. package/contracts/registry/ReleaseAdmin.sol +195 -0
  504. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  505. package/contracts/registry/ReleaseRegistry.sol +525 -0
  506. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  507. package/contracts/registry/TokenRegistry.sol +317 -0
  508. package/contracts/shared/Component.sol +210 -0
  509. package/contracts/shared/ComponentService.sol +691 -0
  510. package/contracts/shared/ComponentServiceManager.sol +38 -0
  511. package/contracts/shared/ContractLib.sol +312 -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 +6 -5
  516. package/contracts/shared/INftOwnable.sol +27 -0
  517. package/contracts/shared/IPolicyHolder.sol +35 -0
  518. package/contracts/shared/IRegisterable.sol +31 -19
  519. package/contracts/shared/IRegistryLinked.sol +11 -0
  520. package/contracts/shared/IService.sol +23 -0
  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 +129 -0
  526. package/contracts/shared/PolicyHolder.sol +63 -0
  527. package/contracts/shared/Registerable.sol +80 -60
  528. package/contracts/shared/RegistryLinked.sol +38 -0
  529. package/contracts/shared/Service.sol +67 -0
  530. package/contracts/shared/TokenHandler.sol +342 -0
  531. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  532. package/contracts/staking/IStaking.sol +367 -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 +36 -12
  547. package/contracts/type/ChainId.sol +101 -0
  548. package/contracts/type/ClaimId.sol +80 -0
  549. package/contracts/type/DistributorType.sol +55 -0
  550. package/contracts/type/Fee.sol +66 -0
  551. package/contracts/{types → type}/Key32.sol +10 -5
  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/type/Referral.sol +96 -0
  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 +53 -5
  565. package/contracts/type/String.sol +95 -0
  566. package/contracts/{types → type}/Timestamp.sol +48 -19
  567. package/contracts/{types → type}/UFixed.sol +73 -19
  568. package/contracts/type/Version.sol +159 -0
  569. package/contracts/upgradeability/IVersionable.sol +56 -0
  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 -174
  576. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  577. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  578. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  579. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  580. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  581. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  582. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  583. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  584. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  585. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  586. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  587. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  588. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  589. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  590. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  591. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  592. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  593. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  594. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  595. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  596. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  597. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  598. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  599. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  600. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  601. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  602. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  603. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  604. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  605. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  606. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  607. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  608. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  609. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  610. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  611. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  612. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  613. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  614. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  615. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  616. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  617. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  618. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  619. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  620. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  621. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  622. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  623. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  624. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  625. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +0 -511
  626. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  627. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  628. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  629. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  630. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -326
  631. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  632. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  633. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  634. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  635. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  636. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  637. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  638. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  639. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  640. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  641. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  642. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  643. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  644. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  645. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  646. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  647. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  648. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  649. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  650. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  651. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  652. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  653. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  654. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  655. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  656. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  657. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  658. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  659. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  660. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  661. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  662. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  663. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  664. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  665. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  666. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  667. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  668. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  669. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  670. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  671. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  672. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  673. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  674. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  675. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  676. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  677. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  678. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  679. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  680. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  681. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  682. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  683. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  684. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  685. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -523
  686. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  687. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  688. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -376
  689. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  690. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  691. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  692. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  693. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  694. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  695. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  696. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  697. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  698. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  699. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  700. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  701. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -164
  702. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  703. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -164
  704. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  705. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  706. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  707. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  708. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  709. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  710. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  711. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  712. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  713. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  714. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  715. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  716. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  717. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  718. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  719. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  720. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  721. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  722. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  723. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  724. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  725. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  726. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  727. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  728. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  729. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  730. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  731. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  732. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  733. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  734. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  735. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  736. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  737. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  738. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  739. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  740. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  741. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  742. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  743. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  744. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  745. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  746. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  747. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  748. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  749. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  750. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  751. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  752. package/contracts/components/BaseComponent.sol +0 -88
  753. package/contracts/components/IBaseComponent.sol +0 -19
  754. package/contracts/components/IPoolComponent.sol +0 -57
  755. package/contracts/components/IProductComponent.sol +0 -19
  756. package/contracts/components/Pool.sol +0 -174
  757. package/contracts/components/Product.sol +0 -117
  758. package/contracts/experiment/errors/Require.sol +0 -38
  759. package/contracts/experiment/errors/Revert.sol +0 -44
  760. package/contracts/experiment/inheritance/A.sol +0 -53
  761. package/contracts/experiment/inheritance/B.sol +0 -28
  762. package/contracts/experiment/inheritance/C.sol +0 -34
  763. package/contracts/experiment/inheritance/IA.sol +0 -13
  764. package/contracts/experiment/inheritance/IB.sol +0 -10
  765. package/contracts/experiment/inheritance/IC.sol +0 -12
  766. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  767. package/contracts/experiment/statemachine/ISM.sol +0 -25
  768. package/contracts/experiment/statemachine/README.md +0 -112
  769. package/contracts/experiment/statemachine/SM.sol +0 -57
  770. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  771. package/contracts/experiment/types/TypeA.sol +0 -47
  772. package/contracts/experiment/types/TypeB.sol +0 -29
  773. package/contracts/instance/IInstanceLinked.sol +0 -8
  774. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  775. package/contracts/instance/base/IInstanceBase.sol +0 -14
  776. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  777. package/contracts/instance/base/IService.sol +0 -15
  778. package/contracts/instance/base/InstanceBase.sol +0 -80
  779. package/contracts/instance/base/KeyValueStore.sol +0 -156
  780. package/contracts/instance/base/Lifecycle.sol +0 -95
  781. package/contracts/instance/base/ModuleBase.sol +0 -52
  782. package/contracts/instance/base/ServiceBase.sol +0 -37
  783. package/contracts/instance/module/access/Access.sol +0 -149
  784. package/contracts/instance/module/access/IAccess.sol +0 -53
  785. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  786. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  787. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  788. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  789. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  790. package/contracts/instance/module/component/IComponent.sol +0 -53
  791. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  792. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  793. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  794. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  795. package/contracts/instance/module/risk/IRisk.sol +0 -10
  796. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  797. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  798. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  799. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  800. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  801. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  802. package/contracts/instance/service/IPoolService.sol +0 -30
  803. package/contracts/instance/service/IProductService.sol +0 -58
  804. package/contracts/instance/service/PoolService.sol +0 -123
  805. package/contracts/instance/service/ProductService.sol +0 -354
  806. package/contracts/registry/IChainNft.sol +0 -21
  807. package/contracts/registry/IRegistryLinked.sol +0 -8
  808. package/contracts/shared/ERC165.sol +0 -21
  809. package/contracts/shared/IOwnable.sol +0 -6
  810. package/contracts/shared/IVersionable.sol +0 -52
  811. package/contracts/shared/Versionable.sol +0 -89
  812. package/contracts/test/TestFee.sol +0 -25
  813. package/contracts/test/TestPool.sol +0 -22
  814. package/contracts/test/TestProduct.sol +0 -44
  815. package/contracts/test/TestRegisterable.sol +0 -19
  816. package/contracts/test/TestRoleId.sol +0 -14
  817. package/contracts/test/TestService.sol +0 -32
  818. package/contracts/test/TestToken.sol +0 -26
  819. package/contracts/test/TestVersion.sol +0 -44
  820. package/contracts/test/TestVersionable.sol +0 -17
  821. package/contracts/types/ChainId.sol +0 -38
  822. package/contracts/types/Fee.sol +0 -51
  823. package/contracts/types/NftIdSet.sol +0 -60
  824. package/contracts/types/ObjectType.sol +0 -115
  825. package/contracts/types/RoleId.sol +0 -38
  826. package/contracts/types/Version.sol +0 -95
@@ -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().setComponentLocked(
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
+ }