@etherisc/gif-next 0.0.2-ee01d06-525 → 0.0.2-ee54ca6-863

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 (480) hide show
  1. package/README.md +32 -3
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +10 -10
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -450
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +255 -233
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +67 -106
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +91 -160
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +152 -47
  36. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  44. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +28 -178
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +290 -141
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +52 -224
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -110
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +216 -226
  64. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  66. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  69. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +6 -6
  71. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  73. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  79. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  80. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  81. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  82. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  83. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  85. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  87. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -37
  89. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +40 -315
  92. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -144
  94. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -85
  96. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  98. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  100. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +402 -174
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +111 -94
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +45 -290
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -576
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +264 -248
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +40 -87
  116. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +31 -162
  118. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +31 -94
  120. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  122. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  124. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  125. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +185 -175
  126. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +58 -105
  128. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  129. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  130. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
  132. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +184 -119
  134. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  136. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -79
  138. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  139. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +242 -321
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +55 -106
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.json +113 -265
  146. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +55 -126
  148. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  149. package/artifacts/contracts/product/Product.sol/Product.json +35 -378
  150. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  151. package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
  152. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +246 -42
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  161. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  162. package/artifacts/contracts/registry/Registry.sol/Registry.json +464 -99
  163. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +336 -376
  165. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -130
  167. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -78
  169. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +6 -6
  171. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  173. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +24 -16
  175. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  177. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  178. package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
  179. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +242 -185
  181. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +69 -112
  183. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -112
  185. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  187. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  189. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -37
  191. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +0 -42
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  200. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  201. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  202. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  203. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -275
  204. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  205. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  206. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  207. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  208. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  209. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  210. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  211. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +4 -136
  212. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  214. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  215. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  216. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  217. package/artifacts/contracts/shared/Service.sol/Service.json +0 -112
  218. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  219. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  220. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  221. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  222. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  223. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  224. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  225. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  226. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
  227. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  228. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
  229. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  230. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +6 -6
  231. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +47 -94
  233. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  235. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  236. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -138
  237. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -82
  239. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +139 -134
  241. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  242. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +58 -22
  243. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  244. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  245. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  247. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  249. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  251. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  253. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  255. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  257. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  259. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  260. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  261. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  263. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  265. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  267. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  269. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  271. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  273. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  275. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  277. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  279. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  281. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  283. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  285. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  287. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  289. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  291. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  293. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  294. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  295. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  296. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +566 -0
  297. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  298. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  299. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  300. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  301. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -305
  302. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  303. package/contracts/authorization/Authorization.sol +217 -0
  304. package/contracts/authorization/IAccess.sol +48 -0
  305. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  306. package/contracts/authorization/IAuthorization.sol +54 -0
  307. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  308. package/contracts/{registry → authorization}/IServiceAuthorization.sol +5 -5
  309. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  310. package/contracts/{registry → authorization}/ServiceAuthorization.sol +17 -17
  311. package/contracts/distribution/BasicDistribution.sol +138 -0
  312. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  313. package/contracts/distribution/Distribution.sol +145 -111
  314. package/contracts/distribution/DistributionService.sol +80 -41
  315. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  316. package/contracts/distribution/IDistributionComponent.sol +25 -39
  317. package/contracts/distribution/IDistributionService.sol +23 -3
  318. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  319. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  320. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  321. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  322. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  323. package/contracts/instance/IInstance.sol +14 -38
  324. package/contracts/instance/IInstanceService.sol +13 -18
  325. package/contracts/instance/Instance.sol +68 -102
  326. package/contracts/instance/InstanceAdmin.sol +221 -267
  327. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  328. package/contracts/instance/InstanceReader.sol +54 -16
  329. package/contracts/instance/InstanceService.sol +112 -84
  330. package/contracts/instance/InstanceServiceManager.sol +2 -6
  331. package/contracts/instance/InstanceStore.sol +17 -2
  332. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  333. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  334. package/contracts/instance/module/IBundle.sol +1 -1
  335. package/contracts/instance/module/IComponents.sol +1 -7
  336. package/contracts/instance/module/IDistribution.sol +0 -1
  337. package/contracts/instance/module/IPolicy.sol +22 -22
  338. package/contracts/mock/Dip.sol +1 -1
  339. package/contracts/oracle/BasicOracle.sol +48 -0
  340. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  341. package/contracts/oracle/IOracle.sol +16 -0
  342. package/contracts/oracle/IOracleComponent.sol +2 -1
  343. package/contracts/oracle/Oracle.sol +73 -51
  344. package/contracts/oracle/OracleService.sol +4 -3
  345. package/contracts/oracle/OracleServiceManager.sol +2 -5
  346. package/contracts/pool/BasicPool.sol +166 -0
  347. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  348. package/contracts/pool/BundleService.sol +192 -50
  349. package/contracts/pool/BundleServiceManager.sol +2 -5
  350. package/contracts/pool/IBundleService.sol +33 -5
  351. package/contracts/pool/IPoolComponent.sol +6 -60
  352. package/contracts/pool/IPoolService.sol +36 -26
  353. package/contracts/pool/Pool.sol +165 -138
  354. package/contracts/pool/PoolService.sol +165 -108
  355. package/contracts/pool/PoolServiceManager.sol +2 -5
  356. package/contracts/product/ApplicationService.sol +53 -59
  357. package/contracts/product/ApplicationServiceManager.sol +2 -2
  358. package/contracts/product/BasicProduct.sol +53 -0
  359. package/contracts/product/BasicProductAuthorization.sol +43 -0
  360. package/contracts/product/ClaimService.sol +120 -75
  361. package/contracts/product/ClaimServiceManager.sol +2 -2
  362. package/contracts/product/IApplicationService.sol +1 -0
  363. package/contracts/product/IClaimService.sol +28 -5
  364. package/contracts/product/IPolicyService.sol +27 -32
  365. package/contracts/product/IPricingService.sol +7 -7
  366. package/contracts/product/IProductComponent.sol +7 -10
  367. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  368. package/contracts/product/PolicyService.sol +280 -182
  369. package/contracts/product/PolicyServiceManager.sol +2 -5
  370. package/contracts/product/PricingService.sol +44 -43
  371. package/contracts/product/PricingServiceManager.sol +2 -5
  372. package/contracts/product/Product.sol +162 -114
  373. package/contracts/product/{ProductService.sol → RiskService.sol} +11 -38
  374. package/contracts/product/RiskServiceManager.sol +39 -0
  375. package/contracts/registry/ChainNft.sol +65 -32
  376. package/contracts/registry/IRegistry.sol +63 -19
  377. package/contracts/registry/IRegistryService.sol +6 -6
  378. package/contracts/registry/Registry.sol +333 -213
  379. package/contracts/registry/RegistryAdmin.sol +260 -131
  380. package/contracts/registry/RegistryService.sol +6 -20
  381. package/contracts/registry/RegistryServiceManager.sol +2 -2
  382. package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +107 -119
  383. package/contracts/registry/ServiceAuthorizationV3.sol +16 -17
  384. package/contracts/registry/TokenRegistry.sol +2 -2
  385. package/contracts/shared/Component.sol +30 -43
  386. package/contracts/shared/ComponentService.sol +99 -78
  387. package/contracts/shared/ComponentServiceManager.sol +2 -2
  388. package/contracts/shared/ComponentVerifyingService.sol +2 -2
  389. package/contracts/shared/IComponent.sol +4 -4
  390. package/contracts/shared/IComponentService.sol +15 -9
  391. package/contracts/shared/IInstanceLinkedComponent.sol +10 -7
  392. package/contracts/shared/IPolicyHolder.sol +0 -9
  393. package/contracts/shared/IService.sol +1 -1
  394. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  395. package/contracts/shared/InstanceLinkedComponent.sol +51 -23
  396. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  397. package/contracts/shared/NftOwnable.sol +7 -7
  398. package/contracts/shared/PolicyHolder.sol +7 -53
  399. package/contracts/shared/Registerable.sol +4 -4
  400. package/contracts/shared/RegistryLinked.sol +3 -2
  401. package/contracts/shared/Service.sol +8 -9
  402. package/contracts/shared/TokenHandler.sol +100 -19
  403. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  404. package/contracts/staking/IStaking.sol +3 -3
  405. package/contracts/staking/IStakingService.sol +12 -5
  406. package/contracts/staking/StakeManagerLib.sol +18 -25
  407. package/contracts/staking/Staking.sol +26 -41
  408. package/contracts/staking/StakingManager.sol +2 -6
  409. package/contracts/staking/StakingReader.sol +12 -16
  410. package/contracts/staking/StakingService.sol +10 -14
  411. package/contracts/staking/StakingServiceManager.sol +2 -2
  412. package/contracts/staking/StakingStore.sol +12 -22
  413. package/contracts/staking/TargetManagerLib.sol +7 -3
  414. package/contracts/type/Amount.sol +12 -5
  415. package/contracts/type/Blocknumber.sol +7 -1
  416. package/contracts/type/ObjectType.sol +52 -18
  417. package/contracts/type/Referral.sol +1 -0
  418. package/contracts/type/RoleId.sol +55 -82
  419. package/contracts/type/Seconds.sol +21 -1
  420. package/contracts/type/StateId.sol +1 -0
  421. package/contracts/type/Timestamp.sol +11 -1
  422. package/contracts/type/UFixed.sol +34 -9
  423. package/contracts/type/Version.sol +3 -1
  424. package/contracts/{shared → upgradeability}/ProxyManager.sol +4 -5
  425. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  426. package/package.json +3 -3
  427. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  428. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  429. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  430. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  431. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  432. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  433. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  434. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  435. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  436. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  437. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  438. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  439. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  440. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1177
  441. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  442. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -190
  443. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  444. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  445. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  446. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  447. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  448. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  449. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  450. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  451. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  452. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  453. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  454. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  455. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  456. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  457. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  458. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  459. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  460. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  461. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  462. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  463. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  464. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  465. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  466. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  467. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  468. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  469. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  470. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  471. package/contracts/product/ProductServiceManager.sol +0 -42
  472. package/contracts/shared/AccessManagerCustom.sol +0 -741
  473. package/contracts/shared/AccessManagerExtended.sol +0 -481
  474. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  475. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  476. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  477. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  478. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  479. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  480. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -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,29 +1,28 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount, AmountLib} from "../type/Amount.sol";
5
- import {ChainNft} from "../registry/ChainNft.sol";
6
- import {Component} from "../shared/Component.sol";
7
4
  import {IRegistry} from "../registry/IRegistry.sol";
8
5
  import {IRegistryService} from "../registry/IRegistryService.sol";
9
6
  import {IStaking} from "./IStaking.sol";
10
- import {IVersionable} from "../shared/IVersionable.sol";
11
- import {Key32} from "../type/Key32.sol";
12
- import {LibNftIdSet} from "../type/NftIdSet.sol";
13
- import {NftId, NftIdLib} from "../type/NftId.sol";
14
- import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
15
- import {ObjectType, INSTANCE, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
16
- import {Seconds, SecondsLib} from "../type/Seconds.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
+
9
+ import {Amount, AmountLib} from "../type/Amount.sol";
10
+ import {Component} from "../shared/Component.sol";
11
+ import {IComponent} from "../shared/IComponent.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {ObjectType, STAKING} from "../type/ObjectType.sol";
14
+ import {Seconds} from "../type/Seconds.sol";
17
15
  import {StakeManagerLib} from "./StakeManagerLib.sol";
18
16
  import {StakingReader} from "./StakingReader.sol";
19
17
  import {StakingStore} from "./StakingStore.sol";
20
18
  import {TargetManagerLib} from "./TargetManagerLib.sol";
21
- import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
19
+ import {Timestamp} from "../type/Timestamp.sol";
22
20
  import {TokenHandler} from "../shared/TokenHandler.sol";
21
+ import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
23
22
  import {TokenRegistry} from "../registry/TokenRegistry.sol";
24
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
23
+ import {UFixed} from "../type/UFixed.sol";
25
24
  import {Version, VersionLib} from "../type/Version.sol";
26
- import {Versionable} from "../shared/Versionable.sol";
25
+ import {Versionable} from "../upgradeability/Versionable.sol";
27
26
 
28
27
  contract Staking is
29
28
  Component,
@@ -39,6 +38,7 @@ contract Staking is
39
38
  struct StakingStorage {
40
39
  IRegistryService _registryService;
41
40
  TokenRegistry _tokenRegistry;
41
+ TokenHandler _tokenHandler;
42
42
  StakingStore _store;
43
43
  StakingReader _reader;
44
44
  NftId _protocolNftId;
@@ -54,7 +54,7 @@ contract Staking is
54
54
 
55
55
 
56
56
  modifier onlyTarget(NftId targetNftId) {
57
- if (!_getStakingStorage()._store.getTargetManager().exists(targetNftId)) {
57
+ if (!_getStakingStorage()._store.getTargetNftIdSet().exists(targetNftId)) {
58
58
  revert ErrorStakingNotTarget(targetNftId);
59
59
  }
60
60
  _;
@@ -301,7 +301,7 @@ contract Staking is
301
301
  StakingStorage storage $ = _getStakingStorage();
302
302
 
303
303
  // TODO implement
304
- }
304
+ }
305
305
 
306
306
 
307
307
  function updateRewards(NftId stakeNftId)
@@ -350,9 +350,10 @@ contract Staking is
350
350
  Amount rewardsClaimedAmount
351
351
  )
352
352
  {
353
- // TODO add check that stake locking is in the past
354
353
  StakingStorage storage $ = _getStakingStorage();
355
-
354
+
355
+ StakeManagerLib.checkUnstakeParameters($._reader, stakeNftId);
356
+
356
357
  // update rewards since last update
357
358
  NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
358
359
 
@@ -378,16 +379,7 @@ contract Staking is
378
379
  external
379
380
  restricted() // only staking service
380
381
  {
381
- TokenHandler tokenHandler = getTokenHandler();
382
- address stakingWallet = getWallet();
383
-
384
- StakeManagerLib.checkDipBalanceAndAllowance(
385
- getToken(),
386
- from,
387
- address(tokenHandler),
388
- dipAmount);
389
-
390
- tokenHandler.transfer(from, stakingWallet, dipAmount);
382
+ getTokenHandler().collectTokens(from, getWallet(), dipAmount);
391
383
  }
392
384
 
393
385
 
@@ -395,16 +387,7 @@ contract Staking is
395
387
  external
396
388
  restricted() // only staking service
397
389
  {
398
- TokenHandler tokenHandler = getTokenHandler();
399
- address stakingWallet = getWallet();
400
-
401
- StakeManagerLib.checkDipBalanceAndAllowance(
402
- getToken(),
403
- stakingWallet,
404
- address(tokenHandler),
405
- dipAmount);
406
-
407
- tokenHandler.transfer(stakingWallet, to, dipAmount);
390
+ getTokenHandler().distributeTokens(getWallet(), to, dipAmount);
408
391
  }
409
392
 
410
393
 
@@ -422,6 +405,9 @@ contract Staking is
422
405
  return address(_getStakingStorage()._tokenRegistry);
423
406
  }
424
407
 
408
+ function getTokenHandler() public virtual override(Component, IComponent) view returns (TokenHandler tokenHandler) {
409
+ return _getStakingStorage()._tokenHandler;
410
+ }
425
411
 
426
412
  // from Versionable
427
413
  function getVersion()
@@ -480,7 +466,7 @@ contract Staking is
480
466
  TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
481
467
  address dipTokenAddress = tokenRegistry.getDipTokenAddress();
482
468
 
483
- initializeComponent(
469
+ _initializeComponent(
484
470
  authority,
485
471
  registryAddress,
486
472
  registry.getNftId(),
@@ -492,16 +478,15 @@ contract Staking is
492
478
  "", // registry data
493
479
  ""); // component data
494
480
 
495
- _createAndSetTokenHandler();
496
-
497
481
  // wiring to external contracts
498
482
  StakingStorage storage $ = _getStakingStorage();
499
483
  $._protocolNftId = getRegistry().getProtocolNftId();
500
484
  $._store = StakingStore(stakingStoreAddress);
501
485
  $._reader = StakingStore(stakingStoreAddress).getStakingReader();
502
486
  $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
487
+ $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(dipTokenAddress, authority);
503
488
 
504
- registerInterface(type(IStaking).interfaceId);
489
+ _registerInterface(type(IStaking).interfaceId);
505
490
  }
506
491
 
507
492
 
@@ -1,14 +1,10 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
6
- import {ReleaseManager} from "../registry/ReleaseManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
6
  import {Staking} from "./Staking.sol";
8
- import {StakingReader} from "./StakingReader.sol";
9
- import {StakingStore} from "./StakingStore.sol";
10
7
 
11
- import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
12
8
 
13
9
  contract StakingManager is
14
10
  ProxyManager
@@ -1,22 +1,18 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount} from "../type/Amount.sol";
5
- import {Blocknumber} from "../type/Blocknumber.sol";
6
- import {IKeyValueStore} from "../shared/IKeyValueStore.sol";
7
- import {IComponent} from "../shared/IComponent.sol";
8
- import {InitializableCustom} from "../shared/InitializableCustom.sol";
9
4
  import {IRegistry} from "../registry/IRegistry.sol";
10
5
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
11
6
  import {IStaking} from "../staking/IStaking.sol";
12
- import {IVersionable} from "../shared/IVersionable.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
9
+ import {Blocknumber} from "../type/Blocknumber.sol";
10
+ import {InitializableCustom} from "../shared/InitializableCustom.sol";
13
11
  import {NftId} from "../type/NftId.sol";
14
- import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
15
- import {ObjectType, STAKE, TARGET} from "../type/ObjectType.sol";
16
- import {Seconds} from "../type/Seconds.sol";
12
+ import {STAKE, TARGET} from "../type/ObjectType.sol";
17
13
  import {StakingStore} from "./StakingStore.sol";
18
14
  import {Timestamp} from "../type/Timestamp.sol";
19
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
15
+ import {UFixed} from "../type/UFixed.sol";
20
16
 
21
17
  contract StakingReader is
22
18
  IRegistryLinked,
@@ -60,32 +56,32 @@ contract StakingReader is
60
56
 
61
57
 
62
58
  function isTarget(NftId targetNftId) external view returns (bool) {
63
- return _store.getTargetManager().exists(targetNftId);
59
+ return _store.getTargetNftIdSet().exists(targetNftId);
64
60
  }
65
61
 
66
62
 
67
63
  function targets() external view returns (uint256) {
68
- return _store.getTargetManager().nftIds();
64
+ return _store.getTargetNftIdSet().nftIds();
69
65
  }
70
66
 
71
67
 
72
68
  function getTargetNftId(uint256 idx) external view returns (NftId) {
73
- return _store.getTargetManager().getNftId(idx);
69
+ return _store.getTargetNftIdSet().getNftId(idx);
74
70
  }
75
71
 
76
72
 
77
73
  function isActive(NftId targetNftId) external view returns (bool) {
78
- return _store.getTargetManager().isActive(targetNftId);
74
+ return _store.getTargetNftIdSet().isActive(targetNftId);
79
75
  }
80
76
 
81
77
 
82
78
  function activeTargets() external view returns (uint256) {
83
- return _store.getTargetManager().activeNftIds();
79
+ return _store.getTargetNftIdSet().activeNftIds();
84
80
  }
85
81
 
86
82
 
87
83
  function getActiveTargetNftId(uint256 idx) external view returns (NftId) {
88
- return _store.getTargetManager().getActiveNftId(idx);
84
+ return _store.getTargetNftIdSet().getActiveNftId(idx);
89
85
  }
90
86
 
91
87
 
@@ -122,11 +122,10 @@ contract StakingService is
122
122
 
123
123
  // transfer withdrawal amount to target owner
124
124
  address instanceOwner = getRegistry().ownerOf(instanceNftId);
125
+ emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
125
126
  $._staking.transferDipAmount(
126
127
  instanceOwner,
127
128
  dipAmount);
128
-
129
- emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
130
129
  }
131
130
 
132
131
 
@@ -169,12 +168,12 @@ contract StakingService is
169
168
  targetNftId,
170
169
  dipAmount);
171
170
 
171
+ emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
172
+
172
173
  // collect staked dip by staking
173
174
  $._staking.collectDipAmount(
174
175
  stakeOwner,
175
176
  dipAmount);
176
-
177
- emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
178
177
  }
179
178
 
180
179
 
@@ -197,12 +196,11 @@ contract StakingService is
197
196
 
198
197
  // collect staked dip by staking
199
198
  if (dipAmount.gtz()) {
199
+ emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
200
200
  $._staking.collectDipAmount(
201
201
  stakeOwner,
202
202
  dipAmount);
203
203
  }
204
-
205
- emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
206
204
  }
207
205
 
208
206
 
@@ -247,11 +245,10 @@ contract StakingService is
247
245
  address stakeOwner = msg.sender;
248
246
 
249
247
  Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
248
+ emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
250
249
  $._staking.transferDipAmount(
251
250
  stakeOwner,
252
251
  rewardsClaimedAmount);
253
-
254
- emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
255
252
  }
256
253
 
257
254
 
@@ -270,11 +267,10 @@ contract StakingService is
270
267
  ) = $._staking.unstake(stakeNftId);
271
268
 
272
269
  Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
270
+ emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
273
271
  $._staking.transferDipAmount(
274
272
  stakeOwner,
275
273
  totalAmount);
276
-
277
- emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
278
274
  }
279
275
 
280
276
 
@@ -335,7 +331,7 @@ contract StakingService is
335
331
  address stakingAddress
336
332
  ) = abi.decode(data, (address, address, address));
337
333
 
338
- initializeService(registryAddress, authority, owner);
334
+ _initializeService(registryAddress, authority, owner);
339
335
 
340
336
  StakingServiceStorage storage $ = _getStakingServiceStorage();
341
337
  $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
@@ -343,7 +339,7 @@ contract StakingService is
343
339
  $._dip = $._staking.getToken();
344
340
  $._tokenHandler = $._staking.getTokenHandler();
345
341
 
346
- registerInterface(type(IStakingService).interfaceId);
342
+ _registerInterface(type(IStakingService).interfaceId);
347
343
  }
348
344
 
349
345
 
@@ -389,12 +385,12 @@ contract StakingService is
389
385
  StakingServiceStorage storage $ = _getStakingServiceStorage();
390
386
  newBalance = $._staking.refillRewardReserves(targetNftId, dipAmount);
391
387
 
388
+ emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
389
+
392
390
  // collect reward dip from provider
393
391
  $._staking.collectDipAmount(
394
392
  rewardProvider,
395
393
  dipAmount);
396
-
397
- emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
398
394
  }
399
395
 
400
396
 
@@ -2,8 +2,8 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IRegistry} from "../registry/IRegistry.sol";
5
- import {IVersionable} from "../shared/IVersionable.sol";
6
- import {ProxyManager} from "../shared/ProxyManager.sol";
5
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
6
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
7
  import {StakingService} from "./StakingService.sol";
8
8
 
9
9
  contract StakingServiceManager is
@@ -3,32 +3,21 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
5
5
 
6
- import {Amount, AmountLib} from "../type/Amount.sol";
7
- import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
8
- import {ChainNft} from "../registry/ChainNft.sol";
9
- import {Component} from "../shared/Component.sol";
10
6
  import {IRegistry} from "../registry/IRegistry.sol";
11
- import {IRegistryService} from "../registry/IRegistryService.sol";
12
7
  import {IStaking} from "./IStaking.sol";
13
- import {IVersionable} from "../shared/IVersionable.sol";
14
- import {Key32} from "../type/Key32.sol";
8
+
9
+ import {Amount, AmountLib} from "../type/Amount.sol";
10
+ import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
15
11
  import {KeyValueStore} from "../shared/KeyValueStore.sol";
16
12
  import {KEEP_STATE} from "../type/StateId.sol";
17
- import {LibNftIdSet} from "../type/NftIdSet.sol";
18
13
  import {NftId, NftIdLib} from "../type/NftId.sol";
19
- import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
20
- import {ObjectType, INSTANCE, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
21
- import {Seconds, SecondsLib} from "../type/Seconds.sol";
14
+ import {NftIdSet} from "../shared/NftIdSet.sol";
15
+ import {PROTOCOL, STAKE, TARGET} from "../type/ObjectType.sol";
22
16
  import {StakingReader} from "./StakingReader.sol";
23
17
  import {TargetManagerLib} from "./TargetManagerLib.sol";
24
18
  import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
25
- import {TokenRegistry} from "../registry/TokenRegistry.sol";
26
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
27
- import {Version, VersionLib} from "../type/Version.sol";
28
- import {Versionable} from "../shared/Versionable.sol";
29
-
30
- import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
31
19
  import {StakingLifecycle} from "./StakingLifecycle.sol";
20
+ import {UFixed} from "../type/UFixed.sol";
32
21
 
33
22
 
34
23
  contract StakingStore is
@@ -63,7 +52,7 @@ contract StakingStore is
63
52
  error ErrorStakingStoreTvlBalanceNotInitialized(NftId nftId);
64
53
 
65
54
  IRegistry private _registry;
66
- NftIdSetManager private _targetManager;
55
+ NftIdSet private _targetNftIdSet;
67
56
  StakingReader private _reader;
68
57
 
69
58
  // staking rate
@@ -93,7 +82,7 @@ contract StakingStore is
93
82
  // set internal variables
94
83
  _registry = registry; //TODO if keeps registry -> RegistryLinked and checks registry address
95
84
  _reader = reader;
96
- _targetManager = new NftIdSetManager();
85
+ _targetNftIdSet = new NftIdSet();
97
86
 
98
87
  // register protocol target
99
88
  _createTarget(
@@ -428,8 +417,9 @@ contract StakingStore is
428
417
  return _reader;
429
418
  }
430
419
 
431
- function getTargetManager() external view returns (NftIdSetManager targetManager){
432
- return _targetManager;
420
+ // TODO rename
421
+ function getTargetNftIdSet() external view returns (NftIdSet targetNftIdSet){
422
+ return _targetNftIdSet;
433
423
  }
434
424
 
435
425
  function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) { return _stakingRate[chainId][token]; }
@@ -493,7 +483,7 @@ contract StakingStore is
493
483
  _tvlLastUpdatedIn[targetNftId]= BlocknumberLib.currentBlocknumber();
494
484
  _createTargetBalance(targetNftId);
495
485
 
496
- _targetManager.add(targetNftId);
486
+ _targetNftIdSet.add(targetNftId);
497
487
  }
498
488
 
499
489
  function _updateReserves(
@@ -132,9 +132,9 @@ library TargetManagerLib {
132
132
  public
133
133
  pure
134
134
  {
135
- // check locking period is > 0
136
- if (lockingPeriod.eqz()) {
137
- revert IStaking.ErrorStakingLockingPeriodZero(targetNftId);
135
+ // check locking period is >= min locking period
136
+ if (lockingPeriod.lt(getMinimumLockingPeriod())) {
137
+ revert IStaking.ErrorStakingLockingPeriodTooShort(targetNftId, getMinimumLockingPeriod(), lockingPeriod);
138
138
  }
139
139
 
140
140
  // check locking period <= max locking period
@@ -190,6 +190,10 @@ library TargetManagerLib {
190
190
  return SecondsLib.toSeconds(365 * 24 * 3600 / 2);
191
191
  }
192
192
 
193
+ /// @dev the minimum locking period is 24 hours
194
+ function getMinimumLockingPeriod() public pure returns (Seconds minLockingPeriod) {
195
+ return SecondsLib.toSeconds(24 * 3600);
196
+ }
193
197
 
194
198
  function getMaxRewardRate() public pure returns (UFixed maxRewardRate) {
195
199
  return UFixedLib.toUFixed(33, -2);
@@ -12,13 +12,15 @@ using {
12
12
  nqAmount as !=,
13
13
  ltAmount as <,
14
14
  gtAmount as >,
15
+ AmountLib.add,
15
16
  AmountLib.eq,
16
17
  AmountLib.eqz,
17
18
  AmountLib.gtz,
19
+ AmountLib.gt,
20
+ AmountLib.gte,
21
+ AmountLib.multiplyWith,
18
22
  AmountLib.toInt,
19
- AmountLib.add,
20
- AmountLib.toUFixed,
21
- AmountLib.multiplyWith
23
+ AmountLib.toUFixed
22
24
  } for Amount global;
23
25
 
24
26
  function addAmount(Amount a, Amount b) pure returns (Amount) {
@@ -77,16 +79,21 @@ library AmountLib {
77
79
  return Amount.unwrap(amount1) == Amount.unwrap(amount2);
78
80
  }
79
81
 
80
- /// @dev return true if amount a1 is smaller than a2
82
+ /// @dev return true if amount a1 is less than a2
81
83
  function lt(Amount a1, Amount a2) public pure returns (bool) {
82
84
  return Amount.unwrap(a1) < Amount.unwrap(a2);
83
85
  }
84
86
 
85
- /// @dev return true if amount a1 is larger than a2
87
+ /// @dev return true if amount a1 is greater than a2
86
88
  function gt(Amount a1, Amount a2) public pure returns (bool) {
87
89
  return Amount.unwrap(a1) > Amount.unwrap(a2);
88
90
  }
89
91
 
92
+ /// @dev return true if amount a1 is greater or equal than a2
93
+ function gte(Amount a1, Amount a2) public pure returns (bool) {
94
+ return Amount.unwrap(a1) >= Amount.unwrap(a2);
95
+ }
96
+
90
97
  /// @dev return minimum of a1 and a2.
91
98
  function min(Amount a1, Amount a2) public pure returns (Amount) {
92
99
  if (Amount.unwrap(a1) < Amount.unwrap(a2)) {
@@ -11,8 +11,14 @@ using {
11
11
  eqBlocknumber as ==,
12
12
  neBlocknumber as !=,
13
13
  BlocknumberLib.toInt,
14
+ BlocknumberLib.eq,
15
+ BlocknumberLib.ne,
14
16
  BlocknumberLib.eqz,
15
- BlocknumberLib.gtz
17
+ BlocknumberLib.gtz,
18
+ BlocknumberLib.gt,
19
+ BlocknumberLib.gte,
20
+ BlocknumberLib.lt,
21
+ BlocknumberLib.lte
16
22
  } for Blocknumber global;
17
23
 
18
24
  /// @dev return true if Blocknumber a is greater than Blocknumber b