@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
@@ -1,18 +1,22 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
4
6
  import {IRegistry} from "../registry/IRegistry.sol";
5
- import {IRegistryService} from "../registry/IRegistryService.sol";
7
+ import {IRelease} from "../registry/IRelease.sol";
6
8
  import {IStaking} from "./IStaking.sol";
7
9
  import {IVersionable} from "../upgradeability/IVersionable.sol";
8
10
 
9
11
  import {Amount, AmountLib} from "../type/Amount.sol";
10
12
  import {Component} from "../shared/Component.sol";
11
13
  import {IComponent} from "../shared/IComponent.sol";
14
+ import {IComponentService} from "../shared/IComponentService.sol";
12
15
  import {NftId} from "../type/NftId.sol";
13
- import {ObjectType, STAKING} from "../type/ObjectType.sol";
16
+ import {ObjectType, STAKE, STAKING} from "../type/ObjectType.sol";
14
17
  import {Seconds} from "../type/Seconds.sol";
15
- import {StakeManagerLib} from "./StakeManagerLib.sol";
18
+ import {Registerable} from "../shared/Registerable.sol";
19
+ import {StakingLib} from "./StakingLib.sol";
16
20
  import {StakingReader} from "./StakingReader.sol";
17
21
  import {StakingStore} from "./StakingStore.sol";
18
22
  import {TargetManagerLib} from "./TargetManagerLib.sol";
@@ -21,7 +25,7 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
21
25
  import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
22
26
  import {TokenRegistry} from "../registry/TokenRegistry.sol";
23
27
  import {UFixed} from "../type/UFixed.sol";
24
- import {Version, VersionLib} from "../type/Version.sol";
28
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
25
29
  import {Versionable} from "../upgradeability/Versionable.sol";
26
30
 
27
31
  contract Staking is
@@ -35,7 +39,6 @@ contract Staking is
35
39
  bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
36
40
 
37
41
  struct StakingStorage {
38
- IRegistryService _registryService;
39
42
  TokenRegistry _tokenRegistry;
40
43
  TokenHandler _tokenHandler;
41
44
  StakingStore _store;
@@ -59,6 +62,32 @@ contract Staking is
59
62
  _;
60
63
  }
61
64
 
65
+ function initializeTokenHandler()
66
+ external
67
+ {
68
+ if (msg.sender != address(getRegistry())) {
69
+ revert ErrorStakingNotRegistry(msg.sender);
70
+ }
71
+
72
+ StakingStorage storage $ = _getStakingStorage();
73
+ address dipToken = _getStakingStorage()._tokenRegistry.getDipTokenAddress();
74
+ $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
75
+ address(getRegistry()),
76
+ address(this),
77
+ dipToken,
78
+ getRegistry().getAuthority());
79
+ }
80
+
81
+
82
+ function approveTokenHandler(IERC20Metadata token, Amount amount)
83
+ public
84
+ restricted()
85
+ onlyOwner()
86
+ {
87
+ _approveTokenHandler(token, amount);
88
+ }
89
+
90
+
62
91
  // set/update staking reader
63
92
  function setStakingReader(StakingReader stakingReader)
64
93
  external
@@ -118,7 +147,8 @@ contract Staking is
118
147
  objectType: expectedObjectType,
119
148
  chainId: chainId,
120
149
  lockingPeriod: initialLockingPeriod,
121
- rewardRate: initialRewardRate}));
150
+ rewardRate: initialRewardRate,
151
+ maxStakedAmount: AmountLib.max()}));
122
152
  }
123
153
 
124
154
 
@@ -166,6 +196,21 @@ contract Staking is
166
196
  emit LogStakingRewardRateSet(targetNftId, oldRewardRate, rewardRate);
167
197
  }
168
198
 
199
+ function setMaxStakedAmount(NftId targetNftId, Amount maxStakedAmount)
200
+ external
201
+ virtual
202
+ restricted()
203
+ onlyTarget(targetNftId)
204
+ {
205
+ IStaking.TargetInfo memory targetInfo = getStakingReader().getTargetInfo(targetNftId);
206
+
207
+ targetInfo.maxStakedAmount = maxStakedAmount;
208
+
209
+ _getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
210
+
211
+ emit LogStakingMaxStakedAmountSet(targetNftId, maxStakedAmount);
212
+ }
213
+
169
214
 
170
215
  function refillRewardReserves(NftId targetNftId, Amount dipAmount)
171
216
  external
@@ -247,7 +292,7 @@ contract Staking is
247
292
  restricted() // only staking service
248
293
  {
249
294
  StakingStorage storage $ = _getStakingStorage();
250
- Timestamp lockedUntil = StakeManagerLib.checkCreateParameters(
295
+ Timestamp lockedUntil = StakingLib.checkCreateParameters(
251
296
  $._reader,
252
297
  targetNftId,
253
298
  stakeAmount);
@@ -277,7 +322,7 @@ contract Staking is
277
322
  returns (Amount stakeBalance)
278
323
  {
279
324
  StakingStorage storage $ = _getStakingStorage();
280
- stakeBalance = StakeManagerLib.stake(
325
+ stakeBalance = StakingLib.stake(
281
326
  getRegistry(),
282
327
  $._reader,
283
328
  $._store,
@@ -288,21 +333,26 @@ contract Staking is
288
333
 
289
334
  function restake(
290
335
  NftId stakeNftId,
291
- NftId newTargetNftId
336
+ NftId newStakeNftId
292
337
  )
293
338
  external
294
339
  virtual
295
340
  restricted() // only staking service
296
341
  onlyStake(stakeNftId)
297
- returns (NftId newStakeNftId)
342
+ returns (Amount newStakeBalance)
298
343
  {
344
+ _checkNftType(stakeNftId, STAKE());
345
+ _checkNftType(newStakeNftId, STAKE());
346
+
299
347
  // TODO add check that allows additional staking amount
300
348
  StakingStorage storage $ = _getStakingStorage();
301
-
302
- // TODO implement
349
+ newStakeBalance = StakingLib.restake(
350
+ $._reader,
351
+ $._store,
352
+ stakeNftId,
353
+ newStakeNftId);
303
354
  }
304
355
 
305
-
306
356
  function updateRewards(NftId stakeNftId)
307
357
  external
308
358
  virtual
@@ -351,7 +401,7 @@ contract Staking is
351
401
  {
352
402
  StakingStorage storage $ = _getStakingStorage();
353
403
 
354
- StakeManagerLib.checkUnstakeParameters($._reader, stakeNftId);
404
+ StakingLib.checkUnstakeParameters($._reader, stakeNftId);
355
405
 
356
406
  // update rewards since last update
357
407
  NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
@@ -371,25 +421,6 @@ contract Staking is
371
421
  }
372
422
 
373
423
 
374
-
375
- //--- other functions ---------------------------------------------------//
376
-
377
- function collectDipAmount(address from, Amount dipAmount)
378
- external
379
- restricted() // only staking service
380
- {
381
- getTokenHandler().collectTokens(from, getWallet(), dipAmount);
382
- }
383
-
384
-
385
- function transferDipAmount(address to, Amount dipAmount)
386
- external
387
- restricted() // only staking service
388
- {
389
- getTokenHandler().distributeTokens(getWallet(), to, dipAmount);
390
- }
391
-
392
-
393
424
  //--- view functions ----------------------------------------------------//
394
425
 
395
426
  function getStakingReader() public view returns (StakingReader reader) {
@@ -408,14 +439,24 @@ contract Staking is
408
439
  return _getStakingStorage()._tokenHandler;
409
440
  }
410
441
 
411
- // from Versionable
442
+ // from IRegisterable
443
+ function getRelease()
444
+ public
445
+ pure
446
+ virtual override (IRelease, Registerable)
447
+ returns(VersionPart)
448
+ {
449
+ return VersionPartLib.toVersionPart(3);
450
+ }
451
+
452
+ // from IVersionable
412
453
  function getVersion()
413
454
  public
414
455
  pure
415
- virtual override (IVersionable, Versionable)
456
+ virtual override (Component, IVersionable, Versionable)
416
457
  returns(Version)
417
458
  {
418
- return VersionLib.toVersion(GIF_RELEASE,0,0);
459
+ return VersionLib.toVersion(3,0,0);
419
460
  }
420
461
 
421
462
  //--- internal functions ------------------------------------------------//
@@ -432,7 +473,7 @@ contract Staking is
432
473
  UFixed rewardRate;
433
474
 
434
475
  (targetNftId, rewardRate) = reader.getTargetRewardRate(stakeNftId);
435
- (Amount rewardIncrement, ) = StakeManagerLib.calculateRewardIncrease(
476
+ (Amount rewardIncrement, ) = StakingLib.calculateRewardIncrease(
436
477
  reader,
437
478
  stakeNftId,
438
479
  rewardRate);
@@ -444,6 +485,16 @@ contract Staking is
444
485
  }
445
486
 
446
487
 
488
+ function _approveTokenHandler(IERC20Metadata token, Amount amount)
489
+ internal
490
+ virtual override
491
+ {
492
+ IComponentService(_getServiceAddress(STAKING())).approveTokenHandler(
493
+ token,
494
+ amount);
495
+ }
496
+
497
+
447
498
  function _initialize(
448
499
  address owner,
449
500
  bytes memory data
@@ -465,26 +516,24 @@ contract Staking is
465
516
  TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
466
517
  address dipTokenAddress = tokenRegistry.getDipTokenAddress();
467
518
 
519
+ // wiring to external contracts
520
+ StakingStorage storage $ = _getStakingStorage();
521
+ $._protocolNftId = registry.getProtocolNftId();
522
+ $._store = StakingStore(stakingStoreAddress);
523
+ $._reader = StakingStore(stakingStoreAddress).getStakingReader();
524
+ $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
525
+
468
526
  _initializeComponent(
469
527
  authority,
470
528
  registryAddress,
471
529
  registry.getNftId(), // parent nft id
472
530
  CONTRACT_NAME,
473
- dipTokenAddress,
474
531
  STAKING(),
475
532
  false, // is interceptor
476
533
  stakingOwner,
477
534
  "", // registry data
478
535
  ""); // component data
479
536
 
480
- // wiring to external contracts
481
- StakingStorage storage $ = _getStakingStorage();
482
- $._protocolNftId = getRegistry().getProtocolNftId();
483
- $._store = StakingStore(stakingStoreAddress);
484
- $._reader = StakingStore(stakingStoreAddress).getStakingReader();
485
- $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
486
- $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(dipTokenAddress, authority);
487
-
488
537
  _registerInterface(type(IStaking).interfaceId);
489
538
  }
490
539
 
@@ -1,16 +1,10 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
4
  import {Amount, AmountLib} from "../type/Amount.sol";
7
- import {Component} from "../shared/Component.sol";
8
5
  import {IRegistry} from "../registry/IRegistry.sol";
9
- import {IRegistryService} from "../registry/IRegistryService.sol";
10
6
  import {IStaking} from "./IStaking.sol";
11
- import {Key32} from "../type/Key32.sol";
12
7
  import {NftId} from "../type/NftId.sol";
13
- import {ObjectType, INSTANCE, PROTOCOL, TARGET} from "../type/ObjectType.sol";
14
8
  import {Seconds, SecondsLib} from "../type/Seconds.sol";
15
9
  import {StakingReader} from "./StakingReader.sol";
16
10
  import {StakingStore} from "./StakingStore.sol";
@@ -18,7 +12,7 @@ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
18
12
  import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
13
 
20
14
 
21
- library StakeManagerLib {
15
+ library StakingLib {
22
16
 
23
17
  function stake(
24
18
  IRegistry registry,
@@ -51,7 +45,12 @@ library StakeManagerLib {
51
45
 
52
46
  // TODO check that additional dip, rewards and rewards increment
53
47
  // are still ok with max target staking amount
54
- NftId targetNftId = registry.getObjectInfo(stakeNftId).parentNftId;
48
+ NftId targetNftId = registry.getParentNftId(stakeNftId);
49
+ Amount maxStakedAmount = stakingReader.getTargetMaxStakedAmount(targetNftId);
50
+
51
+ if (stakeBalance > maxStakedAmount) {
52
+ revert IStaking.ErrorStakingTargetMaxStakedAmountExceeded(targetNftId, maxStakedAmount, stakeBalance);
53
+ }
55
54
 
56
55
  stakingStore.restakeRewards(
57
56
  stakeNftId,
@@ -72,6 +71,55 @@ library StakeManagerLib {
72
71
 
73
72
  }
74
73
 
74
+ function restake(
75
+ StakingReader stakingReader,
76
+ StakingStore stakingStore,
77
+ NftId oldStakeNftId,
78
+ NftId newStakeNftId
79
+ )
80
+ external
81
+ returns (Amount newStakeBalance)
82
+ {
83
+ checkUnstakeParameters(stakingReader, oldStakeNftId);
84
+ (NftId oldTargetNftId, UFixed oldRewardRate) = stakingReader.getTargetRewardRate(oldStakeNftId);
85
+
86
+ // calculate new rewards update and unstake full amount
87
+ (
88
+ Amount rewardIncrementAmount,
89
+ ) = calculateRewardIncrease(
90
+ stakingReader,
91
+ oldStakeNftId,
92
+ oldRewardRate);
93
+ stakingStore.updateRewards(
94
+ oldStakeNftId,
95
+ oldTargetNftId,
96
+ rewardIncrementAmount);
97
+ (
98
+ Amount unstakedAmount,
99
+ Amount rewardsAmount
100
+ ) = stakingStore.unstakeUpTo(
101
+ oldStakeNftId,
102
+ oldTargetNftId,
103
+ AmountLib.max(), // unstake all stakes
104
+ AmountLib.max()); // claim all rewards
105
+
106
+ // calculate full restake amount
107
+ newStakeBalance = unstakedAmount + rewardsAmount;
108
+ NftId newTargetNftId = stakingReader.getTargetNftId(newStakeNftId);
109
+
110
+ // create new staking target and increase stake
111
+ Timestamp newLockedUntil = _checkCreateParameters(stakingReader, newTargetNftId, newStakeBalance);
112
+ stakingStore.create(
113
+ newStakeNftId,
114
+ IStaking.StakeInfo({
115
+ lockedUntil: newLockedUntil
116
+ }));
117
+ stakingStore.increaseStake(
118
+ newStakeNftId,
119
+ newTargetNftId,
120
+ newStakeBalance);
121
+ }
122
+
75
123
  function checkCreateParameters(
76
124
  StakingReader stakingReader,
77
125
  NftId targetNftId,
@@ -82,6 +130,19 @@ library StakeManagerLib {
82
130
  returns (
83
131
  Timestamp lockedUntil
84
132
  )
133
+ {
134
+ return _checkCreateParameters(stakingReader, targetNftId, dipAmount);
135
+ }
136
+
137
+ function _checkCreateParameters(
138
+ StakingReader stakingReader,
139
+ NftId targetNftId,
140
+ Amount dipAmount
141
+ )
142
+ internal view
143
+ returns (
144
+ Timestamp lockedUntil
145
+ )
85
146
  {
86
147
  Seconds lockingPeriod = checkTarget(stakingReader, targetNftId);
87
148
  checkDipAmount(stakingReader, targetNftId, dipAmount);
@@ -104,11 +165,11 @@ library StakeManagerLib {
104
165
  {
105
166
  NftId targetNftId = stakingReader.getTargetNftId(stakeNftId);
106
167
 
107
- // only accept stakes for active targets
108
- if (!stakingReader.isActive(targetNftId)) {
109
- revert IStaking.ErrorStakingTargetNotActive(targetNftId);
168
+ // target nft id must be registered
169
+ if (!stakingReader.isTarget(targetNftId)) {
170
+ revert IStaking.ErrorStakingNotTarget(targetNftId);
110
171
  }
111
-
172
+
112
173
  IStaking.TargetInfo memory info = stakingReader.getTargetInfo(targetNftId);
113
174
  rewardRate = info.rewardRate;
114
175
  lockingPeriod = info.lockingPeriod;
@@ -121,12 +182,11 @@ library StakeManagerLib {
121
182
  public
122
183
  view
123
184
  returns (
124
- UFixed rewardRate,
125
185
  Seconds lockingPeriod
126
186
  )
127
187
  {
128
188
  IStaking.StakeInfo memory stakeInfo = stakingReader.getStakeInfo(stakeNftId);
129
-
189
+
130
190
  if (stakeInfo.lockedUntil > TimestampLib.blockTimestamp()) {
131
191
  revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
132
192
  }
@@ -146,11 +206,6 @@ library StakeManagerLib {
146
206
  revert IStaking.ErrorStakingNotTarget(targetNftId);
147
207
  }
148
208
 
149
- // only accept stakes for active targets
150
- if (!stakingReader.isActive(targetNftId)) {
151
- revert IStaking.ErrorStakingTargetNotActive(targetNftId);
152
- }
153
-
154
209
  lockingPeriod = stakingReader.getTargetInfo(targetNftId).lockingPeriod;
155
210
  }
156
211
 
@@ -161,14 +216,17 @@ library StakeManagerLib {
161
216
  Amount dipAmount
162
217
  )
163
218
  public
164
- pure
219
+ view
165
220
  {
166
221
  // check stake amount > 0
167
222
  if (dipAmount.eqz()) {
168
223
  revert IStaking.ErrorStakingStakeAmountZero(targetNftId);
169
224
  }
170
225
 
171
- // TODO add check for target specific max dip amount (min stake + tvl * stake rate + buffer)
226
+ Amount maxStakedAmount = stakingReader.getTargetMaxStakedAmount(targetNftId);
227
+ if (dipAmount > maxStakedAmount) {
228
+ revert IStaking.ErrorStakingTargetMaxStakedAmountExceeded(targetNftId, maxStakedAmount, dipAmount);
229
+ }
172
230
  }
173
231
 
174
232
  function calculateRewardIncrease(
@@ -196,11 +254,10 @@ library StakeManagerLib {
196
254
  rewardRate,
197
255
  duration,
198
256
  stakeAmount);
199
-
257
+
200
258
  totalDipAmount = stakeAmount + rewardAmount + rewardIncreaseAmount;
201
259
  }
202
260
 
203
-
204
261
  function calculateRewardAmount(
205
262
  UFixed rewardRate,
206
263
  Seconds duration,
@@ -77,23 +77,8 @@ contract StakingReader is
77
77
  }
78
78
 
79
79
 
80
- function isActive(NftId targetNftId) external view returns (bool) {
81
- return _store.getTargetNftIdSet().isActive(targetNftId);
82
- }
83
-
84
-
85
- function activeTargets() external view returns (uint256) {
86
- return _store.getTargetNftIdSet().activeNftIds();
87
- }
88
-
89
-
90
- function getActiveTargetNftId(uint256 idx) external view returns (NftId) {
91
- return _store.getTargetNftIdSet().getActiveNftId(idx);
92
- }
93
-
94
-
95
80
  function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
96
- return _registry.getObjectInfo(stakeNftId).parentNftId;
81
+ return _registry.getParentNftId(stakeNftId);
97
82
  }
98
83
 
99
84
 
@@ -119,6 +104,11 @@ contract StakingReader is
119
104
  rewardRate = getTargetInfo(targetNftId).rewardRate;
120
105
  }
121
106
 
107
+ /// @dev get the max staked amount allowed for the specified target nft id.
108
+ function getTargetMaxStakedAmount(NftId targetNftId) external view returns (Amount maxStakedAmount) {
109
+ return getTargetInfo(targetNftId).maxStakedAmount;
110
+ }
111
+
122
112
 
123
113
  /// @dev get the reward rate for the specified target nft id.
124
114
  function getRewardRate(NftId targetNftId) external view returns (UFixed rewardRate) {