@etherisc/gif-next 0.0.2-f0d86c2-077 → 0.0.2-f13c010-035

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 (747) hide show
  1. package/README.md +297 -25
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1402 -0
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1048 -0
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1455 -0
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +838 -0
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +929 -0
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +961 -0
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +290 -1482
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +702 -0
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +421 -1780
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1653 -0
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2058 -0
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +995 -0
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +722 -0
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3678 -0
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  84. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  86. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  87. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  88. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  89. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  90. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  91. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  92. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  93. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  94. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  95. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  96. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  97. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  98. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  99. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1039 -0
  100. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  101. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  102. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  103. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  105. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +788 -0
  106. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
  108. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +907 -0
  110. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +966 -0
  112. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +722 -0
  114. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  115. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1299 -0
  116. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
  118. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  119. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1465 -0
  120. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  121. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +834 -0
  122. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  123. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +960 -0
  124. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  125. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +960 -0
  126. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  127. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1283 -0
  128. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  129. package/artifacts/contracts/pool/Pool.sol/Pool.json +1098 -0
  130. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  131. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1625 -0
  132. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +766 -0
  134. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  135. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +771 -0
  136. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  137. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +710 -0
  138. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  139. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1173 -0
  140. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  141. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  142. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  143. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1431 -0
  144. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +838 -0
  146. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +546 -0
  148. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  149. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +942 -0
  150. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  151. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +925 -0
  152. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  153. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +578 -0
  154. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  155. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1012 -0
  156. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  157. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +429 -0
  158. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  159. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1302 -0
  160. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +782 -0
  162. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  163. package/artifacts/contracts/product/PricingService.sol/PricingService.json +907 -0
  164. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  165. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +762 -0
  166. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  167. package/artifacts/contracts/product/Product.sol/Product.json +1131 -0
  168. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  169. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  170. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  171. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  172. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +242 -12
  174. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +976 -119
  176. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  177. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1019 -0
  178. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  179. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  180. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/Registry.sol/Registry.json +1403 -220
  182. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  183. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1886 -0
  184. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  185. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1246 -0
  186. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  187. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +713 -0
  188. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  189. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  190. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  191. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  192. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  193. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  194. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  195. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  196. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  197. package/artifacts/contracts/shared/Component.sol/Component.json +725 -0
  198. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  199. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1785 -0
  200. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +4 -0
  201. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +206 -0
  202. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  203. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +810 -0
  204. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  205. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +232 -235
  206. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  207. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  208. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  209. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +632 -0
  210. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  211. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1360 -0
  212. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  213. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +723 -0
  214. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  215. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +140 -141
  216. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  217. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  218. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  219. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +47 -74
  220. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  221. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  222. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +113 -24
  224. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  225. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  226. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  227. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +182 -171
  228. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  229. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  230. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  231. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +829 -0
  232. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  233. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  234. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  236. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  237. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  238. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  239. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +209 -0
  240. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  241. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  242. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  243. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +224 -23
  244. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  245. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  246. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  247. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/Service.sol/Service.json} +239 -173
  248. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  249. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +546 -0
  250. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  251. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +132 -0
  252. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  253. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1465 -0
  254. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  255. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  256. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  258. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  259. package/artifacts/contracts/staking/Staking.sol/Staking.json +1888 -0
  260. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  262. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +776 -0
  264. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  266. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  267. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1249 -0
  268. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  269. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +710 -0
  270. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  272. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  273. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  274. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  275. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  276. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  278. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  280. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  282. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  284. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  286. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  288. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  290. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  291. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  292. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  294. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  296. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  298. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  300. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  302. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  304. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  306. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  308. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  310. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  312. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  314. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  316. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  318. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  320. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  322. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  324. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  325. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  326. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  327. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  328. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  329. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  330. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  331. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  332. package/contracts/authorization/AccessAdmin.sol +596 -0
  333. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  334. package/contracts/authorization/Authorization.sol +289 -0
  335. package/contracts/authorization/IAccess.sol +49 -0
  336. package/contracts/authorization/IAccessAdmin.sol +137 -0
  337. package/contracts/authorization/IAuthorization.sol +60 -0
  338. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  339. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  340. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  341. package/contracts/distribution/BasicDistribution.sol +139 -0
  342. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  343. package/contracts/distribution/Distribution.sol +285 -0
  344. package/contracts/distribution/DistributionService.sol +355 -0
  345. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  346. package/contracts/distribution/IDistributionComponent.sol +52 -0
  347. package/contracts/distribution/IDistributionService.sol +101 -0
  348. package/contracts/examples/fire/DamageLevel.sol +59 -0
  349. package/contracts/examples/fire/FirePool.sol +73 -0
  350. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  351. package/contracts/examples/fire/FireProduct.sol +415 -0
  352. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  353. package/contracts/examples/fire/FireUSD.sol +26 -0
  354. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  355. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  356. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  357. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  358. package/contracts/instance/BundleSet.sol +126 -0
  359. package/contracts/instance/IInstance.sol +58 -44
  360. package/contracts/instance/IInstanceService.sol +72 -0
  361. package/contracts/instance/Instance.sol +218 -54
  362. package/contracts/instance/InstanceAdmin.sol +279 -0
  363. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  364. package/contracts/instance/InstanceReader.sol +495 -0
  365. package/contracts/instance/InstanceService.sol +413 -0
  366. package/contracts/instance/InstanceServiceManager.sol +39 -0
  367. package/contracts/instance/InstanceStore.sol +287 -0
  368. package/contracts/instance/base/BalanceStore.sol +123 -0
  369. package/contracts/instance/base/Cloneable.sol +28 -0
  370. package/contracts/instance/base/ObjectCounter.sol +21 -0
  371. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  372. package/contracts/instance/base/ObjectSet.sol +79 -0
  373. package/contracts/instance/module/IAccess.sol +46 -0
  374. package/contracts/instance/module/IBundle.sol +20 -0
  375. package/contracts/instance/module/IComponents.sol +51 -0
  376. package/contracts/instance/module/IDistribution.sol +41 -0
  377. package/contracts/instance/module/IPolicy.sol +84 -0
  378. package/contracts/instance/module/IRisk.sol +11 -0
  379. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  380. package/contracts/oracle/BasicOracle.sol +47 -0
  381. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  382. package/contracts/oracle/IOracle.sol +36 -0
  383. package/contracts/oracle/IOracleComponent.sol +33 -0
  384. package/contracts/oracle/IOracleService.sol +66 -0
  385. package/contracts/oracle/Oracle.sol +156 -0
  386. package/contracts/oracle/OracleService.sol +291 -0
  387. package/contracts/oracle/OracleServiceManager.sol +39 -0
  388. package/contracts/pool/BasicPool.sol +154 -0
  389. package/contracts/pool/BasicPoolAuthorization.sol +57 -0
  390. package/contracts/pool/BundleService.sol +493 -0
  391. package/contracts/pool/BundleServiceManager.sol +39 -0
  392. package/contracts/pool/IBundleService.sol +143 -0
  393. package/contracts/pool/IPoolComponent.sol +68 -0
  394. package/contracts/pool/IPoolService.sol +167 -0
  395. package/contracts/pool/Pool.sol +335 -0
  396. package/contracts/pool/PoolService.sol +544 -0
  397. package/contracts/pool/PoolServiceManager.sol +39 -0
  398. package/contracts/product/ApplicationService.sol +259 -0
  399. package/contracts/product/ApplicationServiceManager.sol +38 -0
  400. package/contracts/product/BasicProduct.sol +53 -0
  401. package/contracts/product/BasicProductAuthorization.sol +42 -0
  402. package/contracts/product/ClaimService.sol +612 -0
  403. package/contracts/product/ClaimServiceManager.sol +38 -0
  404. package/contracts/product/IApplicationService.sol +63 -0
  405. package/contracts/product/IClaimService.sol +123 -0
  406. package/contracts/product/IPolicyService.sol +80 -0
  407. package/contracts/product/IPricingService.sol +39 -0
  408. package/contracts/product/IProductComponent.sol +59 -0
  409. package/contracts/product/IRiskService.sol +33 -0
  410. package/contracts/product/PolicyService.sol +691 -0
  411. package/contracts/product/PolicyServiceManager.sol +39 -0
  412. package/contracts/product/PricingService.sol +300 -0
  413. package/contracts/product/PricingServiceManager.sol +39 -0
  414. package/contracts/product/Product.sol +455 -0
  415. package/contracts/product/RiskService.sol +96 -0
  416. package/contracts/product/RiskServiceManager.sol +39 -0
  417. package/contracts/registry/ChainNft.sol +128 -40
  418. package/contracts/registry/IRegistry.sol +142 -28
  419. package/contracts/registry/IRegistryService.sol +62 -0
  420. package/contracts/registry/ITransferInterceptor.sol +6 -0
  421. package/contracts/registry/Registry.sol +618 -282
  422. package/contracts/registry/RegistryAdmin.sol +448 -0
  423. package/contracts/registry/RegistryService.sol +241 -0
  424. package/contracts/registry/RegistryServiceManager.sol +53 -0
  425. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  426. package/contracts/registry/ReleaseRegistry.sol +501 -0
  427. package/contracts/registry/ServiceAuthorizationV3.sol +194 -0
  428. package/contracts/registry/TokenRegistry.sol +315 -0
  429. package/contracts/shared/Component.sol +271 -0
  430. package/contracts/shared/ComponentService.sol +686 -0
  431. package/contracts/shared/ComponentServiceHelperLib.sol +118 -0
  432. package/contracts/shared/ComponentServiceManager.sol +38 -0
  433. package/contracts/shared/ComponentVerifyingService.sol +126 -0
  434. package/contracts/shared/ContractLib.sol +38 -0
  435. package/contracts/shared/IComponent.sol +74 -0
  436. package/contracts/shared/IComponentService.sol +121 -0
  437. package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
  438. package/contracts/shared/IKeyValueStore.sol +54 -0
  439. package/contracts/{instance/base → shared}/ILifecycle.sol +6 -5
  440. package/contracts/shared/INftOwnable.sol +25 -0
  441. package/contracts/shared/IPolicyHolder.sol +35 -0
  442. package/contracts/shared/IRegisterable.sol +23 -21
  443. package/contracts/shared/IRegistryLinked.sol +11 -0
  444. package/contracts/shared/IService.sol +25 -0
  445. package/contracts/shared/InitializableERC165.sol +27 -0
  446. package/contracts/shared/InstanceLinkedComponent.sol +213 -0
  447. package/contracts/shared/KeyValueStore.sol +131 -0
  448. package/contracts/shared/Lifecycle.sol +88 -0
  449. package/contracts/shared/NftIdSet.sol +65 -0
  450. package/contracts/shared/NftOwnable.sol +127 -0
  451. package/contracts/shared/PolicyHolder.sol +62 -0
  452. package/contracts/shared/Registerable.sol +62 -63
  453. package/contracts/shared/RegistryLinked.sol +44 -0
  454. package/contracts/shared/Service.sol +84 -0
  455. package/contracts/shared/TokenHandler.sol +183 -0
  456. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  457. package/contracts/staking/IStaking.sol +168 -0
  458. package/contracts/staking/IStakingService.sol +157 -0
  459. package/contracts/staking/StakeManagerLib.sol +224 -0
  460. package/contracts/staking/Staking.sol +497 -0
  461. package/contracts/staking/StakingLifecycle.sol +23 -0
  462. package/contracts/staking/StakingManager.sol +52 -0
  463. package/contracts/staking/StakingReader.sol +190 -0
  464. package/contracts/staking/StakingService.sol +407 -0
  465. package/contracts/staking/StakingServiceManager.sol +44 -0
  466. package/contracts/staking/StakingStore.sol +605 -0
  467. package/contracts/staking/TargetManagerLib.sol +211 -0
  468. package/contracts/{types → type}/AddressSet.sol +1 -1
  469. package/contracts/type/Amount.sol +150 -0
  470. package/contracts/{types → type}/Blocknumber.sol +27 -3
  471. package/contracts/type/ClaimId.sol +80 -0
  472. package/contracts/type/DistributorType.sol +55 -0
  473. package/contracts/type/Fee.sol +66 -0
  474. package/contracts/{types → type}/Key32.sol +8 -3
  475. package/contracts/{types → type}/NftId.sol +22 -15
  476. package/contracts/type/NftIdSet.sol +62 -0
  477. package/contracts/type/ObjectType.sol +276 -0
  478. package/contracts/type/PayoutId.sol +82 -0
  479. package/contracts/type/Referral.sol +90 -0
  480. package/contracts/type/RequestId.sol +75 -0
  481. package/contracts/type/RiskId.sol +57 -0
  482. package/contracts/type/RoleId.sol +162 -0
  483. package/contracts/type/Seconds.sol +101 -0
  484. package/contracts/type/Selector.sol +102 -0
  485. package/contracts/{types → type}/StateId.sol +53 -5
  486. package/contracts/type/String.sol +53 -0
  487. package/contracts/{types → type}/Timestamp.sol +38 -15
  488. package/contracts/type/UFixed.sol +355 -0
  489. package/contracts/{types → type}/Version.sol +17 -2
  490. package/contracts/upgradeability/IVersionable.sol +53 -0
  491. package/contracts/upgradeability/ProxyManager.sol +232 -0
  492. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  493. package/contracts/upgradeability/Versionable.sol +59 -0
  494. package/package.json +12 -7
  495. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  496. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  497. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  498. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  499. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  500. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  501. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  502. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  503. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  504. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  505. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  506. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  508. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  510. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  512. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  514. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  515. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  516. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  517. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  518. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  519. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  520. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  521. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  522. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  523. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  524. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  525. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  526. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  527. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  528. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  529. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  530. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  531. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  532. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  533. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  534. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  535. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  536. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  537. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  538. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  539. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  540. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  541. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  542. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  543. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  544. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  545. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  546. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  547. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  548. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  549. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  550. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  551. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -326
  552. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  553. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  554. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  555. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  556. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  557. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  558. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  559. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  560. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  561. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  562. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  563. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  564. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  565. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  566. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  567. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  568. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  569. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  570. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  571. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  572. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  573. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  574. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  575. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  576. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  577. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  578. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  579. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  580. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  581. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  582. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  583. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  584. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  585. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  586. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  587. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  588. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  589. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  590. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  591. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  592. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  593. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  594. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  595. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  596. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  597. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  598. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  599. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  600. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  601. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  602. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  603. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  604. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  605. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  606. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -523
  607. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  608. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  609. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  610. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  611. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  612. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  613. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  614. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  615. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  616. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  617. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  618. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  619. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  620. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  621. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  622. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -164
  623. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  624. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -164
  625. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  626. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  627. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  628. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  629. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  630. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  631. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  632. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  633. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  634. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  635. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  636. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  637. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  638. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  639. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  640. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  641. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  642. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  643. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  644. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  645. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  646. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  647. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  648. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  649. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  650. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  651. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  652. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  653. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  654. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  655. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  656. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  657. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  658. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  659. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  660. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  661. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  662. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  663. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  665. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  666. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  667. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  668. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  669. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  670. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  671. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  672. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  673. package/contracts/components/BaseComponent.sol +0 -88
  674. package/contracts/components/IBaseComponent.sol +0 -19
  675. package/contracts/components/IPoolComponent.sol +0 -57
  676. package/contracts/components/IProductComponent.sol +0 -19
  677. package/contracts/components/Pool.sol +0 -174
  678. package/contracts/components/Product.sol +0 -117
  679. package/contracts/experiment/errors/Require.sol +0 -38
  680. package/contracts/experiment/errors/Revert.sol +0 -44
  681. package/contracts/experiment/inheritance/A.sol +0 -53
  682. package/contracts/experiment/inheritance/B.sol +0 -28
  683. package/contracts/experiment/inheritance/C.sol +0 -34
  684. package/contracts/experiment/inheritance/IA.sol +0 -13
  685. package/contracts/experiment/inheritance/IB.sol +0 -10
  686. package/contracts/experiment/inheritance/IC.sol +0 -12
  687. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  688. package/contracts/experiment/statemachine/ISM.sol +0 -25
  689. package/contracts/experiment/statemachine/README.md +0 -112
  690. package/contracts/experiment/statemachine/SM.sol +0 -57
  691. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  692. package/contracts/experiment/types/TypeA.sol +0 -47
  693. package/contracts/experiment/types/TypeB.sol +0 -29
  694. package/contracts/instance/IInstanceLinked.sol +0 -8
  695. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  696. package/contracts/instance/base/IInstanceBase.sol +0 -14
  697. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  698. package/contracts/instance/base/IService.sol +0 -15
  699. package/contracts/instance/base/InstanceBase.sol +0 -80
  700. package/contracts/instance/base/KeyValueStore.sol +0 -156
  701. package/contracts/instance/base/Lifecycle.sol +0 -95
  702. package/contracts/instance/base/ModuleBase.sol +0 -52
  703. package/contracts/instance/base/ServiceBase.sol +0 -37
  704. package/contracts/instance/module/access/Access.sol +0 -149
  705. package/contracts/instance/module/access/IAccess.sol +0 -53
  706. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  707. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  708. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  709. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  710. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  711. package/contracts/instance/module/component/IComponent.sol +0 -53
  712. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  713. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  714. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  715. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  716. package/contracts/instance/module/risk/IRisk.sol +0 -10
  717. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  718. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  719. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  720. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  721. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  722. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  723. package/contracts/instance/service/IPoolService.sol +0 -30
  724. package/contracts/instance/service/IProductService.sol +0 -58
  725. package/contracts/instance/service/PoolService.sol +0 -123
  726. package/contracts/instance/service/ProductService.sol +0 -354
  727. package/contracts/registry/IChainNft.sol +0 -21
  728. package/contracts/registry/IRegistryLinked.sol +0 -8
  729. package/contracts/shared/ERC165.sol +0 -21
  730. package/contracts/shared/IOwnable.sol +0 -6
  731. package/contracts/shared/IVersionable.sol +0 -52
  732. package/contracts/shared/Versionable.sol +0 -89
  733. package/contracts/test/TestFee.sol +0 -25
  734. package/contracts/test/TestPool.sol +0 -22
  735. package/contracts/test/TestProduct.sol +0 -44
  736. package/contracts/test/TestRegisterable.sol +0 -19
  737. package/contracts/test/TestRoleId.sol +0 -14
  738. package/contracts/test/TestService.sol +0 -32
  739. package/contracts/test/TestToken.sol +0 -26
  740. package/contracts/test/TestVersion.sol +0 -44
  741. package/contracts/test/TestVersionable.sol +0 -17
  742. package/contracts/types/ChainId.sol +0 -38
  743. package/contracts/types/Fee.sol +0 -51
  744. package/contracts/types/NftIdSet.sol +0 -60
  745. package/contracts/types/ObjectType.sol +0 -115
  746. package/contracts/types/RoleId.sol +0 -38
  747. package/contracts/types/UFixed.sol +0 -209
@@ -0,0 +1,686 @@
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 {Amount, AmountLib} from "../type/Amount.sol";
7
+ import {ComponentServiceHelperLib} from "./ComponentServiceHelperLib.sol";
8
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
9
+ import {ContractLib} from "../shared/ContractLib.sol";
10
+ import {Fee, FeeLib} from "../type/Fee.sol";
11
+ import {IComponents} from "../instance/module/IComponents.sol";
12
+ import {IComponentService} from "./IComponentService.sol";
13
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
14
+ import {IInstance} from "../instance/IInstance.sol";
15
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
16
+ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
17
+ import {InstanceReader} from "../instance/InstanceReader.sol";
18
+ import {InstanceStore} from "../instance/InstanceStore.sol";
19
+ import {IInstanceService} from "../instance/IInstanceService.sol";
20
+ import {IRegisterable} from "../shared/IRegisterable.sol";
21
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
22
+ import {IProductComponent} from "../product/IProductComponent.sol";
23
+ import {IRegistry} from "../registry/IRegistry.sol";
24
+ import {IRegistryService} from "../registry/IRegistryService.sol";
25
+ import {KEEP_STATE} from "../type/StateId.sol";
26
+ import {NftId} from "../type/NftId.sol";
27
+ import {ObjectType, REGISTRY, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
28
+ import {RoleId} from "../type/RoleId.sol";
29
+ import {TokenHandler} from "../shared/TokenHandler.sol";
30
+ import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
31
+
32
+ contract ComponentService is
33
+ ComponentVerifyingService,
34
+ IComponentService
35
+ {
36
+
37
+ bool private constant INCREASE = true;
38
+ bool private constant DECREASE = false;
39
+
40
+ IRegistryService private _registryService;
41
+ IInstanceService private _instanceService;
42
+
43
+ modifier onlyComponent(address component) {
44
+ if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
45
+ revert ErrorComponentServiceNotInstanceLinkedComponent(component);
46
+ }
47
+ _;
48
+ }
49
+
50
+
51
+ function _initialize(
52
+ address owner,
53
+ bytes memory data
54
+ )
55
+ internal
56
+ virtual override
57
+ initializer()
58
+ {
59
+ (
60
+ address registryAddress,
61
+ address authority
62
+ ) = abi.decode(data, (address, address));
63
+
64
+ _initializeService(registryAddress, authority, owner);
65
+
66
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
67
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
68
+
69
+ _registerInterface(type(IComponentService).interfaceId);
70
+ }
71
+
72
+ //-------- component ----------------------------------------------------//
73
+
74
+ function registerComponent(address component)
75
+ external
76
+ virtual
77
+ onlyComponent(component)
78
+ returns (NftId componentNftId)
79
+ {
80
+ // type specific registration
81
+ ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
82
+ if (componentType == POOL()) {
83
+ return _registerPool(component);
84
+ }
85
+ if (componentType == DISTRIBUTION()) {
86
+ return _registerDistribution(component);
87
+ }
88
+ if (componentType == ORACLE()) {
89
+ return _registerOracle(component);
90
+ }
91
+
92
+ // fail
93
+ revert ErrorComponentServiceTypeNotSupported(component, componentType);
94
+ }
95
+
96
+
97
+ function setWallet(address newWallet) external virtual {
98
+ // checks
99
+ (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
100
+ IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
101
+ address currentWallet = info.wallet;
102
+
103
+ if (newWallet == address(0)) {
104
+ revert ErrorComponentServiceNewWalletAddressZero();
105
+ }
106
+
107
+ if (currentWallet == address(0)) {
108
+ revert ErrorComponentServiceWalletAddressZero();
109
+ }
110
+
111
+ if (newWallet == currentWallet) {
112
+ revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
113
+ }
114
+
115
+ uint256 currentBalance = info.token.balanceOf(currentWallet);
116
+
117
+ // effects
118
+ info.wallet = newWallet;
119
+ instance.getInstanceStore().updateComponent(componentNftId, info, KEEP_STATE());
120
+
121
+ emit LogComponentServiceWalletAddressChanged(componentNftId, currentWallet, newWallet);
122
+
123
+ // interactions
124
+ info.tokenHandler.addAllowedTarget(newWallet);
125
+ info.tokenHandler.removeAllowedTarget(currentWallet);
126
+ }
127
+
128
+ // TODO implement
129
+ function lock() external virtual {}
130
+
131
+ // TODO implement
132
+ function unlock() external virtual {}
133
+
134
+ function withdrawFees(Amount amount)
135
+ external
136
+ virtual
137
+ returns (Amount withdrawnAmount)
138
+ {
139
+ (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
140
+ IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
141
+ address componentWallet = info.wallet;
142
+
143
+ // determine withdrawn amount
144
+ withdrawnAmount = amount;
145
+ if (withdrawnAmount.gte(AmountLib.max())) {
146
+ withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
147
+ } else if (withdrawnAmount.eqz()) {
148
+ revert ErrorComponentServiceWithdrawAmountIsZero();
149
+ } else {
150
+ Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
151
+ if (withdrawnAmount.gt(withdrawLimit)) {
152
+ revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
153
+ }
154
+ }
155
+
156
+ // decrease fee counters by withdrawnAmount
157
+ _changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
158
+
159
+ // transfer amount to component owner
160
+ address componentOwner = getRegistry().ownerOf(componentNftId);
161
+ emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
162
+ info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
163
+ }
164
+
165
+
166
+ //-------- product ------------------------------------------------------//
167
+
168
+ function registerProduct(address productAddress)
169
+ external
170
+ virtual
171
+ onlyComponent(productAddress)
172
+ returns (NftId productNftId)
173
+ {
174
+ // register/create component setup
175
+ InstanceAdmin instanceAdmin;
176
+ InstanceStore instanceStore;
177
+ (, instanceAdmin, instanceStore,, productNftId) = _register(
178
+ productAddress,
179
+ PRODUCT());
180
+
181
+ // get product
182
+ IProductComponent product = IProductComponent(productAddress);
183
+
184
+ // create info
185
+ instanceStore.createProduct(
186
+ productNftId,
187
+ product.getInitialProductInfo());
188
+
189
+ // authorize
190
+ instanceAdmin.initializeComponentAuthorization(product);
191
+ }
192
+
193
+
194
+ function setProductFees(
195
+ Fee memory productFee, // product fee on net premium
196
+ Fee memory processingFee // product fee on payout amounts
197
+ )
198
+ external
199
+ virtual
200
+ {
201
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
202
+ IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
203
+ bool feesChanged = false;
204
+
205
+ // update product fee if required
206
+ if(!FeeLib.eq(productInfo.productFee, productFee)) {
207
+ _logUpdateFee(productNftId, "ProductFee", productInfo.productFee, productFee);
208
+ productInfo.productFee = productFee;
209
+ feesChanged = true;
210
+ }
211
+
212
+ // update processing fee if required
213
+ if(!FeeLib.eq(productInfo.processingFee, processingFee)) {
214
+ _logUpdateFee(productNftId, "ProcessingFee", productInfo.processingFee, processingFee);
215
+ productInfo.processingFee = processingFee;
216
+ feesChanged = true;
217
+ }
218
+
219
+ if(feesChanged) {
220
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
221
+ emit LogComponentServiceProductFeesUpdated(productNftId);
222
+ }
223
+ }
224
+
225
+ function increaseProductFees(
226
+ InstanceStore instanceStore,
227
+ NftId productNftId,
228
+ Amount feeAmount
229
+ )
230
+ external
231
+ virtual
232
+ // TODO re-enable once role granting is stable and fixed
233
+ // restricted()
234
+ {
235
+ _checkNftType(productNftId, PRODUCT());
236
+ _changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
237
+ }
238
+
239
+
240
+ function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
241
+ external
242
+ virtual
243
+ // TODO re-enable once role granting is stable and fixed
244
+ // restricted()
245
+ {
246
+ _checkNftType(productNftId, PRODUCT());
247
+ _changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
248
+ }
249
+
250
+ //-------- distribution -------------------------------------------------//
251
+
252
+ /// @dev registers the sending component as a distribution component
253
+ function _registerDistribution(address distributioAddress)
254
+ internal
255
+ virtual
256
+ returns (NftId distributionNftId)
257
+ {
258
+ // register/create component info
259
+ InstanceReader instanceReader;
260
+ InstanceAdmin instanceAdmin;
261
+ InstanceStore instanceStore;
262
+ NftId productNftId;
263
+ (instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
264
+ distributioAddress,
265
+ DISTRIBUTION());
266
+
267
+ // check product is still expecting a distribution registration
268
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
269
+ if (!productInfo.hasDistribution) {
270
+ revert ErrorProductServiceNoDistributionExpected(productNftId);
271
+ }
272
+ if (productInfo.distributionNftId.gtz()) {
273
+ revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
274
+ }
275
+
276
+ // set distribution in product info
277
+ productInfo.distributionNftId = distributionNftId;
278
+ instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
279
+
280
+ // authorize
281
+ instanceAdmin.initializeComponentAuthorization(
282
+ IInstanceLinkedComponent(distributioAddress));
283
+
284
+ IDistributionComponent distribution = IDistributionComponent(distributioAddress);
285
+ IComponents.ComponentInfo memory productComponentInfo = instanceReader.getComponentInfo(productNftId);
286
+ productComponentInfo.tokenHandler.addAllowedTarget(distribution.getWallet());
287
+ }
288
+
289
+
290
+ function setDistributionFees(
291
+ Fee memory distributionFee, // distribution fee for sales that do not include commissions
292
+ Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
293
+ )
294
+ external
295
+ virtual
296
+ {
297
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
298
+ (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
299
+ instance.getInstanceReader(), distributionNftId);
300
+ bool feesChanged = false;
301
+
302
+ // update distributino fee if required
303
+ if(!FeeLib.eq(productInfo.distributionFee, distributionFee)) {
304
+ _logUpdateFee(productNftId, "DistributionFee", productInfo.distributionFee, distributionFee);
305
+ productInfo.distributionFee = distributionFee;
306
+ feesChanged = true;
307
+ }
308
+
309
+ // update min distribution owner fee if required
310
+ if(!FeeLib.eq(productInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
311
+ _logUpdateFee(productNftId, "MinDistributionOwnerFee", productInfo.minDistributionOwnerFee, minDistributionOwnerFee);
312
+ productInfo.minDistributionOwnerFee = minDistributionOwnerFee;
313
+ feesChanged = true;
314
+ }
315
+
316
+ if(feesChanged) {
317
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
318
+ emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
319
+ }
320
+ }
321
+
322
+ function increaseDistributionBalance(
323
+ InstanceStore instanceStore,
324
+ NftId distributionNftId,
325
+ Amount amount,
326
+ Amount feeAmount
327
+ )
328
+ external
329
+ virtual
330
+ // TODO re-enable once role granting is stable and fixed
331
+ // restricted()
332
+ {
333
+ _checkNftType(distributionNftId, DISTRIBUTION());
334
+ _changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
335
+ }
336
+
337
+
338
+ function decreaseDistributionBalance(
339
+ InstanceStore instanceStore,
340
+ NftId distributionNftId,
341
+ Amount amount,
342
+ Amount feeAmount
343
+ )
344
+ external
345
+ virtual
346
+ // TODO re-enable once role granting is stable and fixed
347
+ // restricted()
348
+ {
349
+ _checkNftType(distributionNftId, DISTRIBUTION());
350
+ _changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
351
+ }
352
+
353
+ //-------- distributor -------------------------------------------------------//
354
+
355
+ function increaseDistributorBalance(
356
+ InstanceStore instanceStore,
357
+ NftId distributorNftId,
358
+ Amount amount,
359
+ Amount feeAmount
360
+ )
361
+ external
362
+ virtual
363
+ // TODO re-enable once role granting is stable and fixed
364
+ // restricted()
365
+ {
366
+ _checkNftType(distributorNftId, DISTRIBUTOR());
367
+ _changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
368
+ }
369
+
370
+ function decreaseDistributorBalance(
371
+ InstanceStore instanceStore,
372
+ NftId distributorNftId,
373
+ Amount amount,
374
+ Amount feeAmount
375
+ )
376
+ external
377
+ virtual
378
+ // TODO re-enable once role granting is stable and fixed
379
+ // restricted()
380
+ {
381
+ _checkNftType(distributorNftId, DISTRIBUTOR());
382
+ _changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
383
+ }
384
+
385
+ //-------- oracle -------------------------------------------------------//
386
+
387
+ function _registerOracle(address oracleAddress)
388
+ internal
389
+ virtual
390
+ returns (NftId oracleNftId)
391
+ {
392
+ // register/create component setup
393
+ InstanceReader instanceReader;
394
+ InstanceAdmin instanceAdmin;
395
+ InstanceStore instanceStore;
396
+ NftId productNftId;
397
+
398
+ (instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
399
+ oracleAddress,
400
+ ORACLE());
401
+
402
+ // check product is still expecting an oracle registration
403
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
404
+ if (productInfo.expectedNumberOfOracles == 0) {
405
+ revert ErrorProductServiceNoOraclesExpected(productNftId);
406
+ }
407
+ if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
408
+ revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
409
+ }
410
+
411
+ // update/add oracle to product info
412
+ productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
413
+ productInfo.numberOfOracles++;
414
+ instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
415
+
416
+ // authorize
417
+ instanceAdmin.initializeComponentAuthorization(
418
+ IInstanceLinkedComponent(oracleAddress));
419
+ }
420
+
421
+ //-------- pool ---------------------------------------------------------//
422
+
423
+ function _registerPool(address poolAddress)
424
+ internal
425
+ virtual
426
+ returns (NftId poolNftId)
427
+ {
428
+ // register/create component setup
429
+ InstanceReader instanceReader;
430
+ InstanceAdmin instanceAdmin;
431
+ InstanceStore instanceStore;
432
+ NftId productNftId;
433
+
434
+ (instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
435
+ poolAddress,
436
+ POOL());
437
+
438
+ // check product is still expecting a pool registration
439
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
440
+ if (productInfo.poolNftId.gtz()) {
441
+ revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
442
+ }
443
+
444
+ // create info
445
+ IPoolComponent pool = IPoolComponent(poolAddress);
446
+ instanceStore.createPool(
447
+ poolNftId,
448
+ pool.getInitialPoolInfo());
449
+
450
+ // update pool in product info
451
+ productInfo.poolNftId = poolNftId;
452
+ instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
453
+
454
+ // authorize
455
+ instanceAdmin.initializeComponentAuthorization(pool);
456
+
457
+ IComponents.ComponentInfo memory productComponentInfo = instanceReader.getComponentInfo(productNftId);
458
+ productComponentInfo.tokenHandler.addAllowedTarget(pool.getWallet());
459
+ }
460
+
461
+
462
+ function setPoolFees(
463
+ Fee memory poolFee, // pool fee on net premium
464
+ Fee memory stakingFee, // pool fee on staked capital from investor
465
+ Fee memory performanceFee // pool fee on profits from capital investors
466
+ )
467
+ external
468
+ virtual
469
+ {
470
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
471
+ (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
472
+ instance.getInstanceReader(), poolNftId);
473
+ bool feesChanged = false;
474
+
475
+ // update pool fee if required
476
+ if(!FeeLib.eq(productInfo.poolFee, poolFee)) {
477
+ _logUpdateFee(productNftId, "PoolFee", productInfo.poolFee, poolFee);
478
+ productInfo.poolFee = poolFee;
479
+ feesChanged = true;
480
+ }
481
+
482
+ // update staking fee if required
483
+ if(!FeeLib.eq(productInfo.stakingFee, stakingFee)) {
484
+ _logUpdateFee(productNftId, "StakingFee", productInfo.stakingFee, stakingFee);
485
+ productInfo.stakingFee = stakingFee;
486
+ feesChanged = true;
487
+ }
488
+
489
+ // update performance fee if required
490
+ if(!FeeLib.eq(productInfo.performanceFee, performanceFee)) {
491
+ _logUpdateFee(productNftId, "PerformanceFee", productInfo.performanceFee, performanceFee);
492
+ productInfo.performanceFee = performanceFee;
493
+ feesChanged = true;
494
+ }
495
+
496
+ if(feesChanged) {
497
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
498
+ emit LogComponentServicePoolFeesUpdated(poolNftId);
499
+ }
500
+ }
501
+
502
+ function increasePoolBalance(
503
+ InstanceStore instanceStore,
504
+ NftId poolNftId,
505
+ Amount amount,
506
+ Amount feeAmount
507
+ )
508
+ public
509
+ virtual
510
+ // TODO re-enable once role granting is stable and fixed
511
+ // restricted()
512
+ {
513
+ _checkNftType(poolNftId, POOL());
514
+ _changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
515
+ }
516
+
517
+ function decreasePoolBalance(
518
+ InstanceStore instanceStore,
519
+ NftId poolNftId,
520
+ Amount amount,
521
+ Amount feeAmount
522
+ )
523
+ public
524
+ virtual
525
+ // TODO re-enable once role granting is stable and fixed
526
+ // restricted()
527
+ {
528
+ _checkNftType(poolNftId, POOL());
529
+ _changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
530
+ }
531
+
532
+ //-------- bundle -------------------------------------------------------//
533
+
534
+ function increaseBundleBalance(
535
+ InstanceStore instanceStore,
536
+ NftId bundleNftId,
537
+ Amount amount,
538
+ Amount feeAmount
539
+ )
540
+ external
541
+ virtual
542
+ // TODO re-enable once role granting is stable and fixed
543
+ // restricted()
544
+ {
545
+ _checkNftType(bundleNftId, BUNDLE());
546
+ _changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
547
+ }
548
+
549
+ function decreaseBundleBalance(
550
+ InstanceStore instanceStore,
551
+ NftId bundleNftId,
552
+ Amount amount,
553
+ Amount feeAmount
554
+ )
555
+ external
556
+ virtual
557
+ // TODO re-enable once role granting is stable and fixed
558
+ // restricted()
559
+ {
560
+ _checkNftType(bundleNftId, BUNDLE());
561
+ _changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
562
+ }
563
+
564
+
565
+ //-------- internal functions ------------------------------------------//
566
+
567
+ function _changeTargetBalance(
568
+ bool increase,
569
+ InstanceStore instanceStore,
570
+ NftId targetNftId,
571
+ Amount amount,
572
+ Amount feeAmount
573
+ )
574
+ internal
575
+ virtual
576
+ {
577
+ Amount totalAmount = amount + feeAmount;
578
+
579
+ if(increase) {
580
+ if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
581
+ if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
582
+ } else {
583
+ if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
584
+ if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
585
+ }
586
+ }
587
+
588
+ /// @dev Registers the component represented by the provided address.
589
+ function _register(
590
+ address componentAddress, // address of component to register
591
+ ObjectType requiredType // required type for component for registration
592
+ )
593
+ internal
594
+ virtual
595
+ returns (
596
+ InstanceReader instanceReader,
597
+ InstanceAdmin instanceAdmin,
598
+ InstanceStore instanceStore,
599
+ NftId parentNftId,
600
+ NftId componentNftId
601
+ )
602
+ {
603
+ NftId instanceNftId;
604
+ IInstance instance;
605
+ IInstanceLinkedComponent component;
606
+ address initialOwner;
607
+
608
+ (
609
+ instanceNftId,
610
+ instance,
611
+ parentNftId,
612
+ component,
613
+ initialOwner
614
+ ) = ComponentServiceHelperLib.getAndVerifyRegisterableComponent(
615
+ getRegistry(),
616
+ componentAddress,
617
+ requiredType);
618
+
619
+ // get instance supporting contracts (as function return values)
620
+ instanceReader = instance.getInstanceReader();
621
+ instanceAdmin = instance.getInstanceAdmin();
622
+ instanceStore = instance.getInstanceStore();
623
+
624
+ // register with registry
625
+ if (requiredType == PRODUCT()) {
626
+ componentNftId = _registryService.registerProduct(
627
+ component, initialOwner).nftId;
628
+ } else {
629
+ componentNftId = _registryService.registerProductLinkedComponent(
630
+ component, requiredType, initialOwner).nftId;
631
+ }
632
+
633
+ // deploy and wire token handler
634
+ IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
635
+ IERC20Metadata token = componentInfo.token;
636
+ componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
637
+ address(token),
638
+ address(instanceAdmin.authority()),
639
+ componentInfo.wallet);
640
+
641
+ // register component with instance
642
+ instanceStore.createComponent(
643
+ componentNftId,
644
+ componentInfo);
645
+
646
+ // link component contract to nft id
647
+ component.linkToRegisteredNftId();
648
+
649
+ emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
650
+ }
651
+
652
+
653
+ function _logUpdateFee(NftId productNftId, string memory name, Fee memory feeBefore, Fee memory feeAfter)
654
+ internal
655
+ virtual
656
+ {
657
+ emit LogComponentServiceUpdateFee(
658
+ productNftId,
659
+ name,
660
+ feeBefore.fractionalFee,
661
+ feeBefore.fixedFee,
662
+ feeAfter.fractionalFee,
663
+ feeAfter.fixedFee
664
+ );
665
+ }
666
+
667
+
668
+ function _getLinkedProductInfo(
669
+ InstanceReader instanceReader,
670
+ NftId componentNftId
671
+ )
672
+ internal
673
+ view
674
+ returns(
675
+ NftId productNftId,
676
+ IComponents.ProductInfo memory info
677
+ )
678
+ {
679
+ productNftId = _getProductNftId(componentNftId);
680
+ info = instanceReader.getProductInfo(productNftId);
681
+ }
682
+
683
+ function _getDomain() internal pure virtual override returns(ObjectType) {
684
+ return COMPONENT();
685
+ }
686
+ }