@etherisc/gif-next 0.0.2-b20ce14-335 → 0.0.2-b214449-558

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