@etherisc/gif-next 0.0.2-b8121a8-197 → 0.0.2-b8481dc-081

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