@etherisc/gif-next 0.0.2-e9c5694-914 → 0.0.2-ea09fbf-195

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 (443) hide show
  1. package/README.md +27 -6
  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 +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +103 -55
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +37 -5
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -186
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +154 -108
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -53
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +101 -164
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -290
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +137 -129
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
  55. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +630 -317
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  61. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  62. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  63. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  64. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +94 -47
  65. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
  67. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/Instance.sol/Instance.json +131 -56
  69. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +239 -92
  71. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
  73. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -197
  75. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
  77. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
  79. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +410 -370
  81. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  82. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  83. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  85. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  88. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  92. package/artifacts/contracts/instance/base/ObjectSetHelper.sol/ObjectSetHelperLib.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectSetHelper.sol/ObjectSetHelperLib.json +168 -0
  94. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  100. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
  103. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  105. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +44 -58
  108. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  110. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
  112. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
  114. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
  116. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
  118. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  120. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +128 -226
  122. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -74
  124. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +46 -60
  126. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
  128. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +104 -78
  130. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  131. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +175 -174
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +64 -38
  136. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  137. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
  138. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
  140. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  141. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
  142. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  144. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +251 -144
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +79 -57
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  149. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +143 -3
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -22
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  157. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +158 -140
  162. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +73 -47
  164. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  165. package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
  166. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
  168. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  169. package/artifacts/contracts/product/Product.sol/Product.json +163 -175
  170. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  171. package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -73
  172. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -24
  174. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  176. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +31 -2
  178. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  179. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  180. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  181. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  182. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  183. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/Registry.sol/Registry.json +69 -40
  185. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  186. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -213
  187. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  189. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
  191. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  192. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
  193. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  195. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +310 -52
  197. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  199. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  201. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
  203. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +250 -421
  205. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +71 -61
  207. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  209. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  211. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  212. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  213. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  215. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  217. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
  219. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +134 -248
  221. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
  223. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  225. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  229. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  232. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  233. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
  235. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  236. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  237. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  238. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  239. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  241. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  243. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  245. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  247. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  249. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  252. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  253. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  255. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  256. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
  257. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  258. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +27 -3
  259. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  260. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
  261. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  262. package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
  263. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  264. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  265. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  266. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
  267. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  269. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +73 -50
  271. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +46 -24
  273. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  275. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  276. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  277. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  278. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  280. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  283. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  285. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  287. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  289. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  290. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  291. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  293. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  294. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  295. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  297. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  299. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  301. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  303. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  305. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +3 -3
  307. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  314. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  316. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  318. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  320. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  321. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  322. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  323. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  324. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  325. package/contracts/accounting/AccountingService.sol +262 -0
  326. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  327. package/contracts/accounting/IAccountingService.sol +45 -0
  328. package/contracts/authorization/AccessAdmin.sol +136 -73
  329. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  330. package/contracts/authorization/IAccessAdmin.sol +6 -3
  331. package/contracts/distribution/BasicDistribution.sol +6 -6
  332. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  333. package/contracts/distribution/Distribution.sol +32 -30
  334. package/contracts/distribution/DistributionService.sol +34 -32
  335. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  336. package/contracts/distribution/IDistributionService.sol +5 -6
  337. package/contracts/examples/fire/FirePool.sol +22 -5
  338. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
  339. package/contracts/examples/fire/FireProduct.sol +31 -8
  340. package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
  341. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  342. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  343. package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
  344. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  345. package/contracts/examples/unpermissioned/SimpleProduct.sol +40 -21
  346. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  347. package/contracts/instance/BundleSet.sol +42 -38
  348. package/contracts/instance/IInstance.sol +8 -8
  349. package/contracts/instance/IInstanceService.sol +9 -9
  350. package/contracts/instance/Instance.sol +20 -17
  351. package/contracts/instance/InstanceAdmin.sol +96 -47
  352. package/contracts/instance/InstanceAuthorizationV3.sol +45 -14
  353. package/contracts/instance/InstanceReader.sol +108 -7
  354. package/contracts/instance/InstanceService.sol +73 -82
  355. package/contracts/instance/InstanceServiceManager.sol +1 -1
  356. package/contracts/instance/InstanceStore.sol +13 -2
  357. package/contracts/instance/RiskSet.sol +118 -0
  358. package/contracts/instance/base/ObjectCounter.sol +1 -2
  359. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  360. package/contracts/instance/base/ObjectSet.sol +31 -33
  361. package/contracts/instance/base/ObjectSetHelper.sol +30 -0
  362. package/contracts/instance/module/IComponents.sol +4 -4
  363. package/contracts/instance/module/IPolicy.sol +2 -1
  364. package/contracts/instance/module/IRisk.sol +3 -0
  365. package/contracts/oracle/Oracle.sol +1 -1
  366. package/contracts/oracle/OracleService.sol +92 -73
  367. package/contracts/oracle/OracleServiceManager.sol +1 -1
  368. package/contracts/pool/BasicPool.sol +24 -3
  369. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  370. package/contracts/pool/BundleService.sol +26 -94
  371. package/contracts/pool/BundleServiceManager.sol +1 -1
  372. package/contracts/pool/IBundleService.sol +2 -24
  373. package/contracts/pool/IPoolComponent.sol +1 -7
  374. package/contracts/pool/IPoolService.sol +12 -26
  375. package/contracts/pool/Pool.sol +112 -102
  376. package/contracts/pool/PoolService.sol +171 -100
  377. package/contracts/pool/PoolServiceManager.sol +1 -1
  378. package/contracts/product/ApplicationService.sol +15 -15
  379. package/contracts/product/ApplicationServiceManager.sol +1 -1
  380. package/contracts/product/BasicProduct.sol +9 -11
  381. package/contracts/product/BasicProductAuthorization.sol +1 -2
  382. package/contracts/product/ClaimService.sol +147 -51
  383. package/contracts/product/ClaimServiceManager.sol +1 -1
  384. package/contracts/product/IApplicationService.sol +5 -2
  385. package/contracts/product/IClaimService.sol +13 -0
  386. package/contracts/product/IPolicyService.sol +17 -7
  387. package/contracts/product/IProductComponent.sol +4 -1
  388. package/contracts/product/PolicyService.sol +244 -199
  389. package/contracts/product/PolicyServiceManager.sol +1 -1
  390. package/contracts/product/PricingService.sol +23 -19
  391. package/contracts/product/PricingServiceManager.sol +3 -3
  392. package/contracts/product/Product.sol +47 -39
  393. package/contracts/product/RiskService.sol +78 -23
  394. package/contracts/product/RiskServiceManager.sol +1 -1
  395. package/contracts/registry/ChainNft.sol +4 -2
  396. package/contracts/registry/IRegistry.sol +8 -15
  397. package/contracts/registry/IRelease.sol +26 -0
  398. package/contracts/registry/Registry.sol +12 -3
  399. package/contracts/registry/RegistryAdmin.sol +121 -225
  400. package/contracts/registry/RegistryService.sol +3 -3
  401. package/contracts/registry/RegistryServiceManager.sol +1 -1
  402. package/contracts/registry/ReleaseAdmin.sol +245 -0
  403. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  404. package/contracts/registry/ReleaseRegistry.sol +129 -119
  405. package/contracts/registry/ServiceAuthorizationV3.sol +88 -40
  406. package/contracts/registry/TokenRegistry.sol +6 -8
  407. package/contracts/shared/Component.sol +59 -98
  408. package/contracts/shared/ComponentService.sol +206 -251
  409. package/contracts/shared/ComponentServiceManager.sol +1 -1
  410. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  411. package/contracts/shared/ContractLib.sol +223 -9
  412. package/contracts/shared/IComponent.sol +4 -17
  413. package/contracts/shared/IComponentService.sol +20 -24
  414. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  415. package/contracts/shared/IRegisterable.sol +15 -4
  416. package/contracts/shared/IService.sol +3 -5
  417. package/contracts/shared/InstanceLinkedComponent.sol +2 -18
  418. package/contracts/shared/NftOwnable.sol +4 -4
  419. package/contracts/shared/PolicyHolder.sol +1 -1
  420. package/contracts/shared/Registerable.sol +44 -20
  421. package/contracts/shared/RegistryLinked.sol +7 -13
  422. package/contracts/shared/Service.sol +8 -27
  423. package/contracts/shared/TokenHandler.sol +316 -66
  424. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  425. package/contracts/staking/IStaking.sol +9 -4
  426. package/contracts/staking/Staking.sol +62 -33
  427. package/contracts/staking/StakingService.sol +41 -9
  428. package/contracts/type/Key32.sol +2 -2
  429. package/contracts/type/Key32Set.sol +62 -0
  430. package/contracts/type/NftId.sol +6 -0
  431. package/contracts/type/ObjectType.sol +32 -18
  432. package/contracts/type/RiskId.sol +23 -6
  433. package/contracts/type/RoleId.sol +5 -2
  434. package/contracts/type/Timestamp.sol +0 -5
  435. package/contracts/type/UFixed.sol +9 -119
  436. package/contracts/type/Version.sol +15 -5
  437. package/contracts/upgradeability/ProxyManager.sol +1 -1
  438. package/package.json +3 -3
  439. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  440. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  441. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  442. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  443. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
@@ -5,7 +5,7 @@ import {IInstance} from "../instance/IInstance.sol";
5
5
  import {InstanceReader} from "../instance/InstanceReader.sol";
6
6
  import {IRegistry} from "../registry/IRegistry.sol";
7
7
  import {NftId} from "../type/NftId.sol";
8
- import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
8
+ import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
9
9
  import {Service} from "../shared/Service.sol";
10
10
 
11
11
 
@@ -27,12 +27,12 @@ abstract contract ComponentVerifyingService is
27
27
  view
28
28
  returns(
29
29
  NftId componentNftId,
30
- IRegistry.ObjectInfo memory componentInfo,
30
+ IRegistry.ObjectInfo memory objectInfo,
31
31
  IInstance instance
32
32
  )
33
33
  {
34
34
  componentNftId = getRegistry().getNftIdForAddress(msg.sender);
35
- (componentInfo, instance) = _getAndVerifyComponentInfo(
35
+ (objectInfo, instance) = _getAndVerifyComponentInfo(
36
36
  componentNftId,
37
37
  expectedType,
38
38
  true); // only active
@@ -82,7 +82,15 @@ abstract contract ComponentVerifyingService is
82
82
  }
83
83
  }
84
84
 
85
- instance = _getInstanceForComponent(registry, info);
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
+ }
86
94
 
87
95
  // ensure component is not locked
88
96
  if (onlyActive) {
@@ -93,21 +101,15 @@ abstract contract ComponentVerifyingService is
93
101
  }
94
102
 
95
103
 
96
- function _getInstanceForComponent(IRegistry registry, IRegistry.ObjectInfo memory componentInfo)
104
+ function _getInstanceForComponent(IRegistry registry, NftId productNftId)
97
105
  internal
98
106
  view
99
107
  returns (IInstance instance)
100
108
  {
101
- // parent of product is instance
102
- if (componentInfo.objectType == PRODUCT()) {
103
- instance = _getInstance(registry, componentInfo.parentNftId);
104
- // parent of other types is product
105
- } else {
106
- instance = _getInstance(
109
+ return _getInstance(
107
110
  registry,
108
111
  registry.getObjectInfo(
109
- componentInfo.parentNftId).parentNftId);
110
- }
112
+ productNftId).parentNftId);
111
113
  }
112
114
 
113
115
 
@@ -2,29 +2,187 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
5
- import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+ import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
6
6
 
7
- import {IPolicyHolder} from "./IPolicyHolder.sol";
7
+ // import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {ObjectType, PRODUCT, DISTRIBUTION, ORACLE, POOL, STAKING} from "../type/ObjectType.sol";
12
+ import {VersionPart} from "../type/Version.sol";
13
+
14
+ interface ITargetHelper {
15
+ function isTargetLocked(address target) external view returns (bool);
16
+ }
17
+
18
+ interface IInstanceAdminHelper {
19
+ function getInstanceAdmin() external view returns (ITargetHelper);
20
+ }
21
+
22
+ interface ITokenRegistryHelper {
23
+ function isActive(uint256 chainId, address token, VersionPart release) external view returns (bool);
24
+ }
8
25
 
9
26
  library ContractLib {
10
27
 
28
+ error ErrorContractLibNotRegistered(address target);
29
+ error ErrorContractLibNotComponent(NftId componentNftId, ObjectType objectType);
30
+ error ErrorContractLibNotStaking(NftId componentNftId, ObjectType objectType);
31
+ error ErrorContractLibComponentTypeMismatch(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
32
+ error ErrorContractLibComponentInactive(NftId componentNftId);
33
+
34
+ function getAndVerifyComponent(
35
+ IRegistry registry,
36
+ address target,
37
+ ObjectType expectedType,
38
+ bool onlyActive
39
+ )
40
+ external
41
+ view
42
+ returns (
43
+ IRegistry.ObjectInfo memory info,
44
+ address instance
45
+ )
46
+ {
47
+ // check target is component
48
+ info = _getObjectInfo(registry, target);
49
+ if(info.objectType != expectedType) {
50
+ revert ErrorContractLibComponentTypeMismatch(
51
+ info.nftId,
52
+ expectedType,
53
+ info.objectType);
54
+ }
55
+
56
+ // get instance and check component is active
57
+ instance = _getInstance(registry, info);
58
+ _checkComponentActive(instance, target, info.nftId, onlyActive);
59
+ }
60
+
61
+
62
+ function getInfoAndInstance(
63
+ IRegistry registry,
64
+ NftId componentNftId,
65
+ bool onlyActive
66
+ )
67
+ external
68
+ view
69
+ returns (
70
+ IRegistry.ObjectInfo memory info,
71
+ address instance
72
+ )
73
+ {
74
+ info = registry.getObjectInfo(componentNftId);
75
+ instance = _getInstance(registry, info);
76
+ _checkComponentActive(instance, info.objectAddress, info.nftId, onlyActive);
77
+ }
78
+
79
+
80
+ function getAndVerifyStaking(
81
+ IRegistry registry,
82
+ address target
83
+ )
84
+ external
85
+ view
86
+ returns (
87
+ IRegistry.ObjectInfo memory info
88
+ )
89
+ {
90
+ // check target is component
91
+ info = _getObjectInfo(registry, target);
92
+ if(info.objectType != STAKING()) {
93
+ revert ErrorContractLibNotStaking(
94
+ info.nftId,
95
+ info.objectType);
96
+ }
97
+ }
98
+
99
+
100
+ function getAndVerifyAnyComponent(
101
+ IRegistry registry,
102
+ address target,
103
+ bool onlyActive
104
+ )
105
+ external
106
+ view
107
+ returns (
108
+ IRegistry.ObjectInfo memory info,
109
+ address instance
110
+ )
111
+ {
112
+ // check target is component
113
+ info = _getObjectInfo(registry, target);
114
+ if(!(info.objectType == PRODUCT()
115
+ || info.objectType == POOL()
116
+ || info.objectType == DISTRIBUTION()
117
+ || info.objectType == ORACLE())
118
+ ) {
119
+ revert ErrorContractLibNotComponent(
120
+ info.nftId,
121
+ info.objectType);
122
+ }
123
+
124
+ // get instance and check component is active
125
+ instance = _getInstance(registry, info);
126
+ _checkComponentActive(instance, target, info.nftId, onlyActive);
127
+ }
128
+
129
+
130
+ function getInstanceForComponent(
131
+ IRegistry registry,
132
+ NftId componentNftId
133
+ )
134
+ public
135
+ view
136
+ returns (address instance)
137
+ {
138
+ NftId productNftId = registry.getObjectInfo(componentNftId).parentNftId;
139
+ NftId instanceNftId = registry.getObjectInfo(productNftId).parentNftId;
140
+ return registry.getObjectInfo(instanceNftId).objectAddress;
141
+ }
142
+
143
+ function isActiveToken(
144
+ address tokenRegistryAddress,
145
+ address token,
146
+ uint256 chainId,
147
+ VersionPart release
148
+ )
149
+ external
150
+ view
151
+ returns (bool)
152
+ {
153
+ return ITokenRegistryHelper(
154
+ tokenRegistryAddress).isActive(
155
+ chainId, token, release);
156
+ }
157
+
11
158
  function isPolicyHolder(address target) external view returns (bool) {
12
159
  return ERC165Checker.supportsInterface(target, type(IPolicyHolder).interfaceId);
13
160
  }
14
161
 
15
- function isAccessManaged(address target) external view returns (bool) {
16
- if (!isContract(target)) {
162
+
163
+ function isAuthority(address authority) public view returns (bool) {
164
+ if (!isContract(authority)) {
17
165
  return false;
18
166
  }
19
167
 
20
- (bool success, ) = target.staticcall(
21
- abi.encodeWithSelector(
22
- IAccessManaged.authority.selector));
168
+ return supportsInterface(authority, type(IAccessManager).interfaceId);
169
+ }
170
+
171
+
172
+ function isRegistry(address registry) public view returns (bool) {
173
+ if (!isContract(registry)) {
174
+ return false;
175
+ }
23
176
 
24
- return success;
177
+ return supportsInterface(registry, type(IRegistry).interfaceId);
25
178
  }
26
179
 
180
+
27
181
  function isContract(address target) public view returns (bool) {
182
+ if (target == address(0)) {
183
+ return false;
184
+ }
185
+
28
186
  uint256 size;
29
187
  assembly {
30
188
  size := extcodesize(target)
@@ -32,7 +190,63 @@ library ContractLib {
32
190
  return size > 0;
33
191
  }
34
192
 
35
- function supportsInterface(address target, bytes4 interfaceId) external view returns (bool) {
193
+ function supportsInterface(address target, bytes4 interfaceId) public view returns (bool) {
36
194
  return ERC165Checker.supportsInterface(target, interfaceId);
37
195
  }
196
+
197
+
198
+ function _checkComponentActive(
199
+ address instance,
200
+ address target,
201
+ NftId componentNftId,
202
+ bool onlyActive
203
+ )
204
+ internal
205
+ view
206
+ {
207
+ if (onlyActive) {
208
+ if (IInstanceAdminHelper(
209
+ instance).getInstanceAdmin().isTargetLocked(
210
+ target)
211
+ ) {
212
+ revert ErrorContractLibComponentInactive(componentNftId);
213
+ }
214
+ }
215
+ }
216
+
217
+
218
+ function _getInstance(
219
+ IRegistry registry,
220
+ IRegistry.ObjectInfo memory info
221
+ )
222
+ internal
223
+ view
224
+ returns (address instance)
225
+ {
226
+ if (info.objectType == PRODUCT()) {
227
+ return registry.getObjectAddress(
228
+ info.parentNftId);
229
+ }
230
+
231
+ return registry.getObjectAddress(
232
+ registry.getObjectInfo(
233
+ info.parentNftId).parentNftId);
234
+ }
235
+
236
+
237
+ function _getObjectInfo(
238
+ IRegistry registry,
239
+ address target
240
+ )
241
+ internal
242
+ view
243
+ returns (IRegistry.ObjectInfo memory info)
244
+ {
245
+ NftId componentNftId = registry.getNftIdForAddress(target);
246
+ if (componentNftId.eqz()) {
247
+ revert ErrorContractLibNotRegistered(target);
248
+ }
249
+
250
+ info = registry.getObjectInfo(componentNftId);
251
+ }
38
252
  }
@@ -1,7 +1,6 @@
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
 
7
6
  import {Amount} from "../type/Amount.sol";
@@ -13,37 +12,25 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
13
12
  /// @dev component base class
14
13
  /// component examples are staking, product, distribution, pool and oracle
15
14
  interface IComponent is
16
- IAccessManaged,
17
15
  IRegisterable,
18
16
  ITransferInterceptor
19
17
  {
18
+
19
+ error ErrorComponentTokenInvalid(address token);
20
+
20
21
  error ErrorComponentProductNftIdZero();
21
22
  error ErrorComponentProductNftIdNonzero();
22
23
  error ErrorComponentNameLengthZero();
23
24
 
24
25
  error ErrorComponentNotChainNft(address caller);
25
26
 
26
- error ErrorComponentTokenAddressNonzero();
27
- error ErrorComponentTokenAddressZero();
28
27
  error ErrorComponentWalletAddressZero();
29
28
  error ErrorComponentWalletAddressIsSameAsCurrent();
30
29
  error ErrorComponentWalletNotComponent();
31
30
 
32
31
  event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
33
32
  event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
34
- event LogComponentTokenHandlerApproved(address token, Amount limit, bool isMaxAmount);
35
-
36
- /// @dev approves token hanlder to spend up to the specified amount of tokens
37
- /// reverts if component wallet is not component itself
38
- /// only component owner (nft holder) is authorizes to call this function
39
- function approveTokenHandler(Amount spendingLimitAmount) external;
40
-
41
- /// @dev sets the wallet address for the component.
42
- /// if the current wallet has tokens, these will be transferred.
43
- /// if the new wallet address is externally owned, an approval from the
44
- /// owner of the external wallet to the tokenhandler of the component that
45
- /// covers the current component balance must exist
46
- function setWallet(address walletAddress) external;
33
+ event LogComponentTokenHandlerApproved(address tokenHandler, address token, Amount limit, bool isMaxAmount);
47
34
 
48
35
  /// @dev returns the name of this component
49
36
  /// to successfully register the component with an instance the name MUST be unique in the linked instance
@@ -1,10 +1,10 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
4
5
 
5
6
  import {Amount} from "../type/Amount.sol";
6
7
  import {Fee} from "../type/Fee.sol";
7
- import {InstanceStore} from "../instance/InstanceStore.sol";
8
8
  import {IService} from "../shared/IService.sol";
9
9
  import {NftId} from "../type/NftId.sol";
10
10
  import {ObjectType} from "../type/ObjectType.sol";
@@ -27,6 +27,10 @@ interface IComponentService is
27
27
  error ErrorComponentServiceParentNotInstance(NftId nftId, ObjectType objectType);
28
28
  error ErrorComponentServiceParentNotProduct(NftId nftId, ObjectType objectType);
29
29
 
30
+ error ErrorComponentServiceNotRegistered(address instanceAddress);
31
+ error ErrorComponentServiceNotInstance(address instanceAddress, ObjectType objectType);
32
+ error ErrorComponentServiceInstanceVersionMismatch(address instanceAddress, VersionPart instanceVersion);
33
+
30
34
  error ErrorProductServiceNoDistributionExpected(NftId productNftId);
31
35
  error ErrorProductServiceDistributionAlreadyRegistered(NftId productNftId, NftId distributionNftId);
32
36
  error ErrorProductServiceNoOraclesExpected(NftId productNftId);
@@ -43,6 +47,7 @@ interface IComponentService is
43
47
 
44
48
  event LogComponentServiceRegistered(NftId instanceNftId, NftId componentNftId, ObjectType componentType, address component, address token, address initialOwner);
45
49
  event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
50
+ event LogComponentServiceWalletTokensTransferred(NftId componentNftId, address currentWallet, address newWallet, uint256 currentBalance);
46
51
  event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
47
52
  event LogComponentServiceProductFeesUpdated(NftId productNftId);
48
53
  event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
@@ -55,17 +60,25 @@ interface IComponentService is
55
60
  UFixed newFractionalFee,
56
61
  uint256 newFixedFee
57
62
  );
58
-
63
+
59
64
  //-------- component ----------------------------------------------------//
60
65
 
61
- /// @dev sets the components associated wallet address
66
+ /// @dev Approves the callers token handler to spend up to the specified amount of tokens.
67
+ /// Reverts if the component's token handler wallet is not the token handler itself.
68
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external;
69
+
70
+ /// @dev Approves the staking token handler.
71
+ /// Reverts if the staking token handler wallet is not the token handler itself.
72
+ function approveStakingTokenHandler(IERC20Metadata token, Amount amount) external;
73
+
74
+ /// @dev Sets the components associated wallet address
62
75
  function setWallet(address newWallet) external;
63
76
 
64
- /// @dev locks the component associated with the caller
65
- function lock() external;
77
+ /// @dev Locks/Unlocks the given component - call from instanceService
78
+ function setLockedFromInstance(address componentAddress, bool locked) external;
66
79
 
67
- /// @dev unlocks the component associated with the caller
68
- function unlock() external;
80
+ /// @dev Locks/Unlocks the given component - call from component
81
+ function setLockedFromComponent(address componentAddress, bool locked) external;
69
82
 
70
83
  /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
71
84
  /// @param withdrawAmount the amount to withdraw
@@ -85,9 +98,6 @@ interface IComponentService is
85
98
  Fee memory processingFee // product fee on payout amounts
86
99
  ) external;
87
100
 
88
- function increaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount) external;
89
- function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount) external;
90
-
91
101
  //-------- distribution -------------------------------------------------//
92
102
 
93
103
  function setDistributionFees(
@@ -95,13 +105,6 @@ interface IComponentService is
95
105
  Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
96
106
  ) external;
97
107
 
98
- function increaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
99
- function decreaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
100
-
101
- //-------- distributor --------------------------------------------------//
102
- function increaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
103
- function decreaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
104
-
105
108
  //-------- pool ---------------------------------------------------------//
106
109
 
107
110
  function setPoolFees(
@@ -110,11 +113,4 @@ interface IComponentService is
110
113
  Fee memory performanceFee // pool fee on profits from capital investors
111
114
  ) external;
112
115
 
113
- function increasePoolBalance(InstanceStore instanceStore, NftId poolNftId, Amount amount, Amount feeAmount) external;
114
- function decreasePoolBalance(InstanceStore instanceStore, NftId poolNftId, Amount amount, Amount feeAmount) external;
115
-
116
- //-------- bundle -------------------------------------------------------//
117
- function increaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
118
- function decreaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
119
-
120
116
  }
@@ -1,9 +1,6 @@
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
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
-
7
4
  import {Amount} from "../type/Amount.sol";
8
5
  import {IComponent} from "../shared/IComponent.sol";
9
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
@@ -19,14 +16,6 @@ interface IInstanceLinkedComponent is
19
16
  error ErrorInstanceLinkedComponentTypeMismatch(ObjectType requiredType, ObjectType objectType);
20
17
  error ErrorInstanceLinkedComponentNotProduct(NftId nftId, ObjectType objectType);
21
18
 
22
- /// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
23
- /// only component owner (nft holder) is authorizes to call this function
24
- function lock() external;
25
-
26
- /// @dev unlocks component to (re-)enable functions that may change state related to this component
27
- /// only component owner (nft holder) is authorizes to call this function
28
- function unlock() external;
29
-
30
19
  /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
31
20
  /// @param amount the amount to withdraw
32
21
  /// @return withdrawnAmount the amount that was actually withdrawn
@@ -1,7 +1,10 @@
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
6
  import {INftOwnable} from "./INftOwnable.sol";
7
+ import {IRelease} from "../registry/IRelease.sol";
5
8
  import {IRegistry} from "../registry/IRegistry.sol";
6
9
  import {VersionPart} from "../type/Version.sol";
7
10
 
@@ -9,11 +12,19 @@ import {VersionPart} from "../type/Version.sol";
9
12
  /// @dev Marks contracts that are intended to be registered in the registry.
10
13
  ///
11
14
  interface IRegisterable is
12
- INftOwnable
15
+ IAccessManaged,
16
+ INftOwnable,
17
+ IRelease
13
18
  {
14
- /// @dev retuns the GIF release version for this contract.
15
- /// This
16
- function getRelease() external pure returns (VersionPart release);
19
+ // __Registerable_init
20
+ error ErrorAuthorityInvalid(address authority);
21
+
22
+ // onlyActive()
23
+ error ErrorRegisterableNotActive();
24
+
25
+ /// @dev Returns true iff this contract managed by its authority is active.
26
+ /// Queries the IAccessManaged.authority().
27
+ function isActive() external view returns (bool active);
17
28
 
18
29
  /// @dev retuns the object info relevant for registering for this contract
19
30
  /// IMPORTANT information returned by this function may only be used
@@ -9,17 +9,15 @@ import {ObjectType} from "../type/ObjectType.sol";
9
9
  import {RoleId} from "../type/RoleId.sol";
10
10
 
11
11
  interface IService is
12
+ IAccessManaged,
12
13
  IRegisterable,
13
- IVersionable,
14
- IAccessManaged
14
+ IVersionable
15
15
  {
16
- error ErrorServiceNotImplemented();
17
-
18
16
  /// @dev returns the domain for this service.
19
17
  /// In any GIF release only one service for any given domain may be deployed.
20
18
  function getDomain() external pure returns(ObjectType serviceDomain);
21
19
 
22
20
  /// @dev returns the GIF release specific role id.
23
21
  /// These role ids are used to authorize service to service communication.
24
- function getRoleId() external pure returns(RoleId serviceRoleId);
22
+ function getRoleId() external view returns(RoleId serviceRoleId);
25
23
  }
@@ -40,20 +40,12 @@ abstract contract InstanceLinkedComponent is
40
40
  IComponentService _componentService;
41
41
  }
42
42
 
43
- function lock() external onlyOwner {
44
- IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
45
- }
46
-
47
- function unlock() external onlyOwner {
48
- IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
49
- }
50
-
51
43
  /// @inheritdoc IInstanceLinkedComponent
52
44
  function withdrawFees(Amount amount)
53
45
  external
54
46
  virtual
55
- onlyOwner()
56
47
  restricted()
48
+ onlyOwner()
57
49
  returns (Amount withdrawnAmount)
58
50
  {
59
51
  return _withdrawFees(amount);
@@ -181,7 +173,7 @@ abstract contract InstanceLinkedComponent is
181
173
  info = _getInstanceReader().getComponentInfo(getNftId());
182
174
 
183
175
  // check if also registered with instance
184
- if (info.wallet != address(0)) {
176
+ if (address(info.tokenHandler) != address(0)) {
185
177
  return info;
186
178
  }
187
179
  }
@@ -202,12 +194,4 @@ abstract contract InstanceLinkedComponent is
202
194
  {
203
195
  return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
204
196
  }
205
-
206
-
207
- /// @dev returns the service address for the specified domain
208
- /// gets address via lookup from registry using the major version form the linked instance
209
- function _getServiceAddress(ObjectType domain) internal view returns (address service) {
210
- VersionPart release = _getInstanceLinkedComponentStorage()._instance.getRelease();
211
- return getRegistry().getServiceAddress(domain, release);
212
- }
213
197
  }
@@ -47,9 +47,9 @@ contract NftOwnable is
47
47
  }
48
48
 
49
49
 
50
- /// @dev initialization for upgradable contracts
51
- // used in _initializeRegisterable
52
- function _initializeNftOwnable(
50
+ /// @dev Initialization for upgradable contracts.
51
+ // used in __Registerable_init, ProxyManager._preDeployChecksAndSetup
52
+ function __NftOwnable_init(
53
53
  address registry,
54
54
  address initialOwner
55
55
  )
@@ -57,7 +57,7 @@ contract NftOwnable is
57
57
  virtual
58
58
  onlyInitializing()
59
59
  {
60
- _initializeRegistryLinked(registry);
60
+ __RegistryLinked_init(registry);
61
61
  _initializeERC165();
62
62
 
63
63
  if(initialOwner == address(0)) {
@@ -29,7 +29,7 @@ contract PolicyHolder is
29
29
  virtual
30
30
  onlyInitializing()
31
31
  {
32
- _initializeRegistryLinked(registryAddress);
32
+ __RegistryLinked_init(registryAddress);
33
33
  _initializeERC165();
34
34
  _registerInterface(type(IPolicyHolder).interfaceId);
35
35
  }