@etherisc/gif-next 0.0.2-94dc606-675 → 0.0.2-95b223b-528

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