@etherisc/gif-next 0.0.2-eb13b47-989 → 0.0.2-eb4b6ab-521

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