@etherisc/gif-next 0.0.2-e510b92-393 → 0.0.2-e586bbf-616

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 (762) hide show
  1. package/README.md +138 -23
  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/distribution/IDistributionComponent.sol/IDistributionComponent.json +829 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1266 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +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 +659 -1230
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +667 -152
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +693 -3014
  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 +1963 -739
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +686 -410
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +370 -129
  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 -49
  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 +4 -0
  102. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  103. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  106. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  107. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +938 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  115. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → oracle/IOracleComponent.sol/IOracleComponent.json} +397 -372
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +743 -0
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +854 -0
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1023 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +791 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  125. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1231 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1435 -0
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +851 -0
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1022 -0
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  135. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +886 -0
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1430 -0
  138. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  139. package/artifacts/contracts/pool/Pool.sol/Pool.json +1006 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  141. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +546 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1814 -0
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +847 -0
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1017 -0
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +771 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  151. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1140 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1533 -0
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +875 -0
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +376 -351
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1085 -0
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1017 -0
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +633 -0
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +997 -0
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  169. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +205 -181
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1385 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +835 -0
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PricingService.sol/PricingService.json +913 -0
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +795 -0
  180. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  181. package/artifacts/contracts/product/Product.sol/Product.json +1098 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.json +698 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +755 -0
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  187. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +688 -112
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  191. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +335 -229
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  193. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  195. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  196. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  197. package/artifacts/contracts/registry/Registry.sol/Registry.json +1027 -149
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2147 -0
  200. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  201. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  203. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +322 -336
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  205. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +360 -123
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  215. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +352 -101
  216. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  217. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/Component.sol/Component.json} +331 -98
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1497 -0
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +835 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  231. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/IComponent.sol/IComponent.json} +272 -201
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  233. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1137 -0
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +688 -0
  236. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  243. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +143 -15
  246. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  247. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  248. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IService.sol/IService.json +146 -158
  250. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  251. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  252. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +776 -0
  254. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  255. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +159 -55
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Service.sol/Service.json +166 -171
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1627 -0
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1177 -0
  280. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  281. package/artifacts/contracts/staking/Staking.sol/Staking.json +2035 -0
  282. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  284. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +823 -0
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +616 -0
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1406 -0
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +763 -0
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2297 -0
  296. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +617 -0
  298. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  299. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  300. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  302. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  304. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  306. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  308. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  310. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  312. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  313. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  314. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  316. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  317. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  318. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  320. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  322. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  324. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  326. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  328. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  330. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +265 -0
  332. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  334. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  336. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  338. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  340. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  342. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  344. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  346. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  348. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  349. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  350. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +637 -0
  352. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  354. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  356. package/contracts/accounting/AccountingService.sol +274 -0
  357. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  358. package/contracts/accounting/IAccountingService.sol +47 -0
  359. package/contracts/authorization/AccessAdmin.sol +780 -0
  360. package/contracts/authorization/AccessAdminLib.sol +396 -0
  361. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  362. package/contracts/authorization/Authorization.sol +169 -0
  363. package/contracts/authorization/IAccess.sol +67 -0
  364. package/contracts/authorization/IAccessAdmin.sol +144 -0
  365. package/contracts/authorization/IAuthorization.sol +27 -0
  366. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  367. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  368. package/contracts/distribution/BasicDistribution.sol +141 -0
  369. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  370. package/contracts/distribution/Distribution.sol +247 -0
  371. package/contracts/distribution/DistributionService.sol +448 -0
  372. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  373. package/contracts/distribution/IDistributionComponent.sol +45 -0
  374. package/contracts/distribution/IDistributionService.sol +115 -0
  375. package/contracts/examples/fire/DamageLevel.sol +59 -0
  376. package/contracts/examples/fire/FirePool.sol +86 -0
  377. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  378. package/contracts/examples/fire/FireProduct.sol +433 -0
  379. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  380. package/contracts/examples/fire/FireUSD.sol +26 -0
  381. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  382. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  383. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  384. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  385. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  386. package/contracts/examples/unpermissioned/SimpleProduct.sol +385 -0
  387. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  388. package/contracts/instance/BundleSet.sol +130 -0
  389. package/contracts/instance/IInstance.sol +127 -38
  390. package/contracts/instance/IInstanceService.sol +100 -19
  391. package/contracts/instance/Instance.sol +245 -353
  392. package/contracts/instance/InstanceAdmin.sol +383 -0
  393. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  394. package/contracts/instance/InstanceReader.sol +525 -208
  395. package/contracts/instance/InstanceService.sol +462 -182
  396. package/contracts/instance/InstanceServiceManager.sol +14 -32
  397. package/contracts/instance/InstanceStore.sol +298 -0
  398. package/contracts/instance/RiskSet.sol +118 -0
  399. package/contracts/instance/base/BalanceStore.sol +121 -0
  400. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  401. package/contracts/instance/base/ObjectCounter.sol +20 -0
  402. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  403. package/contracts/instance/base/ObjectSet.sol +77 -0
  404. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  405. package/contracts/instance/module/IBundle.sol +10 -9
  406. package/contracts/instance/module/IComponents.sol +62 -0
  407. package/contracts/instance/module/IDistribution.sol +25 -10
  408. package/contracts/instance/module/IPolicy.sol +81 -21
  409. package/contracts/instance/module/IRisk.sol +6 -1
  410. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  411. package/contracts/oracle/BasicOracle.sol +45 -0
  412. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  413. package/contracts/oracle/IOracle.sol +41 -0
  414. package/contracts/oracle/IOracleComponent.sol +33 -0
  415. package/contracts/oracle/IOracleService.sol +66 -0
  416. package/contracts/oracle/Oracle.sol +154 -0
  417. package/contracts/oracle/OracleService.sol +310 -0
  418. package/contracts/oracle/OracleServiceManager.sol +39 -0
  419. package/contracts/pool/BasicPool.sol +173 -0
  420. package/contracts/pool/BasicPoolAuthorization.sol +82 -0
  421. package/contracts/pool/BundleService.sol +406 -0
  422. package/contracts/pool/BundleServiceManager.sol +39 -0
  423. package/contracts/pool/IBundleService.sol +121 -0
  424. package/contracts/pool/IPoolComponent.sol +62 -0
  425. package/contracts/pool/IPoolService.sol +170 -0
  426. package/contracts/pool/Pool.sol +343 -0
  427. package/contracts/pool/PoolLib.sol +359 -0
  428. package/contracts/pool/PoolService.sol +614 -0
  429. package/contracts/pool/PoolServiceManager.sol +39 -0
  430. package/contracts/product/ApplicationService.sol +327 -0
  431. package/contracts/product/ApplicationServiceManager.sol +38 -0
  432. package/contracts/product/BasicProduct.sol +49 -0
  433. package/contracts/product/BasicProductAuthorization.sol +63 -0
  434. package/contracts/product/ClaimService.sol +639 -0
  435. package/contracts/product/ClaimServiceManager.sol +38 -0
  436. package/contracts/product/IApplicationService.sol +88 -0
  437. package/contracts/product/IClaimService.sol +135 -0
  438. package/contracts/product/IPolicyService.sol +102 -0
  439. package/contracts/product/IPricingService.sol +40 -0
  440. package/contracts/product/IProductComponent.sol +62 -0
  441. package/contracts/product/IRiskService.sol +33 -0
  442. package/contracts/product/PolicyService.sol +645 -0
  443. package/contracts/product/PolicyServiceLib.sol +139 -0
  444. package/contracts/product/PolicyServiceManager.sol +39 -0
  445. package/contracts/product/PricingService.sol +306 -0
  446. package/contracts/product/PricingServiceManager.sol +39 -0
  447. package/contracts/product/Product.sol +472 -0
  448. package/contracts/product/RiskService.sol +157 -0
  449. package/contracts/product/RiskServiceManager.sol +39 -0
  450. package/contracts/registry/ChainNft.sol +82 -35
  451. package/contracts/registry/IRegistry.sol +126 -32
  452. package/contracts/registry/IRegistryService.sol +40 -28
  453. package/contracts/registry/IRelease.sol +29 -0
  454. package/contracts/registry/ITransferInterceptor.sol +1 -1
  455. package/contracts/registry/Registry.sol +561 -273
  456. package/contracts/registry/RegistryAdmin.sol +188 -0
  457. package/contracts/registry/RegistryAuthorization.sol +284 -0
  458. package/contracts/registry/RegistryService.sol +116 -233
  459. package/contracts/registry/RegistryServiceManager.sol +26 -53
  460. package/contracts/registry/ReleaseAdmin.sol +195 -0
  461. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  462. package/contracts/registry/ReleaseRegistry.sol +520 -0
  463. package/contracts/registry/ServiceAuthorizationV3.sol +345 -0
  464. package/contracts/registry/TokenRegistry.sol +263 -60
  465. package/contracts/shared/Component.sol +210 -0
  466. package/contracts/shared/ComponentService.sol +678 -0
  467. package/contracts/shared/ComponentServiceManager.sol +38 -0
  468. package/contracts/shared/ContractLib.sol +311 -0
  469. package/contracts/shared/IComponent.sol +58 -0
  470. package/contracts/shared/IComponentService.sol +110 -0
  471. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  472. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  473. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  474. package/contracts/shared/INftOwnable.sol +15 -12
  475. package/contracts/shared/IPolicyHolder.sol +35 -0
  476. package/contracts/shared/IRegisterable.sol +24 -5
  477. package/contracts/shared/IRegistryLinked.sol +11 -0
  478. package/contracts/shared/IService.sol +13 -5
  479. package/contracts/shared/InitializableERC165.sol +35 -0
  480. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  481. package/contracts/shared/KeyValueStore.sol +131 -0
  482. package/contracts/shared/Lifecycle.sol +88 -0
  483. package/contracts/shared/NftIdSet.sol +65 -0
  484. package/contracts/shared/NftOwnable.sol +75 -82
  485. package/contracts/shared/PolicyHolder.sol +63 -0
  486. package/contracts/shared/Registerable.sol +54 -38
  487. package/contracts/shared/RegistryLinked.sol +38 -0
  488. package/contracts/shared/Service.sol +45 -33
  489. package/contracts/shared/TokenHandler.sol +327 -12
  490. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  491. package/contracts/staking/IStaking.sol +195 -0
  492. package/contracts/staking/IStakingService.sol +170 -0
  493. package/contracts/staking/Staking.sol +605 -0
  494. package/contracts/staking/StakingLib.sol +281 -0
  495. package/contracts/staking/StakingLifecycle.sol +23 -0
  496. package/contracts/staking/StakingManager.sol +52 -0
  497. package/contracts/staking/StakingReader.sol +199 -0
  498. package/contracts/staking/StakingService.sol +468 -0
  499. package/contracts/staking/StakingServiceManager.sol +45 -0
  500. package/contracts/staking/StakingStore.sol +606 -0
  501. package/contracts/staking/TargetManagerLib.sol +211 -0
  502. package/contracts/{types → type}/AddressSet.sol +1 -1
  503. package/contracts/type/Amount.sol +150 -0
  504. package/contracts/{types → type}/Blocknumber.sol +27 -3
  505. package/contracts/type/ClaimId.sol +80 -0
  506. package/contracts/{types → type}/DistributorType.sol +2 -2
  507. package/contracts/type/Fee.sol +66 -0
  508. package/contracts/{types → type}/Key32.sol +2 -2
  509. package/contracts/type/Key32Set.sol +62 -0
  510. package/contracts/{types → type}/NftId.sol +28 -15
  511. package/contracts/{types → type}/NftIdSet.sol +2 -2
  512. package/contracts/type/ObjectType.sol +307 -0
  513. package/contracts/type/PayoutId.sol +82 -0
  514. package/contracts/{types → type}/Referral.sol +6 -1
  515. package/contracts/type/RequestId.sol +75 -0
  516. package/contracts/type/RiskId.sol +75 -0
  517. package/contracts/type/RoleId.sol +180 -0
  518. package/contracts/type/Seconds.sol +105 -0
  519. package/contracts/type/Selector.sol +107 -0
  520. package/contracts/{types → type}/StateId.sol +48 -4
  521. package/contracts/type/String.sol +65 -0
  522. package/contracts/{types → type}/Timestamp.sol +33 -19
  523. package/contracts/type/UFixed.sol +262 -0
  524. package/contracts/{types → type}/Version.sol +59 -7
  525. package/contracts/{shared → upgradeability}/IVersionable.sol +7 -47
  526. package/contracts/upgradeability/ProxyManager.sol +246 -0
  527. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +8 -4
  528. package/contracts/upgradeability/Versionable.sol +62 -0
  529. package/package.json +12 -8
  530. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  531. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  532. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  533. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  534. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -368
  535. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  536. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  537. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  538. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  539. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  540. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  541. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  542. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  543. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  544. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  545. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  546. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  547. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  548. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  549. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  550. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  551. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  552. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  553. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  554. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  555. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  557. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  558. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  559. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  560. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  561. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  562. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  563. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  564. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  565. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  566. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  568. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  570. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  572. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  574. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  575. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  576. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  577. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  578. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  579. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  580. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  581. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  582. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  583. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  584. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  585. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -101
  586. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  587. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  588. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  589. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -775
  590. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  591. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  592. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  593. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  594. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  595. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  596. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -272
  597. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  598. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  599. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  600. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  601. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  602. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  603. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  604. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  605. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  606. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  607. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -211
  608. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  609. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  610. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  611. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  612. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  613. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  614. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  615. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  616. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  617. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  618. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  619. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  620. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  621. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  622. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1049
  623. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  624. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -464
  625. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  626. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1147
  627. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  628. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -488
  629. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  630. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  631. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  632. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  633. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  634. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  635. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  636. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  637. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  638. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  639. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  640. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  641. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  642. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  643. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  644. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  645. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  646. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  647. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  648. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  649. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  650. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  651. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  652. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  653. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  654. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  655. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  656. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  657. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  658. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  659. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  660. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  661. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  662. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  663. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  665. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  666. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  667. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  668. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  669. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  670. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  671. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  672. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  673. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  674. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  675. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  676. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  677. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  678. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  679. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  680. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  681. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  682. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  683. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  684. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  685. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  686. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  687. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  688. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  689. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  690. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  691. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  692. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  693. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  694. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  695. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  696. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  697. package/contracts/components/BaseComponent.sol +0 -132
  698. package/contracts/components/Distribution.sol +0 -163
  699. package/contracts/components/IBaseComponent.sol +0 -31
  700. package/contracts/components/IDistributionComponent.sol +0 -44
  701. package/contracts/components/IPoolComponent.sol +0 -66
  702. package/contracts/components/IProductComponent.sol +0 -35
  703. package/contracts/components/Pool.sol +0 -267
  704. package/contracts/components/Product.sol +0 -289
  705. package/contracts/experiment/cloning/Cloner.sol +0 -47
  706. package/contracts/experiment/errors/Require.sol +0 -38
  707. package/contracts/experiment/errors/Revert.sol +0 -44
  708. package/contracts/experiment/inheritance/A.sol +0 -53
  709. package/contracts/experiment/inheritance/B.sol +0 -28
  710. package/contracts/experiment/inheritance/C.sol +0 -34
  711. package/contracts/experiment/inheritance/IA.sol +0 -13
  712. package/contracts/experiment/inheritance/IB.sol +0 -10
  713. package/contracts/experiment/inheritance/IC.sol +0 -12
  714. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  715. package/contracts/experiment/statemachine/ISM.sol +0 -25
  716. package/contracts/experiment/statemachine/SM.sol +0 -57
  717. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  718. package/contracts/experiment/types/TypeA.sol +0 -47
  719. package/contracts/experiment/types/TypeB.sol +0 -29
  720. package/contracts/instance/AccessManagedSimple.sol +0 -115
  721. package/contracts/instance/AccessManagerSimple.sol +0 -692
  722. package/contracts/instance/BundleManager.sol +0 -129
  723. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  724. package/contracts/instance/InstanceAccessManager.sol +0 -288
  725. package/contracts/instance/ObjectManager.sol +0 -95
  726. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  727. package/contracts/instance/base/IInstanceBase.sol +0 -23
  728. package/contracts/instance/base/KeyValueStore.sol +0 -172
  729. package/contracts/instance/base/Lifecycle.sol +0 -100
  730. package/contracts/instance/module/IAccess.sol +0 -38
  731. package/contracts/instance/module/ISetup.sol +0 -46
  732. package/contracts/instance/module/ITreasury.sol +0 -23
  733. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  734. package/contracts/instance/service/DistributionService.sol +0 -88
  735. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  736. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  737. package/contracts/instance/service/IDistributionService.sol +0 -12
  738. package/contracts/instance/service/IPoolService.sol +0 -51
  739. package/contracts/instance/service/IProductService.sol +0 -110
  740. package/contracts/instance/service/PoolService.sol +0 -287
  741. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  742. package/contracts/instance/service/ProductService.sol +0 -570
  743. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  744. package/contracts/shared/ContractDeployerLib.sol +0 -72
  745. package/contracts/shared/ERC165.sol +0 -25
  746. package/contracts/shared/ProxyManager.sol +0 -94
  747. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  748. package/contracts/shared/Versionable.sol +0 -147
  749. package/contracts/test/TestFee.sol +0 -25
  750. package/contracts/test/TestRegisterable.sol +0 -18
  751. package/contracts/test/TestRoleId.sol +0 -14
  752. package/contracts/test/TestService.sol +0 -24
  753. package/contracts/test/TestToken.sol +0 -26
  754. package/contracts/test/TestVersion.sol +0 -44
  755. package/contracts/test/TestVersionable.sol +0 -17
  756. package/contracts/types/ChainId.sol +0 -38
  757. package/contracts/types/Fee.sol +0 -56
  758. package/contracts/types/NumberId.sol +0 -52
  759. package/contracts/types/ObjectType.sol +0 -152
  760. package/contracts/types/RiskId.sol +0 -43
  761. package/contracts/types/RoleId.sol +0 -90
  762. package/contracts/types/UFixed.sol +0 -325
@@ -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
+ }