@etherisc/gif-next 0.0.2-7d58318-324 → 0.0.2-7d7c399-947

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 (509) hide show
  1. package/README.md +46 -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 +158 -70
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  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 +97 -37
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  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 +163 -389
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  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 +245 -315
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +125 -123
  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 +128 -76
  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 +502 -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 +470 -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 +470 -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 +502 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2408 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +130 -61
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +165 -157
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +317 -143
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -85
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +919 -315
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +131 -266
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +102 -92
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +619 -492
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -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 +2 -2
  96. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  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/mock/Dip.sol/Dip.json +2 -2
  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 +84 -24
  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 +143 -387
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +434 -201
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +163 -97
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +270 -27
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +124 -195
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +448 -217
  133. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  134. package/artifacts/contracts/pool/Pool.sol/Pool.json +109 -370
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +569 -396
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -91
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +243 -400
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +435 -212
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +145 -107
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +318 -8
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +361 -113
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +235 -202
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  162. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +57 -4
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +455 -318
  165. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
  167. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  168. package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -312
  169. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
  171. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  172. package/artifacts/contracts/product/Product.sol/Product.json +241 -398
  173. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  174. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  175. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  176. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
  177. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  179. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  180. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +315 -34
  181. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  183. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  184. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  185. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  187. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/Registry.sol/Registry.json +521 -95
  189. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +275 -160
  191. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  193. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
  195. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  196. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
  197. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  199. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +412 -246
  201. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  203. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  204. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  205. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  206. package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
  207. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +508 -551
  209. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +137 -125
  211. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  213. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  215. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  221. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
  223. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +454 -210
  225. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +102 -130
  227. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  229. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  230. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  231. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  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 +55 -2
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  241. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  243. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +89 -307
  244. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  245. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  246. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  247. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  248. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  249. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  250. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  251. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  252. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  253. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  254. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  256. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  257. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  258. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  259. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  260. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  261. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +697 -25
  262. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  263. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  264. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  265. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  266. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  267. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +134 -125
  268. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  269. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +55 -23
  270. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  271. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  272. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  273. package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
  274. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  276. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +122 -95
  278. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  280. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +100 -171
  282. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +98 -84
  284. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +153 -107
  286. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  287. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  288. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  289. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  291. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  293. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  295. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  297. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  299. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  301. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  302. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  303. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  305. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  306. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  307. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  309. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  311. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  313. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  315. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +118 -5
  317. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +3 -3
  319. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  321. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  325. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  328. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
  330. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  332. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  334. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  336. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
  337. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  338. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  339. package/contracts/accounting/AccountingService.sol +262 -0
  340. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  341. package/contracts/accounting/IAccountingService.sol +45 -0
  342. package/contracts/authorization/AccessAdmin.sol +192 -124
  343. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  344. package/contracts/authorization/Authorization.sol +111 -40
  345. package/contracts/authorization/IAccess.sol +1 -0
  346. package/contracts/authorization/IAccessAdmin.sol +10 -6
  347. package/contracts/authorization/IAuthorization.sol +13 -7
  348. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  349. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  350. package/contracts/distribution/BasicDistribution.sol +12 -22
  351. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  352. package/contracts/distribution/Distribution.sol +36 -50
  353. package/contracts/distribution/DistributionService.sol +121 -116
  354. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  355. package/contracts/distribution/IDistributionComponent.sol +2 -2
  356. package/contracts/distribution/IDistributionService.sol +16 -14
  357. package/contracts/examples/fire/DamageLevel.sol +59 -0
  358. package/contracts/examples/fire/FirePool.sol +90 -0
  359. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  360. package/contracts/examples/fire/FireProduct.sol +438 -0
  361. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  362. package/contracts/examples/fire/FireUSD.sol +26 -0
  363. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  364. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  365. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  366. package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
  367. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  368. package/contracts/examples/unpermissioned/SimpleProduct.sol +370 -0
  369. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  370. package/contracts/instance/BundleSet.sol +38 -34
  371. package/contracts/instance/IInstance.sol +16 -36
  372. package/contracts/instance/IInstanceService.sol +9 -29
  373. package/contracts/instance/Instance.sol +47 -66
  374. package/contracts/instance/InstanceAdmin.sol +133 -73
  375. package/contracts/instance/InstanceAuthorizationV3.sol +55 -34
  376. package/contracts/instance/InstanceReader.sol +218 -27
  377. package/contracts/instance/InstanceService.sol +125 -164
  378. package/contracts/instance/InstanceServiceManager.sol +6 -7
  379. package/contracts/instance/InstanceStore.sol +24 -2
  380. package/contracts/instance/RiskSet.sol +117 -0
  381. package/contracts/instance/base/ObjectCounter.sol +1 -2
  382. package/contracts/instance/base/ObjectLifecycle.sol +11 -4
  383. package/contracts/instance/base/ObjectSet.sol +24 -25
  384. package/contracts/instance/module/IBundle.sol +1 -1
  385. package/contracts/instance/module/IComponents.sol +14 -14
  386. package/contracts/instance/module/IDistribution.sol +0 -1
  387. package/contracts/instance/module/IPolicy.sol +26 -25
  388. package/contracts/instance/module/IRisk.sol +3 -0
  389. package/contracts/mock/Dip.sol +1 -1
  390. package/contracts/oracle/BasicOracle.sol +0 -1
  391. package/contracts/oracle/IOracleService.sol +2 -1
  392. package/contracts/oracle/Oracle.sol +9 -23
  393. package/contracts/oracle/OracleService.sol +113 -81
  394. package/contracts/oracle/OracleServiceManager.sol +6 -6
  395. package/contracts/pool/BasicPool.sol +38 -27
  396. package/contracts/pool/BasicPoolAuthorization.sol +19 -3
  397. package/contracts/pool/BundleService.sol +221 -80
  398. package/contracts/pool/BundleServiceManager.sol +6 -6
  399. package/contracts/pool/IBundleService.sol +33 -18
  400. package/contracts/pool/IPoolComponent.sol +21 -10
  401. package/contracts/pool/IPoolService.sol +53 -50
  402. package/contracts/pool/Pool.sol +150 -116
  403. package/contracts/pool/PoolService.sol +338 -159
  404. package/contracts/pool/PoolServiceManager.sol +4 -4
  405. package/contracts/product/ApplicationService.sol +72 -43
  406. package/contracts/product/ApplicationServiceManager.sol +4 -4
  407. package/contracts/product/BasicProduct.sol +13 -44
  408. package/contracts/product/BasicProductAuthorization.sol +1 -3
  409. package/contracts/product/ClaimService.sol +427 -135
  410. package/contracts/product/ClaimServiceManager.sol +4 -4
  411. package/contracts/product/IApplicationService.sol +6 -2
  412. package/contracts/product/IClaimService.sol +44 -7
  413. package/contracts/product/IPolicyService.sol +46 -34
  414. package/contracts/product/IPricingService.sol +10 -10
  415. package/contracts/product/IProductComponent.sol +27 -5
  416. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  417. package/contracts/product/PolicyService.sol +520 -259
  418. package/contracts/product/PolicyServiceManager.sol +4 -4
  419. package/contracts/product/PricingService.sol +66 -62
  420. package/contracts/product/PricingServiceManager.sol +4 -4
  421. package/contracts/product/Product.sol +160 -89
  422. package/contracts/product/RiskService.sol +151 -0
  423. package/contracts/product/RiskServiceManager.sol +39 -0
  424. package/contracts/registry/ChainNft.sol +72 -40
  425. package/contracts/registry/IRegistry.sol +58 -28
  426. package/contracts/registry/IRegistryService.sol +5 -12
  427. package/contracts/registry/IRelease.sol +26 -0
  428. package/contracts/registry/ITransferInterceptor.sol +1 -2
  429. package/contracts/registry/Registry.sol +353 -203
  430. package/contracts/registry/RegistryAdmin.sol +161 -182
  431. package/contracts/registry/RegistryService.sol +37 -48
  432. package/contracts/registry/RegistryServiceManager.sol +3 -3
  433. package/contracts/registry/ReleaseAdmin.sol +245 -0
  434. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  435. package/contracts/registry/ReleaseRegistry.sol +258 -234
  436. package/contracts/registry/ServiceAuthorizationV3.sol +94 -52
  437. package/contracts/registry/TokenRegistry.sol +6 -8
  438. package/contracts/shared/Component.sol +71 -125
  439. package/contracts/shared/ComponentService.sol +428 -350
  440. package/contracts/shared/ComponentServiceManager.sol +8 -5
  441. package/contracts/shared/ComponentVerifyingService.sol +28 -17
  442. package/contracts/shared/ContractLib.sol +252 -0
  443. package/contracts/shared/IComponent.sol +8 -17
  444. package/contracts/shared/IComponentService.sol +43 -39
  445. package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
  446. package/contracts/shared/ILifecycle.sol +3 -1
  447. package/contracts/shared/INftOwnable.sol +2 -0
  448. package/contracts/shared/IPolicyHolder.sol +12 -22
  449. package/contracts/shared/IRegisterable.sol +23 -1
  450. package/contracts/shared/IService.sol +3 -5
  451. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  452. package/contracts/shared/InstanceLinkedComponent.sol +72 -47
  453. package/contracts/shared/KeyValueStore.sol +1 -1
  454. package/contracts/shared/Lifecycle.sol +15 -4
  455. package/contracts/shared/NftOwnable.sol +31 -11
  456. package/contracts/shared/PolicyHolder.sol +17 -57
  457. package/contracts/shared/Registerable.sol +55 -21
  458. package/contracts/shared/RegistryLinked.sol +9 -14
  459. package/contracts/shared/Service.sol +15 -32
  460. package/contracts/shared/TokenHandler.sol +357 -26
  461. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  462. package/contracts/staking/IStaking.sol +11 -5
  463. package/contracts/staking/IStakingService.sol +0 -3
  464. package/contracts/staking/StakeManagerLib.sol +18 -25
  465. package/contracts/staking/Staking.sol +71 -59
  466. package/contracts/staking/StakingManager.sol +8 -6
  467. package/contracts/staking/StakingReader.sol +12 -5
  468. package/contracts/staking/StakingService.sol +64 -36
  469. package/contracts/staking/StakingServiceManager.sol +2 -2
  470. package/contracts/staking/TargetManagerLib.sol +7 -3
  471. package/contracts/type/Amount.sol +27 -5
  472. package/contracts/type/Blocknumber.sol +7 -1
  473. package/contracts/type/ClaimId.sol +6 -1
  474. package/contracts/type/Key32.sol +2 -2
  475. package/contracts/type/Key32Set.sol +62 -0
  476. package/contracts/type/NftId.sol +7 -0
  477. package/contracts/type/ObjectType.sol +36 -17
  478. package/contracts/type/PayoutId.sol +10 -10
  479. package/contracts/type/Referral.sol +1 -0
  480. package/contracts/type/RiskId.sol +35 -4
  481. package/contracts/type/RoleId.sol +4 -13
  482. package/contracts/type/Seconds.sol +21 -1
  483. package/contracts/type/StateId.sol +15 -1
  484. package/contracts/type/Timestamp.sol +10 -5
  485. package/contracts/type/UFixed.sol +35 -122
  486. package/contracts/type/Version.sol +15 -5
  487. package/contracts/upgradeability/ProxyManager.sol +68 -34
  488. package/contracts/upgradeability/Versionable.sol +2 -2
  489. package/package.json +4 -3
  490. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  491. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  492. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  493. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  494. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  495. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  496. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  497. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  498. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  499. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  500. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  501. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  502. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  503. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  504. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  505. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  506. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  507. package/contracts/product/ProductService.sol +0 -99
  508. package/contracts/product/ProductServiceManager.sol +0 -39
  509. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -30,6 +30,9 @@ interface IStaking is
30
30
  error ErrorStakingNotStakingOwner();
31
31
  error ErrorStakingNotNftOwner(NftId nftId);
32
32
 
33
+ // initializeTokenHandler
34
+ error ErrorStakingNotRegistry(address registry);
35
+
33
36
  // staking rate
34
37
  error ErrorStakingTokenNotRegistered(uint256 chainId, address token);
35
38
 
@@ -42,8 +45,9 @@ interface IStaking is
42
45
  error ErrorStakingTargetNftIdZero();
43
46
  error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
44
47
  error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
45
- error ErrorStakingLockingPeriodZero(NftId targetNftId);
48
+ error ErrorStakingLockingPeriodTooShort(NftId targetNftId, Seconds minLockingPeriod, Seconds lockingPeriod);
46
49
  error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
50
+ error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
47
51
  error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
48
52
  error ErrorStakingTargetNotFound(NftId targetNftId);
49
53
  error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
@@ -63,6 +67,8 @@ interface IStaking is
63
67
  UFixed rewardRate;
64
68
  }
65
69
 
70
+ function initializeTokenHandler() external;
71
+
66
72
  // staking rate management
67
73
 
68
74
  /// @dev sets the rate that converts 1 token of total value locked into the
@@ -154,11 +160,11 @@ interface IStaking is
154
160
 
155
161
  //--- helper functions --------------------------------------------------//
156
162
 
157
- /// @dev transfers the specified amount of dips from the from address to the staking wallet.
158
- function collectDipAmount(address from, Amount dipAmount) external;
163
+ // /// @dev transfers the specified amount of dips from the from address to the staking wallet.
164
+ // function collectDipAmount(address from, Amount dipAmount) external;
159
165
 
160
- /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
161
- function transferDipAmount(address to, Amount dipAmount) external;
166
+ // /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
167
+ // function transferDipAmount(address to, Amount dipAmount) external;
162
168
 
163
169
  //--- view and pure functions -------------------------------------------//
164
170
 
@@ -7,9 +7,7 @@ import {Amount} from "../type/Amount.sol";
7
7
  import {IService} from "../shared/IService.sol";
8
8
  import {IStaking} from "./IStaking.sol";
9
9
  import {NftId} from "../type/NftId.sol";
10
- import {ObjectType} from "../type/ObjectType.sol";
11
10
  import {Seconds} from "../type/Seconds.sol";
12
- import {Timestamp} from "../type/Timestamp.sol";
13
11
  import {TokenHandler} from "../shared/TokenHandler.sol";
14
12
  import {UFixed} from "../type/UFixed.sol";
15
13
 
@@ -33,7 +31,6 @@ interface IStakingService is IService
33
31
  event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
34
32
 
35
33
  // modifiers
36
- error ErrorStakingServiceNotNftOwner(NftId nftId, address expectedOwner, address owner);
37
34
  error ErrorStakingServiceNotStaking(address stakingAddress);
38
35
  error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
39
36
 
@@ -114,6 +114,24 @@ library StakeManagerLib {
114
114
  lockingPeriod = info.lockingPeriod;
115
115
  }
116
116
 
117
+ function checkUnstakeParameters(
118
+ StakingReader stakingReader,
119
+ NftId stakeNftId
120
+ )
121
+ public
122
+ view
123
+ returns (
124
+ UFixed rewardRate,
125
+ Seconds lockingPeriod
126
+ )
127
+ {
128
+ IStaking.StakeInfo memory stakeInfo = stakingReader.getStakeInfo(stakeNftId);
129
+
130
+ if (stakeInfo.lockedUntil > TimestampLib.blockTimestamp()) {
131
+ revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
132
+ }
133
+ }
134
+
117
135
 
118
136
  function checkTarget(
119
137
  StakingReader stakingReader,
@@ -153,31 +171,6 @@ library StakeManagerLib {
153
171
  // TODO add check for target specific max dip amount (min stake + tvl * stake rate + buffer)
154
172
  }
155
173
 
156
-
157
- function checkDipBalanceAndAllowance(
158
- IERC20Metadata dip,
159
- address owner,
160
- address tokenHandlerAddress,
161
- Amount dipAmount
162
- )
163
- public
164
- view
165
- {
166
- // check balance
167
- uint256 amount = dipAmount.toInt();
168
- uint256 dipBalance = dip.balanceOf(owner);
169
- if (dipBalance < amount) {
170
- revert IStaking.ErrorStakingDipBalanceInsufficient(owner, amount, dipBalance);
171
- }
172
-
173
- // check allowance
174
- uint256 dipAllowance = dip.allowance(owner, tokenHandlerAddress);
175
- if (dipAllowance < amount) {
176
- revert IStaking.ErrorStakingDipAllowanceInsufficient(owner, tokenHandlerAddress, amount, dipAllowance);
177
- }
178
- }
179
-
180
-
181
174
  function calculateRewardIncrease(
182
175
  StakingReader stakingReader,
183
176
  NftId stakeNftId,
@@ -1,26 +1,32 @@
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
7
  import {IRegistryService} from "../registry/IRegistryService.sol";
8
+ import {IRelease} from "../registry/IRelease.sol";
6
9
  import {IStaking} from "./IStaking.sol";
7
10
  import {IVersionable} from "../upgradeability/IVersionable.sol";
8
11
 
9
12
  import {Amount, AmountLib} from "../type/Amount.sol";
10
13
  import {Component} from "../shared/Component.sol";
11
14
  import {IComponent} from "../shared/IComponent.sol";
15
+ import {IComponentService} from "../shared/IComponentService.sol";
12
16
  import {NftId} from "../type/NftId.sol";
13
- import {ObjectType, STAKING} from "../type/ObjectType.sol";
17
+ import {ObjectType, COMPONENT, STAKING} from "../type/ObjectType.sol";
14
18
  import {Seconds} from "../type/Seconds.sol";
19
+ import {Registerable} from "../shared/Registerable.sol";
15
20
  import {StakeManagerLib} from "./StakeManagerLib.sol";
16
21
  import {StakingReader} from "./StakingReader.sol";
17
22
  import {StakingStore} from "./StakingStore.sol";
18
23
  import {TargetManagerLib} from "./TargetManagerLib.sol";
19
24
  import {Timestamp} from "../type/Timestamp.sol";
20
25
  import {TokenHandler} from "../shared/TokenHandler.sol";
26
+ import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
21
27
  import {TokenRegistry} from "../registry/TokenRegistry.sol";
22
28
  import {UFixed} from "../type/UFixed.sol";
23
- import {Version, VersionLib} from "../type/Version.sol";
29
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
24
30
  import {Versionable} from "../upgradeability/Versionable.sol";
25
31
 
26
32
  contract Staking is
@@ -29,13 +35,11 @@ contract Staking is
29
35
  IStaking
30
36
  {
31
37
  string public constant CONTRACT_NAME = "Staking";
32
- uint8 private constant GIF_MAJOR_VERSION = 3;
33
38
 
34
39
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
35
40
  bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
36
41
 
37
42
  struct StakingStorage {
38
- IRegistryService _registryService;
39
43
  TokenRegistry _tokenRegistry;
40
44
  TokenHandler _tokenHandler;
41
45
  StakingStore _store;
@@ -59,6 +63,31 @@ contract Staking is
59
63
  _;
60
64
  }
61
65
 
66
+ function initializeTokenHandler()
67
+ external
68
+ {
69
+ if (msg.sender != address(getRegistry())) {
70
+ revert ErrorStakingNotRegistry(msg.sender);
71
+ }
72
+
73
+ StakingStorage storage $ = _getStakingStorage();
74
+ $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
75
+ address(getRegistry()),
76
+ address(this),
77
+ address(getToken()),
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
@@ -300,7 +329,7 @@ contract Staking is
300
329
  StakingStorage storage $ = _getStakingStorage();
301
330
 
302
331
  // TODO implement
303
- }
332
+ }
304
333
 
305
334
 
306
335
  function updateRewards(NftId stakeNftId)
@@ -349,9 +378,10 @@ contract Staking is
349
378
  Amount rewardsClaimedAmount
350
379
  )
351
380
  {
352
- // TODO add check that stake locking is in the past
353
381
  StakingStorage storage $ = _getStakingStorage();
354
-
382
+
383
+ StakeManagerLib.checkUnstakeParameters($._reader, stakeNftId);
384
+
355
385
  // update rewards since last update
356
386
  NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
357
387
 
@@ -370,43 +400,6 @@ contract Staking is
370
400
  }
371
401
 
372
402
 
373
-
374
- //--- other functions ---------------------------------------------------//
375
-
376
- function collectDipAmount(address from, Amount dipAmount)
377
- external
378
- restricted() // only staking service
379
- {
380
- TokenHandler tokenHandler = getTokenHandler();
381
- address stakingWallet = getWallet();
382
-
383
- StakeManagerLib.checkDipBalanceAndAllowance(
384
- getToken(),
385
- from,
386
- address(tokenHandler),
387
- dipAmount);
388
-
389
- tokenHandler.transfer(from, stakingWallet, dipAmount);
390
- }
391
-
392
-
393
- function transferDipAmount(address to, Amount dipAmount)
394
- external
395
- restricted() // only staking service
396
- {
397
- TokenHandler tokenHandler = getTokenHandler();
398
- address stakingWallet = getWallet();
399
-
400
- StakeManagerLib.checkDipBalanceAndAllowance(
401
- getToken(),
402
- stakingWallet,
403
- address(tokenHandler),
404
- dipAmount);
405
-
406
- tokenHandler.transfer(stakingWallet, to, dipAmount);
407
- }
408
-
409
-
410
403
  //--- view functions ----------------------------------------------------//
411
404
 
412
405
  function getStakingReader() public view returns (StakingReader reader) {
@@ -425,14 +418,24 @@ contract Staking is
425
418
  return _getStakingStorage()._tokenHandler;
426
419
  }
427
420
 
428
- // from Versionable
421
+ // from IRegisterable
422
+ function getRelease()
423
+ public
424
+ pure
425
+ virtual override (IRelease, Registerable)
426
+ returns(VersionPart)
427
+ {
428
+ return VersionPartLib.toVersionPart(3);
429
+ }
430
+
431
+ // from IVersionable
429
432
  function getVersion()
430
433
  public
431
434
  pure
432
- virtual override (IVersionable, Versionable)
435
+ virtual override (Component, IVersionable, Versionable)
433
436
  returns(Version)
434
437
  {
435
- return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
438
+ return VersionLib.toVersion(3,0,0);
436
439
  }
437
440
 
438
441
  //--- internal functions ------------------------------------------------//
@@ -461,13 +464,23 @@ contract Staking is
461
464
  }
462
465
 
463
466
 
467
+ function _approveTokenHandler(IERC20Metadata token, Amount amount)
468
+ internal
469
+ virtual override
470
+ {
471
+ IComponentService(_getServiceAddress(COMPONENT())).approveStakingTokenHandler(
472
+ token,
473
+ amount);
474
+ }
475
+
476
+
464
477
  function _initialize(
465
478
  address owner,
466
479
  bytes memory data
467
480
  )
468
481
  internal
469
482
  virtual override
470
- initializer
483
+ initializer()
471
484
  {
472
485
  (
473
486
  address registryAddress,
@@ -482,10 +495,17 @@ contract Staking is
482
495
  TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
483
496
  address dipTokenAddress = tokenRegistry.getDipTokenAddress();
484
497
 
485
- initializeComponent(
498
+ // wiring to external contracts
499
+ StakingStorage storage $ = _getStakingStorage();
500
+ $._protocolNftId = registry.getProtocolNftId();
501
+ $._store = StakingStore(stakingStoreAddress);
502
+ $._reader = StakingStore(stakingStoreAddress).getStakingReader();
503
+ $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
504
+
505
+ _initializeComponent(
486
506
  authority,
487
507
  registryAddress,
488
- registry.getNftId(),
508
+ registry.getNftId(), // parent nft id
489
509
  CONTRACT_NAME,
490
510
  dipTokenAddress,
491
511
  STAKING(),
@@ -494,15 +514,7 @@ contract Staking is
494
514
  "", // registry data
495
515
  ""); // component data
496
516
 
497
- // wiring to external contracts
498
- StakingStorage storage $ = _getStakingStorage();
499
- $._protocolNftId = getRegistry().getProtocolNftId();
500
- $._store = StakingStore(stakingStoreAddress);
501
- $._reader = StakingStore(stakingStoreAddress).getStakingReader();
502
- $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
503
- $._tokenHandler = new TokenHandler(address(getToken()));
504
-
505
- registerInterface(type(IStaking).interfaceId);
517
+ _registerInterface(type(IStaking).interfaceId);
506
518
  }
507
519
 
508
520
 
@@ -18,9 +18,9 @@ contract StakingManager is
18
18
  address registry,
19
19
  address tokenRegistry,
20
20
  address stakingStore,
21
- address initialOwner
21
+ address initialOwner,
22
+ bytes32 salt
22
23
  )
23
- ProxyManager(registry)
24
24
  {
25
25
  Staking stakingImplementation = new Staking();
26
26
 
@@ -30,10 +30,12 @@ contract StakingManager is
30
30
  tokenRegistry,
31
31
  stakingStore,
32
32
  initialOwner);
33
-
34
- IVersionable versionable = deploy(
35
- _initialImplementation,
36
- _initializationData);
33
+
34
+ IVersionable versionable = initialize(
35
+ registry,
36
+ _initialImplementation,
37
+ _initializationData,
38
+ salt);
37
39
 
38
40
  _staking = Staking(address(versionable));
39
41
  }
@@ -1,13 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
4
6
  import {IRegistry} from "../registry/IRegistry.sol";
5
7
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
6
8
  import {IStaking} from "../staking/IStaking.sol";
7
9
 
8
10
  import {Amount} from "../type/Amount.sol";
9
11
  import {Blocknumber} from "../type/Blocknumber.sol";
10
- import {InitializableCustom} from "../shared/InitializableCustom.sol";
11
12
  import {NftId} from "../type/NftId.sol";
12
13
  import {STAKE, TARGET} from "../type/ObjectType.sol";
13
14
  import {StakingStore} from "./StakingStore.sol";
@@ -16,16 +17,18 @@ import {UFixed} from "../type/UFixed.sol";
16
17
 
17
18
  contract StakingReader is
18
19
  IRegistryLinked,
19
- InitializableCustom
20
+ Initializable
20
21
  {
21
22
 
22
- error ErrorStakingReaderDependenciesAlreadySet();
23
+ error ErrorStakingReaderUnauthorizedCaler();
23
24
 
25
+ address private _initializeOwner;
24
26
  IRegistry private _registry;
25
27
  IStaking private _staking;
26
28
  StakingStore private _store;
27
29
 
28
- constructor(IRegistry registry) InitializableCustom() {
30
+ constructor(IRegistry registry) {
31
+ _initializeOwner = msg.sender;
29
32
  _registry = registry;
30
33
  }
31
34
 
@@ -34,8 +37,12 @@ contract StakingReader is
34
37
  address stakingStoreAddress
35
38
  )
36
39
  external
37
- initializer
40
+ initializer()
38
41
  {
42
+ if (msg.sender != _initializeOwner) {
43
+ revert ErrorStakingReaderUnauthorizedCaler();
44
+ }
45
+
39
46
  _staking = IStaking(stakingAddress);
40
47
  _store = StakingStore(stakingStoreAddress);
41
48
  }
@@ -4,21 +4,15 @@ pragma solidity ^0.8.20;
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
6
  import {Amount} from "../type/Amount.sol";
7
- import {ChainNft} from "../registry/ChainNft.sol";
8
- import {IPoolService} from "../pool/IPoolService.sol";
9
7
  import {IRegisterable} from "../shared/IRegisterable.sol";
10
8
  import {IRegistry} from "../registry/IRegistry.sol";
11
9
  import {RegistryService} from "../registry/RegistryService.sol";
12
10
  import {IStaking} from "./IStaking.sol";
13
11
  import {IStakingService} from "./IStakingService.sol";
14
12
  import {NftId, NftIdLib} from "../type/NftId.sol";
15
- import {ObjectType, INSTANCE, PROTOCOL, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
13
+ import {ObjectType, INSTANCE, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
16
14
  import {Seconds} from "../type/Seconds.sol";
17
15
  import {Service} from "../shared/Service.sol";
18
- import {StakeManagerLib} from "./StakeManagerLib.sol";
19
- import {StakingReader} from "./StakingReader.sol";
20
- import {TargetManagerLib} from "./TargetManagerLib.sol";
21
- import {Timestamp} from "../type/Timestamp.sol";
22
16
  import {TokenHandler} from "../shared/TokenHandler.sol";
23
17
  import {UFixed} from "../type/UFixed.sol";
24
18
 
@@ -38,14 +32,6 @@ contract StakingService is
38
32
  TokenHandler _tokenHandler;
39
33
  }
40
34
 
41
- modifier onlyNftOwner(NftId nftId) {
42
- if(msg.sender != getRegistry().ownerOf(nftId)) {
43
- revert ErrorStakingServiceNotNftOwner(nftId, getRegistry().ownerOf(nftId), msg.sender);
44
- }
45
- _;
46
- }
47
-
48
-
49
35
  function createInstanceTarget(
50
36
  NftId targetNftId,
51
37
  Seconds initialLockingPeriod,
@@ -72,6 +58,7 @@ contract StakingService is
72
58
  virtual
73
59
  restricted()
74
60
  {
61
+ _checkNftType(instanceNftId, INSTANCE());
75
62
  _getStakingServiceStorage()._staking.setLockingPeriod(
76
63
  instanceNftId,
77
64
  lockingPeriod);
@@ -83,6 +70,7 @@ contract StakingService is
83
70
  virtual
84
71
  restricted()
85
72
  {
73
+ _checkNftType(instanceNftId, INSTANCE());
86
74
  _getStakingServiceStorage()._staking.setRewardRate(
87
75
  instanceNftId,
88
76
  rewardRate);
@@ -95,6 +83,7 @@ contract StakingService is
95
83
  restricted()
96
84
  returns (Amount newBalance)
97
85
  {
86
+ _checkNftType(instanceNftId, INSTANCE());
98
87
  return _refillRewardReserves(instanceNftId, rewardProvider, dipAmount);
99
88
  }
100
89
 
@@ -116,17 +105,18 @@ contract StakingService is
116
105
  restricted()
117
106
  returns (Amount newBalance)
118
107
  {
108
+ _checkNftType(instanceNftId, INSTANCE());
119
109
  // update reward reserve book keeping
120
110
  StakingServiceStorage storage $ = _getStakingServiceStorage();
121
111
  newBalance = $._staking.withdrawRewardReserves(instanceNftId, dipAmount);
122
112
 
123
113
  // transfer withdrawal amount to target owner
124
114
  address instanceOwner = getRegistry().ownerOf(instanceNftId);
125
- $._staking.transferDipAmount(
115
+ emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
116
+ _distributeToken(
117
+ $._staking.getTokenHandler(),
126
118
  instanceOwner,
127
119
  dipAmount);
128
-
129
- emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
130
120
  }
131
121
 
132
122
 
@@ -169,12 +159,39 @@ contract StakingService is
169
159
  targetNftId,
170
160
  dipAmount);
171
161
 
162
+ emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
163
+
172
164
  // collect staked dip by staking
173
- $._staking.collectDipAmount(
174
- stakeOwner,
165
+ _collectToken(
166
+ $._staking.getTokenHandler(),
167
+ stakeOwner,
175
168
  dipAmount);
169
+ }
176
170
 
177
- emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
171
+ function _collectToken(
172
+ TokenHandler tokenHandler,
173
+ address from,
174
+ Amount amount
175
+ )
176
+ internal
177
+ virtual
178
+ {
179
+ tokenHandler.collectTokens(
180
+ from,
181
+ amount);
182
+ }
183
+
184
+ function _distributeToken(
185
+ TokenHandler tokenHandler,
186
+ address to,
187
+ Amount amount
188
+ )
189
+ internal
190
+ virtual
191
+ {
192
+ tokenHandler.pushToken(
193
+ to,
194
+ amount);
178
195
  }
179
196
 
180
197
 
@@ -187,6 +204,8 @@ contract StakingService is
187
204
  restricted()
188
205
  onlyNftOwner(stakeNftId)
189
206
  {
207
+ _checkNftType(stakeNftId, STAKE());
208
+
190
209
  StakingServiceStorage storage $ = _getStakingServiceStorage();
191
210
  address stakeOwner = msg.sender;
192
211
 
@@ -197,12 +216,12 @@ contract StakingService is
197
216
 
198
217
  // collect staked dip by staking
199
218
  if (dipAmount.gtz()) {
200
- $._staking.collectDipAmount(
219
+ emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
220
+ _collectToken(
221
+ $._staking.getTokenHandler(),
201
222
  stakeOwner,
202
223
  dipAmount);
203
224
  }
204
-
205
- emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
206
225
  }
207
226
 
208
227
 
@@ -218,6 +237,8 @@ contract StakingService is
218
237
  NftId newStakeNftId
219
238
  )
220
239
  {
240
+ _checkNftType(stakeNftId, STAKE());
241
+
221
242
  StakingServiceStorage storage $ = _getStakingServiceStorage();
222
243
  // TODO implement
223
244
  }
@@ -230,6 +251,8 @@ contract StakingService is
230
251
  virtual
231
252
  restricted()
232
253
  {
254
+ _checkNftType(stakeNftId, STAKE());
255
+
233
256
  StakingServiceStorage storage $ = _getStakingServiceStorage();
234
257
  $._staking.updateRewards(stakeNftId);
235
258
 
@@ -243,15 +266,17 @@ contract StakingService is
243
266
  restricted()
244
267
  onlyNftOwner(stakeNftId)
245
268
  {
269
+ _checkNftType(stakeNftId, STAKE());
270
+
246
271
  StakingServiceStorage storage $ = _getStakingServiceStorage();
247
272
  address stakeOwner = msg.sender;
248
273
 
249
274
  Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
250
- $._staking.transferDipAmount(
275
+ emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
276
+ _distributeToken(
277
+ $._staking.getTokenHandler(),
251
278
  stakeOwner,
252
279
  rewardsClaimedAmount);
253
-
254
- emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
255
280
  }
256
281
 
257
282
 
@@ -261,6 +286,8 @@ contract StakingService is
261
286
  restricted()
262
287
  onlyNftOwner(stakeNftId)
263
288
  {
289
+ _checkNftType(stakeNftId, STAKE());
290
+
264
291
  StakingServiceStorage storage $ = _getStakingServiceStorage();
265
292
  address stakeOwner = msg.sender;
266
293
 
@@ -270,11 +297,11 @@ contract StakingService is
270
297
  ) = $._staking.unstake(stakeNftId);
271
298
 
272
299
  Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
273
- $._staking.transferDipAmount(
274
- stakeOwner,
275
- totalAmount);
276
-
277
300
  emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
301
+
302
+ $._staking.getTokenHandler().pushToken(
303
+ stakeOwner,
304
+ totalAmount);
278
305
  }
279
306
 
280
307
 
@@ -335,7 +362,7 @@ contract StakingService is
335
362
  address stakingAddress
336
363
  ) = abi.decode(data, (address, address, address));
337
364
 
338
- initializeService(registryAddress, authority, owner);
365
+ __Service_init(authority, registryAddress, owner);
339
366
 
340
367
  StakingServiceStorage storage $ = _getStakingServiceStorage();
341
368
  $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
@@ -343,7 +370,7 @@ contract StakingService is
343
370
  $._dip = $._staking.getToken();
344
371
  $._tokenHandler = $._staking.getTokenHandler();
345
372
 
346
- registerInterface(type(IStakingService).interfaceId);
373
+ _registerInterface(type(IStakingService).interfaceId);
347
374
  }
348
375
 
349
376
 
@@ -389,12 +416,13 @@ contract StakingService is
389
416
  StakingServiceStorage storage $ = _getStakingServiceStorage();
390
417
  newBalance = $._staking.refillRewardReserves(targetNftId, dipAmount);
391
418
 
419
+ emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
420
+
392
421
  // collect reward dip from provider
393
- $._staking.collectDipAmount(
422
+ _collectToken(
423
+ $._staking.getTokenHandler(),
394
424
  rewardProvider,
395
425
  dipAmount);
396
-
397
- emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
398
426
  }
399
427
 
400
428