@etherisc/gif-next 0.0.2-89c8f37-711 → 0.0.2-8a72793-100

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 (520) hide show
  1. package/README.md +34 -8
  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 +476 -86
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +273 -16
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +371 -54
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +139 -15
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +165 -391
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +261 -27
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +103 -321
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +321 -369
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +129 -119
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +115 -143
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +196 -133
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +644 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +644 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1479 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2426 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +204 -38
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +127 -95
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +222 -125
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +784 -181
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +205 -90
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1002 -303
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +155 -280
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +96 -96
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +651 -514
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  89. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +114 -340
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +243 -29
  108. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +102 -130
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +90 -308
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +119 -387
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +261 -27
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +275 -314
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +122 -108
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +172 -97
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +124 -219
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -312
  133. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  134. package/artifacts/contracts/pool/Pool.sol/Pool.json +109 -394
  135. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  137. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +653 -532
  139. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +163 -97
  141. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
  143. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
  145. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +243 -400
  147. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +261 -27
  149. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +415 -234
  151. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +140 -114
  153. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
  155. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
  157. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +354 -106
  159. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
  161. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +235 -202
  163. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  164. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +57 -4
  165. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +439 -302
  167. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  169. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
  171. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.json +227 -314
  173. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
  175. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  176. package/artifacts/contracts/product/Product.sol/Product.json +241 -398
  177. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  179. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
  181. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  183. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +334 -34
  185. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  187. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  189. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  191. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.json +540 -95
  193. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +650 -193
  195. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
  201. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2099 -0
  203. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  205. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +443 -241
  207. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  209. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  211. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  212. package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
  213. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +461 -625
  215. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +131 -131
  217. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +578 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  227. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
  229. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +431 -284
  231. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +102 -130
  233. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  235. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  236. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  237. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  238. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  239. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  241. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  243. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  246. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  247. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  248. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  249. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +89 -307
  250. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  251. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  252. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  253. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  254. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  255. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  256. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  257. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  258. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  259. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  260. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  262. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  263. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  264. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  270. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  271. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  272. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  273. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +140 -113
  274. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  275. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +77 -16
  276. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +76 -106
  278. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  279. package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
  280. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  282. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +122 -95
  284. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  286. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +122 -164
  288. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +99 -85
  290. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +149 -108
  292. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  293. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +55 -24
  294. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  295. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Amount.sol/AmountLib.json +33 -9
  297. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  300. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  302. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  304. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  306. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  307. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  308. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  310. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  311. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  312. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  314. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  316. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  318. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  320. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +118 -5
  322. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  324. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  326. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  328. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  330. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  332. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  335. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +16 -3
  337. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  339. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  341. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  342. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  343. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
  344. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  345. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  346. package/contracts/accounting/AccountingService.sol +262 -0
  347. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  348. package/contracts/accounting/IAccountingService.sol +45 -0
  349. package/contracts/authorization/AccessAdmin.sol +389 -149
  350. package/contracts/authorization/AccessManagerCloneable.sol +147 -4
  351. package/contracts/authorization/Authorization.sol +351 -204
  352. package/contracts/authorization/IAccess.sol +1 -0
  353. package/contracts/authorization/IAccessAdmin.sol +64 -29
  354. package/contracts/authorization/IAuthorization.sol +33 -7
  355. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  356. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  357. package/contracts/distribution/BasicDistribution.sol +15 -12
  358. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  359. package/contracts/distribution/Distribution.sol +42 -48
  360. package/contracts/distribution/DistributionService.sol +125 -104
  361. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  362. package/contracts/distribution/IDistributionComponent.sol +1 -1
  363. package/contracts/distribution/IDistributionService.sol +28 -24
  364. package/contracts/examples/fire/DamageLevel.sol +59 -0
  365. package/contracts/examples/fire/FirePool.sol +90 -0
  366. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  367. package/contracts/examples/fire/FireProduct.sol +438 -0
  368. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  369. package/contracts/examples/fire/FireUSD.sol +26 -0
  370. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  371. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  372. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  373. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  374. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  375. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  376. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  377. package/contracts/instance/BundleSet.sol +42 -38
  378. package/contracts/instance/IInstance.sol +60 -43
  379. package/contracts/instance/IInstanceService.sol +21 -30
  380. package/contracts/instance/Instance.sol +106 -71
  381. package/contracts/instance/InstanceAdmin.sol +287 -102
  382. package/contracts/instance/InstanceAuthorizationV3.sol +92 -61
  383. package/contracts/instance/InstanceReader.sol +275 -43
  384. package/contracts/instance/InstanceService.sol +196 -189
  385. package/contracts/instance/InstanceServiceManager.sol +6 -7
  386. package/contracts/instance/InstanceStore.sol +23 -2
  387. package/contracts/instance/RiskSet.sol +118 -0
  388. package/contracts/instance/base/ObjectCounter.sol +1 -2
  389. package/contracts/instance/base/ObjectLifecycle.sol +11 -4
  390. package/contracts/instance/base/ObjectSet.sol +31 -33
  391. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  392. package/contracts/instance/module/IBundle.sol +1 -1
  393. package/contracts/instance/module/IComponents.sol +14 -14
  394. package/contracts/instance/module/IDistribution.sol +2 -1
  395. package/contracts/instance/module/IPolicy.sol +26 -25
  396. package/contracts/instance/module/IRisk.sol +3 -0
  397. package/contracts/oracle/BasicOracle.sol +0 -1
  398. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  399. package/contracts/oracle/IOracleService.sol +2 -1
  400. package/contracts/oracle/Oracle.sol +7 -17
  401. package/contracts/oracle/OracleService.sol +113 -81
  402. package/contracts/oracle/OracleServiceManager.sol +6 -6
  403. package/contracts/pool/BasicPool.sol +38 -27
  404. package/contracts/pool/BasicPoolAuthorization.sol +32 -11
  405. package/contracts/pool/BundleService.sol +179 -125
  406. package/contracts/pool/BundleServiceManager.sol +6 -6
  407. package/contracts/pool/IBundleService.sol +29 -34
  408. package/contracts/pool/IPoolComponent.sol +19 -15
  409. package/contracts/pool/IPoolService.sol +90 -75
  410. package/contracts/pool/Pool.sol +145 -128
  411. package/contracts/pool/PoolLib.sol +216 -0
  412. package/contracts/pool/PoolService.sol +540 -217
  413. package/contracts/pool/PoolServiceManager.sol +4 -4
  414. package/contracts/product/ApplicationService.sol +72 -43
  415. package/contracts/product/ApplicationServiceManager.sol +4 -4
  416. package/contracts/product/BasicProduct.sol +11 -12
  417. package/contracts/product/BasicProductAuthorization.sol +24 -11
  418. package/contracts/product/ClaimService.sol +368 -153
  419. package/contracts/product/ClaimServiceManager.sol +4 -4
  420. package/contracts/product/IApplicationService.sol +6 -2
  421. package/contracts/product/IClaimService.sol +44 -8
  422. package/contracts/product/IPolicyService.sol +53 -38
  423. package/contracts/product/IPricingService.sol +10 -10
  424. package/contracts/product/IProductComponent.sol +27 -5
  425. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  426. package/contracts/product/PolicyService.sol +446 -281
  427. package/contracts/product/PolicyServiceLib.sol +65 -0
  428. package/contracts/product/PolicyServiceManager.sol +4 -4
  429. package/contracts/product/PricingService.sol +66 -62
  430. package/contracts/product/PricingServiceManager.sol +4 -4
  431. package/contracts/product/Product.sol +166 -89
  432. package/contracts/product/RiskService.sol +145 -0
  433. package/contracts/product/RiskServiceManager.sol +39 -0
  434. package/contracts/registry/ChainNft.sol +72 -40
  435. package/contracts/registry/IRegistry.sol +60 -28
  436. package/contracts/registry/IRegistryService.sol +5 -12
  437. package/contracts/registry/IRelease.sol +26 -0
  438. package/contracts/registry/ITransferInterceptor.sol +1 -2
  439. package/contracts/registry/Registry.sol +357 -203
  440. package/contracts/registry/RegistryAdmin.sol +290 -182
  441. package/contracts/registry/RegistryAuthorization.sol +266 -0
  442. package/contracts/registry/RegistryService.sol +37 -48
  443. package/contracts/registry/RegistryServiceManager.sol +3 -3
  444. package/contracts/registry/ReleaseAdmin.sol +252 -0
  445. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  446. package/contracts/registry/ReleaseRegistry.sol +264 -232
  447. package/contracts/registry/ServiceAuthorizationV3.sol +181 -52
  448. package/contracts/registry/TokenRegistry.sol +6 -8
  449. package/contracts/shared/Component.sol +73 -126
  450. package/contracts/shared/ComponentService.sol +424 -386
  451. package/contracts/shared/ComponentServiceManager.sol +8 -5
  452. package/contracts/shared/ComponentVerifyingService.sol +28 -17
  453. package/contracts/shared/ContractLib.sol +263 -0
  454. package/contracts/shared/IComponent.sol +8 -17
  455. package/contracts/shared/IComponentService.sol +40 -38
  456. package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
  457. package/contracts/shared/ILifecycle.sol +3 -1
  458. package/contracts/shared/INftOwnable.sol +2 -0
  459. package/contracts/shared/IPolicyHolder.sol +12 -22
  460. package/contracts/shared/IRegisterable.sol +23 -1
  461. package/contracts/shared/IService.sol +3 -5
  462. package/contracts/shared/InitializableERC165.sol +10 -2
  463. package/contracts/shared/InstanceLinkedComponent.sol +73 -48
  464. package/contracts/shared/KeyValueStore.sol +1 -1
  465. package/contracts/shared/Lifecycle.sol +15 -4
  466. package/contracts/shared/NftOwnable.sol +29 -9
  467. package/contracts/shared/PolicyHolder.sol +15 -52
  468. package/contracts/shared/Registerable.sol +52 -21
  469. package/contracts/shared/RegistryLinked.sol +9 -14
  470. package/contracts/shared/Service.sol +15 -32
  471. package/contracts/shared/TokenHandler.sol +310 -26
  472. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  473. package/contracts/staking/IStaking.sol +11 -9
  474. package/contracts/staking/IStakingService.sol +8 -3
  475. package/contracts/staking/StakeManagerLib.sol +19 -26
  476. package/contracts/staking/Staking.sol +71 -61
  477. package/contracts/staking/StakingManager.sol +8 -6
  478. package/contracts/staking/StakingReader.sol +13 -6
  479. package/contracts/staking/StakingService.sol +54 -35
  480. package/contracts/staking/StakingServiceManager.sol +6 -5
  481. package/contracts/staking/TargetManagerLib.sol +7 -3
  482. package/contracts/type/Amount.sol +15 -0
  483. package/contracts/type/ClaimId.sol +6 -1
  484. package/contracts/type/Key32.sol +2 -2
  485. package/contracts/type/Key32Set.sol +62 -0
  486. package/contracts/type/NftId.sol +7 -0
  487. package/contracts/type/ObjectType.sol +57 -34
  488. package/contracts/type/PayoutId.sol +10 -10
  489. package/contracts/type/RiskId.sol +35 -4
  490. package/contracts/type/RoleId.sol +23 -15
  491. package/contracts/type/Seconds.sol +21 -1
  492. package/contracts/type/Selector.sol +5 -0
  493. package/contracts/type/StateId.sol +15 -1
  494. package/contracts/type/Timestamp.sol +4 -5
  495. package/contracts/type/UFixed.sol +13 -119
  496. package/contracts/type/Version.sol +54 -5
  497. package/contracts/upgradeability/ProxyManager.sol +68 -34
  498. package/contracts/upgradeability/Versionable.sol +2 -2
  499. package/package.json +4 -3
  500. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  501. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  502. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  503. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  504. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  505. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  506. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  507. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  508. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  509. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  510. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  511. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  512. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  513. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  514. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  515. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  516. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  517. package/contracts/instance/module/IAccess.sol +0 -46
  518. package/contracts/product/ProductService.sol +0 -99
  519. package/contracts/product/ProductServiceManager.sol +0 -39
  520. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,23 +1,29 @@
1
1
  // SPDX-License-Identifier: UNLICENSED
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {AccessAdmin} from "../authorization/AccessAdmin.sol";
5
- import {IAccess} from "../authorization/IAccess.sol";
4
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
5
+ import {IComponent} from "../shared/IComponent.sol";
6
6
  import {IRegistry} from "./IRegistry.sol";
7
7
  import {IService} from "../shared/IService.sol";
8
- import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
9
8
  import {IStaking} from "../staking/IStaking.sol";
10
- import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
9
+
10
+ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
11
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
12
+ import {ContractLib} from "../shared/ContractLib.sol";
13
+ import {ObjectType, REGISTRY, STAKING, POOL, RELEASE} from "../type/ObjectType.sol";
11
14
  import {ReleaseRegistry} from "./ReleaseRegistry.sol";
12
15
  import {RoleId, RoleIdLib, ADMIN_ROLE, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
16
+ import {Staking} from "../staking/Staking.sol";
17
+ import {Str, StrLib} from "../type/String.sol";
13
18
  import {StakingStore} from "../staking/StakingStore.sol";
14
- import {STAKING} from "../type/ObjectType.sol";
19
+ import {TokenHandler} from "../shared/TokenHandler.sol";
15
20
  import {TokenRegistry} from "./TokenRegistry.sol";
16
- import {VersionPart} from "../type/Version.sol";
21
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
17
22
 
18
23
  /*
19
24
  1) GIF_MANAGER_ROLE
20
25
  - can have arbitrary number of members
26
+ - responsible for release preparation
21
27
  - responsible for services registrations
22
28
  - responsible for token registration and activation
23
29
 
@@ -25,178 +31,210 @@ import {VersionPart} from "../type/Version.sol";
25
31
  - admin of GIF_MANAGER_ROLE
26
32
  - MUST have 1 member at any time
27
33
  - granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
28
- - responsible for creation and activation of releases
29
-
30
- createServiceTarget(type, release)
31
- createServiceRole(type,release)
32
- getServiceRole(type, release)
34
+ - responsible for creation, activation and locking/unlocking of releases
33
35
  */
36
+
37
+ /// @dev The RegistryAdmin contract implements the central authorization for the GIF core contracts.
38
+ /// These are the release independent registry and staking contracts and their respective helper contracts.
39
+ /// The RegistryAdmin also manages the access from service contracts to the GIF core contracts
34
40
  contract RegistryAdmin is
35
41
  AccessAdmin
36
42
  {
37
- error ErrorRegistryAdminIsAlreadySetUp();
38
-
43
+ /// @dev gif core roles
39
44
  string public constant GIF_ADMIN_ROLE_NAME = "GifAdminRole";
40
45
  string public constant GIF_MANAGER_ROLE_NAME = "GifManagerRole";
41
- string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
42
46
  string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistryRole";
43
- string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
44
47
  string public constant STAKING_ROLE_NAME = "StakingRole";
45
48
 
49
+ /// @dev gif roles for external contracts
50
+ string public constant REGISTRY_SERVICE_ROLE_NAME = "RegistryServiceRole";
51
+ string public constant COMPONENT_SERVICE_ROLE_NAME = "ComponentServiceRole";
52
+ string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
53
+ string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
54
+
55
+ /// @dev gif core targets
56
+ string public constant REGISTRY_ADMIN_TARGET_NAME = "RegistryAdmin";
57
+ string public constant REGISTRY_TARGET_NAME = "Registry";
46
58
  string public constant RELEASE_REGISTRY_TARGET_NAME = "ReleaseRegistry";
47
- string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
48
59
  string public constant STAKING_TARGET_NAME = "Staking";
60
+ string public constant STAKING_TH_TARGET_NAME = "StakingTH";
49
61
  string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
62
+ string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
63
+ string public constant TOKEN_HANDLER_TARGET_NAME = "TokenHandler";
50
64
 
51
- uint8 public constant MAX_NUM_RELEASES = 99;
52
-
53
- mapping(address service => VersionPart majorVersion) private _ServiceRelease;
65
+ // completeSetup
66
+ error ErrorRegistryAdminNotRegistry(address registry);
54
67
 
68
+ address internal _registry;
55
69
  address private _releaseRegistry;
56
70
  address private _tokenRegistry;
57
71
  address private _staking;
58
72
  address private _stakingStore;
59
- bool private _setupCompleted;
60
73
 
61
- constructor() AccessAdmin() { }
74
+ // function initialize()
75
+ // external
76
+ // {
77
+ // AccessManagerCloneable accessManager = new AccessManagerCloneable();
78
+
79
+ // initialize(
80
+ // address(accessManager),
81
+ // "RegistryAdmin");
82
+ // }
83
+
84
+ constructor() {
85
+ initialize(
86
+ address(new AccessManagerCloneable()),
87
+ "RegistryAdmin");
88
+ }
89
+
62
90
 
63
91
  function completeSetup(
64
- IRegistry registry,
92
+ address registry,
93
+ address authorization,
65
94
  address gifAdmin,
66
95
  address gifManager
67
96
  )
68
- external
97
+ public
98
+ virtual
99
+ reinitializer(type(uint8).max)
69
100
  onlyDeployer()
70
101
  {
71
- if (_setupCompleted) { revert ErrorRegistryAdminIsAlreadySetUp(); }
72
- else { _setupCompleted = true; }
102
+ // checks
103
+ _checkRegistry(registry);
104
+
105
+ VersionPart release = VersionPartLib.toVersionPart(3);
106
+ AccessManagerCloneable(
107
+ authority()).completeSetup(
108
+ registry,
109
+ release);
73
110
 
74
- _releaseRegistry = registry.getReleaseRegistryAddress();
75
- _tokenRegistry = registry.getTokenRegistryAddress();
76
- _staking = registry.getStakingAddress();
111
+ _checkAuthorization(authorization, REGISTRY(), release, true);
112
+
113
+ _registry = registry;
114
+ _authorization = IAuthorization(authorization);
115
+
116
+ IRegistry registryContract = IRegistry(registry);
117
+ _releaseRegistry = registryContract.getReleaseRegistryAddress();
118
+ _tokenRegistry = registryContract.getTokenRegistryAddress();
119
+ _staking = registryContract.getStakingAddress();
77
120
  _stakingStore = address(
78
121
  IStaking(_staking).getStakingStore());
79
122
 
80
- // at this moment all registry contracts are deployed and fully intialized
81
- _createTarget(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME, true, false);
123
+ // link nft ownability to registry
124
+ _linkToNftOwnable(_registry);
82
125
 
83
- _setupGifAdminRole(gifAdmin);
84
- _setupGifManagerRole(gifManager);
126
+ _setupRegistry(_registry);
127
+
128
+ // setup authorization for registry and supporting contracts
129
+ _createRoles(_authorization);
130
+ _grantRoleToAccount(GIF_ADMIN_ROLE(), gifAdmin);
131
+ _grantRoleToAccount(GIF_MANAGER_ROLE(), gifManager);
85
132
 
86
- _setupReleaseRegistry();
87
- _setupStaking();
133
+ _createTargets(_authorization);
134
+ _createTargetAuthorizations(_authorization);
88
135
  }
89
136
 
90
137
 
91
- /// @dev Sets up authorizaion for specified service.
92
- /// For all authorized services its authorized functions are enabled.
93
- /// Permissioned function: Access is restricted to release manager.
94
- function authorizeService(
95
- IServiceAuthorization serviceAuthorization,
96
- IService service
97
- )
98
- external
99
- restricted()
100
- {
101
- _createServiceTargetAndRole(service);
102
- _authorizeServiceFunctions(serviceAuthorization, service);
103
- }
138
+ // create registry role and target
139
+ function _setupRegistry(address registry) internal {
104
140
 
141
+ // create registry role
142
+ RoleId roleId = _authorization.getTargetRole(
143
+ _authorization.getMainTarget());
105
144
 
106
- function grantServiceRoleForAllVersions(IService service, ObjectType domain)
107
- external
108
- restricted()
109
- {
110
- _grantRoleToAccount(
111
- RoleIdLib.roleForTypeAndAllVersions(domain),
112
- address(service));
145
+ _createRole(
146
+ roleId,
147
+ _authorization.getRoleInfo(roleId));
148
+
149
+ // create registry target
150
+ _createTarget(
151
+ registry,
152
+ _authorization.getMainTargetName(),
153
+ true, // checkAuthority
154
+ false); // custom
155
+
156
+ // assign registry role to registry
157
+ _grantRoleToAccount(
158
+ roleId,
159
+ registry);
113
160
  }
114
161
 
115
162
 
116
- function _createServiceTargetAndRole(IService service)
117
- private
163
+ function _createRoles(IAuthorization authorization)
164
+ internal
118
165
  {
119
- ObjectType serviceDomain = service.getDomain();
120
- string memory baseName = ObjectTypeLib.toName(serviceDomain);
121
- VersionPart version = service.getVersion().toMajorPart();
122
- uint256 versionInt = version.toInt();
123
-
124
- // create service target
125
- string memory serviceTargetName = ObjectTypeLib.toVersionedName(
126
- baseName, "Service", versionInt);
166
+ RoleId[] memory roles = authorization.getRoles();
167
+ RoleId mainTargetRoleId = authorization.getTargetRole(
168
+ authorization.getMainTarget());
127
169
 
128
- _createTarget(
129
- address(service),
130
- serviceTargetName,
131
- true,
132
- false);
170
+ RoleId roleId;
171
+ RoleInfo memory roleInfo;
133
172
 
134
- // create service role
135
- RoleId serviceRoleId = RoleIdLib.roleForTypeAndVersion(
136
- serviceDomain,
137
- version);
173
+ for(uint256 i = 0; i < roles.length; i++) {
138
174
 
139
- _createRole(
140
- serviceRoleId,
141
- toRole({
142
- adminRoleId: ADMIN_ROLE(),
143
- roleType: RoleType.Contract,
144
- maxMemberCount: 1,
145
- name: ObjectTypeLib.toVersionedName(
146
- baseName,
147
- "ServiceRole",
148
- versionInt)}));
175
+ roleId = roles[i];
149
176
 
150
- _grantRoleToAccount(
151
- serviceRoleId,
152
- address(service));
177
+ // skip main target role, create role if not exists
178
+ if (roleId != mainTargetRoleId && !roleExists(roleId)) {
179
+ _createRole(
180
+ roleId,
181
+ authorization.getRoleInfo(roleId));
182
+ }
183
+ }
153
184
  }
154
185
 
155
186
 
156
- function _authorizeServiceFunctions(
157
- IServiceAuthorization serviceAuthorization,
158
- IService service
159
- )
160
- private
187
+ function _createTargets(IAuthorization authorization)
188
+ internal
161
189
  {
162
- ObjectType serviceDomain = service.getDomain();
163
- ObjectType authorizedDomain;
164
- RoleId authorizedRoleId;
165
-
166
- VersionPart release = service.getVersion().toMajorPart();
167
- ObjectType[] memory authorizedDomains = serviceAuthorization.getAuthorizedDomains(serviceDomain);
168
-
169
- for (uint256 i = 0; i < authorizedDomains.length; i++) {
170
- authorizedDomain = authorizedDomains[i];
171
-
172
- // derive authorized role from authorized domain
173
- if (authorizedDomain == ALL()) {
174
- authorizedRoleId = PUBLIC_ROLE();
175
- } else {
176
- authorizedRoleId = RoleIdLib.roleForTypeAndVersion(
177
- authorizedDomain,
178
- release);
179
- }
190
+ // registry
191
+ _createTargetWithRole(address(this), REGISTRY_ADMIN_TARGET_NAME, authorization.getTargetRole(StrLib.toStr(REGISTRY_ADMIN_TARGET_NAME)));
192
+ _createTargetWithRole(_releaseRegistry, RELEASE_REGISTRY_TARGET_NAME, authorization.getTargetRole(StrLib.toStr(RELEASE_REGISTRY_TARGET_NAME)));
193
+ _createTargetWithRole(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME, authorization.getTargetRole(StrLib.toStr(TOKEN_REGISTRY_TARGET_NAME)));
194
+
195
+ // staking
196
+ _createTargetWithRole(_staking, STAKING_TARGET_NAME, authorization.getTargetRole(StrLib.toStr(STAKING_TARGET_NAME)));
197
+ _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME, true, false);
198
+ _createTarget(address(IComponent(_staking).getTokenHandler()), STAKING_TH_TARGET_NAME, true, false);
199
+ }
180
200
 
181
- // get authorized functions for authorized domain
182
- IAccess.FunctionInfo[] memory authorizatedFunctions = serviceAuthorization.getAuthorizedFunctions(
183
- serviceDomain,
184
- authorizedDomain);
185
201
 
186
- _authorizeTargetFunctions(
187
- address(service),
188
- authorizedRoleId,
189
- authorizatedFunctions);
202
+ function _createTargetAuthorizations(IAuthorization authorization)
203
+ internal
204
+ {
205
+ Str[] memory targets = authorization.getTargets();
206
+ Str target;
207
+
208
+ for(uint256 i = 0; i < targets.length; i++) {
209
+ target = targets[i];
210
+ RoleId[] memory authorizedRoles = authorization.getAuthorizedRoles(target);
211
+ RoleId authorizedRole;
212
+
213
+ for(uint256 j = 0; j < authorizedRoles.length; j++) {
214
+ authorizedRole = authorizedRoles[j];
215
+
216
+ _authorizeTargetFunctions(
217
+ getTargetForName(target),
218
+ authorizedRole,
219
+ authorization.getAuthorizedFunctions(
220
+ target,
221
+ authorizedRole));
222
+ }
190
223
  }
191
224
  }
192
225
 
193
- /*function transferAdmin(address to)
226
+
227
+ function grantServiceRoleForAllVersions(
228
+ IService service,
229
+ ObjectType domain
230
+ )
194
231
  external
195
- restricted // only with GIF_ADMIN_ROLE or nft owner
232
+ restricted()
196
233
  {
197
- _accessManager.revoke(GIF_ADMIN_ROLE, );
198
- _accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
199
- }*/
234
+ _grantRoleToAccount(
235
+ RoleIdLib.roleForTypeAndAllVersions(domain),
236
+ address(service));
237
+ }
200
238
 
201
239
  //--- view functions ----------------------------------------------------//
202
240
 
@@ -208,10 +246,29 @@ contract RegistryAdmin is
208
246
  return GIF_MANAGER_ROLE();
209
247
  }
210
248
 
211
- //--- private functions -------------------------------------------------//
249
+ //--- private initialization functions -------------------------------------------//
212
250
 
213
- function _setupGifAdminRole(address gifAdmin) private {
214
-
251
+ function _createTargets(address authorization)
252
+ private
253
+ onlyInitializing()
254
+ {
255
+ IStaking staking = IStaking(_staking);
256
+ address tokenHandler = address(staking.getTokenHandler());
257
+
258
+ _createTarget(address(this), REGISTRY_ADMIN_TARGET_NAME, false, false);
259
+ _createTarget(_registry, REGISTRY_TARGET_NAME, true, false);
260
+ _createTarget(_releaseRegistry, RELEASE_REGISTRY_TARGET_NAME, true, false);
261
+ _createTarget(_staking, STAKING_TARGET_NAME, true, false);
262
+ _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME, true, false);
263
+ _createTarget(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME, true, false);
264
+ _createTarget(tokenHandler, TOKEN_HANDLER_TARGET_NAME, true, false);
265
+ }
266
+
267
+ function _setupGifAdminRole(address gifAdmin)
268
+ private
269
+ onlyInitializing()
270
+ {
271
+ // create gif admin role
215
272
  _createRole(
216
273
  GIF_ADMIN_ROLE(),
217
274
  toRole({
@@ -220,29 +277,36 @@ contract RegistryAdmin is
220
277
  maxMemberCount: 2, // TODO decide on max member count
221
278
  name: GIF_ADMIN_ROLE_NAME}));
222
279
 
223
- // for ReleaseRegistry
280
+ // grant permissions to the gif admin role for registry contract
224
281
  FunctionInfo[] memory functions;
225
- functions = new FunctionInfo[](4);
282
+ functions = new FunctionInfo[](1);
283
+ functions[0] = toFunction(IRegistry.registerRegistry.selector, "registerRegistry");
284
+ _authorizeTargetFunctions(_registry, GIF_ADMIN_ROLE(), functions);
285
+
286
+ // grant permissions to the gif admin role for release registry contract
287
+ functions = new FunctionInfo[](3);
226
288
  functions[0] = toFunction(ReleaseRegistry.createNextRelease.selector, "createNextRelease");
227
289
  functions[1] = toFunction(ReleaseRegistry.activateNextRelease.selector, "activateNextRelease");
228
- functions[2] = toFunction(ReleaseRegistry.pauseRelease.selector, "pauseRelease");
229
- functions[3] = toFunction(ReleaseRegistry.unpauseRelease.selector, "unpauseRelease");
290
+ functions[2] = toFunction(ReleaseRegistry.setActive.selector, "setActive");
230
291
  _authorizeTargetFunctions(_releaseRegistry, GIF_ADMIN_ROLE(), functions);
231
292
 
232
293
  _grantRoleToAccount(GIF_ADMIN_ROLE(), gifAdmin);
233
294
  }
234
295
 
235
- function _setupGifManagerRole(address gifManager) private {
236
-
296
+ function _setupGifManagerRole(address gifManager)
297
+ private
298
+ onlyInitializing()
299
+ {
300
+ // create gif manager role
237
301
  _createRole(
238
302
  GIF_MANAGER_ROLE(),
239
303
  toRole({
240
304
  adminRoleId: ADMIN_ROLE(),
241
305
  roleType: RoleType.Gif,
242
- maxMemberCount: 1,
306
+ maxMemberCount: 1, // TODO decide on max member count
243
307
  name: GIF_MANAGER_ROLE_NAME}));
244
308
 
245
- // for TokenRegistry
309
+ // grant permissions to the gif manager role for token registry contract
246
310
  FunctionInfo[] memory functions;
247
311
  functions = new FunctionInfo[](5);
248
312
  functions[0] = toFunction(TokenRegistry.registerToken.selector, "registerToken");
@@ -253,7 +317,7 @@ contract RegistryAdmin is
253
317
  functions[4] = toFunction(TokenRegistry.setActiveWithVersionCheck.selector, "setActiveWithVersionCheck");
254
318
  _authorizeTargetFunctions(_tokenRegistry, GIF_MANAGER_ROLE(), functions);
255
319
 
256
- // for ReleaseRegistry
320
+ // grant permissions to the gif manager role for release registry contract
257
321
  functions = new FunctionInfo[](2);
258
322
  functions[0] = toFunction(ReleaseRegistry.prepareNextRelease.selector, "prepareNextRelease");
259
323
  functions[1] = toFunction(ReleaseRegistry.registerService.selector, "registerService");
@@ -262,11 +326,12 @@ contract RegistryAdmin is
262
326
  _grantRoleToAccount(GIF_MANAGER_ROLE(), gifManager);
263
327
  }
264
328
 
265
-
266
- function _setupReleaseRegistry() private {
267
-
268
- _createTarget(_releaseRegistry, RELEASE_REGISTRY_TARGET_NAME, true, false);
269
-
329
+ function _setupRegistryRoles()
330
+ private
331
+ onlyInitializing()
332
+ {
333
+ // TODO use RELEASE_REGISTRY_ROLE instead
334
+ // create and grant release registry role
270
335
  RoleId releaseRegistryRoleId = RoleIdLib.roleForType(RELEASE());
271
336
  _createRole(
272
337
  releaseRegistryRoleId,
@@ -275,33 +340,90 @@ contract RegistryAdmin is
275
340
  roleType: RoleType.Contract,
276
341
  maxMemberCount: 1,
277
342
  name: RELEASE_REGISTRY_ROLE_NAME}));
343
+ _grantRoleToAccount(releaseRegistryRoleId, _releaseRegistry);
278
344
 
345
+ // grant permissions to the release registry role for release admin contract
279
346
  FunctionInfo[] memory functions;
280
- functions = new FunctionInfo[](2);
281
- functions[0] = toFunction(RegistryAdmin.authorizeService.selector, "authorizeService");
282
- functions[1] = toFunction(RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
347
+ functions = new FunctionInfo[](1);
348
+ functions[0] = toFunction(RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
283
349
  _authorizeTargetFunctions(address(this), releaseRegistryRoleId, functions);
284
350
 
285
- _grantRoleToAccount(releaseRegistryRoleId, _releaseRegistry);
351
+ // grant permissions to the release registry role for registry contract
352
+ functions = new FunctionInfo[](1);
353
+ functions[0] = toFunction(IRegistry.registerService.selector, "registerService");
354
+ _authorizeTargetFunctions(_registry, releaseRegistryRoleId, functions);
355
+
356
+ // create registry service role
357
+ RoleId registryServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(REGISTRY());
358
+ _createRole(
359
+ registryServiceRoleId,
360
+ toRole({
361
+ adminRoleId: ADMIN_ROLE(),
362
+ roleType: RoleType.Contract,
363
+ maxMemberCount: _getMaxRelases(),
364
+ name: REGISTRY_SERVICE_ROLE_NAME}));
365
+
366
+ // grant permissions to the registry service role for registry contract
367
+ functions = new FunctionInfo[](2);
368
+ functions[0] = toFunction(IRegistry.register.selector, "register");
369
+ functions[1] = toFunction(IRegistry.registerWithCustomType.selector, "registerWithCustomType");
370
+ _authorizeTargetFunctions(_registry, registryServiceRoleId, functions);
286
371
  }
287
372
 
288
373
 
289
- function _setupStaking() private {
290
- _createTarget(_staking, STAKING_TARGET_NAME, true, false);
291
- _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME, true, false);
374
+ function _setupStakingRoles()
375
+ private
376
+ onlyInitializing()
377
+ {
378
+ // create and grant staking contract role
379
+ RoleId stakingRoleId = RoleIdLib.roleForType(STAKING());
380
+ _createRole(
381
+ stakingRoleId,
382
+ toRole({
383
+ adminRoleId: ADMIN_ROLE(),
384
+ roleType: RoleType.Contract,
385
+ maxMemberCount: 1,
386
+ name: STAKING_ROLE_NAME}));
387
+ _grantRoleToAccount(stakingRoleId, _staking);
388
+
389
+ // grant permissions to the staking role for staking store contract
390
+ FunctionInfo[] memory functions;
391
+ functions = new FunctionInfo[](14);
392
+ functions[0] = toFunction(StakingStore.setStakingRate.selector, "setStakingRate");
393
+ functions[1] = toFunction(StakingStore.createTarget.selector, "createTarget");
394
+ functions[2] = toFunction(StakingStore.updateTarget.selector, "updateTarget");
395
+ functions[3] = toFunction(StakingStore.increaseReserves.selector, "increaseReserves");
396
+ functions[4] = toFunction(StakingStore.decreaseReserves.selector, "decreaseReserves");
397
+ functions[5] = toFunction(StakingStore.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
398
+ functions[6] = toFunction(StakingStore.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
399
+ functions[7] = toFunction(StakingStore.create.selector, "create");
400
+ functions[8] = toFunction(StakingStore.update.selector, "update");
401
+ functions[9] = toFunction(StakingStore.increaseStake.selector, "increaseStake");
402
+ functions[10] = toFunction(StakingStore.restakeRewards.selector, "restakeRewards");
403
+ functions[11] = toFunction(StakingStore.updateRewards.selector, "updateRewards");
404
+ functions[12] = toFunction(StakingStore.claimUpTo.selector, "claimUpTo");
405
+ functions[13] = toFunction(StakingStore.unstakeUpTo.selector, "unstakeUpTo");
406
+ _authorizeTargetFunctions(_stakingStore, stakingRoleId, functions);
407
+
408
+ // grant permissions to the staking role for token handler contract
409
+ IStaking staking = IStaking(_staking);
410
+ functions = new FunctionInfo[](2);
411
+ functions[0] = toFunction(TokenHandler.pullToken.selector, "pullToken");
412
+ functions[1] = toFunction(TokenHandler.pushToken.selector, "pushToken");
413
+ _authorizeTargetFunctions(address(staking.getTokenHandler()), stakingRoleId, functions);
292
414
 
293
- // staking function authorization for staking service
415
+ // create staking service role
294
416
  RoleId stakingServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(STAKING());
295
417
  _createRole(
296
418
  stakingServiceRoleId,
297
419
  toRole({
298
420
  adminRoleId: ADMIN_ROLE(),
299
421
  roleType: RoleType.Contract,
300
- maxMemberCount: MAX_NUM_RELEASES,
422
+ maxMemberCount: _getMaxRelases(),
301
423
  name: STAKING_SERVICE_ROLE_NAME}));
302
424
 
303
- FunctionInfo[] memory functions;
304
- functions = new FunctionInfo[](13);
425
+ // grant permissions to the staking service role for staking contract
426
+ functions = new FunctionInfo[](11);
305
427
  functions[0] = toFunction(IStaking.registerTarget.selector, "registerTarget");
306
428
  functions[1] = toFunction(IStaking.setLockingPeriod.selector, "setLockingPeriod");
307
429
  functions[2] = toFunction(IStaking.setRewardRate.selector, "setRewardRate");
@@ -313,53 +435,39 @@ contract RegistryAdmin is
313
435
  functions[8] = toFunction(IStaking.restake.selector, "restake");
314
436
  functions[9] = toFunction(IStaking.updateRewards.selector, "updateRewards");
315
437
  functions[10] = toFunction(IStaking.claimRewards.selector, "claimRewards");
316
- functions[11] = toFunction(IStaking.collectDipAmount.selector, "collectDipAmount");
317
- functions[12] = toFunction(IStaking.transferDipAmount.selector, "transferDipAmount");
318
438
  _authorizeTargetFunctions(_staking, stakingServiceRoleId, functions);
319
439
 
320
- // staking function authorization for pool service
440
+ // grant permissions to the staking service role for staking token handler
441
+ functions = new FunctionInfo[](3);
442
+ functions[0] = toFunction(TokenHandler.approve.selector, "approve");
443
+ functions[1] = toFunction(TokenHandler.pullToken.selector, "pullToken");
444
+ functions[2] = toFunction(TokenHandler.pushToken.selector, "pushToken");
445
+ _authorizeTargetFunctions(
446
+ address(IComponent(_staking).getTokenHandler()), stakingServiceRoleId, functions);
447
+
448
+ // create pool service role
321
449
  RoleId poolServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(POOL());
322
450
  _createRole(
323
451
  poolServiceRoleId,
324
452
  toRole({
325
453
  adminRoleId: ADMIN_ROLE(),
326
454
  roleType: RoleType.Contract,
327
- maxMemberCount: MAX_NUM_RELEASES,
455
+ maxMemberCount: _getMaxRelases(),
328
456
  name: POOL_SERVICE_ROLE_NAME}));
329
457
 
330
- // staking function authorizations
458
+ // grant permissions to the pool service role for staking contract
331
459
  functions = new FunctionInfo[](2);
332
460
  functions[0] = toFunction(IStaking.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
333
461
  functions[1] = toFunction(IStaking.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
334
462
  _authorizeTargetFunctions(_staking, poolServiceRoleId, functions);
335
463
 
336
- // staking store function authorizations
337
- RoleId stakingRoleId = RoleIdLib.roleForType(STAKING());
338
- _createRole(
339
- stakingRoleId,
340
- toRole({
341
- adminRoleId: ADMIN_ROLE(),
342
- roleType: RoleType.Contract,
343
- maxMemberCount: 1,
344
- name: STAKING_ROLE_NAME}));
345
-
346
- functions = new FunctionInfo[](14);
347
- functions[0] = toFunction(StakingStore.setStakingRate.selector, "setStakingRate");
348
- functions[1] = toFunction(StakingStore.createTarget.selector, "createTarget");
349
- functions[2] = toFunction(StakingStore.updateTarget.selector, "updateTarget");
350
- functions[3] = toFunction(StakingStore.increaseReserves.selector, "increaseReserves");
351
- functions[4] = toFunction(StakingStore.decreaseReserves.selector, "decreaseReserves");
352
- functions[5] = toFunction(StakingStore.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
353
- functions[6] = toFunction(StakingStore.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
354
- functions[7] = toFunction(StakingStore.create.selector, "create");
355
- functions[8] = toFunction(StakingStore.update.selector, "update");
356
- functions[9] = toFunction(StakingStore.increaseStake.selector, "increaseStake");
357
- functions[10] = toFunction(StakingStore.restakeRewards.selector, "restakeRewards");
358
- functions[11] = toFunction(StakingStore.updateRewards.selector, "updateRewards");
359
- functions[12] = toFunction(StakingStore.claimUpTo.selector, "claimUpTo");
360
- functions[13] = toFunction(StakingStore.unstakeUpTo.selector, "unstakeUpTo");
361
- _authorizeTargetFunctions(_stakingStore, stakingRoleId, functions);
464
+ // grant permissions to public role for staking contract
465
+ functions = new FunctionInfo[](1);
466
+ functions[0] = toFunction(Staking.approveTokenHandler.selector, "approveTokenHandler");
467
+ _authorizeTargetFunctions(_staking, PUBLIC_ROLE(), functions);
468
+ }
362
469
 
363
- _grantRoleToAccount(stakingRoleId, _staking);
470
+ function _getMaxRelases() internal pure returns (uint32) {
471
+ return uint32(VersionPartLib.releaseMax().toInt());
364
472
  }
365
473
  }