@etherisc/gif-next 0.0.2-baec8d5-329 → 0.0.2-bafc958-412

Sign up to get free protection for your applications and to get access to all the features.
Files changed (388) hide show
  1. package/README.md +19 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +21 -21
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  14. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  16. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +42 -248
  18. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  20. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -222
  22. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +134 -294
  24. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +53 -124
  26. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -37
  28. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -62
  30. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  31. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
  32. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  33. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  34. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1660 -0
  36. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +410 -0
  38. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  48. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  49. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  50. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  52. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  53. package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
  54. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +71 -71
  56. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  58. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -123
  60. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +34 -146
  62. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +30 -81
  64. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +215 -219
  66. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  68. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  70. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  71. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  73. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  75. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  81. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  82. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  83. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  84. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +32 -238
  85. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  87. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -37
  90. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -222
  93. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -144
  95. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +29 -80
  97. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  98. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +12 -284
  99. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  100. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  101. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  102. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +263 -201
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +82 -97
  105. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  106. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +125 -23
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  108. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +2 -95
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  110. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
  111. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  112. package/artifacts/contracts/pool/Pool.sol/Pool.json +2 -280
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  114. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +264 -248
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +35 -82
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  118. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +31 -162
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  120. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +26 -89
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  122. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +3 -225
  123. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  124. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  125. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  126. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +185 -175
  127. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +53 -100
  129. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  130. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  132. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  134. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +184 -119
  135. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  138. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -37
  139. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  140. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  142. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +242 -321
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +50 -101
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  146. package/artifacts/contracts/product/PricingService.sol/PricingService.json +113 -265
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +52 -123
  149. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  150. package/artifacts/contracts/product/Product.sol/Product.json +3 -225
  151. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  152. package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
  153. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  154. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  156. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  158. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +221 -21
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  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 +419 -82
  163. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +229 -114
  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 +22 -73
  169. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  171. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
  173. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  175. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  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 +127 -199
  181. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +55 -114
  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 +56 -0
  189. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -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 +0 -222
  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 +1 -1
  207. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  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 +73 -93
  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 +2 -2
  231. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +42 -89
  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 +26 -77
  239. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +89 -84
  241. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  242. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  243. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  244. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/Amount.sol/AmountLib.json +13 -8
  246. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  248. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  250. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  252. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  254. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  255. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  256. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  258. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  259. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  260. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  262. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  264. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  266. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  268. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  270. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  272. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  274. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  278. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  281. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  283. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
  285. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  287. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  288. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  289. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +14 -65
  290. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  291. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  292. package/contracts/authorization/AccessAdmin.sol +1 -3
  293. package/contracts/authorization/Authorization.sol +0 -1
  294. package/contracts/distribution/BasicDistribution.sol +4 -15
  295. package/contracts/distribution/Distribution.sol +4 -10
  296. package/contracts/distribution/DistributionService.sol +35 -44
  297. package/contracts/distribution/IDistributionService.sol +9 -5
  298. package/contracts/examples/fire/FirePool.sol +76 -0
  299. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  300. package/contracts/examples/fire/FireProduct.sol +316 -0
  301. package/contracts/examples/fire/FireProductAuthorization.sol +16 -0
  302. package/contracts/examples/fire/FireUSD.sol +26 -0
  303. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  304. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  305. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  306. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  307. package/contracts/instance/IInstance.sol +7 -30
  308. package/contracts/instance/Instance.sol +10 -35
  309. package/contracts/instance/InstanceAdmin.sol +23 -4
  310. package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
  311. package/contracts/instance/InstanceReader.sol +32 -7
  312. package/contracts/instance/InstanceService.sol +60 -36
  313. package/contracts/instance/InstanceStore.sol +12 -1
  314. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  315. package/contracts/instance/module/IBundle.sol +1 -1
  316. package/contracts/instance/module/IComponents.sol +1 -6
  317. package/contracts/instance/module/IDistribution.sol +0 -1
  318. package/contracts/instance/module/IPolicy.sol +22 -22
  319. package/contracts/mock/Dip.sol +1 -1
  320. package/contracts/oracle/Oracle.sol +4 -7
  321. package/contracts/oracle/OracleService.sol +4 -3
  322. package/contracts/pool/BasicPool.sol +7 -5
  323. package/contracts/pool/BasicPoolAuthorization.sol +5 -2
  324. package/contracts/pool/BundleService.sol +138 -42
  325. package/contracts/pool/IBundleService.sol +22 -8
  326. package/contracts/pool/IPoolService.sol +36 -26
  327. package/contracts/pool/Pool.sol +22 -24
  328. package/contracts/pool/PoolService.sol +155 -82
  329. package/contracts/product/ApplicationService.sol +41 -23
  330. package/contracts/product/BasicProduct.sol +3 -32
  331. package/contracts/product/ClaimService.sol +116 -45
  332. package/contracts/product/IApplicationService.sol +1 -0
  333. package/contracts/product/IClaimService.sol +28 -5
  334. package/contracts/product/IPolicyService.sol +27 -32
  335. package/contracts/product/IPricingService.sol +7 -7
  336. package/contracts/product/IProductComponent.sol +0 -1
  337. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  338. package/contracts/product/PolicyService.sol +280 -182
  339. package/contracts/product/PricingService.sol +44 -43
  340. package/contracts/product/Product.sol +67 -34
  341. package/contracts/product/{ProductService.sol → RiskService.sol} +5 -7
  342. package/contracts/product/{ProductServiceManager.sol → RiskServiceManager.sol} +8 -8
  343. package/contracts/registry/ChainNft.sol +65 -32
  344. package/contracts/registry/IRegistry.sol +49 -15
  345. package/contracts/registry/Registry.sol +321 -195
  346. package/contracts/registry/RegistryAdmin.sol +150 -51
  347. package/contracts/registry/RegistryService.sol +2 -2
  348. package/contracts/registry/ReleaseRegistry.sol +12 -8
  349. package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
  350. package/contracts/shared/Component.sol +17 -29
  351. package/contracts/shared/ComponentService.sol +46 -27
  352. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  353. package/contracts/shared/IComponent.sol +4 -4
  354. package/contracts/shared/IComponentService.sol +5 -9
  355. package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
  356. package/contracts/shared/IPolicyHolder.sol +0 -9
  357. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  358. package/contracts/shared/InstanceLinkedComponent.sol +4 -4
  359. package/contracts/shared/NftOwnable.sol +7 -7
  360. package/contracts/shared/PolicyHolder.sol +7 -53
  361. package/contracts/shared/Registerable.sol +4 -4
  362. package/contracts/shared/RegistryLinked.sol +3 -2
  363. package/contracts/shared/Service.sol +5 -5
  364. package/contracts/shared/TokenHandler.sol +100 -19
  365. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  366. package/contracts/staking/IStaking.sol +2 -1
  367. package/contracts/staking/StakeManagerLib.sol +18 -25
  368. package/contracts/staking/Staking.sol +10 -26
  369. package/contracts/staking/StakingService.sol +10 -14
  370. package/contracts/staking/TargetManagerLib.sol +7 -3
  371. package/contracts/type/Amount.sol +5 -3
  372. package/contracts/type/Blocknumber.sol +7 -1
  373. package/contracts/type/ObjectType.sol +15 -11
  374. package/contracts/type/Referral.sol +1 -0
  375. package/contracts/type/RiskId.sol +15 -1
  376. package/contracts/type/Seconds.sol +21 -1
  377. package/contracts/type/StateId.sol +1 -0
  378. package/contracts/type/Timestamp.sol +11 -1
  379. package/contracts/type/UFixed.sol +29 -10
  380. package/contracts/upgradeability/ProxyManager.sol +1 -1
  381. package/package.json +1 -1
  382. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  383. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  384. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  385. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  386. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  387. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  388. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
@@ -1,6 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
4
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
6
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
6
7
 
@@ -9,50 +10,130 @@ import {Amount} from "../type/Amount.sol";
9
10
  /// @dev token specific transfer helper
10
11
  /// a default token contract is provided via contract constructor
11
12
  /// relies internally on oz SafeERC20.safeTransferFrom
12
- contract TokenHandler {
13
+ contract TokenHandler is AccessManaged {
14
+ error ErrorTokenHandlerAmountIsZero();
15
+ error ErrorTokenHandlerBalanceTooLow(address token, address from, uint256 balance, uint256 expectedBalance);
16
+ error ErrorTokenHandlerAllowanceTooSmall(address token, address from, address spender, uint256 allowance, uint256 expectedAllowance);
17
+ error ErrorTokenHandlerRecipientWalletsMustBeDistinct(address to, address to2, address to3);
18
+
19
+ event LogTokenHandlerTokenTransfer(address token, address from, address to, uint256 amountTransferred);
20
+
13
21
  IERC20Metadata private _token;
14
22
 
15
- constructor(address token) {
23
+ constructor(address token, address initialAuthority) AccessManaged(initialAuthority) {
16
24
  _token = IERC20Metadata(token);
17
25
  }
18
26
 
19
- /// @dev transfer amount default tokens
20
- function transfer(
27
+ /// @dev returns the default token defined for this TokenHandler
28
+ function getToken()
29
+ external
30
+ view
31
+ returns (IERC20Metadata)
32
+ {
33
+ return _token;
34
+ }
35
+
36
+ /// @dev collect tokens from outside of the gif and transfer them to one wallet within the scope of gif.
37
+ /// This method also checks balance and allowance and makes sure the amount is greater than zero.
38
+ function collectTokens(
21
39
  address from,
22
40
  address to,
23
41
  Amount amount
24
42
  )
25
43
  external
44
+ restricted()
26
45
  {
27
- SafeERC20.safeTransferFrom(
28
- _token,
29
- from,
30
- to,
31
- amount.toInt());
46
+ _transfer(from, to, amount, true);
32
47
  }
33
48
 
34
- /// @dev transfer amount of the specified token
35
- function safeTransferFrom(
36
- address token,
49
+ /// @dev collect tokens from outside of the gif and transfer them to three distinct wallets within the scope of gif
50
+ /// This method also checks balance and allowance and makes sure the amount is greater than zero.
51
+ function collectTokensToThreeRecipients(
52
+ address from,
53
+ address to,
54
+ Amount amount,
55
+ address to2,
56
+ Amount amount2,
57
+ address to3,
58
+ Amount amount3
59
+ )
60
+ external
61
+ restricted()
62
+ {
63
+ if (to == to2 || to == to3 || to2 == to3) {
64
+ revert ErrorTokenHandlerRecipientWalletsMustBeDistinct(to, to2, to3);
65
+ }
66
+
67
+ _checkPreconditions(from, amount + amount2 + amount3);
68
+
69
+ if (amount.gtz()) {
70
+ _transfer(from, to, amount, false);
71
+ }
72
+ if (amount2.gtz()) {
73
+ _transfer(from, to2, amount2, false);
74
+ }
75
+ if (amount3.gtz()) {
76
+ _transfer(from, to3, amount3, false);
77
+ }
78
+ }
79
+
80
+ /// @dev distribute tokens from a wallet within the scope of gif to an external address.
81
+ /// This method also checks balance and allowance and makes sure the amount is greater than zero.
82
+ function distributeTokens(
37
83
  address from,
38
84
  address to,
39
85
  Amount amount
40
86
  )
41
87
  external
88
+ restricted()
89
+ {
90
+ _transfer(from, to, amount, true);
91
+ }
92
+
93
+ function _transfer(
94
+ address from,
95
+ address to,
96
+ Amount amount,
97
+ bool checkPreconditions
98
+ )
99
+ internal
42
100
  {
101
+ if (checkPreconditions) {
102
+ // check amount > 0, balance >= amount and allowance >= amount
103
+ _checkPreconditions(from, amount);
104
+ }
105
+
106
+ // transfer the tokens
107
+ emit LogTokenHandlerTokenTransfer(address(_token), from, to, amount.toInt());
43
108
  SafeERC20.safeTransferFrom(
44
- IERC20Metadata(token),
109
+ _token,
45
110
  from,
46
111
  to,
47
112
  amount.toInt());
48
113
  }
49
114
 
50
- /// @dev returns the default token defined for this TokenHandler
51
- function getToken()
52
- external
53
- view
54
- returns (IERC20Metadata)
115
+ function _checkPreconditions(
116
+ address from,
117
+ Amount amount
118
+ )
119
+ internal
120
+ view
55
121
  {
56
- return _token;
122
+ // amount must be greater than zero
123
+ if (amount.eqz()) {
124
+ revert ErrorTokenHandlerAmountIsZero();
125
+ }
126
+
127
+ // balance must be >= amount
128
+ uint256 balance = _token.balanceOf(from);
129
+ if (balance < amount.toInt()) {
130
+ revert ErrorTokenHandlerBalanceTooLow(address(_token), from, balance, amount.toInt());
131
+ }
132
+
133
+ // allowance must be >= amount
134
+ uint256 allowance = _token.allowance(from, address(this));
135
+ if (allowance < amount.toInt()) {
136
+ revert ErrorTokenHandlerAllowanceTooSmall(address(_token), from, address(this), allowance, amount.toInt());
137
+ }
57
138
  }
58
139
  }
@@ -0,0 +1,12 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {TokenHandler} from "./TokenHandler.sol";
5
+
6
+ library TokenHandlerDeployerLib {
7
+
8
+ function deployTokenHandler(address token, address authority) public returns (TokenHandler) {
9
+ return new TokenHandler(address(token), authority);
10
+ }
11
+
12
+ }
@@ -42,8 +42,9 @@ interface IStaking is
42
42
  error ErrorStakingTargetNftIdZero();
43
43
  error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
44
44
  error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
45
- error ErrorStakingLockingPeriodZero(NftId targetNftId);
45
+ error ErrorStakingLockingPeriodTooShort(NftId targetNftId, Seconds minLockingPeriod, Seconds lockingPeriod);
46
46
  error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
47
+ error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
47
48
  error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
48
49
  error ErrorStakingTargetNotFound(NftId targetNftId);
49
50
  error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
@@ -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,
@@ -18,6 +18,7 @@ import {StakingStore} from "./StakingStore.sol";
18
18
  import {TargetManagerLib} from "./TargetManagerLib.sol";
19
19
  import {Timestamp} from "../type/Timestamp.sol";
20
20
  import {TokenHandler} from "../shared/TokenHandler.sol";
21
+ import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
21
22
  import {TokenRegistry} from "../registry/TokenRegistry.sol";
22
23
  import {UFixed} from "../type/UFixed.sol";
23
24
  import {Version, VersionLib} from "../type/Version.sol";
@@ -300,7 +301,7 @@ contract Staking is
300
301
  StakingStorage storage $ = _getStakingStorage();
301
302
 
302
303
  // TODO implement
303
- }
304
+ }
304
305
 
305
306
 
306
307
  function updateRewards(NftId stakeNftId)
@@ -349,9 +350,10 @@ contract Staking is
349
350
  Amount rewardsClaimedAmount
350
351
  )
351
352
  {
352
- // TODO add check that stake locking is in the past
353
353
  StakingStorage storage $ = _getStakingStorage();
354
-
354
+
355
+ StakeManagerLib.checkUnstakeParameters($._reader, stakeNftId);
356
+
355
357
  // update rewards since last update
356
358
  NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
357
359
 
@@ -377,16 +379,7 @@ contract Staking is
377
379
  external
378
380
  restricted() // only staking service
379
381
  {
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);
382
+ getTokenHandler().collectTokens(from, getWallet(), dipAmount);
390
383
  }
391
384
 
392
385
 
@@ -394,16 +387,7 @@ contract Staking is
394
387
  external
395
388
  restricted() // only staking service
396
389
  {
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);
390
+ getTokenHandler().distributeTokens(getWallet(), to, dipAmount);
407
391
  }
408
392
 
409
393
 
@@ -482,7 +466,7 @@ contract Staking is
482
466
  TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
483
467
  address dipTokenAddress = tokenRegistry.getDipTokenAddress();
484
468
 
485
- initializeComponent(
469
+ _initializeComponent(
486
470
  authority,
487
471
  registryAddress,
488
472
  registry.getNftId(),
@@ -500,9 +484,9 @@ contract Staking is
500
484
  $._store = StakingStore(stakingStoreAddress);
501
485
  $._reader = StakingStore(stakingStoreAddress).getStakingReader();
502
486
  $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
503
- $._tokenHandler = new TokenHandler(address(getToken()));
487
+ $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(dipTokenAddress, authority);
504
488
 
505
- registerInterface(type(IStaking).interfaceId);
489
+ _registerInterface(type(IStaking).interfaceId);
506
490
  }
507
491
 
508
492
 
@@ -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
 
@@ -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) {
@@ -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
@@ -71,48 +71,52 @@ function POLICY() pure returns (ObjectType) {
71
71
  return ObjectType.wrap(21);
72
72
  }
73
73
 
74
- function CLAIM() pure returns (ObjectType) {
74
+ function PREMIUM() pure returns (ObjectType) {
75
75
  return ObjectType.wrap(22);
76
76
  }
77
77
 
78
+ function CLAIM() pure returns (ObjectType) {
79
+ return ObjectType.wrap(23);
80
+ }
81
+
78
82
  function PAYOUT() pure returns (ObjectType) {
79
- return ObjectType.wrap(23);
83
+ return ObjectType.wrap(24);
80
84
  }
81
85
 
82
86
  function RISK() pure returns (ObjectType) {
83
- return ObjectType.wrap(24);
87
+ return ObjectType.wrap(25);
84
88
  }
85
89
 
86
90
  function PRICE() pure returns (ObjectType) {
87
- return ObjectType.wrap(25);
91
+ return ObjectType.wrap(26);
88
92
  }
89
93
 
90
94
  function REQUEST() pure returns (ObjectType) {
91
- return ObjectType.wrap(26);
95
+ return ObjectType.wrap(27);
92
96
  }
93
97
 
94
98
  function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
95
- return ObjectType.wrap(27);
99
+ return ObjectType.wrap(28);
96
100
  }
97
101
 
98
102
  function DISTRIBUTOR() pure returns (ObjectType) {
99
- return ObjectType.wrap(28);
103
+ return ObjectType.wrap(29);
100
104
  }
101
105
 
102
106
  function REFERRAL() pure returns (ObjectType) {
103
- return ObjectType.wrap(29);
107
+ return ObjectType.wrap(30);
104
108
  }
105
109
 
106
110
  function BUNDLE() pure returns (ObjectType) {
107
- return ObjectType.wrap(30);
111
+ return ObjectType.wrap(31);
108
112
  }
109
113
 
110
114
  function TARGET() pure returns (ObjectType) {
111
- return ObjectType.wrap(31);
115
+ return ObjectType.wrap(32);
112
116
  }
113
117
 
114
118
  function STAKE() pure returns (ObjectType) {
115
- return ObjectType.wrap(32);
119
+ return ObjectType.wrap(33);
116
120
  }
117
121
 
118
122
  /// @dev Object type that includes any other object type.
@@ -12,6 +12,7 @@ type ReferralStatus is uint8;
12
12
  using {
13
13
  eqReferralId as ==,
14
14
  neReferralId as !=,
15
+ ReferralLib.eqz,
15
16
  ReferralLib.toKey32
16
17
  } for ReferralId global;
17
18
 
@@ -10,7 +10,9 @@ type RiskId is bytes8;
10
10
  using {
11
11
  eqRiskId as ==,
12
12
  neRiskId as !=,
13
- RiskIdLib.toKey32
13
+ RiskIdLib.toKey32,
14
+ RiskIdLib.eq,
15
+ RiskIdLib.eqz
14
16
  } for RiskId global;
15
17
 
16
18
  // general pure free functions
@@ -26,6 +28,10 @@ function neRiskId(RiskId a, RiskId b) pure returns (bool isDifferent) {
26
28
  }
27
29
 
28
30
  library RiskIdLib {
31
+ function zero() public pure returns (RiskId) {
32
+ return toRiskId("");
33
+ }
34
+
29
35
  // @dev Converts a role string into a role id.
30
36
  function toRiskId(string memory risk) public pure returns (RiskId) {
31
37
  return RiskId.wrap(bytes8(keccak256(abi.encode(risk))));
@@ -40,4 +46,12 @@ library RiskIdLib {
40
46
  function toKeyId(RiskId id) public pure returns (KeyId keyId) {
41
47
  return KeyId.wrap(bytes31(RiskId.unwrap(id)));
42
48
  }
49
+
50
+ function eq(RiskId a, RiskId b) public pure returns (bool isSame) {
51
+ return eqRiskId(a, b);
52
+ }
53
+
54
+ function eqz(RiskId a) public pure returns (bool isZero) {
55
+ return eqRiskId(a, zero());
56
+ }
43
57
  }
@@ -6,9 +6,14 @@ type Seconds is uint40;
6
6
  using {
7
7
  SecondsEq as ==,
8
8
  SecondsGt as >,
9
+ SecondsAdd as +,
9
10
  SecondsLib.eqz,
10
11
  SecondsLib.gtz,
11
- SecondsLib.toInt
12
+ SecondsLib.eq,
13
+ SecondsLib.gt,
14
+ SecondsLib.lt,
15
+ SecondsLib.toInt,
16
+ SecondsLib.add
12
17
  } for Seconds global;
13
18
 
14
19
  function SecondsEq(Seconds duration1, Seconds duration2) pure returns (bool) {
@@ -19,6 +24,11 @@ function SecondsGt(Seconds duration1, Seconds duration2) pure returns (bool) {
19
24
  return SecondsLib.gt(duration1, duration2);
20
25
  }
21
26
 
27
+ function SecondsAdd(Seconds duration1, Seconds duration2) pure returns (Seconds) {
28
+ return SecondsLib.add(duration1, duration2);
29
+ }
30
+
31
+
22
32
  library SecondsLib {
23
33
 
24
34
  error ErrorSecondsLibDurationTooBig(uint256 duration);
@@ -70,6 +80,16 @@ library SecondsLib {
70
80
  return Seconds.unwrap(duration1) > Seconds.unwrap(duration2);
71
81
  }
72
82
 
83
+ /// @dev return true if duration1 is smaller than duration2
84
+ function lt(Seconds duration1, Seconds duration2) public pure returns (bool) {
85
+ return Seconds.unwrap(duration1) < Seconds.unwrap(duration2);
86
+ }
87
+
88
+ /// @dev return add duration1 and duration2
89
+ function add(Seconds duration1, Seconds duration2) public pure returns (Seconds) {
90
+ return Seconds.wrap(Seconds.unwrap(duration1) + Seconds.unwrap(duration2));
91
+ }
92
+
73
93
  function toInt(Seconds duration) public pure returns (uint256) {
74
94
  return uint256(uint40(Seconds.unwrap(duration)));
75
95
  }
@@ -9,6 +9,7 @@ using {
9
9
  eqStateId as ==,
10
10
  neStateId as !=,
11
11
  StateIdLib.eqz,
12
+ StateIdLib.eq,
12
13
  StateIdLib.gtz,
13
14
  StateIdLib.toInt
14
15
  } for StateId global;
@@ -12,6 +12,12 @@ using {
12
12
  lteTimestamp as <=,
13
13
  eqTimestamp as ==,
14
14
  neTimestamp as !=,
15
+ TimestampLib.eq,
16
+ TimestampLib.ne,
17
+ TimestampLib.gt,
18
+ TimestampLib.gte,
19
+ TimestampLib.lt,
20
+ TimestampLib.lte,
15
21
  TimestampLib.gtz,
16
22
  TimestampLib.eqz,
17
23
  TimestampLib.addSeconds,
@@ -50,7 +56,7 @@ function neTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
50
56
 
51
57
  /// @dev Converts the uint256 to a Timestamp.
52
58
  function toTimestamp(uint256 timestamp) pure returns (Timestamp) {
53
- return Timestamp.wrap(uint40(timestamp));
59
+ return TimestampLib.toTimestamp(timestamp);
54
60
  }
55
61
 
56
62
  // TODO move to TimestampLib and rename to zero()
@@ -72,6 +78,10 @@ library TimestampLib {
72
78
  function blockTimestamp() public view returns (Timestamp) {
73
79
  return Timestamp.wrap(uint40(block.timestamp));
74
80
  }
81
+
82
+ function toTimestamp(uint256 timestamp) public pure returns (Timestamp) {
83
+ return Timestamp.wrap(uint40(timestamp));
84
+ }
75
85
 
76
86
  /// @dev return true if Timestamp a is after Timestamp b
77
87
  function gt(Timestamp a, Timestamp b) public pure returns (bool isAfter) {