@etherisc/gif-next 0.0.2-ff282a4-523 → 0.0.2-ff3a8a0-504

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 (592) hide show
  1. package/README.md +139 -10
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -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 +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +174 -601
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +788 -535
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +278 -128
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +178 -330
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +622 -178
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  67. package/artifacts/contracts/instance/{base/IKeyValueStore.sol/IKeyValueStore.json → BaseStore.sol/BaseStore.json} +59 -205
  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/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  72. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +604 -92
  74. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +532 -56
  76. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  77. package/artifacts/contracts/instance/Instance.sol/Instance.json +657 -257
  78. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2284 -0
  80. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
  82. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1772 -822
  84. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +552 -193
  86. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +210 -94
  88. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1705 -1498
  90. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  92. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  93. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  94. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  96. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  98. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  100. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  102. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  103. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  104. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  105. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  106. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  108. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  109. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  110. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  111. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  112. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  113. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  115. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  117. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  118. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  119. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  120. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  122. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  124. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  126. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  128. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  130. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  132. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  134. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +550 -400
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  136. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +272 -102
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +384 -86
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  140. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +233 -423
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +749 -377
  143. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  144. package/artifacts/contracts/pool/Pool.sol/Pool.json +247 -629
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  146. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  148. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +954 -743
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +271 -113
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +370 -252
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +231 -89
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  156. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  158. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +491 -341
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +253 -115
  163. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +320 -9
  165. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  166. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +369 -18
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  168. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +454 -69
  169. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +217 -75
  171. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  172. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +380 -225
  173. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  174. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +289 -66
  175. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +507 -384
  177. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  178. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  179. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +237 -123
  181. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  182. package/artifacts/contracts/product/PricingService.sol/PricingService.json +261 -333
  183. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +235 -109
  185. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  186. package/artifacts/contracts/product/Product.sol/Product.json +428 -509
  187. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  188. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  189. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  190. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  191. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  192. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  193. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  194. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +478 -61
  195. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  196. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +280 -127
  197. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  198. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  199. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  201. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  202. package/artifacts/contracts/registry/Registry.sol/Registry.json +920 -125
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  204. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  205. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  206. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  207. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  208. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +332 -245
  209. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  210. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +208 -92
  211. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  212. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  213. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  214. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  215. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  216. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  217. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  218. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  219. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  220. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +361 -125
  221. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Component.sol/Component.json +128 -296
  223. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1076 -156
  225. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  234. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  235. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +129 -135
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  238. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  239. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  240. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +707 -0
  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 +42 -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 +173 -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 +103 -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 +795 -0
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +45 -55
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +148 -90
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Service.sol/Service.json +96 -102
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +615 -6
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2576 -128
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +705 -103
  280. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  281. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  282. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  283. package/artifacts/contracts/staking/Staking.sol/Staking.json +2914 -226
  284. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +298 -74
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +754 -207
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +218 -84
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  296. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  298. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  299. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -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 +122 -5
  304. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +92 -15
  306. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  308. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  310. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  312. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Fee.sol/FeeLib.json +119 -58
  314. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  316. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  318. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +66 -4
  320. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  321. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  322. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +153 -4
  324. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  326. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  328. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  330. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  332. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +121 -23
  334. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +167 -2
  336. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  340. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  342. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  344. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
  346. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  348. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  350. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  351. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  352. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  353. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  354. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  356. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  358. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  359. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  360. package/contracts/accounting/AccountingService.sol +274 -0
  361. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  362. package/contracts/accounting/IAccountingService.sol +47 -0
  363. package/contracts/authorization/AccessAdmin.sol +780 -0
  364. package/contracts/authorization/AccessAdminLib.sol +396 -0
  365. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  366. package/contracts/authorization/Authorization.sol +169 -0
  367. package/contracts/authorization/IAccess.sol +67 -0
  368. package/contracts/authorization/IAccessAdmin.sol +144 -0
  369. package/contracts/authorization/IAuthorization.sol +26 -0
  370. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  371. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  372. package/contracts/distribution/BasicDistribution.sol +141 -0
  373. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  374. package/contracts/distribution/Distribution.sol +137 -175
  375. package/contracts/distribution/DistributionService.sol +314 -215
  376. package/contracts/distribution/DistributionServiceManager.sol +13 -25
  377. package/contracts/distribution/IDistributionComponent.sol +23 -49
  378. package/contracts/distribution/IDistributionService.sol +61 -33
  379. package/contracts/examples/fire/DamageLevel.sol +59 -0
  380. package/contracts/examples/fire/FirePool.sol +86 -0
  381. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  382. package/contracts/examples/fire/FireProduct.sol +433 -0
  383. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  384. package/contracts/examples/fire/FireUSD.sol +26 -0
  385. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  386. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  387. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  388. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  389. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  390. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  391. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  392. package/contracts/instance/BaseStore.sol +93 -0
  393. package/contracts/instance/BundleSet.sol +130 -0
  394. package/contracts/instance/IBaseStore.sol +37 -0
  395. package/contracts/instance/IInstance.sol +128 -49
  396. package/contracts/instance/IInstanceService.sol +83 -37
  397. package/contracts/instance/Instance.sol +254 -132
  398. package/contracts/instance/InstanceAdmin.sol +379 -0
  399. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  400. package/contracts/instance/InstanceReader.sol +489 -243
  401. package/contracts/instance/InstanceService.sol +418 -212
  402. package/contracts/instance/InstanceServiceManager.sol +14 -29
  403. package/contracts/instance/InstanceStore.sol +228 -104
  404. package/contracts/instance/ProductStore.sol +303 -0
  405. package/contracts/instance/RiskSet.sol +126 -0
  406. package/contracts/instance/TargetNames.sol +10 -0
  407. package/contracts/instance/base/BalanceStore.sol +121 -0
  408. package/contracts/instance/base/Cloneable.sol +2 -25
  409. package/contracts/instance/base/ObjectCounter.sol +20 -0
  410. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  411. package/contracts/instance/base/ObjectSet.sol +77 -0
  412. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  413. package/contracts/instance/module/IBundle.sol +6 -8
  414. package/contracts/instance/module/IComponents.sol +40 -19
  415. package/contracts/instance/module/IDistribution.sol +21 -9
  416. package/contracts/instance/module/IPolicy.sol +57 -30
  417. package/contracts/instance/module/IRisk.sol +5 -0
  418. package/contracts/mock/Dip.sol +26 -0
  419. package/contracts/oracle/BasicOracle.sol +45 -0
  420. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  421. package/contracts/oracle/IOracle.sol +41 -0
  422. package/contracts/oracle/IOracleComponent.sol +33 -0
  423. package/contracts/oracle/IOracleService.sol +66 -0
  424. package/contracts/oracle/Oracle.sol +154 -0
  425. package/contracts/oracle/OracleService.sol +310 -0
  426. package/contracts/oracle/OracleServiceManager.sol +39 -0
  427. package/contracts/pool/BasicPool.sol +162 -0
  428. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  429. package/contracts/pool/BundleService.sol +250 -246
  430. package/contracts/pool/BundleServiceManager.sol +13 -25
  431. package/contracts/pool/IBundleService.sol +47 -49
  432. package/contracts/pool/IPoolComponent.sol +23 -75
  433. package/contracts/pool/IPoolService.sol +112 -56
  434. package/contracts/pool/Pool.sol +200 -169
  435. package/contracts/pool/PoolLib.sol +341 -0
  436. package/contracts/pool/PoolService.sol +475 -264
  437. package/contracts/pool/PoolServiceManager.sol +12 -24
  438. package/contracts/product/ApplicationService.sol +223 -82
  439. package/contracts/product/ApplicationServiceManager.sol +12 -9
  440. package/contracts/product/BasicProduct.sol +49 -0
  441. package/contracts/product/BasicProductAuthorization.sol +63 -0
  442. package/contracts/product/ClaimService.sol +398 -214
  443. package/contracts/product/ClaimServiceManager.sol +12 -9
  444. package/contracts/product/IApplicationService.sol +30 -4
  445. package/contracts/product/IClaimService.sol +52 -9
  446. package/contracts/product/IPolicyService.sol +62 -40
  447. package/contracts/product/IPricingService.sol +14 -11
  448. package/contracts/product/IProductComponent.sol +31 -10
  449. package/contracts/product/IRiskService.sol +48 -0
  450. package/contracts/product/PolicyService.sol +505 -236
  451. package/contracts/product/PolicyServiceLib.sol +139 -0
  452. package/contracts/product/PolicyServiceManager.sol +12 -27
  453. package/contracts/product/PricingService.sol +133 -102
  454. package/contracts/product/PricingServiceManager.sol +12 -24
  455. package/contracts/product/Product.sol +267 -153
  456. package/contracts/product/RiskService.sol +189 -0
  457. package/contracts/product/RiskServiceManager.sol +39 -0
  458. package/contracts/registry/ChainNft.sol +72 -39
  459. package/contracts/registry/IRegistry.sol +100 -38
  460. package/contracts/registry/IRegistryService.sol +28 -35
  461. package/contracts/registry/IRelease.sol +29 -0
  462. package/contracts/registry/ITransferInterceptor.sol +1 -2
  463. package/contracts/registry/Registry.sol +453 -222
  464. package/contracts/registry/RegistryAdmin.sol +191 -0
  465. package/contracts/registry/RegistryAuthorization.sol +336 -0
  466. package/contracts/registry/RegistryService.sol +75 -138
  467. package/contracts/registry/RegistryServiceManager.sol +23 -30
  468. package/contracts/registry/ReleaseAdmin.sol +195 -0
  469. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  470. package/contracts/registry/ReleaseRegistry.sol +525 -0
  471. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  472. package/contracts/registry/TokenRegistry.sol +264 -63
  473. package/contracts/shared/Component.sol +126 -183
  474. package/contracts/shared/ComponentService.sol +640 -99
  475. package/contracts/shared/ComponentServiceManager.sol +38 -0
  476. package/contracts/shared/ContractLib.sol +312 -0
  477. package/contracts/shared/IComponent.sol +18 -50
  478. package/contracts/shared/IComponentService.sol +111 -0
  479. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  480. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  481. package/contracts/shared/INftOwnable.sol +5 -1
  482. package/contracts/shared/IPolicyHolder.sol +12 -17
  483. package/contracts/shared/IRegisterable.sol +22 -1
  484. package/contracts/shared/IService.sol +11 -6
  485. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  486. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  487. package/contracts/shared/Lifecycle.sol +88 -0
  488. package/contracts/shared/NftIdSet.sol +65 -0
  489. package/contracts/shared/NftOwnable.sol +35 -24
  490. package/contracts/shared/PolicyHolder.sol +19 -50
  491. package/contracts/shared/Registerable.sol +54 -23
  492. package/contracts/shared/RegistryLinked.sol +9 -14
  493. package/contracts/shared/Service.sol +36 -41
  494. package/contracts/shared/TokenHandler.sol +320 -13
  495. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  496. package/contracts/staking/IStaking.sol +358 -6
  497. package/contracts/staking/IStakingService.sol +98 -76
  498. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  499. package/contracts/staking/Staking.sol +761 -27
  500. package/contracts/staking/StakingLib.sol +195 -0
  501. package/contracts/staking/StakingManager.sol +27 -18
  502. package/contracts/staking/StakingReader.sol +171 -0
  503. package/contracts/staking/StakingService.sol +175 -58
  504. package/contracts/staking/StakingServiceManager.sol +13 -8
  505. package/contracts/staking/StakingStore.sol +1368 -0
  506. package/contracts/staking/TargetHandler.sol +132 -0
  507. package/contracts/staking/TargetManagerLib.sol +234 -0
  508. package/contracts/type/AddressSet.sol +1 -1
  509. package/contracts/type/Amount.sol +48 -3
  510. package/contracts/type/Blocknumber.sol +36 -13
  511. package/contracts/type/ChainId.sol +101 -0
  512. package/contracts/type/ClaimId.sol +6 -1
  513. package/contracts/type/Fee.sol +22 -21
  514. package/contracts/type/Key32.sol +2 -2
  515. package/contracts/type/Key32Set.sol +62 -0
  516. package/contracts/type/NftId.sol +21 -16
  517. package/contracts/type/NftIdSet.sol +1 -1
  518. package/contracts/type/ObjectType.sol +204 -63
  519. package/contracts/type/PayoutId.sol +10 -10
  520. package/contracts/type/Referral.sol +2 -1
  521. package/contracts/type/RequestId.sol +75 -0
  522. package/contracts/type/RiskId.sol +39 -7
  523. package/contracts/type/RoleId.sol +122 -74
  524. package/contracts/type/Seconds.sol +67 -1
  525. package/contracts/type/Selector.sol +107 -0
  526. package/contracts/type/StateId.sol +41 -2
  527. package/contracts/type/String.sol +65 -0
  528. package/contracts/type/Timestamp.sol +20 -9
  529. package/contracts/type/UFixed.sol +62 -125
  530. package/contracts/type/Version.sol +58 -7
  531. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  532. package/contracts/{shared → upgradeability}/ProxyManager.sol +115 -38
  533. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  534. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  535. package/package.json +12 -8
  536. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  537. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  538. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  539. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  540. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  541. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  542. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  543. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  544. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  545. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  546. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  547. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  548. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  549. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  550. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  551. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  552. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  554. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  555. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  556. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  557. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -864
  558. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  559. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -640
  560. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  561. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  562. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  563. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -620
  564. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  565. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  566. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  567. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  568. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  569. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  570. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  571. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  572. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  573. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  574. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  575. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  576. package/contracts/instance/BundleManager.sol +0 -126
  577. package/contracts/instance/InstanceAccessManager.sol +0 -543
  578. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
  579. package/contracts/instance/base/IKeyValueStore.sol +0 -53
  580. package/contracts/instance/base/KeyValueStore.sol +0 -169
  581. package/contracts/instance/base/Lifecycle.sol +0 -121
  582. package/contracts/instance/base/ObjectManager.sol +0 -82
  583. package/contracts/instance/module/IAccess.sol +0 -54
  584. package/contracts/instance/module/ISetup.sol +0 -33
  585. package/contracts/instance/module/ITreasury.sol +0 -23
  586. package/contracts/product/IProductService.sol +0 -40
  587. package/contracts/product/ProductService.sol +0 -210
  588. package/contracts/product/ProductServiceManager.sol +0 -54
  589. package/contracts/registry/RegistryAccessManager.sol +0 -207
  590. package/contracts/registry/ReleaseManager.sol +0 -360
  591. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  592. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
@@ -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,312 @@
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 {IPolicyHolder} from "../shared/IPolicyHolder.sol";
9
+ import {IRegistry} from "../registry/IRegistry.sol";
10
+ import {IService} from "../shared/IService.sol";
11
+
12
+ import {ChainId} from "../type/ChainId.sol";
13
+ import {NftId} from "../type/NftId.sol";
14
+ import {ObjectType, INSTANCE, PRODUCT, DISTRIBUTION, ORACLE, POOL} from "../type/ObjectType.sol";
15
+ import {VersionPart} from "../type/Version.sol";
16
+
17
+ interface ITargetHelper {
18
+ function isTargetLocked(address target) external view returns (bool);
19
+ }
20
+
21
+ interface IInstanceAdminHelper {
22
+ function getInstanceAdmin() external view returns (ITargetHelper);
23
+ }
24
+
25
+ interface ITokenRegistryHelper {
26
+ function isActive(ChainId chainId, address token, VersionPart release) external view returns (bool);
27
+ }
28
+
29
+ library ContractLib {
30
+
31
+ error ErrorContractLibCallerNotRegistered(address target);
32
+ error ErrorContractLibCallerNotComponent(NftId componentNftId, ObjectType objectType);
33
+ error ErrorContractLibParentNotInstance(NftId componentNftId, NftId parentNftId);
34
+ error ErrorContractLibParentNotProduct(NftId componentNftId, NftId parentNftId);
35
+ error ErrorContractLibComponentTypeMismatch(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
36
+ error ErrorContractLibComponentInactive(NftId componentNftId);
37
+
38
+
39
+ function getInfoAndInstance(
40
+ IRegistry registry,
41
+ NftId componentNftId,
42
+ bool onlyActive
43
+ )
44
+ external
45
+ view
46
+ returns (
47
+ IRegistry.ObjectInfo memory info,
48
+ address instance
49
+ )
50
+ {
51
+ info = registry.getObjectInfo(componentNftId);
52
+ return _getAndVerifyComponentAndInstance(registry, info, info.objectType, onlyActive);
53
+ }
54
+
55
+
56
+ function getAndVerifyAnyComponent(
57
+ IRegistry registry,
58
+ address caller,
59
+ bool onlyActive
60
+ )
61
+ external
62
+ view
63
+ returns (
64
+ IRegistry.ObjectInfo memory callerInfo,
65
+ address instance
66
+ )
67
+ {
68
+ // check caller is component
69
+ callerInfo = _getAndVerifyObjectInfo(registry, caller);
70
+ if(!(callerInfo.objectType == PRODUCT()
71
+ || callerInfo.objectType == POOL()
72
+ || callerInfo.objectType == DISTRIBUTION()
73
+ || callerInfo.objectType == ORACLE())
74
+ ) {
75
+ revert ErrorContractLibCallerNotComponent(
76
+ callerInfo.nftId,
77
+ callerInfo.objectType);
78
+ }
79
+
80
+ return _getAndVerifyComponentAndInstance(registry, callerInfo, callerInfo.objectType, onlyActive);
81
+ }
82
+
83
+
84
+ function getAndVerifyComponent(
85
+ IRegistry registry,
86
+ address caller,
87
+ ObjectType expectedType,
88
+ bool onlyActive
89
+ )
90
+ external
91
+ view
92
+ returns (
93
+ IRegistry.ObjectInfo memory info,
94
+ address instance
95
+ )
96
+ {
97
+ info = _getAndVerifyObjectInfo(registry, caller);
98
+ return _getAndVerifyComponentAndInstance(registry, info, expectedType, onlyActive);
99
+ }
100
+
101
+
102
+ function getInstanceForComponent(
103
+ IRegistry registry,
104
+ NftId componentNftId
105
+ )
106
+ public
107
+ view
108
+ returns (address instance)
109
+ {
110
+ NftId productNftId = registry.getParentNftId(componentNftId);
111
+ NftId instanceNftId = registry.getParentNftId(productNftId);
112
+ return registry.getObjectInfo(instanceNftId).objectAddress;
113
+ }
114
+
115
+
116
+ function isActiveToken(
117
+ address tokenRegistryAddress,
118
+ ChainId chainId,
119
+ address token,
120
+ VersionPart release
121
+ )
122
+ external
123
+ view
124
+ returns (bool)
125
+ {
126
+ return ITokenRegistryHelper(
127
+ tokenRegistryAddress).isActive(
128
+ chainId, token, release);
129
+ }
130
+
131
+
132
+ function isPolicyHolder(address target) external view returns (bool) {
133
+ return ERC165Checker.supportsInterface(target, type(IPolicyHolder).interfaceId);
134
+ }
135
+
136
+
137
+ function isAuthority(address authority) public view returns (bool) {
138
+ if (!isContract(authority)) {
139
+ return false;
140
+ }
141
+
142
+ return supportsInterface(authority, type(IAccessManager).interfaceId);
143
+ }
144
+
145
+
146
+ function isAccessManaged(address target)
147
+ public
148
+ view
149
+ returns (bool)
150
+ {
151
+ if (!isContract(target)) {
152
+ return false;
153
+ }
154
+
155
+ (bool success, ) = target.staticcall(
156
+ abi.encodeWithSelector(
157
+ IAccessManaged.authority.selector));
158
+
159
+ return success;
160
+ }
161
+
162
+
163
+ function isRegistered(address registry, address caller, ObjectType expectedType) public view returns (bool) {
164
+ NftId nftId = IRegistry(registry).getNftIdForAddress(caller);
165
+ if (nftId.eqz()) {
166
+ return false;
167
+ }
168
+
169
+ return IRegistry(registry).getObjectInfo(nftId).objectType == expectedType;
170
+ }
171
+
172
+
173
+ function isService(address service) public view returns (bool) {
174
+ if (!isContract(service)) {
175
+ return false;
176
+ }
177
+
178
+ return supportsInterface(service, type(IService).interfaceId);
179
+ }
180
+
181
+
182
+ function isRegistry(address registry) public view returns (bool) {
183
+ if (!isContract(registry)) {
184
+ return false;
185
+ }
186
+
187
+ return supportsInterface(registry, type(IRegistry).interfaceId);
188
+ }
189
+
190
+
191
+ function isContract(address target) public view returns (bool) {
192
+ if (target == address(0)) {
193
+ return false;
194
+ }
195
+
196
+ uint256 size;
197
+ assembly {
198
+ size := extcodesize(target)
199
+ }
200
+ return size > 0;
201
+ }
202
+
203
+ function supportsInterface(address target, bytes4 interfaceId) public view returns (bool) {
204
+ return ERC165Checker.supportsInterface(target, interfaceId);
205
+ }
206
+
207
+
208
+ function _getAndVerifyComponentAndInstance(
209
+ IRegistry registry,
210
+ IRegistry.ObjectInfo memory info,
211
+ ObjectType expectedType,
212
+ bool onlyActive
213
+ )
214
+ internal
215
+ view
216
+ returns (
217
+ IRegistry.ObjectInfo memory,
218
+ address instance
219
+ )
220
+ {
221
+ if(info.objectType != expectedType) {
222
+ revert ErrorContractLibComponentTypeMismatch(
223
+ info.nftId,
224
+ expectedType,
225
+ info.objectType);
226
+ }
227
+
228
+ // get instance and check component is active
229
+ instance = getAndVerifyInstance(registry, info);
230
+ _checkComponentActive(instance, info.objectAddress, info.nftId, onlyActive);
231
+
232
+ return (
233
+ info,
234
+ instance
235
+ );
236
+ }
237
+
238
+
239
+ function _checkComponentActive(
240
+ address instance,
241
+ address target,
242
+ NftId componentNftId,
243
+ bool onlyActive
244
+ )
245
+ internal
246
+ view
247
+ {
248
+ if (onlyActive) {
249
+ if (IInstanceAdminHelper(
250
+ instance).getInstanceAdmin().isTargetLocked(
251
+ target)
252
+ ) {
253
+ revert ErrorContractLibComponentInactive(componentNftId);
254
+ }
255
+ }
256
+ }
257
+
258
+
259
+ /// @dev Given an object info the function returns the instance address.
260
+ /// The info may represent a product or any other component.
261
+ /// If the parent of the provided info is not registered with the correct type, the function reverts.
262
+ function getAndVerifyInstance(
263
+ IRegistry registry,
264
+ IRegistry.ObjectInfo memory info
265
+ )
266
+ public
267
+ view
268
+ returns (address instance)
269
+ {
270
+ // get instance for product case
271
+ if (info.objectType == PRODUCT()) {
272
+ // verify that parent of product is registered instance
273
+ IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(info.parentNftId);
274
+ if (instanceInfo.objectType != INSTANCE()) {
275
+ revert ErrorContractLibParentNotInstance(
276
+ info.nftId,
277
+ info.parentNftId);
278
+ }
279
+
280
+ // we have verified that parent object is a registerd instance -> we return the instance address
281
+ return instanceInfo.objectAddress;
282
+ }
283
+
284
+ // not product: verify parent is registered product
285
+ info = registry.getObjectInfo(info.parentNftId);
286
+ if (info.objectType != PRODUCT()) {
287
+ revert ErrorContractLibParentNotProduct(
288
+ info.nftId,
289
+ info.parentNftId);
290
+ }
291
+
292
+ // we have verified that parent is registerd product -> we can rely on registry that its parent is an instance
293
+ return registry.getObjectAddress(info.parentNftId);
294
+ }
295
+
296
+
297
+ function _getAndVerifyObjectInfo(
298
+ IRegistry registry,
299
+ address caller
300
+ )
301
+ internal
302
+ view
303
+ returns (IRegistry.ObjectInfo memory info)
304
+ {
305
+ NftId componentNftId = registry.getNftIdForAddress(caller);
306
+ if (componentNftId.eqz()) {
307
+ revert ErrorContractLibCallerNotRegistered(caller);
308
+ }
309
+
310
+ info = registry.getObjectInfo(componentNftId);
311
+ }
312
+ }
@@ -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
- /// the default address is the component token address
43
+ /// the default address is the token handler 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,111 @@
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
+ // registerProduct
20
+ error ErrorComponentServiceCallerNotInstance(address caller);
21
+ error ErrorComponentServiceNotProduct(address product);
22
+ error ErrorComponentServiceTokenInvalid(address token);
23
+
24
+ // registerComponent
25
+ error ErrorComponentServiceCallerNotProduct(address caller);
26
+ error ErrorComponentServiceNotComponent(address component);
27
+
28
+ error ErrorComponentServiceNotInstanceLinkedComponent(address component);
29
+ error ErrorComponentServiceComponentTypeNotSupported(address component, ObjectType invalid);
30
+ error ErrorComponentServiceComponentParentInvalid(address component, NftId required, NftId actual);
31
+ error ErrorComponentServiceComponentReleaseMismatch(address component, VersionPart serviceRelease, VersionPart componentRelease);
32
+ error ErrorComponentServiceComponentAlreadyRegistered(address component);
33
+
34
+ error ErrorProductServiceNoDistributionExpected(NftId productNftId);
35
+ error ErrorProductServiceDistributionAlreadyRegistered(NftId productNftId, NftId distributionNftId);
36
+ error ErrorProductServiceNoOraclesExpected(NftId productNftId);
37
+ error ErrorProductServiceOraclesAlreadyRegistered(NftId productNftId, uint8 expectedOracles);
38
+ error ErrorProductServicePoolAlreadyRegistered(NftId productNftId, NftId poolNftId);
39
+
40
+ error ErrorComponentServiceNewWalletAddressZero();
41
+ error ErrorComponentServiceWalletAddressZero();
42
+ error ErrorComponentServiceWalletAddressIsSameAsCurrent();
43
+
44
+ error ErrorComponentServiceWithdrawAmountIsZero();
45
+ error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
46
+ error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
47
+
48
+ event LogComponentServiceComponentLocked(address component, bool locked);
49
+ event LogComponentServiceRegistered(NftId instanceNftId, NftId componentNftId, ObjectType componentType, address component, address token, address initialOwner);
50
+ event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
51
+ event LogComponentServiceWalletTokensTransferred(NftId componentNftId, address currentWallet, address newWallet, uint256 currentBalance);
52
+ event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
53
+ event LogComponentServiceProductFeesUpdated(NftId productNftId);
54
+ event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
55
+ event LogComponentServicePoolFeesUpdated(NftId poolNftId);
56
+ event LogComponentServiceUpdateFee(
57
+ NftId nftId,
58
+ string feeName,
59
+ UFixed previousFractionalFee,
60
+ Amount previousFixedFee,
61
+ UFixed newFractionalFee,
62
+ Amount newFixedFee
63
+ );
64
+
65
+ //-------- component ----------------------------------------------------//
66
+
67
+ /// @dev Approves the callers token handler to spend up to the specified amount of tokens.
68
+ /// Reverts if the component's token handler wallet is not the token handler itself.
69
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external;
70
+
71
+ /// @dev Sets the components associated wallet address.
72
+ /// To set the wallet to the token handler contract, use address(0) as the new wallet adress.
73
+ function setWallet(address newWallet) external;
74
+
75
+ /// @dev Locks/Unlocks the calling component.
76
+ function setLocked(bool locked) external;
77
+
78
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
79
+ /// @param withdrawAmount the amount to withdraw
80
+ /// @return withdrawnAmount the amount that was actually withdrawn
81
+ function withdrawFees(Amount withdrawAmount) external returns (Amount withdrawnAmount);
82
+
83
+ /// @dev Registers the provided component with the product (sender)
84
+ function registerComponent(address component) external returns (NftId componentNftId);
85
+
86
+ //-------- product ------------------------------------------------------//
87
+
88
+ /// @dev Registers the specified product component for the instance (sender)
89
+ function registerProduct(address product, address token) external returns (NftId productNftId);
90
+
91
+ function setProductFees(
92
+ Fee memory productFee, // product fee on net premium
93
+ Fee memory processingFee // product fee on payout amounts
94
+ ) external;
95
+
96
+ //-------- distribution -------------------------------------------------//
97
+
98
+ function setDistributionFees(
99
+ Fee memory distributionFee, // distribution fee for sales that do not include commissions
100
+ Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
101
+ ) external;
102
+
103
+ //-------- pool ---------------------------------------------------------//
104
+
105
+ function setPoolFees(
106
+ Fee memory poolFee, // pool fee on net premium
107
+ Fee memory stakingFee, // pool fee on staked capital from investor
108
+ Fee memory performanceFee // pool fee on profits from capital investors
109
+ ) external;
110
+
111
+ }
@@ -0,0 +1,30 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {IComponent} from "../shared/IComponent.sol";
6
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
7
+ import {IInstance} from "../instance/IInstance.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ObjectType} from "../type/ObjectType.sol";
10
+
11
+ /// @dev component base class
12
+ /// component examples are product, distribution, pool and oracle
13
+ interface IInstanceLinkedComponent is
14
+ IComponent
15
+ {
16
+ error ErrorInstanceLinkedComponentTypeMismatch(ObjectType requiredType, ObjectType objectType);
17
+ error ErrorInstanceLinkedComponentNotProduct(NftId nftId, ObjectType objectType);
18
+
19
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
20
+ /// @param amount the amount to withdraw
21
+ /// @return withdrawnAmount the amount that was actually withdrawn
22
+ function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
23
+
24
+ /// @dev defines the instance to which this component is linked to
25
+ function getInstance() external view returns (IInstance instance);
26
+
27
+ /// @dev returns the initial component authorization specification.
28
+ function getAuthorization() external view returns (IAuthorization authorization);
29
+
30
+ }
@@ -1,14 +1,15 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../../type/NftId.sol";
5
- import {ObjectType} from "../../type/ObjectType.sol";
6
- import {StateId} from "../../type/StateId.sol";
4
+ import {ObjectType} from "../type/ObjectType.sol";
5
+ import {StateId} from "../type/StateId.sol";
7
6
 
8
7
  interface ILifecycle {
9
8
 
10
- error ErrorNoLifecycle(NftId nftId, ObjectType objectType);
9
+ error ErrorNoLifecycle(address contractAddress, ObjectType objectType);
10
+ error ErrorFromStateMissmatch(address contractAddress, ObjectType objectType, StateId actual, StateId required);
11
11
  error ErrorInvalidStateTransition(
12
+ address contractAddress,
12
13
  ObjectType objectType,
13
14
  StateId fromStateId,
14
15
  StateId toStateId
@@ -5,18 +5,22 @@ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
6
  import {IRegistryLinked} from "./IRegistryLinked.sol";
7
7
  import {NftId} from "../type/NftId.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
8
9
 
9
10
  interface INftOwnable is
10
11
  IERC165,
11
12
  IRegistryLinked
12
13
  {
14
+ event LogNftOwnableNftLinkedToAddress(NftId nftId, address owner);
15
+
13
16
  error ErrorNftOwnableInitialOwnerZero();
14
17
  error ErrorNftOwnableNotOwner(address account);
18
+ error ErrorNftOwnableInvalidType(NftId nftId, ObjectType expectedObjectType);
15
19
 
16
20
  error ErrorNftOwnableAlreadyLinked(NftId nftId);
17
21
  error ErrorNftOwnableContractNotRegistered(address contractAddress);
18
22
 
19
- function linkToRegisteredNftId() external;
23
+ function linkToRegisteredNftId() external returns (NftId);
20
24
 
21
25
  function getNftId() external view returns (NftId);
22
26
  function getOwner() external view returns (address);