@etherisc/gif-next 0.0.2-743affe-003 → 0.0.2-754ba48-078

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