@etherisc/gif-next 0.0.2-ff282a4-523 → 0.0.2-ffa91a6-022

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 (584) hide show
  1. package/README.md +77 -10
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1494 -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/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +615 -0
  18. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  19. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1224 -0
  22. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +382 -0
  24. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  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 +1209 -0
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +644 -0
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +152 -598
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +470 -446
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +200 -112
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +164 -335
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  41. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +340 -109
  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 +1445 -0
  46. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +644 -0
  48. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2002 -0
  50. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +644 -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 +1388 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1612 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2389 -0
  66. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +262 -79
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +274 -88
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +278 -196
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2036 -0
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +716 -0
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1386 -502
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +308 -239
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +161 -83
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1417 -536
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -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 +1 -1
  93. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  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 +192 -0
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  108. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +938 -0
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  112. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +632 -0
  113. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  115. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +753 -0
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  118. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  119. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  120. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +854 -0
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  122. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  124. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -0
  125. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  126. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1231 -0
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  128. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +644 -0
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +333 -360
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +196 -92
  133. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +215 -70
  135. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +214 -423
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +509 -356
  139. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  140. package/artifacts/contracts/pool/Pool.sol/Pool.json +223 -624
  141. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  142. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +641 -689
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +202 -102
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +205 -244
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +170 -78
  151. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  152. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1140 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  154. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +644 -0
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +442 -332
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  158. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +204 -104
  159. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +155 -9
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +327 -16
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +399 -69
  165. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  166. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +195 -82
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  168. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +367 -231
  169. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  170. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +100 -62
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +446 -394
  173. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  174. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  175. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +183 -115
  177. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingService.sol/PricingService.json +265 -318
  179. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +193 -97
  181. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  182. package/artifacts/contracts/product/Product.sol/Product.json +403 -503
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  184. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  186. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  187. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  188. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  189. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +462 -56
  191. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  192. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +251 -127
  193. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  194. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  195. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  197. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  198. package/artifacts/contracts/registry/Registry.sol/Registry.json +905 -121
  199. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  200. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2018 -0
  201. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  202. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  203. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  204. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +303 -245
  205. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +159 -81
  207. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  208. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
  209. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  210. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  211. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  212. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1337 -0
  213. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  214. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  215. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  216. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +315 -139
  217. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Component.sol/Component.json +109 -296
  219. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1172 -247
  221. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +816 -0
  223. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +485 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +597 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  233. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +116 -141
  235. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  236. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1196 -0
  237. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  238. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +688 -0
  239. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  240. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +46 -14
  241. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  242. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  243. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
  245. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
  247. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +154 -0
  249. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  250. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IService.sol/IService.json +74 -2
  252. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  254. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  255. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +776 -0
  256. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  257. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  258. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  259. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  260. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  261. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  262. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +26 -55
  264. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  265. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  266. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  267. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -90
  268. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  269. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  270. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  271. package/artifacts/contracts/shared/Service.sol/Service.json +67 -102
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +615 -6
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  276. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  278. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  279. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1301 -119
  280. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  281. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +684 -62
  282. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  283. package/artifacts/contracts/staking/Staking.sol/Staking.json +1567 -176
  284. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  286. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  288. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +232 -63
  290. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +560 -0
  292. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  293. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +762 -179
  294. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  295. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +177 -73
  296. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2297 -0
  298. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  299. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +617 -0
  300. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  301. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  302. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Amount.sol/AmountLib.json +121 -4
  304. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
  306. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  308. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  310. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Fee.sol/FeeLib.json +39 -34
  312. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  314. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  315. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  316. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +66 -4
  318. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  319. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  320. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +153 -4
  322. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  324. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  326. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  328. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  330. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +283 -6
  332. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
  334. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  336. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  338. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  340. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  342. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  344. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
  346. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  348. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  350. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  351. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  352. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  354. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  356. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  357. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  358. package/contracts/accounting/AccountingService.sol +262 -0
  359. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  360. package/contracts/accounting/IAccountingService.sol +45 -0
  361. package/contracts/authorization/AccessAdmin.sol +704 -0
  362. package/contracts/authorization/AccessAdminLib.sol +183 -0
  363. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  364. package/contracts/authorization/Authorization.sol +365 -0
  365. package/contracts/authorization/IAccess.sol +49 -0
  366. package/contracts/authorization/IAccessAdmin.sol +170 -0
  367. package/contracts/authorization/IAuthorization.sol +80 -0
  368. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  369. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  370. package/contracts/distribution/BasicDistribution.sol +141 -0
  371. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  372. package/contracts/distribution/Distribution.sol +134 -175
  373. package/contracts/distribution/DistributionService.sol +233 -197
  374. package/contracts/distribution/DistributionServiceManager.sol +13 -25
  375. package/contracts/distribution/IDistributionComponent.sol +22 -50
  376. package/contracts/distribution/IDistributionService.sol +45 -29
  377. package/contracts/examples/fire/DamageLevel.sol +59 -0
  378. package/contracts/examples/fire/FirePool.sol +86 -0
  379. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  380. package/contracts/examples/fire/FireProduct.sol +433 -0
  381. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  382. package/contracts/examples/fire/FireUSD.sol +26 -0
  383. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  384. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  385. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  386. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  387. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  388. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  389. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  390. package/contracts/instance/BundleSet.sol +130 -0
  391. package/contracts/instance/IInstance.sol +76 -48
  392. package/contracts/instance/IInstanceService.sol +48 -37
  393. package/contracts/instance/Instance.sol +195 -128
  394. package/contracts/instance/InstanceAdmin.sol +450 -0
  395. package/contracts/instance/InstanceAuthorizationV3.sol +235 -0
  396. package/contracts/instance/InstanceReader.sol +358 -76
  397. package/contracts/instance/InstanceService.sol +327 -173
  398. package/contracts/instance/InstanceServiceManager.sol +14 -29
  399. package/contracts/instance/InstanceStore.sol +151 -64
  400. package/contracts/instance/RiskSet.sol +118 -0
  401. package/contracts/instance/base/BalanceStore.sol +123 -0
  402. package/contracts/instance/base/Cloneable.sol +2 -25
  403. package/contracts/instance/base/ObjectCounter.sol +20 -0
  404. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  405. package/contracts/instance/base/ObjectSet.sol +77 -0
  406. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  407. package/contracts/instance/module/IBundle.sol +1 -4
  408. package/contracts/instance/module/IComponents.sol +24 -15
  409. package/contracts/instance/module/IDistribution.sol +5 -3
  410. package/contracts/instance/module/IPolicy.sol +33 -26
  411. package/contracts/instance/module/IRisk.sol +3 -0
  412. package/contracts/mock/Dip.sol +26 -0
  413. package/contracts/oracle/BasicOracle.sol +45 -0
  414. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  415. package/contracts/oracle/IOracle.sol +36 -0
  416. package/contracts/oracle/IOracleComponent.sol +33 -0
  417. package/contracts/oracle/IOracleService.sol +66 -0
  418. package/contracts/oracle/Oracle.sol +154 -0
  419. package/contracts/oracle/OracleService.sol +310 -0
  420. package/contracts/oracle/OracleServiceManager.sol +39 -0
  421. package/contracts/pool/BasicPool.sol +173 -0
  422. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  423. package/contracts/pool/BundleService.sol +237 -224
  424. package/contracts/pool/BundleServiceManager.sol +13 -25
  425. package/contracts/pool/IBundleService.sol +35 -38
  426. package/contracts/pool/IPoolComponent.sol +23 -75
  427. package/contracts/pool/IPoolService.sol +107 -56
  428. package/contracts/pool/Pool.sol +209 -168
  429. package/contracts/pool/PoolLib.sol +216 -0
  430. package/contracts/pool/PoolService.sol +608 -256
  431. package/contracts/pool/PoolServiceManager.sol +12 -24
  432. package/contracts/product/ApplicationService.sol +173 -85
  433. package/contracts/product/ApplicationServiceManager.sol +12 -9
  434. package/contracts/product/BasicProduct.sol +49 -0
  435. package/contracts/product/BasicProductAuthorization.sol +56 -0
  436. package/contracts/product/ClaimService.sol +373 -183
  437. package/contracts/product/ClaimServiceManager.sol +12 -9
  438. package/contracts/product/IApplicationService.sol +10 -3
  439. package/contracts/product/IClaimService.sol +48 -6
  440. package/contracts/product/IPolicyService.sol +54 -39
  441. package/contracts/product/IPricingService.sol +14 -11
  442. package/contracts/product/IProductComponent.sol +31 -10
  443. package/contracts/product/IRiskService.sol +33 -0
  444. package/contracts/product/PolicyService.sol +522 -234
  445. package/contracts/product/PolicyServiceLib.sol +65 -0
  446. package/contracts/product/PolicyServiceManager.sol +12 -27
  447. package/contracts/product/PricingService.sol +117 -83
  448. package/contracts/product/PricingServiceManager.sol +12 -24
  449. package/contracts/product/Product.sol +236 -148
  450. package/contracts/product/RiskService.sol +154 -0
  451. package/contracts/product/RiskServiceManager.sol +39 -0
  452. package/contracts/registry/ChainNft.sol +72 -39
  453. package/contracts/registry/IRegistry.sol +90 -34
  454. package/contracts/registry/IRegistryService.sol +28 -35
  455. package/contracts/registry/IRelease.sol +26 -0
  456. package/contracts/registry/ITransferInterceptor.sol +1 -2
  457. package/contracts/registry/Registry.sol +444 -219
  458. package/contracts/registry/RegistryAdmin.sol +258 -0
  459. package/contracts/registry/RegistryAuthorization.sol +267 -0
  460. package/contracts/registry/RegistryService.sol +74 -137
  461. package/contracts/registry/RegistryServiceManager.sol +23 -30
  462. package/contracts/registry/ReleaseAdmin.sol +253 -0
  463. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  464. package/contracts/registry/ReleaseRegistry.sol +517 -0
  465. package/contracts/registry/ServiceAuthorizationV3.sol +331 -0
  466. package/contracts/registry/TokenRegistry.sol +261 -64
  467. package/contracts/shared/Component.sol +122 -183
  468. package/contracts/shared/ComponentService.sol +655 -97
  469. package/contracts/shared/ComponentServiceManager.sol +38 -0
  470. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  471. package/contracts/shared/ContractLib.sol +281 -0
  472. package/contracts/shared/IComponent.sol +17 -49
  473. package/contracts/shared/IComponentService.sol +112 -0
  474. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  475. package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
  476. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  477. package/contracts/shared/INftOwnable.sol +3 -1
  478. package/contracts/shared/IPolicyHolder.sol +12 -17
  479. package/contracts/shared/IRegisterable.sol +23 -1
  480. package/contracts/shared/IService.sol +11 -6
  481. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  482. package/contracts/shared/InstanceLinkedComponent.sol +195 -0
  483. package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
  484. package/contracts/shared/Lifecycle.sol +88 -0
  485. package/contracts/shared/NftIdSet.sol +65 -0
  486. package/contracts/shared/NftOwnable.sol +33 -24
  487. package/contracts/shared/PolicyHolder.sol +18 -50
  488. package/contracts/shared/Registerable.sol +54 -23
  489. package/contracts/shared/RegistryLinked.sol +9 -14
  490. package/contracts/shared/Service.sol +33 -40
  491. package/contracts/shared/TokenHandler.sol +320 -13
  492. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  493. package/contracts/staking/IStaking.sol +166 -6
  494. package/contracts/staking/IStakingService.sol +107 -40
  495. package/contracts/staking/Staking.sol +509 -27
  496. package/contracts/staking/StakingLib.sol +281 -0
  497. package/contracts/staking/StakingLifecycle.sol +23 -0
  498. package/contracts/staking/StakingManager.sol +24 -16
  499. package/contracts/staking/StakingReader.sol +180 -0
  500. package/contracts/staking/StakingService.sol +308 -48
  501. package/contracts/staking/StakingServiceManager.sol +12 -8
  502. package/contracts/staking/StakingStore.sol +606 -0
  503. package/contracts/staking/TargetManagerLib.sol +211 -0
  504. package/contracts/type/AddressSet.sol +1 -1
  505. package/contracts/type/Amount.sol +44 -3
  506. package/contracts/type/Blocknumber.sol +26 -3
  507. package/contracts/type/ClaimId.sol +6 -1
  508. package/contracts/type/Fee.sol +17 -16
  509. package/contracts/type/Key32.sol +2 -2
  510. package/contracts/type/Key32Set.sol +62 -0
  511. package/contracts/type/NftId.sol +21 -16
  512. package/contracts/type/NftIdSet.sol +1 -1
  513. package/contracts/type/ObjectType.sol +191 -63
  514. package/contracts/type/PayoutId.sol +10 -10
  515. package/contracts/type/Referral.sol +2 -1
  516. package/contracts/type/RequestId.sol +75 -0
  517. package/contracts/type/RiskId.sol +39 -7
  518. package/contracts/type/RoleId.sol +118 -68
  519. package/contracts/type/Seconds.sol +48 -1
  520. package/contracts/type/Selector.sol +107 -0
  521. package/contracts/type/StateId.sol +41 -2
  522. package/contracts/type/String.sol +53 -0
  523. package/contracts/type/Timestamp.sol +16 -7
  524. package/contracts/type/UFixed.sol +40 -121
  525. package/contracts/type/Version.sol +58 -7
  526. package/contracts/{shared → upgradeability}/ProxyManager.sol +90 -27
  527. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  528. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  529. package/package.json +12 -8
  530. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  531. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  532. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  533. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  534. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  535. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  536. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  537. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  538. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  539. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  540. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  541. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  542. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  543. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  544. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  546. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  547. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  549. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  550. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  551. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -864
  552. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  553. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -640
  554. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  555. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  556. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  557. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -620
  558. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  559. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  560. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  561. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  562. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  563. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  564. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  565. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  566. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  567. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  568. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  569. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  570. package/contracts/instance/BundleManager.sol +0 -126
  571. package/contracts/instance/InstanceAccessManager.sol +0 -543
  572. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
  573. package/contracts/instance/base/Lifecycle.sol +0 -121
  574. package/contracts/instance/base/ObjectManager.sol +0 -82
  575. package/contracts/instance/module/IAccess.sol +0 -54
  576. package/contracts/instance/module/ISetup.sol +0 -33
  577. package/contracts/instance/module/ITreasury.sol +0 -23
  578. package/contracts/product/IProductService.sol +0 -40
  579. package/contracts/product/ProductService.sol +0 -210
  580. package/contracts/product/ProductServiceManager.sol +0 -54
  581. package/contracts/registry/RegistryAccessManager.sol +0 -207
  582. package/contracts/registry/ReleaseManager.sol +0 -360
  583. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  584. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ComponentService} from "./ComponentService.sol";
5
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
6
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
+
8
+ contract ComponentServiceManager is ProxyManager {
9
+
10
+ ComponentService private _componentService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
18
+ {
19
+ ComponentService svc = new ComponentService();
20
+ bytes memory data = abi.encode(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _componentService = ComponentService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getComponentService()
32
+ external
33
+ view
34
+ returns (ComponentService)
35
+ {
36
+ return _componentService;
37
+ }
38
+ }
@@ -0,0 +1,128 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IInstance} from "../instance/IInstance.sol";
5
+ import {InstanceReader} from "../instance/InstanceReader.sol";
6
+ import {IRegistry} from "../registry/IRegistry.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
9
+ import {Service} from "../shared/Service.sol";
10
+
11
+
12
+ abstract contract ComponentVerifyingService is
13
+ Service
14
+ {
15
+ error ErrorComponentVerifyingServiceComponentTypeInvalid(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
16
+ error ErrorComponentVerifyingServiceComponentIsLocked(NftId componentNftId);
17
+
18
+ /// @dev based on the sender address returns the corresponding components nft id, info and instance.
19
+ /// the function reverts iff:
20
+ /// - there is no such component
21
+ /// - the component has the wrong object type
22
+ /// - the component is locked
23
+ function _getAndVerifyActiveComponent(
24
+ ObjectType expectedType // assume always of `component` type
25
+ )
26
+ internal
27
+ view
28
+ returns(
29
+ NftId componentNftId,
30
+ IRegistry.ObjectInfo memory objectInfo,
31
+ IInstance instance
32
+ )
33
+ {
34
+ componentNftId = getRegistry().getNftIdForAddress(msg.sender);
35
+ (objectInfo, instance) = _getAndVerifyComponentInfo(
36
+ componentNftId,
37
+ expectedType,
38
+ true); // only active
39
+ }
40
+
41
+
42
+ /// @dev returns the component info and instance contract reference given a component nft id
43
+ /// the function reverts iff:
44
+ /// - there is no such component
45
+ /// - the component has the wrong object type
46
+ function _getAndVerifyComponentInfo(
47
+ NftId componentNftId,
48
+ ObjectType expectedType, // assume always of `component` type
49
+ bool onlyActive
50
+ )
51
+ internal
52
+ virtual
53
+ view
54
+ returns(
55
+ IRegistry.ObjectInfo memory info,
56
+ IInstance instance
57
+ )
58
+ {
59
+ IRegistry registry = getRegistry();
60
+ info = registry.getObjectInfo(componentNftId);
61
+
62
+ // if not COMPONENT require exact match
63
+ if(expectedType != COMPONENT()) {
64
+ // ensure component is of expected type
65
+ if(info.objectType != expectedType) {
66
+ revert ErrorComponentVerifyingServiceComponentTypeInvalid(
67
+ componentNftId,
68
+ expectedType,
69
+ info.objectType);
70
+ }
71
+ } else {
72
+ if(!(info.objectType == PRODUCT()
73
+ || info.objectType == POOL()
74
+ || info.objectType == DISTRIBUTION()
75
+ || info.objectType == ORACLE()
76
+ ))
77
+ {
78
+ revert ErrorComponentVerifyingServiceComponentTypeInvalid(
79
+ componentNftId,
80
+ expectedType,
81
+ info.objectType);
82
+ }
83
+ }
84
+
85
+ if (info.objectType == STAKING()) {
86
+ return (info, instance);
87
+ }
88
+
89
+ if (info.objectType == PRODUCT()) {
90
+ instance = _getInstance(registry, info.parentNftId);
91
+ } else {
92
+ instance = _getInstanceForComponent(registry, info.parentNftId);
93
+ }
94
+
95
+ // ensure component is not locked
96
+ if (onlyActive) {
97
+ if (instance.getInstanceAdmin().isTargetLocked(info.objectAddress)) {
98
+ revert ErrorComponentVerifyingServiceComponentIsLocked(componentNftId);
99
+ }
100
+ }
101
+ }
102
+
103
+
104
+ function _getInstanceForComponent(IRegistry registry, NftId productNftId)
105
+ internal
106
+ view
107
+ returns (IInstance instance)
108
+ {
109
+ return _getInstance(
110
+ registry,
111
+ registry.getObjectInfo(
112
+ productNftId).parentNftId);
113
+ }
114
+
115
+
116
+ /// @dev returns the product nft id from the registry.
117
+ /// assumes the component nft id is valid and represents a product linked component.
118
+ function _getProductNftId(NftId componentNftId) internal view returns (NftId productNftId) {
119
+ productNftId = getRegistry().getParentNftId(componentNftId);
120
+ }
121
+
122
+
123
+ /// @dev returns an IInstance contract reference for the specified instance nft id
124
+ function _getInstance(IRegistry registry, NftId instanceNftId) internal view returns (IInstance) {
125
+ return IInstance(
126
+ registry.getObjectAddress(instanceNftId));
127
+ }
128
+ }
@@ -0,0 +1,281 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
5
+ import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
6
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
7
+
8
+ // import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
9
+ import {IRegistry} from "../registry/IRegistry.sol";
10
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {ObjectType, PRODUCT, DISTRIBUTION, ORACLE, POOL, STAKING} from "../type/ObjectType.sol";
13
+ import {VersionPart} from "../type/Version.sol";
14
+
15
+ interface ITargetHelper {
16
+ function isTargetLocked(address target) external view returns (bool);
17
+ }
18
+
19
+ interface IInstanceAdminHelper {
20
+ function getInstanceAdmin() external view returns (ITargetHelper);
21
+ }
22
+
23
+ interface ITokenRegistryHelper {
24
+ function isActive(uint256 chainId, address token, VersionPart release) external view returns (bool);
25
+ }
26
+
27
+ library ContractLib {
28
+
29
+ error ErrorContractLibNotRegistered(address target);
30
+ error ErrorContractLibNotComponent(NftId componentNftId, ObjectType objectType);
31
+ error ErrorContractLibNotStaking(NftId componentNftId, ObjectType objectType);
32
+ error ErrorContractLibComponentTypeMismatch(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
33
+ error ErrorContractLibComponentInactive(NftId componentNftId);
34
+
35
+ function getAndVerifyComponent(
36
+ IRegistry registry,
37
+ address target,
38
+ ObjectType expectedType,
39
+ bool onlyActive
40
+ )
41
+ external
42
+ view
43
+ returns (
44
+ IRegistry.ObjectInfo memory info,
45
+ address instance
46
+ )
47
+ {
48
+ // check target is component
49
+ info = _getObjectInfo(registry, target);
50
+ if(info.objectType != expectedType) {
51
+ revert ErrorContractLibComponentTypeMismatch(
52
+ info.nftId,
53
+ expectedType,
54
+ info.objectType);
55
+ }
56
+
57
+ // get instance and check component is active
58
+ instance = _getInstance(registry, info);
59
+ _checkComponentActive(instance, target, info.nftId, onlyActive);
60
+ }
61
+
62
+
63
+ function getInfoAndInstance(
64
+ IRegistry registry,
65
+ NftId componentNftId,
66
+ bool onlyActive
67
+ )
68
+ external
69
+ view
70
+ returns (
71
+ IRegistry.ObjectInfo memory info,
72
+ address instance
73
+ )
74
+ {
75
+ info = registry.getObjectInfo(componentNftId);
76
+ instance = _getInstance(registry, info);
77
+ _checkComponentActive(instance, info.objectAddress, info.nftId, onlyActive);
78
+ }
79
+
80
+
81
+ function getAndVerifyStaking(
82
+ IRegistry registry,
83
+ address target
84
+ )
85
+ external
86
+ view
87
+ returns (
88
+ IRegistry.ObjectInfo memory info
89
+ )
90
+ {
91
+ // check target is component
92
+ info = _getObjectInfo(registry, target);
93
+ if(info.objectType != STAKING()) {
94
+ revert ErrorContractLibNotStaking(
95
+ info.nftId,
96
+ info.objectType);
97
+ }
98
+ }
99
+
100
+
101
+ function getAndVerifyAnyComponent(
102
+ IRegistry registry,
103
+ address target,
104
+ bool onlyActive
105
+ )
106
+ external
107
+ view
108
+ returns (
109
+ IRegistry.ObjectInfo memory info,
110
+ address instance
111
+ )
112
+ {
113
+ // check target is component
114
+ info = _getObjectInfo(registry, target);
115
+ if(!(info.objectType == PRODUCT()
116
+ || info.objectType == POOL()
117
+ || info.objectType == DISTRIBUTION()
118
+ || info.objectType == ORACLE())
119
+ ) {
120
+ revert ErrorContractLibNotComponent(
121
+ info.nftId,
122
+ info.objectType);
123
+ }
124
+
125
+ // get instance and check component is active
126
+ instance = _getInstance(registry, info);
127
+ _checkComponentActive(instance, target, info.nftId, onlyActive);
128
+ }
129
+
130
+
131
+ function getInstanceForComponent(
132
+ IRegistry registry,
133
+ NftId componentNftId
134
+ )
135
+ public
136
+ view
137
+ returns (address instance)
138
+ {
139
+ NftId productNftId = registry.getParentNftId(componentNftId);
140
+ NftId instanceNftId = registry.getParentNftId(productNftId);
141
+ return registry.getObjectInfo(instanceNftId).objectAddress;
142
+ }
143
+
144
+
145
+ function isActiveToken(
146
+ address tokenRegistryAddress,
147
+ address token,
148
+ uint256 chainId,
149
+ VersionPart release
150
+ )
151
+ external
152
+ view
153
+ returns (bool)
154
+ {
155
+ return ITokenRegistryHelper(
156
+ tokenRegistryAddress).isActive(
157
+ chainId, token, release);
158
+ }
159
+
160
+ function isPolicyHolder(address target) external view returns (bool) {
161
+ return ERC165Checker.supportsInterface(target, type(IPolicyHolder).interfaceId);
162
+ }
163
+
164
+
165
+ function isAuthority(address authority) public view returns (bool) {
166
+ if (!isContract(authority)) {
167
+ return false;
168
+ }
169
+
170
+ return supportsInterface(authority, type(IAccessManager).interfaceId);
171
+ }
172
+
173
+
174
+ function isAccessManaged(address target)
175
+ public
176
+ view
177
+ returns (bool)
178
+ {
179
+ if (!isContract(target)) {
180
+ return false;
181
+ }
182
+
183
+ (bool success, ) = target.staticcall(
184
+ abi.encodeWithSelector(
185
+ IAccessManaged.authority.selector));
186
+
187
+ return success;
188
+ }
189
+
190
+
191
+ function isRegistered(address registry, address caller, ObjectType expectedType) public view returns (bool) {
192
+ NftId nftId = IRegistry(registry).getNftIdForAddress(caller);
193
+ if (nftId.eqz()) {
194
+ return false;
195
+ }
196
+
197
+ return IRegistry(registry).getObjectInfo(nftId).objectType == expectedType;
198
+ }
199
+
200
+
201
+ function isRegistry(address registry) public view returns (bool) {
202
+ if (!isContract(registry)) {
203
+ return false;
204
+ }
205
+
206
+ return supportsInterface(registry, type(IRegistry).interfaceId);
207
+ }
208
+
209
+
210
+ function isContract(address target) public view returns (bool) {
211
+ if (target == address(0)) {
212
+ return false;
213
+ }
214
+
215
+ uint256 size;
216
+ assembly {
217
+ size := extcodesize(target)
218
+ }
219
+ return size > 0;
220
+ }
221
+
222
+ function supportsInterface(address target, bytes4 interfaceId) public view returns (bool) {
223
+ return ERC165Checker.supportsInterface(target, interfaceId);
224
+ }
225
+
226
+
227
+ function _checkComponentActive(
228
+ address instance,
229
+ address target,
230
+ NftId componentNftId,
231
+ bool onlyActive
232
+ )
233
+ internal
234
+ view
235
+ {
236
+ if (onlyActive) {
237
+ if (IInstanceAdminHelper(
238
+ instance).getInstanceAdmin().isTargetLocked(
239
+ target)
240
+ ) {
241
+ revert ErrorContractLibComponentInactive(componentNftId);
242
+ }
243
+ }
244
+ }
245
+
246
+
247
+ function _getInstance(
248
+ IRegistry registry,
249
+ IRegistry.ObjectInfo memory info
250
+ )
251
+ internal
252
+ view
253
+ returns (address instance)
254
+ {
255
+ if (info.objectType == PRODUCT()) {
256
+ return registry.getObjectAddress(
257
+ info.parentNftId);
258
+ }
259
+
260
+ return registry.getObjectAddress(
261
+ registry.getObjectInfo(
262
+ info.parentNftId).parentNftId);
263
+ }
264
+
265
+
266
+ function _getObjectInfo(
267
+ IRegistry registry,
268
+ address target
269
+ )
270
+ internal
271
+ view
272
+ returns (IRegistry.ObjectInfo memory info)
273
+ {
274
+ NftId componentNftId = registry.getNftIdForAddress(target);
275
+ if (componentNftId.eqz()) {
276
+ revert ErrorContractLibNotRegistered(target);
277
+ }
278
+
279
+ info = registry.getObjectInfo(componentNftId);
280
+ }
281
+ }
@@ -1,66 +1,33 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
5
 
6
+ import {Amount} from "../type/Amount.sol";
7
7
  import {IComponents} from "../instance/module/IComponents.sol";
8
- import {IInstance} from "../instance/IInstance.sol";
9
- import {IInstanceService} from "../instance/IInstanceService.sol";
10
- import {IProductService} from "../product/IProductService.sol";
11
8
  import {IRegisterable} from "../shared/IRegisterable.sol";
12
9
  import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
13
- import {NftId} from "../type/NftId.sol";
14
- import {ObjectType} from "../type/ObjectType.sol";
15
10
  import {TokenHandler} from "../shared/TokenHandler.sol";
16
11
 
17
12
  /// @dev component base class
18
- /// component examples are product, distribution, pool and oracle
13
+ /// component examples are staking, product, distribution, pool and oracle
19
14
  interface IComponent is
20
15
  IRegisterable,
21
- ITransferInterceptor,
22
- IAccessManaged
16
+ ITransferInterceptor
23
17
  {
18
+ error ErrorComponentProductNftIdZero();
19
+ error ErrorComponentProductNftIdNonzero();
20
+ error ErrorComponentNameLengthZero();
21
+
24
22
  error ErrorComponentNotChainNft(address caller);
25
- error ErrorComponentNotProductService(address caller);
26
- error ErrorComponentNotInstance(NftId instanceNftId);
27
- error ErrorComponentProductNftAlreadySet();
28
23
 
29
24
  error ErrorComponentWalletAddressZero();
30
25
  error ErrorComponentWalletAddressIsSameAsCurrent();
31
- error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
32
-
33
26
  error ErrorComponentWalletNotComponent();
34
27
 
35
28
  event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
36
29
  event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
37
-
38
- event LogComponentTokenHandlerApproved(uint256 limit);
39
-
40
- /// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
41
- /// only component owner (nft holder) is authorizes to call this function
42
- function lock() external;
43
-
44
- /// @dev unlocks component to (re-)enable functions that may change state related to this component
45
- /// only component owner (nft holder) is authorizes to call this function
46
- function unlock() external;
47
-
48
- /// @dev approves token hanlder to spend up to the specified amount of tokens
49
- /// reverts if component wallet is not component itself
50
- /// only component owner (nft holder) is authorizes to call this function
51
- function approveTokenHandler(uint256 spendingLimitAmount) external;
52
-
53
- /// @dev sets the wallet address for the component
54
- /// if the current wallet has tokens, these will be transferred
55
- /// if the new wallet address is externally owned, an approval from the
56
- /// owner of the external wallet for the component to move all tokens must exist
57
- function setWallet(address walletAddress) external;
58
-
59
- /// @dev only product service may set product nft id during registration of product setup
60
- function setProductNftId(NftId productNftId) external;
61
-
62
- /// @dev defines the instance to which this component is linked to
63
- function getInstance() external view returns (IInstance instance);
30
+ event LogComponentTokenHandlerApproved(address tokenHandler, address token, Amount limit, bool isMaxAmount);
64
31
 
65
32
  /// @dev returns the name of this component
66
33
  /// to successfully register the component with an instance the name MUST be unique in the linked instance
@@ -70,21 +37,22 @@ interface IComponent is
70
37
  function getToken() external view returns (IERC20Metadata token);
71
38
 
72
39
  /// @dev returns token handler for this component
73
- /// only registered components return a non zero token handler
74
40
  function getTokenHandler() external view returns (TokenHandler tokenHandler);
75
41
 
76
42
  /// @dev defines the wallet address used to hold the ERC20 tokens related to this component
77
43
  /// the default address is the component token address
78
44
  function getWallet() external view returns (address walletAddress);
79
45
 
80
- /// @dev defines the product to which this component is linked to
81
- /// this is only relevant for pool and distribution components
82
- function getProductNftId() external view returns (NftId productNftId);
83
-
46
+ /// @dev returns true iff this compoent intercepts nft minting and transfers for objects registered by this component
84
47
  function isNftInterceptor() external view returns(bool isInterceptor);
85
48
 
86
- /// @dev returns component infos for this pool
87
- /// when registered with an instance the info is obtained from the data stored in the instance
88
- /// when not registered the function returns the info from the component contract
49
+ /// @dev returns true iff this component is registered with the registry
50
+ function isRegistered() external view returns (bool);
51
+
52
+ /// @dev returns the component infos for this component
53
+ /// for a non registered component the function returns getInitialComponentInfo()
89
54
  function getComponentInfo() external view returns (IComponents.ComponentInfo memory info);
55
+
56
+ /// @dev returns the iniital component infos for this component
57
+ function getInitialComponentInfo() external view returns (IComponents.ComponentInfo memory info);
90
58
  }
@@ -0,0 +1,112 @@
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} from "../type/Amount.sol";
7
+ import {Fee} from "../type/Fee.sol";
8
+ import {IService} from "../shared/IService.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {ObjectType} from "../type/ObjectType.sol";
11
+ import {UFixed} from "../type/UFixed.sol";
12
+ import {VersionPart} from "../type/Version.sol";
13
+
14
+ /// @dev component base class
15
+ /// component examples are staking, product, distribution, pool and oracle
16
+ interface IComponentService is
17
+ IService
18
+ {
19
+ error ErrorComponentServiceTokenInvalid(address token);
20
+
21
+ error ErrorComponentServiceNotInstanceLinkedComponent(address component);
22
+ error ErrorComponentServiceSenderNotRegistered(address sender);
23
+ error ErrorComponentServiceNotComponent(address component);
24
+ error ErrorComponentServiceTypeNotSupported(address component, ObjectType invalidType);
25
+ error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
26
+ error ErrorComponentServiceAlreadyRegistered(address component);
27
+ error ErrorComponentServiceReleaseMismatch(address component, VersionPart componentRelease, VersionPart parentRelease);
28
+ error ErrorComponentServiceSenderNotComponentParent(NftId senderNftId, NftId compnentParentNftId);
29
+ error ErrorComponentServiceParentNotInstance(NftId nftId, ObjectType objectType);
30
+ error ErrorComponentServiceParentNotProduct(NftId nftId, ObjectType objectType);
31
+
32
+ error ErrorComponentServiceNotRegistered(address instanceAddress);
33
+ error ErrorComponentServiceNotInstance(address instanceAddress, ObjectType objectType);
34
+ error ErrorComponentServiceInstanceVersionMismatch(address instanceAddress, VersionPart instanceVersion);
35
+
36
+ error ErrorProductServiceNoDistributionExpected(NftId productNftId);
37
+ error ErrorProductServiceDistributionAlreadyRegistered(NftId productNftId, NftId distributionNftId);
38
+ error ErrorProductServiceNoOraclesExpected(NftId productNftId);
39
+ error ErrorProductServiceOraclesAlreadyRegistered(NftId productNftId, uint8 expectedOracles);
40
+ error ErrorProductServicePoolAlreadyRegistered(NftId productNftId, NftId poolNftId);
41
+
42
+ error ErrorComponentServiceNewWalletAddressZero();
43
+ error ErrorComponentServiceWalletAddressZero();
44
+ error ErrorComponentServiceWalletAddressIsSameAsCurrent();
45
+
46
+ error ErrorComponentServiceWithdrawAmountIsZero();
47
+ error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
48
+ error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
49
+
50
+ event LogComponentServiceRegistered(NftId instanceNftId, NftId componentNftId, ObjectType componentType, address component, address token, address initialOwner);
51
+ event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
52
+ event LogComponentServiceWalletTokensTransferred(NftId componentNftId, address currentWallet, address newWallet, uint256 currentBalance);
53
+ event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
54
+ event LogComponentServiceProductFeesUpdated(NftId productNftId);
55
+ event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
56
+ event LogComponentServicePoolFeesUpdated(NftId poolNftId);
57
+ event LogComponentServiceUpdateFee(
58
+ NftId nftId,
59
+ string feeName,
60
+ UFixed previousFractionalFee,
61
+ uint256 previousFixedFee,
62
+ UFixed newFractionalFee,
63
+ uint256 newFixedFee
64
+ );
65
+
66
+ //-------- component ----------------------------------------------------//
67
+
68
+ /// @dev Approves the callers token handler to spend up to the specified amount of tokens.
69
+ /// Reverts if the component's token handler wallet is not the token handler itself.
70
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external;
71
+
72
+ /// @dev Sets the components associated wallet address.
73
+ /// To set the wallet to the token handler contract, use address(0) as the new wallet adress.
74
+ function setWallet(address newWallet) external;
75
+
76
+ /// @dev Locks/Unlocks the calling component.
77
+ function setLocked(bool locked) external;
78
+
79
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
80
+ /// @param withdrawAmount the amount to withdraw
81
+ /// @return withdrawnAmount the amount that was actually withdrawn
82
+ function withdrawFees(Amount withdrawAmount) external returns (Amount withdrawnAmount);
83
+
84
+ /// @dev Registers the provided component with the product (sender)
85
+ function registerComponent(address component) external returns (NftId componentNftId);
86
+
87
+ //-------- product ------------------------------------------------------//
88
+
89
+ /// @dev Registers the specified product component for the instance (sender)
90
+ function registerProduct(address product, address token) external returns (NftId productNftId);
91
+
92
+ function setProductFees(
93
+ Fee memory productFee, // product fee on net premium
94
+ Fee memory processingFee // product fee on payout amounts
95
+ ) external;
96
+
97
+ //-------- distribution -------------------------------------------------//
98
+
99
+ function setDistributionFees(
100
+ Fee memory distributionFee, // distribution fee for sales that do not include commissions
101
+ Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
102
+ ) external;
103
+
104
+ //-------- pool ---------------------------------------------------------//
105
+
106
+ function setPoolFees(
107
+ Fee memory poolFee, // pool fee on net premium
108
+ Fee memory stakingFee, // pool fee on staked capital from investor
109
+ Fee memory performanceFee // pool fee on profits from capital investors
110
+ ) external;
111
+
112
+ }