@etherisc/gif-next 0.0.2-b2910e7-757 → 0.0.2-b2e620f-736

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 (452) hide show
  1. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  3. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  5. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  7. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +148 -62
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  11. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  13. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
  15. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +82 -12
  18. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
  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 +77 -65
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +51 -39
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +117 -110
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +46 -48
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +38 -26
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +27 -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 +102 -42
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +127 -40
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +260 -185
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
  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 +117 -54
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -63
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +111 -48
  55. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +306 -147
  59. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  60. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  61. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  62. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -21
  63. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  64. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +75 -5
  65. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  66. package/artifacts/contracts/instance/Instance.sol/Instance.json +150 -41
  67. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +355 -99
  69. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
  71. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +549 -218
  73. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +87 -60
  75. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +20 -22
  77. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +403 -353
  79. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  80. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  81. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  83. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  84. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  85. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  86. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  88. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  90. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  92. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  97. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +68 -56
  100. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
  102. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +38 -26
  105. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  107. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +52 -40
  109. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +98 -83
  111. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +40 -22
  113. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  114. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -39
  115. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  116. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +127 -40
  117. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +102 -310
  119. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +33 -83
  121. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +38 -122
  123. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  124. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +38 -26
  125. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +120 -175
  127. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  128. package/artifacts/contracts/pool/Pool.sol/Pool.json +51 -39
  129. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  130. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  131. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +241 -302
  133. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +67 -45
  135. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  136. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +91 -65
  137. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +16 -22
  139. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  140. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +157 -130
  141. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  142. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
  143. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  144. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -187
  145. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +55 -65
  147. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  149. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  151. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +105 -55
  153. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  155. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +144 -117
  157. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  159. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +198 -181
  161. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  162. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  163. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +51 -45
  165. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  166. package/artifacts/contracts/product/PricingService.sol/PricingService.json +85 -78
  167. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +31 -33
  169. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  170. package/artifacts/contracts/product/Product.sol/Product.json +157 -130
  171. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  172. package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -77
  173. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +25 -19
  175. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  176. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  177. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  178. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +26 -2
  179. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  180. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  181. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  182. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  183. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  184. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/Registry.sol/Registry.json +64 -40
  186. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  187. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +250 -221
  188. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -44
  190. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  191. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +11 -13
  192. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  193. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  194. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  195. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  196. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  197. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +316 -50
  198. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  199. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  200. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  202. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  203. package/artifacts/contracts/shared/Component.sol/Component.json +51 -39
  204. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  205. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +119 -514
  206. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  207. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +38 -72
  208. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  209. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  210. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  211. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +435 -5
  212. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  213. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  215. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  218. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  219. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -26
  220. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +45 -327
  222. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +38 -26
  224. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  225. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  226. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  230. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  233. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  234. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  235. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +51 -39
  236. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  238. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  239. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  240. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  242. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  243. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  244. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  246. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  247. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  248. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  249. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
  252. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  253. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
  254. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  255. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
  256. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  257. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +38 -26
  258. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  259. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +56 -3
  260. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  261. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +33 -33
  262. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  263. package/artifacts/contracts/staking/Staking.sol/Staking.json +90 -57
  264. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  265. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  266. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  267. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +27 -19
  268. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  269. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
  270. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  271. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +87 -51
  272. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +18 -20
  274. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  276. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  277. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  278. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  279. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  281. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  284. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  286. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  288. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  290. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  291. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  292. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  294. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  295. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  296. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  298. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  300. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  302. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  304. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  306. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  308. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  311. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  313. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  317. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  319. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  321. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  323. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  324. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  325. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
  326. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  327. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  328. package/contracts/accounting/AccountingService.sol +262 -0
  329. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  330. package/contracts/accounting/IAccountingService.sol +45 -0
  331. package/contracts/authorization/AccessAdmin.sol +177 -84
  332. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  333. package/contracts/authorization/Authorization.sol +277 -229
  334. package/contracts/authorization/IAccessAdmin.sol +13 -7
  335. package/contracts/authorization/IAuthorization.sol +15 -1
  336. package/contracts/distribution/BasicDistribution.sol +4 -4
  337. package/contracts/distribution/BasicDistributionAuthorization.sol +21 -8
  338. package/contracts/distribution/Distribution.sol +27 -24
  339. package/contracts/distribution/DistributionService.sol +18 -15
  340. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  341. package/contracts/examples/fire/FirePool.sol +6 -2
  342. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  343. package/contracts/examples/fire/FireProduct.sol +8 -1
  344. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  345. package/contracts/examples/unpermissioned/SimpleDistribution.sol +6 -7
  346. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  347. package/contracts/examples/unpermissioned/SimplePool.sol +7 -9
  348. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  349. package/contracts/examples/unpermissioned/SimpleProduct.sol +32 -0
  350. package/contracts/instance/BundleSet.sol +42 -38
  351. package/contracts/instance/IInstance.sol +13 -7
  352. package/contracts/instance/IInstanceService.sol +7 -1
  353. package/contracts/instance/Instance.sol +41 -16
  354. package/contracts/instance/InstanceAdmin.sol +241 -76
  355. package/contracts/instance/InstanceAuthorizationV3.sol +53 -31
  356. package/contracts/instance/InstanceReader.sol +162 -32
  357. package/contracts/instance/InstanceService.sol +59 -35
  358. package/contracts/instance/InstanceServiceManager.sol +1 -1
  359. package/contracts/instance/InstanceStore.sol +13 -2
  360. package/contracts/instance/RiskSet.sol +118 -0
  361. package/contracts/instance/base/ObjectCounter.sol +1 -2
  362. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  363. package/contracts/instance/base/ObjectSet.sol +31 -33
  364. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  365. package/contracts/instance/module/IComponents.sol +3 -2
  366. package/contracts/instance/module/IRisk.sol +3 -0
  367. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  368. package/contracts/oracle/Oracle.sol +1 -1
  369. package/contracts/oracle/OracleService.sol +92 -74
  370. package/contracts/oracle/OracleServiceManager.sol +1 -1
  371. package/contracts/pool/BasicPoolAuthorization.sol +21 -13
  372. package/contracts/pool/BundleService.sol +35 -125
  373. package/contracts/pool/BundleServiceManager.sol +1 -1
  374. package/contracts/pool/IBundleService.sol +13 -38
  375. package/contracts/pool/IPoolService.sol +49 -56
  376. package/contracts/pool/Pool.sol +9 -9
  377. package/contracts/pool/PoolLib.sol +216 -0
  378. package/contracts/pool/PoolService.sol +323 -186
  379. package/contracts/pool/PoolServiceManager.sol +1 -1
  380. package/contracts/product/ApplicationService.sol +15 -15
  381. package/contracts/product/ApplicationServiceManager.sol +1 -1
  382. package/contracts/product/BasicProduct.sol +2 -0
  383. package/contracts/product/BasicProductAuthorization.sol +24 -10
  384. package/contracts/product/ClaimService.sol +157 -139
  385. package/contracts/product/ClaimServiceManager.sol +1 -1
  386. package/contracts/product/IApplicationService.sol +5 -2
  387. package/contracts/product/IClaimService.sol +14 -2
  388. package/contracts/product/IPolicyService.sol +23 -10
  389. package/contracts/product/IProductComponent.sol +4 -1
  390. package/contracts/product/PolicyService.sol +269 -257
  391. package/contracts/product/PolicyServiceLib.sol +65 -0
  392. package/contracts/product/PolicyServiceManager.sol +1 -1
  393. package/contracts/product/PricingService.sol +23 -19
  394. package/contracts/product/PricingServiceManager.sol +3 -3
  395. package/contracts/product/Product.sol +53 -7
  396. package/contracts/product/RiskService.sol +74 -25
  397. package/contracts/product/RiskServiceManager.sol +1 -1
  398. package/contracts/registry/ChainNft.sol +4 -2
  399. package/contracts/registry/IRegistry.sol +8 -15
  400. package/contracts/registry/IRelease.sol +26 -0
  401. package/contracts/registry/Registry.sol +7 -2
  402. package/contracts/registry/RegistryAdmin.sol +129 -237
  403. package/contracts/registry/RegistryService.sol +3 -3
  404. package/contracts/registry/RegistryServiceManager.sol +1 -1
  405. package/contracts/registry/ReleaseAdmin.sol +245 -0
  406. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  407. package/contracts/registry/ReleaseRegistry.sol +127 -101
  408. package/contracts/registry/ServiceAuthorizationV3.sol +163 -40
  409. package/contracts/registry/TokenRegistry.sol +6 -8
  410. package/contracts/shared/Component.sol +30 -38
  411. package/contracts/shared/ComponentService.sol +165 -302
  412. package/contracts/shared/ComponentServiceManager.sol +1 -1
  413. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  414. package/contracts/shared/ContractLib.sol +208 -9
  415. package/contracts/shared/IComponent.sol +3 -9
  416. package/contracts/shared/IComponentService.sol +2 -27
  417. package/contracts/shared/IRegisterable.sol +15 -4
  418. package/contracts/shared/IService.sol +3 -5
  419. package/contracts/shared/InstanceLinkedComponent.sol +3 -3
  420. package/contracts/shared/NftOwnable.sol +4 -4
  421. package/contracts/shared/PolicyHolder.sol +1 -1
  422. package/contracts/shared/Registerable.sol +45 -19
  423. package/contracts/shared/RegistryLinked.sol +1 -1
  424. package/contracts/shared/Service.sol +8 -27
  425. package/contracts/shared/TokenHandler.sol +40 -96
  426. package/contracts/staking/IStaking.sol +0 -8
  427. package/contracts/staking/IStakingService.sol +8 -0
  428. package/contracts/staking/StakeManagerLib.sol +1 -1
  429. package/contracts/staking/Staking.sol +34 -13
  430. package/contracts/staking/StakingReader.sol +1 -1
  431. package/contracts/staking/StakingService.sol +32 -55
  432. package/contracts/staking/StakingServiceManager.sol +5 -4
  433. package/contracts/type/Key32.sol +2 -2
  434. package/contracts/type/Key32Set.sol +62 -0
  435. package/contracts/type/NftId.sol +6 -0
  436. package/contracts/type/ObjectType.sol +48 -21
  437. package/contracts/type/RiskId.sol +23 -6
  438. package/contracts/type/RoleId.sol +24 -4
  439. package/contracts/type/Selector.sol +5 -0
  440. package/contracts/type/Timestamp.sol +0 -5
  441. package/contracts/type/UFixed.sol +9 -119
  442. package/contracts/type/Version.sol +15 -5
  443. package/contracts/upgradeability/ProxyManager.sol +1 -1
  444. package/package.json +1 -1
  445. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  446. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  447. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  448. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  449. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  450. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  451. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  452. package/contracts/instance/module/IAccess.sol +0 -46
@@ -17,7 +17,7 @@ contract ComponentServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  ComponentService svc = new ComponentService();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),
@@ -116,7 +116,7 @@ abstract contract ComponentVerifyingService is
116
116
  /// @dev returns the product nft id from the registry.
117
117
  /// assumes the component nft id is valid and represents a product linked component.
118
118
  function _getProductNftId(NftId componentNftId) internal view returns (NftId productNftId) {
119
- productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
119
+ productNftId = getRegistry().getParentNftId(componentNftId);
120
120
  }
121
121
 
122
122
 
@@ -2,28 +2,171 @@
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
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
+ }
9
25
 
10
26
  library ContractLib {
11
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.getParentNftId(componentNftId);
139
+ NftId instanceNftId = registry.getParentNftId(productNftId);
140
+ return registry.getObjectInfo(instanceNftId).objectAddress;
141
+ }
142
+
143
+
144
+ function isActiveToken(
145
+ address tokenRegistryAddress,
146
+ address token,
147
+ uint256 chainId,
148
+ VersionPart release
149
+ )
150
+ external
151
+ view
152
+ returns (bool)
153
+ {
154
+ return ITokenRegistryHelper(
155
+ tokenRegistryAddress).isActive(
156
+ chainId, token, release);
157
+ }
158
+
12
159
  function isPolicyHolder(address target) external view returns (bool) {
13
160
  return ERC165Checker.supportsInterface(target, type(IPolicyHolder).interfaceId);
14
161
  }
15
162
 
16
163
 
17
- function isAccessManaged(address target) external view returns (bool) {
18
- if (!isContract(target)) {
164
+ function isAuthority(address authority) public view returns (bool) {
165
+ if (!isContract(authority)) {
19
166
  return false;
20
167
  }
21
168
 
22
- (bool success, ) = target.staticcall(
23
- abi.encodeWithSelector(
24
- IAccessManaged.authority.selector));
25
-
26
- return success;
169
+ return supportsInterface(authority, type(IAccessManager).interfaceId);
27
170
  }
28
171
 
29
172
 
@@ -51,4 +194,60 @@ library ContractLib {
51
194
  function supportsInterface(address target, bytes4 interfaceId) public view returns (bool) {
52
195
  return ERC165Checker.supportsInterface(target, interfaceId);
53
196
  }
197
+
198
+
199
+ function _checkComponentActive(
200
+ address instance,
201
+ address target,
202
+ NftId componentNftId,
203
+ bool onlyActive
204
+ )
205
+ internal
206
+ view
207
+ {
208
+ if (onlyActive) {
209
+ if (IInstanceAdminHelper(
210
+ instance).getInstanceAdmin().isTargetLocked(
211
+ target)
212
+ ) {
213
+ revert ErrorContractLibComponentInactive(componentNftId);
214
+ }
215
+ }
216
+ }
217
+
218
+
219
+ function _getInstance(
220
+ IRegistry registry,
221
+ IRegistry.ObjectInfo memory info
222
+ )
223
+ internal
224
+ view
225
+ returns (address instance)
226
+ {
227
+ if (info.objectType == PRODUCT()) {
228
+ return registry.getObjectAddress(
229
+ info.parentNftId);
230
+ }
231
+
232
+ return registry.getObjectAddress(
233
+ registry.getObjectInfo(
234
+ info.parentNftId).parentNftId);
235
+ }
236
+
237
+
238
+ function _getObjectInfo(
239
+ IRegistry registry,
240
+ address target
241
+ )
242
+ internal
243
+ view
244
+ returns (IRegistry.ObjectInfo memory info)
245
+ {
246
+ NftId componentNftId = registry.getNftIdForAddress(target);
247
+ if (componentNftId.eqz()) {
248
+ revert ErrorContractLibNotRegistered(target);
249
+ }
250
+
251
+ info = registry.getObjectInfo(componentNftId);
252
+ }
54
253
  }
@@ -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,18 +12,18 @@ 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();
@@ -33,11 +32,6 @@ interface IComponent is
33
32
  event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
34
33
  event LogComponentTokenHandlerApproved(address tokenHandler, address token, Amount limit, bool isMaxAmount);
35
34
 
36
- /// @dev Approves token hanlder to spend up to the specified amount of tokens.
37
- /// Reverts if component wallet is not token handler itself.
38
- /// Only component owner (nft holder) is authorizes to call this function.
39
- function approveTokenHandler(IERC20Metadata token, Amount spendingLimitAmount) external;
40
-
41
35
  /// @dev returns the name of this component
42
36
  /// to successfully register the component with an instance the name MUST be unique in the linked instance
43
37
  function getName() external view returns (string memory name);
@@ -5,7 +5,6 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER
5
5
 
6
6
  import {Amount} from "../type/Amount.sol";
7
7
  import {Fee} from "../type/Fee.sol";
8
- import {InstanceStore} from "../instance/InstanceStore.sol";
9
8
  import {IService} from "../shared/IService.sol";
10
9
  import {NftId} from "../type/NftId.sol";
11
10
  import {ObjectType} from "../type/ObjectType.sol";
@@ -61,25 +60,18 @@ interface IComponentService is
61
60
  UFixed newFractionalFee,
62
61
  uint256 newFixedFee
63
62
  );
64
-
63
+
65
64
  //-------- component ----------------------------------------------------//
66
65
 
67
66
  /// @dev Approves the callers token handler to spend up to the specified amount of tokens.
68
67
  /// Reverts if the component's token handler wallet is not the token handler itself.
69
68
  function approveTokenHandler(IERC20Metadata token, Amount amount) external;
70
69
 
71
- /// @dev Approves the staking token handler.
72
- /// Reverts if the staking token handler wallet is not the token handler itself.
73
- function approveStakingTokenHandler(IERC20Metadata token, Amount amount) external;
74
-
75
70
  /// @dev Sets the components associated wallet address
76
71
  function setWallet(address newWallet) external;
77
72
 
78
- /// @dev Locks/Unlocks the given component - call from instanceService
79
- function setLockedFromInstance(address componentAddress, bool locked) external;
80
-
81
73
  /// @dev Locks/Unlocks the given component - call from component
82
- function setLockedFromComponent(address componentAddress, bool locked) external;
74
+ function setComponentLocked(address componentAddress, bool locked) external;
83
75
 
84
76
  /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
85
77
  /// @param withdrawAmount the amount to withdraw
@@ -99,9 +91,6 @@ interface IComponentService is
99
91
  Fee memory processingFee // product fee on payout amounts
100
92
  ) external;
101
93
 
102
- function increaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount) external;
103
- function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount) external;
104
-
105
94
  //-------- distribution -------------------------------------------------//
106
95
 
107
96
  function setDistributionFees(
@@ -109,13 +98,6 @@ interface IComponentService is
109
98
  Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
110
99
  ) external;
111
100
 
112
- function increaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
113
- function decreaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
114
-
115
- //-------- distributor --------------------------------------------------//
116
- function increaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
117
- function decreaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
118
-
119
101
  //-------- pool ---------------------------------------------------------//
120
102
 
121
103
  function setPoolFees(
@@ -124,11 +106,4 @@ interface IComponentService is
124
106
  Fee memory performanceFee // pool fee on profits from capital investors
125
107
  ) external;
126
108
 
127
- function increasePoolBalance(InstanceStore instanceStore, NftId poolNftId, Amount amount, Amount feeAmount) external;
128
- function decreasePoolBalance(InstanceStore instanceStore, NftId poolNftId, Amount amount, Amount feeAmount) external;
129
-
130
- //-------- bundle -------------------------------------------------------//
131
- function increaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
132
- function decreaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
133
-
134
109
  }
@@ -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
  }
@@ -20,7 +20,7 @@ import {NftId} from "../type/NftId.sol";
20
20
  import {ObjectType, COMPONENT, INSTANCE, PRODUCT} from "../type/ObjectType.sol";
21
21
  import {VersionPart} from "../type/Version.sol";
22
22
  import {RoleId, RoleIdLib} from "../type/RoleId.sol";
23
- import {IAccess} from "../instance/module/IAccess.sol";
23
+ import {IAccess} from "../authorization/IAccess.sol";
24
24
  import {TokenHandler} from "../shared/TokenHandler.sol";
25
25
  import {VersionPart} from "../type/Version.sol";
26
26
 
@@ -44,8 +44,8 @@ abstract contract InstanceLinkedComponent is
44
44
  function withdrawFees(Amount amount)
45
45
  external
46
46
  virtual
47
- onlyOwner()
48
47
  restricted()
48
+ onlyOwner()
49
49
  returns (Amount withdrawnAmount)
50
50
  {
51
51
  return _withdrawFees(amount);
@@ -134,7 +134,7 @@ abstract contract InstanceLinkedComponent is
134
134
 
135
135
  // if not product parent is product, and parent of product is instance
136
136
  IRegistry registry = _checkAndGetRegistry(registryAddress, parentNftId, PRODUCT());
137
- return registry.getObjectInfo(parentNftId).parentNftId;
137
+ return registry.getParentNftId(parentNftId);
138
138
  }
139
139
 
140
140
  /// @dev checks the and gets registry.
@@ -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
  }
@@ -1,6 +1,11 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+
7
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
+ import {ContractLib} from "../shared/ContractLib.sol";
4
9
  import {NftId, NftIdLib} from "../type/NftId.sol";
5
10
  import {NftOwnable} from "../shared/NftOwnable.sol";
6
11
  import {ObjectType} from "../type/ObjectType.sol";
@@ -8,24 +13,33 @@ import {VersionPart, VersionPartLib} from "../type/Version.sol";
8
13
 
9
14
  import {IRegistry} from "../registry/IRegistry.sol";
10
15
  import {IRegisterable} from "./IRegisterable.sol";
16
+ import {IRelease} from "../registry/IRelease.sol";
11
17
 
12
- contract Registerable is
18
+ abstract contract Registerable is
19
+ AccessManagedUpgradeable,
13
20
  NftOwnable,
14
21
  IRegisterable
15
22
  {
16
- uint256 public constant GIF_RELEASE = 3;
17
-
18
23
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
19
24
  bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
20
25
 
21
26
  struct RegisterableStorage {
22
27
  NftId _parentNftId;
23
28
  ObjectType _objectType;
29
+ VersionPart _release;
24
30
  bool _isInterceptor;
25
31
  bytes _data;
26
32
  }
27
33
 
28
- function _initializeRegisterable(
34
+ modifier onlyActive() {
35
+ if (!isActive()) {
36
+ revert ErrorRegisterableNotActive();
37
+ }
38
+ _;
39
+ }
40
+
41
+ function __Registerable_init(
42
+ address authority,
29
43
  address registry,
30
44
  NftId parentNftId,
31
45
  ObjectType objectType,
@@ -37,25 +51,34 @@ contract Registerable is
37
51
  virtual
38
52
  onlyInitializing()
39
53
  {
40
- _initializeNftOwnable(
41
- registry,
42
- initialOwner);
43
-
44
- RegisterableStorage storage $;
45
- assembly {
46
- $.slot := REGISTERABLE_LOCATION_V1
54
+ if (!ContractLib.isAuthority(authority)) {
55
+ revert ErrorAuthorityInvalid(authority);
47
56
  }
48
57
 
58
+ __AccessManaged_init(authority);
59
+ __NftOwnable_init(registry, initialOwner);
60
+
61
+ RegisterableStorage storage $ = _getRegisterableStorage();
49
62
  $._parentNftId = parentNftId;
50
63
  $._objectType = objectType;
64
+ $._release = AccessManagerCloneable(authority).getRelease();
51
65
  $._isInterceptor = isInterceptor;
52
66
  $._data = data;
67
+
68
+ _registerInterface(type(IAccessManaged).interfaceId);
53
69
  }
54
70
 
55
71
 
56
72
  /// @inheritdoc IRegisterable
57
- function getRelease() public virtual pure returns (VersionPart release) {
58
- return VersionPartLib.toVersionPart(GIF_RELEASE);
73
+ function isActive() public virtual view returns (bool active) {
74
+ return !AccessManagerCloneable(authority()).isTargetClosed(address(this));
75
+ }
76
+
77
+
78
+ /// @inheritdoc IRelease
79
+ function getRelease() public virtual view returns (VersionPart release) {
80
+ RegisterableStorage storage $ = _getRegisterableStorage();
81
+ return $._release;
59
82
  }
60
83
 
61
84
 
@@ -66,12 +89,8 @@ contract Registerable is
66
89
  virtual
67
90
  returns (IRegistry.ObjectInfo memory info)
68
91
  {
69
- RegisterableStorage storage $;
70
- assembly {
71
- $.slot := REGISTERABLE_LOCATION_V1
72
- }
73
-
74
- info = IRegistry.ObjectInfo(
92
+ RegisterableStorage storage $ = _getRegisterableStorage();
93
+ return IRegistry.ObjectInfo(
75
94
  NftIdLib.zero(),
76
95
  $._parentNftId,
77
96
  $._objectType,
@@ -80,4 +99,11 @@ contract Registerable is
80
99
  getOwner(),
81
100
  $._data);
82
101
  }
102
+
103
+
104
+ function _getRegisterableStorage() private pure returns (RegisterableStorage storage $) {
105
+ assembly {
106
+ $.slot := REGISTERABLE_LOCATION_V1
107
+ }
108
+ }
83
109
  }
@@ -17,7 +17,7 @@ contract RegistryLinked is
17
17
 
18
18
  /// @dev initialization for upgradable contracts
19
19
  // used in _initializeRegisterable
20
- function _initializeRegistryLinked(
20
+ function __RegistryLinked_init(
21
21
  address registry
22
22
  )
23
23
  internal