@etherisc/gif-next 0.0.2-ba07940-332 → 0.0.2-ba5b255-091

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 (479) 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 +452 -243
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +222 -21
  18. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +348 -184
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +100 -13
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +92 -285
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +207 -33
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +44 -162
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +309 -168
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +89 -51
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +31 -131
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +177 -67
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +93 -139
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +188 -46
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +247 -287
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +207 -33
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +161 -244
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +76 -155
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -131
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +288 -226
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +192 -30
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +177 -12
  70. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/Instance.sol/Instance.json +221 -67
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +775 -306
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +226 -46
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +713 -201
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +203 -85
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -34
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +421 -371
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  88. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  97. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  102. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +66 -167
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +189 -35
  107. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +36 -71
  110. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  112. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +50 -103
  114. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +49 -102
  120. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +188 -46
  122. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +127 -331
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +53 -87
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +56 -136
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +36 -95
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +163 -226
  132. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  133. package/artifacts/contracts/pool/Pool.sol/Pool.json +49 -126
  134. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  135. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  137. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -363
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -51
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  141. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +165 -57
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +54 -24
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  145. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +155 -193
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  147. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +207 -33
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  149. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -179
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  151. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +74 -64
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +103 -10
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +48 -3
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  161. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +142 -162
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  163. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +58 -7
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  165. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +211 -180
  166. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  167. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  168. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +76 -50
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  171. package/artifacts/contracts/product/PricingService.sol/PricingService.json +120 -76
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
  174. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  175. package/artifacts/contracts/product/Product.sol/Product.json +155 -193
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  177. package/artifacts/contracts/product/RiskService.sol/RiskService.json +143 -77
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  179. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -24
  180. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  182. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  185. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  186. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  187. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  188. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  189. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/Registry.sol/Registry.json +88 -40
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +559 -415
  193. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  194. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
  199. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  200. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1966 -0
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +332 -54
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  206. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  208. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  209. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  210. package/artifacts/contracts/shared/Component.sol/Component.json +49 -88
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +228 -440
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +65 -63
  215. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +509 -4
  219. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +36 -57
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +123 -262
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +36 -71
  231. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  232. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  233. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  237. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  241. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  243. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +49 -102
  244. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  245. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  246. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  247. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  248. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  250. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  251. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  252. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  253. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  254. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  255. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  256. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  257. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  260. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  261. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  262. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  263. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  264. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  265. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +116 -90
  266. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  267. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +127 -3
  268. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  269. package/artifacts/contracts/staking/Staking.sol/Staking.json +193 -193
  270. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  272. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  274. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +61 -45
  276. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +30 -57
  278. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +180 -49
  280. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +50 -24
  282. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +143 -129
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  285. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +33 -23
  286. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  292. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  294. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  296. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  298. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  299. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  300. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  302. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  303. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  304. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  306. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  308. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  310. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  312. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  314. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  316. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  319. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  321. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  325. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  327. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  329. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  331. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  332. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  333. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  334. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  336. package/contracts/accounting/AccountingService.sol +262 -0
  337. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  338. package/contracts/accounting/IAccountingService.sol +45 -0
  339. package/contracts/authorization/AccessAdmin.sol +301 -192
  340. package/contracts/authorization/AccessAdminLib.sol +183 -0
  341. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  342. package/contracts/authorization/Authorization.sol +307 -231
  343. package/contracts/authorization/IAccessAdmin.sol +69 -36
  344. package/contracts/authorization/IAuthorization.sol +21 -1
  345. package/contracts/distribution/BasicDistribution.sol +18 -16
  346. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  347. package/contracts/distribution/Distribution.sol +36 -77
  348. package/contracts/distribution/DistributionService.sol +84 -53
  349. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  350. package/contracts/distribution/IDistributionComponent.sol +0 -9
  351. package/contracts/distribution/IDistributionService.sol +22 -20
  352. package/contracts/examples/fire/FirePool.sol +10 -11
  353. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  354. package/contracts/examples/fire/FireProduct.sol +16 -11
  355. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  356. package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
  357. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  358. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  359. package/contracts/examples/unpermissioned/SimplePool.sol +26 -5
  360. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  361. package/contracts/examples/unpermissioned/SimpleProduct.sol +36 -8
  362. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  363. package/contracts/instance/BundleSet.sol +42 -38
  364. package/contracts/instance/IInstance.sol +61 -18
  365. package/contracts/instance/IInstanceService.sol +31 -9
  366. package/contracts/instance/Instance.sol +107 -53
  367. package/contracts/instance/InstanceAdmin.sol +310 -115
  368. package/contracts/instance/InstanceAuthorizationV3.sol +99 -40
  369. package/contracts/instance/InstanceReader.sol +209 -33
  370. package/contracts/instance/InstanceService.sol +205 -115
  371. package/contracts/instance/InstanceServiceManager.sol +1 -1
  372. package/contracts/instance/InstanceStore.sol +13 -2
  373. package/contracts/instance/RiskSet.sol +118 -0
  374. package/contracts/instance/base/ObjectCounter.sol +1 -2
  375. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  376. package/contracts/instance/base/ObjectSet.sol +31 -33
  377. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  378. package/contracts/instance/module/IComponents.sol +3 -4
  379. package/contracts/instance/module/IDistribution.sol +5 -2
  380. package/contracts/instance/module/IPolicy.sol +2 -1
  381. package/contracts/instance/module/IRisk.sol +3 -0
  382. package/contracts/oracle/BasicOracle.sol +1 -3
  383. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  384. package/contracts/oracle/Oracle.sol +1 -3
  385. package/contracts/oracle/OracleService.sol +92 -73
  386. package/contracts/oracle/OracleServiceManager.sol +1 -1
  387. package/contracts/pool/BasicPool.sol +19 -2
  388. package/contracts/pool/BasicPoolAuthorization.sol +22 -14
  389. package/contracts/pool/BundleService.sol +88 -154
  390. package/contracts/pool/BundleServiceManager.sol +1 -1
  391. package/contracts/pool/IBundleService.sol +15 -43
  392. package/contracts/pool/IPoolComponent.sol +1 -5
  393. package/contracts/pool/IPoolService.sol +58 -62
  394. package/contracts/pool/Pool.sol +95 -81
  395. package/contracts/pool/PoolLib.sol +216 -0
  396. package/contracts/pool/PoolService.sol +418 -211
  397. package/contracts/pool/PoolServiceManager.sol +1 -1
  398. package/contracts/product/ApplicationService.sol +39 -16
  399. package/contracts/product/ApplicationServiceManager.sol +1 -1
  400. package/contracts/product/BasicProduct.sol +2 -2
  401. package/contracts/product/BasicProductAuthorization.sol +24 -10
  402. package/contracts/product/ClaimService.sol +177 -136
  403. package/contracts/product/ClaimServiceManager.sol +1 -1
  404. package/contracts/product/IApplicationService.sol +8 -2
  405. package/contracts/product/IClaimService.sol +14 -2
  406. package/contracts/product/IPolicyService.sol +26 -11
  407. package/contracts/product/IPricingService.sol +1 -0
  408. package/contracts/product/IProductComponent.sol +4 -1
  409. package/contracts/product/IRiskService.sol +7 -7
  410. package/contracts/product/PolicyService.sol +244 -263
  411. package/contracts/product/PolicyServiceLib.sol +65 -0
  412. package/contracts/product/PolicyServiceManager.sol +1 -1
  413. package/contracts/product/PricingService.sol +32 -20
  414. package/contracts/product/PricingServiceManager.sol +3 -3
  415. package/contracts/product/Product.sol +59 -23
  416. package/contracts/product/RiskService.sol +89 -31
  417. package/contracts/product/RiskServiceManager.sol +1 -1
  418. package/contracts/registry/ChainNft.sol +4 -2
  419. package/contracts/registry/IRegistry.sol +10 -15
  420. package/contracts/registry/IRelease.sol +26 -0
  421. package/contracts/registry/Registry.sol +16 -3
  422. package/contracts/registry/RegistryAdmin.sol +145 -335
  423. package/contracts/registry/RegistryAuthorization.sol +267 -0
  424. package/contracts/registry/RegistryService.sol +3 -3
  425. package/contracts/registry/RegistryServiceManager.sol +1 -1
  426. package/contracts/registry/ReleaseAdmin.sol +253 -0
  427. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  428. package/contracts/registry/ReleaseRegistry.sol +150 -134
  429. package/contracts/registry/ServiceAuthorizationV3.sol +180 -40
  430. package/contracts/registry/TokenRegistry.sol +6 -8
  431. package/contracts/shared/Component.sol +52 -107
  432. package/contracts/shared/ComponentService.sol +264 -291
  433. package/contracts/shared/ComponentServiceManager.sol +1 -1
  434. package/contracts/shared/ComponentVerifyingService.sol +16 -14
  435. package/contracts/shared/ContractLib.sol +246 -3
  436. package/contracts/shared/IComponent.sol +1 -17
  437. package/contracts/shared/IComponentService.sol +18 -26
  438. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  439. package/contracts/shared/IRegisterable.sol +15 -4
  440. package/contracts/shared/IService.sol +3 -5
  441. package/contracts/shared/InitializableERC165.sol +9 -1
  442. package/contracts/shared/InstanceLinkedComponent.sol +4 -22
  443. package/contracts/shared/NftOwnable.sol +10 -6
  444. package/contracts/shared/PolicyHolder.sol +1 -1
  445. package/contracts/shared/Registerable.sol +41 -20
  446. package/contracts/shared/RegistryLinked.sol +7 -13
  447. package/contracts/shared/Service.sol +8 -27
  448. package/contracts/shared/TokenHandler.sol +275 -72
  449. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  450. package/contracts/staking/IStaking.sol +17 -10
  451. package/contracts/staking/IStakingService.sol +16 -1
  452. package/contracts/staking/Staking.sol +95 -46
  453. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
  454. package/contracts/staking/StakingReader.sol +6 -16
  455. package/contracts/staking/StakingService.sol +85 -14
  456. package/contracts/staking/StakingServiceManager.sol +5 -4
  457. package/contracts/staking/StakingStore.sol +2 -1
  458. package/contracts/type/Key32.sol +2 -2
  459. package/contracts/type/Key32Set.sol +62 -0
  460. package/contracts/type/NftId.sol +6 -0
  461. package/contracts/type/ObjectType.sol +53 -35
  462. package/contracts/type/RiskId.sol +26 -8
  463. package/contracts/type/RoleId.sol +27 -4
  464. package/contracts/type/Selector.sol +5 -0
  465. package/contracts/type/Timestamp.sol +0 -5
  466. package/contracts/type/UFixed.sol +9 -119
  467. package/contracts/type/Version.sol +54 -5
  468. package/contracts/upgradeability/ProxyManager.sol +1 -1
  469. package/package.json +4 -4
  470. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  471. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  472. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  473. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  474. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  475. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  476. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  477. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  478. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  479. package/contracts/instance/module/IAccess.sol +0 -46
@@ -2,16 +2,23 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {
5
- ALL, REGISTRY, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
5
+ ALL, ACCOUNTING, REGISTRY, RISK, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
6
6
  } from "../../contracts/type/ObjectType.sol";
7
7
 
8
8
  import {IAccess} from "../authorization/IAccess.sol";
9
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
10
+ import {IApplicationService} from "../product/IApplicationService.sol";
9
11
  import {IBundleService} from "../pool/IBundleService.sol";
12
+ import {IClaimService} from "../product/IClaimService.sol";
13
+ import {IComponentService} from "../shared/IComponentService.sol";
10
14
  import {IDistributionService} from "../distribution/IDistributionService.sol";
11
15
  import {IInstanceService} from "../instance/IInstanceService.sol";
16
+ import {IOracleService} from "../oracle/IOracleService.sol";
17
+ import {IPolicyService} from "../product/IPolicyService.sol";
12
18
  import {IPoolService} from "../pool/IPoolService.sol";
13
19
  import {IStakingService} from "../staking/IStakingService.sol";
14
20
  import {IRegistryService} from "./IRegistryService.sol";
21
+ import {IRiskService} from "../product/IRiskService.sol";
15
22
  import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
16
23
 
17
24
 
@@ -30,16 +37,17 @@ contract ServiceAuthorizationV3
30
37
  _authorizeDomain(REGISTRY(), address(1));
31
38
  _authorizeDomain(STAKING(), address(2));
32
39
  _authorizeDomain(INSTANCE(), address(3));
33
- _authorizeDomain(COMPONENT(), address(4));
34
- _authorizeDomain(DISTRIBUTION(), address(5));
35
- _authorizeDomain(PRICE(), address(6));
36
- _authorizeDomain(BUNDLE(), address(7));
37
- _authorizeDomain(POOL(), address(8));
38
- _authorizeDomain(ORACLE(), address(9));
39
- _authorizeDomain(PRODUCT(), address(10));
40
- _authorizeDomain(POLICY(), address(11));
41
- _authorizeDomain(CLAIM(), address(12));
42
- _authorizeDomain(APPLICATION(), address(13));
40
+ _authorizeDomain(ACCOUNTING(), address(4));
41
+ _authorizeDomain(COMPONENT(), address(5));
42
+ _authorizeDomain(DISTRIBUTION(), address(6));
43
+ _authorizeDomain(PRICE(), address(7));
44
+ _authorizeDomain(BUNDLE(), address(8));
45
+ _authorizeDomain(POOL(), address(9));
46
+ _authorizeDomain(ORACLE(), address(10));
47
+ _authorizeDomain(RISK(), address(11));
48
+ _authorizeDomain(POLICY(), address(12));
49
+ _authorizeDomain(CLAIM(), address(13));
50
+ _authorizeDomain(APPLICATION(), address(14));
43
51
  }
44
52
 
45
53
 
@@ -50,10 +58,16 @@ contract ServiceAuthorizationV3
50
58
  _setupIRegistryServiceAuthorization();
51
59
  _setupStakingServiceAuthorization();
52
60
  _setupInstanceServiceAuthorization();
61
+ _setupAccountingServiceAuthorization();
53
62
  _setupComponentServiceAuthorization();
63
+ _setupClaimServiceAuthorization();
64
+ _setupRiskServiceAuthorization();
54
65
  _setupDistributionServiceAuthorization();
55
66
  _setupPoolServiceAuthorization();
56
67
  _setupBundleServiceAuthorization();
68
+ _setupOracleServiceAuthorization();
69
+ _setupApplicationServiceAuthorization();
70
+ _setupPolicyServiceAuthorization();
57
71
  }
58
72
 
59
73
 
@@ -96,6 +110,7 @@ contract ServiceAuthorizationV3
96
110
  _authorize(functions, IStakingService.createInstanceTarget.selector, "createInstanceTarget");
97
111
  _authorize(functions, IStakingService.setInstanceLockingPeriod.selector, "setInstanceLockingPeriod");
98
112
  _authorize(functions, IStakingService.setInstanceRewardRate.selector, "setInstanceRewardRate");
113
+ _authorize(functions, IStakingService.setInstanceMaxStakedAmount.selector, "setInstanceMaxStakedAmount");
99
114
  _authorize(functions, IStakingService.refillInstanceRewardReserves.selector, "refillInstanceRewardReserves");
100
115
  _authorize(functions, IStakingService.withdrawInstanceRewardReserves.selector, "withdrawInstanceRewardReserves");
101
116
 
@@ -113,11 +128,54 @@ contract ServiceAuthorizationV3
113
128
  function _setupInstanceServiceAuthorization()
114
129
  internal
115
130
  {
116
- // TODO cleanup
117
- // IAccess.FunctionInfo[] storage functions;
131
+ IAccess.FunctionInfo[] storage functions;
132
+ functions = _authorizeForService(INSTANCE(), ALL());
133
+ _authorize(functions, IInstanceService.createRole.selector, "createRole");
134
+ _authorize(functions, IInstanceService.grantRole.selector, "grantRole");
135
+ _authorize(functions, IInstanceService.revokeRole.selector, "revokeRole");
136
+
137
+ _authorize(functions, IInstanceService.setInstanceLocked.selector, "setInstanceLocked");
138
+ _authorize(functions, IInstanceService.setTargetLocked.selector, "setTargetLocked");
139
+
140
+ _authorize(functions, IInstanceService.createInstance.selector, "createInstance");
141
+ _authorize(functions, IInstanceService.upgradeInstanceReader.selector, "upgradeInstanceReader");
142
+ _authorize(functions, IInstanceService.upgradeMasterInstanceReader.selector, "upgradeMasterInstanceReader");
143
+
144
+ _authorize(functions, IInstanceService.setStakingLockingPeriod.selector, "setStakingLockingPeriod");
145
+ _authorize(functions, IInstanceService.setStakingRewardRate.selector, "setStakingRewardRate");
146
+ _authorize(functions, IInstanceService.setStakingMaxAmount.selector, "setStakingMaxAmount");
147
+ _authorize(functions, IInstanceService.refillStakingRewardReserves.selector, "refillStakingRewardReserves");
148
+ _authorize(functions, IInstanceService.withdrawStakingRewardReserves.selector, "withdrawStakingRewardReserves");
149
+ }
150
+
151
+ /// @dev Accounting service function authorization.
152
+ function _setupAccountingServiceAuthorization()
153
+ internal
154
+ {
155
+ IAccess.FunctionInfo[] storage functions;
156
+
157
+ functions = _authorizeForService(ACCOUNTING(), BUNDLE());
158
+ _authorize(functions, IAccountingService.increaseBundleBalance.selector, "increaseBundleBalance");
159
+ _authorize(functions, IAccountingService.decreaseBundleBalance.selector, "decreaseBundleBalance");
160
+
161
+ functions = _authorizeForService(ACCOUNTING(), COMPONENT());
162
+ _authorize(functions, IAccountingService.decreaseComponentFees.selector, "decreaseComponentFees");
163
+
164
+ functions = _authorizeForService(ACCOUNTING(), DISTRIBUTION());
165
+ _authorize(functions, IAccountingService.increaseDistributionBalance.selector, "increaseDistributionBalance");
166
+ _authorize(functions, IAccountingService.decreaseDistributionBalance.selector, "decreaseDistributionBalance");
167
+ _authorize(functions, IAccountingService.increaseDistributorBalance.selector, "increaseDistributorBalance");
168
+ _authorize(functions, IAccountingService.decreaseDistributorBalance.selector, "decreaseDistributorBalance");
169
+
170
+ functions = _authorizeForService(ACCOUNTING(), POLICY());
171
+ _authorize(functions, IAccountingService.increaseProductFees.selector, "increaseProductFees");
172
+
173
+ functions = _authorizeForService(ACCOUNTING(), POOL());
174
+ _authorize(functions, IAccountingService.increasePoolBalance.selector, "increasePoolBalance");
175
+ _authorize(functions, IAccountingService.decreasePoolBalance.selector, "decreasePoolBalance");
176
+ _authorize(functions, IAccountingService.increaseBundleBalanceForPool.selector, "increaseBundleBalanceForPool");
177
+ _authorize(functions, IAccountingService.decreaseBundleBalanceForPool.selector, "decreaseBundleBalanceForPool");
118
178
 
119
- // functions = _authorizeForService(INSTANCE(), COMPONENT());
120
- // _authorize(functions, IInstanceService.initializeAuthorization.selector, "initializeAuthorization");
121
179
  }
122
180
 
123
181
 
@@ -125,39 +183,64 @@ contract ServiceAuthorizationV3
125
183
  function _setupComponentServiceAuthorization()
126
184
  internal
127
185
  {
128
- // TODO cleanup
129
- // authz.authorizations = new DomainAuthorization[](4);
130
-
131
- // authz.authorizations[0].domain = POLICY();
132
- // _functions = new IAccessAdmin.Function[](1);
133
- // __authorize(ComponentService.increaseProductFees.selector, "increaseProductFees"));
134
- // authz.authorizations[0].functions = _functions;
135
-
136
- // authz.authorizations[1].domain = DISTRIBUTION();
137
- // _functions = new IAccessAdmin.Function[](1);
138
- // __authorize(ComponentService.increaseDistributionBalance.selector, "increaseDistributionBalance"));
139
- // authz.authorizations[1].functions = _functions;
140
-
141
- // authz.authorizations[2].domain = POOL();
142
- // _functions = new IAccessAdmin.Function[](1);
143
- // __authorize(ComponentService.increasePoolBalance.selector, "increasePoolBalance"));
144
- // authz.authorizations[2].functions = _functions;
145
-
146
- // authz.authorizations[3].domain = BUNDLE();
147
- // _functions = new IAccessAdmin.Function[](1);
148
- // __authorize(ComponentService.increaseBundleBalance.selector, "increaseBundleBalance"));
149
- // authz.authorizations[3].functions = _functions;
186
+ IAccess.FunctionInfo[] storage functions;
187
+
188
+ functions = _authorizeForService(COMPONENT(), ALL());
189
+ _authorize(functions, IComponentService.registerComponent.selector, "registerComponent");
190
+ _authorize(functions, IComponentService.approveTokenHandler.selector, "approveTokenHandler");
191
+ _authorize(functions, IComponentService.setWallet.selector, "setWallet");
192
+ _authorize(functions, IComponentService.setLocked.selector, "setLocked");
193
+ _authorize(functions, IComponentService.withdrawFees.selector, "withdrawFees");
194
+ _authorize(functions, IComponentService.registerProduct.selector, "registerProduct");
195
+ _authorize(functions, IComponentService.setProductFees.selector, "setProductFees");
196
+ _authorize(functions, IComponentService.setDistributionFees.selector, "setDistributionFees");
197
+ _authorize(functions, IComponentService.setPoolFees.selector, "setPoolFees");
198
+
150
199
  }
151
200
 
152
201
  /// @dev Distribution service function authorization.
153
- function _setupDistributionServiceAuthorization()
202
+ function _setupRiskServiceAuthorization()
203
+ internal
204
+ {
205
+ IAccess.FunctionInfo[] storage functions;
206
+ functions = _authorizeForService(RISK(), ALL());
207
+ _authorize(functions, IRiskService.createRisk.selector, "createRisk");
208
+ _authorize(functions, IRiskService.updateRisk.selector, "updateRisk");
209
+ _authorize(functions, IRiskService.updateRiskState.selector, "updateRiskState");
210
+ }
211
+
212
+ /// @dev Distribution service function authorization.
213
+ function _setupClaimServiceAuthorization()
154
214
  internal
155
215
  {
156
216
  IAccess.FunctionInfo[] storage functions;
217
+ functions = _authorizeForService(CLAIM(), ALL());
218
+ _authorize(functions, IClaimService.submit.selector, "submit");
219
+ _authorize(functions, IClaimService.confirm.selector, "confirm");
220
+ _authorize(functions, IClaimService.decline.selector, "decline");
221
+ _authorize(functions, IClaimService.revoke.selector, "revoke");
222
+ _authorize(functions, IClaimService.close.selector, "close");
223
+ _authorize(functions, IClaimService.createPayoutForBeneficiary.selector, "createPayoutForBeneficiary");
224
+ _authorize(functions, IClaimService.createPayout.selector, "createPayout");
225
+ _authorize(functions, IClaimService.processPayout.selector, "processPayout");
226
+ _authorize(functions, IClaimService.cancelPayout.selector, "cancelPayout");
227
+ }
157
228
 
229
+ /// @dev Distribution service function authorization.
230
+ function _setupDistributionServiceAuthorization()
231
+ internal
232
+ {
233
+ IAccess.FunctionInfo[] storage functions;
158
234
  functions = _authorizeForService(DISTRIBUTION(), POLICY());
159
235
  _authorize(functions, IDistributionService.processSale.selector, "processSale");
160
236
  _authorize(functions, IDistributionService.processReferral.selector, "processReferral");
237
+
238
+ functions = _authorizeForService(DISTRIBUTION(), ALL());
239
+ _authorize(functions, IDistributionService.createDistributorType.selector, "createDistributorType");
240
+ _authorize(functions, IDistributionService.createDistributor.selector, "createDistributor");
241
+ _authorize(functions, IDistributionService.changeDistributorType.selector, "changeDistributorType");
242
+ _authorize(functions, IDistributionService.createReferral.selector, "createReferral");
243
+ _authorize(functions, IDistributionService.withdrawCommission.selector, "withdrawCommission");
161
244
  }
162
245
 
163
246
 
@@ -174,6 +257,16 @@ contract ServiceAuthorizationV3
174
257
 
175
258
  functions = _authorizeForService(POOL(), CLAIM());
176
259
  _authorize(functions, IPoolService.processPayout.selector, "processPayout");
260
+
261
+ functions = _authorizeForService(POOL(), ALL());
262
+ _authorize(functions, IPoolService.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
263
+ _authorize(functions, IPoolService.closeBundle.selector, "closeBundle");
264
+ _authorize(functions, IPoolService.processFundedClaim.selector, "processFundedClaim");
265
+ _authorize(functions, IPoolService.stake.selector, "stake");
266
+ _authorize(functions, IPoolService.unstake.selector, "unstake");
267
+ _authorize(functions, IPoolService.fundPoolWallet.selector, "fundPoolWallet");
268
+ _authorize(functions, IPoolService.defundPoolWallet.selector, "defundPoolWallet");
269
+ _authorize(functions, IPoolService.withdrawBundleFees.selector, "withdrawBundleFees");
177
270
  }
178
271
 
179
272
 
@@ -184,11 +277,58 @@ contract ServiceAuthorizationV3
184
277
  IAccess.FunctionInfo[] storage functions;
185
278
 
186
279
  functions = _authorizeForService(BUNDLE(), POOL());
187
- _authorize(functions, IBundleService.create.selector, "create");
280
+ _authorize(functions, IBundleService.stake.selector, "stake");
281
+ _authorize(functions, IBundleService.unstake.selector, "unstake");
188
282
  _authorize(functions, IBundleService.close.selector, "close");
189
283
  _authorize(functions, IBundleService.lockCollateral.selector, "lockCollateral");
190
284
  _authorize(functions, IBundleService.releaseCollateral.selector, "releaseCollateral");
191
- _authorize(functions, IBundleService.unlinkPolicy.selector, "unlinkPolicy");
285
+
286
+ functions = _authorizeForService(BUNDLE(), ALL());
287
+ _authorize(functions, IBundleService.create.selector, "create");
288
+ _authorize(functions, IBundleService.extend.selector, "extend");
289
+ _authorize(functions, IBundleService.lock.selector, "lock");
290
+ _authorize(functions, IBundleService.unlock.selector, "unlock");
291
+ _authorize(functions, IBundleService.setFee.selector, "setFee");
292
+ }
293
+
294
+ function _setupOracleServiceAuthorization()
295
+ internal
296
+ {
297
+ IAccess.FunctionInfo[] storage functions;
298
+
299
+ functions = _authorizeForService(ORACLE(), ALL());
300
+ _authorize(functions, IOracleService.request.selector, "request");
301
+ _authorize(functions, IOracleService.respond.selector, "respond");
302
+ _authorize(functions, IOracleService.resend.selector, "resend");
303
+ _authorize(functions, IOracleService.cancel.selector, "cancel");
304
+ }
305
+
306
+ function _setupApplicationServiceAuthorization()
307
+ internal
308
+ {
309
+ IAccess.FunctionInfo[] storage functions;
310
+
311
+ functions = _authorizeForService(APPLICATION(), ALL());
312
+ _authorize(functions, IApplicationService.create.selector, "create");
313
+ _authorize(functions, IApplicationService.renew.selector, "renew");
314
+ _authorize(functions, IApplicationService.adjust.selector, "adjust");
315
+ _authorize(functions, IApplicationService.revoke.selector, "revoke");
316
+ }
317
+
318
+ function _setupPolicyServiceAuthorization()
319
+ internal
320
+ {
321
+ IAccess.FunctionInfo[] storage functions;
322
+
323
+ functions = _authorizeForService(POLICY(), ALL());
324
+ _authorize(functions, IPolicyService.decline.selector, "decline");
325
+ _authorize(functions, IPolicyService.createPolicy.selector, "createPolicy");
326
+ _authorize(functions, IPolicyService.collectPremium.selector, "collectPremium");
327
+ _authorize(functions, IPolicyService.activate.selector, "activate");
328
+ _authorize(functions, IPolicyService.expire.selector, "expire");
329
+ _authorize(functions, IPolicyService.expirePolicy.selector, "expirePolicy");
330
+ _authorize(functions, IPolicyService.close.selector, "close");
331
+
192
332
  }
193
333
  }
194
334
 
@@ -8,15 +8,13 @@ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165C
8
8
  import {REGISTRY} from "../type/ObjectType.sol";
9
9
  import {VersionPart} from "../type/Version.sol";
10
10
 
11
- import {IRegisterable} from "../shared/IRegisterable.sol";
12
-
13
11
  import {IRegistry} from "./IRegistry.sol";
14
12
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
15
13
  import {ReleaseRegistry} from "./ReleaseRegistry.sol";
16
14
  import {RegistryAdmin} from "./RegistryAdmin.sol";
17
15
 
18
-
19
- /// @title contract to register token per GIF major release.
16
+ /// @dev The TokenRegistry contract is used to whitelist/manage ERC-20 of tokens per major release.
17
+ /// Only whitelisted tokens can be used as default tokens for products, distribution and pools components.
20
18
  contract TokenRegistry is
21
19
  AccessManaged,
22
20
  IRegistryLinked
@@ -68,7 +66,7 @@ contract TokenRegistry is
68
66
  setAuthority(authority);
69
67
 
70
68
  _registry = registry;
71
- _dipToken = dipToken;
69
+ _dipToken = _verifyOnchainToken(address(dipToken));
72
70
 
73
71
  // register dip token
74
72
  uint256 chainId = block.chainid;
@@ -212,13 +210,13 @@ contract TokenRegistry is
212
210
  return _tokenInfo[chainId][token].chainId > 0;
213
211
  }
214
212
 
215
- /// @dev returns true iff both the token is active for the specfied version and the global token state is active
216
- function isActive(uint256 chainId, address token, VersionPart majorVersion) external view returns (bool) {
213
+ /// @dev returns true iff both the token is active for the specfied release and the global token state is active
214
+ function isActive(uint256 chainId, address token, VersionPart release) external view returns (bool) {
217
215
  if(!_tokenInfo[chainId][token].active) {
218
216
  return false;
219
217
  }
220
218
 
221
- return _active[chainId][token][majorVersion];
219
+ return _active[chainId][token][release];
222
220
  }
223
221
 
224
222
  function getDipTokenAddress() external view returns (address) {
@@ -1,22 +1,21 @@
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
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
- import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
6
 
9
- import {Amount, AmountLib} from "../type/Amount.sol";
7
+ import {Amount} from "../type/Amount.sol";
10
8
  import {IComponent} from "./IComponent.sol";
11
9
  import {IComponents} from "../instance/module/IComponents.sol";
12
- import {NftId, NftIdLib} from "../type/NftId.sol";
13
- import {ObjectType, PRODUCT} from "../type/ObjectType.sol";
10
+ import {IComponentService} from "./IComponentService.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {ObjectType, COMPONENT} from "../type/ObjectType.sol";
14
13
  import {Registerable} from "../shared/Registerable.sol";
15
14
  import {TokenHandler} from "../shared/TokenHandler.sol";
16
- import {VersionPartLib} from "../type/Version.sol";
15
+ import {Version, VersionLib} from "../type/Version.sol";
16
+
17
17
 
18
18
  abstract contract Component is
19
- AccessManagedUpgradeable,
20
19
  Registerable,
21
20
  IComponent
22
21
  {
@@ -25,10 +24,9 @@ abstract contract Component is
25
24
 
26
25
  struct ComponentStorage {
27
26
  string _name; // unique (per instance) component name
28
- IERC20Metadata _token; // token for this component
29
- address _wallet;
30
27
  bool _isInterceptor;
31
28
  bytes _data;
29
+ IComponentService _componentService;
32
30
  }
33
31
 
34
32
 
@@ -39,18 +37,20 @@ abstract contract Component is
39
37
  _;
40
38
  }
41
39
 
40
+
42
41
  function _getComponentStorage() private pure returns (ComponentStorage storage $) {
42
+ // solhint-disable-next-line no-inline-assembly
43
43
  assembly {
44
44
  $.slot := COMPONENT_LOCATION_V1
45
45
  }
46
46
  }
47
47
 
48
+
48
49
  function _initializeComponent(
49
50
  address authority,
50
51
  address registry,
51
52
  NftId parentNftId,
52
53
  string memory name,
53
- address token,
54
54
  ObjectType componentType,
55
55
  bool isInterceptor,
56
56
  address initialOwner,
@@ -61,15 +61,12 @@ abstract contract Component is
61
61
  virtual
62
62
  onlyInitializing()
63
63
  {
64
- if (token == address(0)) {
65
- revert ErrorComponentTokenAddressZero();
66
- }
67
-
68
64
  if (bytes(name).length == 0) {
69
65
  revert ErrorComponentNameLengthZero();
70
66
  }
71
67
 
72
- _initializeRegisterable(
68
+ __Registerable_init(
69
+ authority,
73
70
  registry,
74
71
  parentNftId,
75
72
  componentType,
@@ -77,81 +74,18 @@ abstract contract Component is
77
74
  initialOwner,
78
75
  registryData);
79
76
 
80
- __AccessManaged_init(authority);
81
-
82
77
  // set component state
83
78
  ComponentStorage storage $ = _getComponentStorage();
84
79
  $._name = name;
85
- $._token = IERC20Metadata(token);
86
- $._wallet = address(this);
87
80
  $._isInterceptor = isInterceptor;
88
81
  $._data = componentData;
82
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
89
83
 
90
84
  _registerInterface(type(IAccessManaged).interfaceId);
91
85
  _registerInterface(type(IComponent).interfaceId);
92
86
  }
93
87
 
94
88
 
95
- function approveTokenHandler(Amount spendingLimitAmount)
96
- external
97
- virtual
98
- onlyOwner
99
- {
100
- approveTokenHandler(address(getToken()), spendingLimitAmount);
101
- }
102
-
103
- /// @dev Approves the component's token hander to spend tokens up to the specified limit.
104
- /// When the spending limit amount equals AmountLib.max it is set to type(uint256).max.
105
- function approveTokenHandler(address token, Amount spendingLimitAmount)
106
- public
107
- virtual
108
- onlyOwner
109
- {
110
- if(getWallet() != address(this)) {
111
- revert ErrorComponentWalletNotComponent();
112
- }
113
-
114
- uint256 spendingLimit = spendingLimitAmount.toInt();
115
- bool isMaxAmount = false;
116
- if (spendingLimitAmount == AmountLib.max()) {
117
- spendingLimit = type(uint256).max;
118
- isMaxAmount = true;
119
- }
120
-
121
- emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount, isMaxAmount);
122
-
123
- IERC20Metadata(token).approve(
124
- address(getTokenHandler()),
125
- spendingLimit);
126
- }
127
-
128
- function setWallet(address newWallet)
129
- external
130
- virtual
131
- override
132
- onlyOwner
133
- {
134
- // checks
135
- address currentWallet = getWallet();
136
- uint256 currentBalance = getToken().balanceOf(currentWallet);
137
-
138
- // effects
139
- _setWallet(newWallet);
140
-
141
- // interactions
142
- if (currentBalance > 0) {
143
- // move tokens from old to new wallet
144
- emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
145
-
146
- if (currentWallet == address(this)) {
147
- // transfer from the component requires an allowance
148
- getTokenHandler().distributeTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
149
- } else {
150
- getTokenHandler().collectTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
151
- }
152
- }
153
- }
154
-
155
89
  /// @dev callback function for nft transfers
156
90
  /// may only be called by chain nft contract.
157
91
  /// override internal function _nftTransferFrom to implement custom behaviour
@@ -164,7 +98,7 @@ abstract contract Component is
164
98
 
165
99
 
166
100
  function getWallet() public view virtual returns (address walletAddress) {
167
- return getComponentInfo().wallet;
101
+ return getTokenHandler().getWallet();
168
102
  }
169
103
 
170
104
  function getTokenHandler() public virtual view returns (TokenHandler tokenHandler) {
@@ -172,13 +106,17 @@ abstract contract Component is
172
106
  }
173
107
 
174
108
  function getToken() public view virtual returns (IERC20Metadata token) {
175
- return getComponentInfo().token;
109
+ return getTokenHandler().TOKEN();
176
110
  }
177
111
 
178
112
  function getName() public view override returns(string memory name) {
179
113
  return getComponentInfo().name;
180
114
  }
181
115
 
116
+ function getVersion() public view virtual returns (Version version) {
117
+ return VersionLib.toVersion(1, 0, 0);
118
+ }
119
+
182
120
  function getComponentInfo() public virtual view returns (IComponents.ComponentInfo memory info) {
183
121
  if (isRegistered()) {
184
122
  return _getComponentInfo();
@@ -208,38 +146,47 @@ abstract contract Component is
208
146
  }
209
147
 
210
148
 
211
- /// @dev internal function for nft transfers.
212
- /// handling logic that deals with nft transfers need to overwrite this function
213
- function _nftMint(address to, uint256 tokenId)
149
+ /// @dev Approves token hanlder to spend up to the specified amount of tokens.
150
+ /// Reverts if component wallet is not token handler itself.
151
+ /// Only component owner (nft holder) is authorizes to call this function.
152
+ function _approveTokenHandler(IERC20Metadata token, Amount amount)
214
153
  internal
215
154
  virtual
216
- { }
155
+ {
156
+ _getComponentStorage()._componentService.approveTokenHandler(
157
+ token,
158
+ amount);
159
+ }
160
+
217
161
 
218
162
  /// @dev internal function for nft transfers.
219
163
  /// handling logic that deals with nft transfers need to overwrite this function
220
164
  function _nftTransferFrom(address from, address to, uint256 tokenId, address operator)
221
165
  internal
222
166
  virtual
223
- { }
167
+ // solhint-disable-next-line no-empty-blocks
168
+ {
169
+ // empty default implementation
170
+ }
224
171
 
225
172
 
226
- /// @dev depending on the source of the component information this function needs to be overwritten.
173
+ /// @dev Sets the components wallet to the specified address.
174
+ /// Depending on the source of the component information this function needs to be overwritten.
227
175
  /// eg for instance linked components that externally store this information with the instance store contract
228
- function _setWallet(address newWallet) internal virtual {
229
- ComponentStorage storage $ = _getComponentStorage();
230
- address currentWallet = $._wallet;
231
-
232
- if (newWallet == address(0)) {
233
- revert ErrorComponentWalletAddressZero();
234
- }
235
-
236
- if (newWallet == currentWallet) {
237
- revert ErrorComponentWalletAddressIsSameAsCurrent();
238
- }
239
-
240
- $._wallet = newWallet;
241
- emit LogComponentWalletAddressChanged(currentWallet, newWallet);
176
+ function _setWallet(
177
+ address newWallet
178
+ )
179
+ internal
180
+ virtual
181
+ {
182
+ _getComponentStorage()._componentService.setWallet(newWallet);
183
+ }
242
184
 
185
+ function _setLocked(bool locked)
186
+ internal
187
+ virtual
188
+ {
189
+ _getComponentStorage()._componentService.setLocked(locked);
243
190
  }
244
191
 
245
192
 
@@ -250,16 +197,14 @@ abstract contract Component is
250
197
 
251
198
  return IComponents.ComponentInfo({
252
199
  name: $._name,
253
- token: $._token,
254
200
  tokenHandler: TokenHandler(address(0)),
255
- wallet: $._wallet, // initial wallet address
256
201
  data: $._data // user specific component data
257
202
  });
258
203
  }
259
204
 
260
- function _approveTokenHandler(uint256 amount) internal {
261
- ComponentStorage storage $ = _getComponentStorage();
262
- $._token.approve(address(getComponentInfo().tokenHandler), amount);
205
+ /// @dev returns the service address for the specified domain
206
+ /// gets address via lookup from registry using the major version form the linked instance
207
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
208
+ return getRegistry().getServiceAddress(domain, getRelease());
263
209
  }
264
-
265
210
  }