@etherisc/gif-next 0.0.2-9620cae-586 → 0.0.2-9678144-986

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 (325) hide show
  1. package/README.md +16 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
  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 +69 -26
  18. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  20. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -0
  22. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +237 -74
  24. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +66 -38
  26. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -0
  28. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +102 -0
  30. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  31. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  32. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  33. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  34. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  35. package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
  36. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2 -2
  38. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  39. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  40. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  41. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +79 -121
  42. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  43. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +2 -2
  44. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +2 -2
  46. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  47. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +70 -192
  48. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  49. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  50. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  51. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  52. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  53. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  54. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  55. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  56. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  58. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  59. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  60. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  61. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  62. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  63. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  64. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  65. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +46 -16
  66. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  67. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  68. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  69. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  70. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +30 -0
  71. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  72. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  73. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +30 -0
  74. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  75. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
  76. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  77. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
  78. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  79. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +50 -57
  80. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  81. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  82. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  83. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +462 -51
  84. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +106 -26
  86. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  87. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +252 -1
  88. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  89. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -56
  90. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  91. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +188 -53
  92. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  93. package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -56
  94. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  95. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +320 -89
  96. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +67 -19
  98. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  99. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +2 -2
  100. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +2 -2
  102. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  103. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -0
  104. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  106. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  107. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
  108. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +2 -2
  110. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  111. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  112. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  113. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +86 -1
  114. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  115. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  116. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -0
  117. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  118. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  119. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +169 -52
  120. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +42 -26
  122. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  123. package/artifacts/contracts/product/PricingService.sol/PricingService.json +7 -2
  124. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
  126. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  127. package/artifacts/contracts/product/Product.sol/Product.json +19 -0
  128. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  129. package/artifacts/contracts/product/ProductService.sol/ProductService.json +2 -2
  130. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +2 -2
  132. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  133. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  134. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  135. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  136. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  137. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  138. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  139. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2 -2
  140. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  141. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  142. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  144. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  145. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  146. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +2 -2
  147. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  148. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +2 -2
  149. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  150. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  151. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  152. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  153. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +271 -62
  154. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +60 -32
  156. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  157. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  158. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  159. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  160. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  161. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -0
  162. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  163. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  164. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  165. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  166. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  167. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  168. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  169. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  170. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  171. package/artifacts/contracts/shared/{ERC165.sol/ERC165.json → InitializableERC165.sol/InitializableERC165.json} +4 -4
  172. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  173. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -0
  174. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  175. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  176. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  177. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  178. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  179. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  180. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  181. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  182. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  183. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  184. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  185. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  186. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  187. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  188. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  189. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  190. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  191. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +12 -2
  192. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  193. package/artifacts/contracts/staking/Staking.sol/Staking.json +36 -36
  194. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  195. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  196. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +19 -19
  197. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  198. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  199. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  200. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +2 -2
  201. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  202. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +2 -2
  203. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  204. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +17 -12
  205. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  206. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +7 -2
  207. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  208. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  209. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  210. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  211. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  212. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  213. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  214. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  215. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  216. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  217. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  218. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  219. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  220. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  221. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  222. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  223. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  224. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  225. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  226. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  227. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  228. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  229. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  230. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  231. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  234. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  236. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
  238. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  239. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  240. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  241. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  242. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  243. package/artifacts/contracts/{shared → upgradeability}/ProxyManager.sol/ProxyManager.json +3 -3
  244. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  245. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  246. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  247. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  248. package/contracts/distribution/BasicDistribution.sol +4 -15
  249. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  250. package/contracts/distribution/Distribution.sol +22 -10
  251. package/contracts/distribution/DistributionService.sol +61 -26
  252. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  253. package/contracts/distribution/IDistributionComponent.sol +8 -4
  254. package/contracts/distribution/IDistributionService.sol +12 -0
  255. package/contracts/instance/InstanceAuthorizationV3.sol +2 -0
  256. package/contracts/instance/InstanceReader.sol +8 -0
  257. package/contracts/instance/InstanceServiceManager.sol +2 -6
  258. package/contracts/instance/InstanceStore.sol +2 -1
  259. package/contracts/instance/module/IBundle.sol +1 -1
  260. package/contracts/instance/module/IComponents.sol +0 -5
  261. package/contracts/instance/module/IDistribution.sol +0 -1
  262. package/contracts/mock/Dip.sol +1 -1
  263. package/contracts/oracle/IOracleComponent.sol +2 -1
  264. package/contracts/oracle/Oracle.sol +15 -6
  265. package/contracts/oracle/OracleServiceManager.sol +2 -5
  266. package/contracts/pool/BasicPool.sol +3 -1
  267. package/contracts/pool/BasicPoolAuthorization.sol +9 -0
  268. package/contracts/pool/BundleService.sol +186 -32
  269. package/contracts/pool/BundleServiceManager.sol +2 -5
  270. package/contracts/pool/IBundleService.sol +33 -5
  271. package/contracts/pool/IPoolComponent.sol +6 -0
  272. package/contracts/pool/IPoolService.sol +12 -13
  273. package/contracts/pool/Pool.sol +28 -11
  274. package/contracts/pool/PoolService.sol +164 -65
  275. package/contracts/pool/PoolServiceManager.sol +2 -5
  276. package/contracts/product/ApplicationService.sol +12 -36
  277. package/contracts/product/ApplicationServiceManager.sol +2 -2
  278. package/contracts/product/BasicProduct.sol +3 -33
  279. package/contracts/product/BasicProductAuthorization.sol +3 -0
  280. package/contracts/product/ClaimService.sol +7 -32
  281. package/contracts/product/ClaimServiceManager.sol +2 -2
  282. package/contracts/product/IPolicyService.sol +8 -2
  283. package/contracts/product/IProductComponent.sol +1 -0
  284. package/contracts/product/PolicyService.sol +72 -18
  285. package/contracts/product/PolicyServiceManager.sol +2 -5
  286. package/contracts/product/PricingServiceManager.sol +2 -5
  287. package/contracts/product/Product.sol +20 -1
  288. package/contracts/product/ProductService.sol +7 -32
  289. package/contracts/product/ProductServiceManager.sol +2 -5
  290. package/contracts/registry/RegistryService.sol +4 -18
  291. package/contracts/registry/RegistryServiceManager.sol +2 -2
  292. package/contracts/registry/ReleaseRegistry.sol +0 -2
  293. package/contracts/shared/Component.sol +13 -14
  294. package/contracts/shared/ComponentService.sol +82 -12
  295. package/contracts/shared/ComponentServiceManager.sol +2 -2
  296. package/contracts/shared/IComponentService.sol +15 -9
  297. package/contracts/shared/IInstanceLinkedComponent.sol +6 -0
  298. package/contracts/shared/IService.sol +1 -1
  299. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  300. package/contracts/shared/InstanceLinkedComponent.sol +21 -0
  301. package/contracts/shared/NftOwnable.sol +2 -2
  302. package/contracts/shared/PolicyHolder.sol +2 -5
  303. package/contracts/shared/Service.sol +3 -4
  304. package/contracts/staking/IStaking.sol +1 -1
  305. package/contracts/staking/Staking.sol +19 -14
  306. package/contracts/staking/StakingManager.sol +2 -5
  307. package/contracts/staking/StakingReader.sol +6 -9
  308. package/contracts/staking/StakingServiceManager.sol +2 -2
  309. package/contracts/staking/StakingStore.sol +5 -15
  310. package/contracts/type/Amount.sol +12 -5
  311. package/contracts/type/Blocknumber.sol +7 -1
  312. package/contracts/type/Referral.sol +1 -0
  313. package/contracts/type/Seconds.sol +13 -1
  314. package/contracts/type/Timestamp.sol +11 -1
  315. package/contracts/type/UFixed.sol +29 -10
  316. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  317. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  318. package/package.json +1 -1
  319. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  320. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  321. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  322. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  323. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  324. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  325. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -1,9 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "./IVersionable.sol";
5
- import {ProxyManager} from "./ProxyManager.sol";
6
4
  import {ComponentService} from "./ComponentService.sol";
5
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
6
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
7
 
8
8
  contract ComponentServiceManager is ProxyManager {
9
9
 
@@ -1,21 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
4
 
7
5
  import {Amount} from "../type/Amount.sol";
8
6
  import {Fee} from "../type/Fee.sol";
9
- import {IComponents} from "../instance/module/IComponents.sol";
10
- import {IInstance} from "../instance/IInstance.sol";
11
- import {IInstanceService} from "../instance/IInstanceService.sol";
12
7
  import {InstanceStore} from "../instance/InstanceStore.sol";
13
- import {IProductService} from "../product/IProductService.sol";
14
- import {IRegisterable} from "../shared/IRegisterable.sol";
15
8
  import {IService} from "../shared/IService.sol";
16
9
  import {NftId} from "../type/NftId.sol";
17
- import {ObjectType} from "../type/ObjectType.sol";
18
- import {TokenHandler} from "../shared/TokenHandler.sol";
19
10
  import {UFixed} from "../type/UFixed.sol";
20
11
 
21
12
  /// @dev component base class
@@ -27,7 +18,12 @@ interface IComponentService is
27
18
  error ErrorComponentServiceWalletAddressZero();
28
19
  error ErrorComponentServiceWalletAddressIsSameAsCurrent();
29
20
 
21
+ error ErrorComponentServiceWithdrawAmountIsZero();
22
+ error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
23
+ error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
24
+
30
25
  event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
26
+ event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
31
27
  event LogComponentServiceProductFeesUpdated(NftId productNftId);
32
28
  event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
33
29
  event LogComponentServicePoolFeesUpdated(NftId poolNftId);
@@ -51,6 +47,11 @@ interface IComponentService is
51
47
  /// @dev unlocks the component associated with the caller
52
48
  function unlock() external;
53
49
 
50
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
51
+ /// @param withdrawAmount the amount to withdraw
52
+ /// @return withdrawnAmount the amount that was actually withdrawn
53
+ function withdrawFees(Amount withdrawAmount) external returns (Amount withdrawnAmount);
54
+
54
55
  //-------- product ------------------------------------------------------//
55
56
 
56
57
  /// @dev registers the sending component as a product component
@@ -77,6 +78,10 @@ interface IComponentService is
77
78
  function increaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
78
79
  function decreaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
79
80
 
81
+ //-------- distributor --------------------------------------------------//
82
+ function increaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
83
+ function decreaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
84
+
80
85
  //-------- oracle -------------------------------------------------------//
81
86
 
82
87
  /// @dev registers the sending component as an oracle component
@@ -99,4 +104,5 @@ interface IComponentService is
99
104
  //-------- bundle -------------------------------------------------------//
100
105
  function increaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
101
106
  function decreaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
107
+
102
108
  }
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
6
 
7
+ import {Amount} from "../type/Amount.sol";
7
8
  import {IComponent} from "../shared/IComponent.sol";
8
9
  import {IAuthorization} from "../authorization/IAuthorization.sol";
9
10
  import {IComponents} from "../instance/module/IComponents.sol";
@@ -47,4 +48,9 @@ interface IInstanceLinkedComponent is
47
48
  /// @dev returns the initial component authorization specification.
48
49
  function getAuthorization() external view returns (IAuthorization authorization);
49
50
 
51
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
52
+ /// @param amount the amount to withdraw
53
+ /// @return withdrawnAmount the amount that was actually withdrawn
54
+ function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
55
+
50
56
  }
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
6
  import {IRegisterable} from "./IRegisterable.sol";
7
- import {IVersionable} from "./IVersionable.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
8
  import {ObjectType} from "../type/ObjectType.sol";
9
9
  import {RoleId} from "../type/RoleId.sol";
10
10
 
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
6
6
 
7
- contract ERC165 is
7
+ contract InitializableERC165 is
8
8
  Initializable,
9
9
  IERC165
10
10
  {
@@ -6,6 +6,7 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
6
6
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
7
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
8
 
9
+ import {Amount} from "../type/Amount.sol";
9
10
  import {Component} from "./Component.sol";
10
11
  import {IComponentService} from "./IComponentService.sol";
11
12
  import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
@@ -36,6 +37,7 @@ abstract contract InstanceLinkedComponent is
36
37
  IInstance _instance; // instance for this component
37
38
  InstanceReader _instanceReader; // instance reader for this component
38
39
  IAuthorization _initialAuthorization;
40
+ IComponentService _componentService;
39
41
  }
40
42
 
41
43
  function lock() external onlyOwner {
@@ -58,6 +60,17 @@ abstract contract InstanceLinkedComponent is
58
60
  return _getInstanceLinkedComponentStorage()._initialAuthorization;
59
61
  }
60
62
 
63
+ /// @inheritdoc IInstanceLinkedComponent
64
+ function withdrawFees(Amount amount)
65
+ external
66
+ virtual
67
+ onlyOwner()
68
+ restricted()
69
+ returns (Amount withdrawnAmount)
70
+ {
71
+ return _withdrawFees(amount);
72
+ }
73
+
61
74
  function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
62
75
  assembly {
63
76
  $.slot := INSTANCE_LINKED_COMPONENT_LOCATION_V1
@@ -105,6 +118,7 @@ abstract contract InstanceLinkedComponent is
105
118
  // set component state
106
119
  $._instanceReader = $._instance.getInstanceReader();
107
120
  $._initialAuthorization = authorization;
121
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
108
122
 
109
123
  registerInterface(type(IAccessManaged).interfaceId);
110
124
  registerInterface(type(IInstanceLinkedComponent).interfaceId);
@@ -141,6 +155,13 @@ abstract contract InstanceLinkedComponent is
141
155
  return _getInstanceLinkedComponentStorage()._instanceReader;
142
156
  }
143
157
 
158
+ function _withdrawFees(Amount amount)
159
+ internal
160
+ returns (Amount withdrawnAmount)
161
+ {
162
+ return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
163
+ }
164
+
144
165
 
145
166
  /// @dev returns the service address for the specified domain
146
167
  /// gets address via lookup from registry using the major version form the linked instance
@@ -1,13 +1,13 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {ERC165} from "./ERC165.sol";
4
+ import {InitializableERC165} from "./InitializableERC165.sol";
5
5
  import {INftOwnable} from "./INftOwnable.sol";
6
6
  import {NftId} from "../type/NftId.sol";
7
7
  import {RegistryLinked} from "./RegistryLinked.sol";
8
8
 
9
9
  contract NftOwnable is
10
- ERC165,
10
+ InitializableERC165,
11
11
  RegistryLinked,
12
12
  INftOwnable
13
13
  {
@@ -1,22 +1,19 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
4
  import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
6
- import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
7
5
 
8
6
  import {Amount} from "../type/Amount.sol";
9
7
  import {ClaimId} from "../type/ClaimId.sol";
10
- import {ERC165} from "./ERC165.sol";
8
+ import {InitializableERC165} from "./InitializableERC165.sol";
11
9
  import {IPolicyHolder} from "./IPolicyHolder.sol";
12
10
  import {NftId} from "../type/NftId.sol";
13
11
  import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
14
12
  import {RegistryLinked} from "./RegistryLinked.sol";
15
- import {IRegistry} from "../registry/IRegistry.sol";
16
13
 
17
14
  /// @dev template implementation for IPolicyHolder
18
15
  contract PolicyHolder is
19
- ERC165,
16
+ InitializableERC165,
20
17
  RegistryLinked, // TODO need upgradeable version
21
18
  IPolicyHolder
22
19
  {
@@ -6,13 +6,12 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
6
6
 
7
7
  import {IRegistry} from "../registry/IRegistry.sol";
8
8
  import {IService} from "./IService.sol";
9
- import {IVersionable} from "./IVersionable.sol";
10
- import {NftId} from "../type/NftId.sol";
9
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
11
10
  import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
12
11
  import {Registerable} from "./Registerable.sol";
13
12
  import {RoleId, RoleIdLib} from "../type/RoleId.sol";
14
- import {Version, VersionPart, VersionLib, VersionPartLib} from "../type/Version.sol";
15
- import {Versionable} from "./Versionable.sol";
13
+ import {Version, VersionLib, VersionPartLib} from "../type/Version.sol";
14
+ import {Versionable} from "../upgradeability/Versionable.sol";
16
15
 
17
16
 
18
17
  /// @dev service base contract
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
5
  import {IComponent} from "../shared/IComponent.sol";
6
- import {IVersionable} from "../shared/IVersionable.sol";
6
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
7
7
  import {NftId} from "../type/NftId.sol";
8
8
  import {ObjectType} from "../type/ObjectType.sol";
9
9
  import {Seconds} from "../type/Seconds.sol";
@@ -1,27 +1,27 @@
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 {NftId, NftIdLib} from "../type/NftId.sol";
13
- import {ObjectType, INSTANCE, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
14
- 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";
15
15
  import {StakeManagerLib} from "./StakeManagerLib.sol";
16
16
  import {StakingReader} from "./StakingReader.sol";
17
17
  import {StakingStore} from "./StakingStore.sol";
18
18
  import {TargetManagerLib} from "./TargetManagerLib.sol";
19
- import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
19
+ import {Timestamp} from "../type/Timestamp.sol";
20
20
  import {TokenHandler} from "../shared/TokenHandler.sol";
21
21
  import {TokenRegistry} from "../registry/TokenRegistry.sol";
22
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
22
+ import {UFixed} from "../type/UFixed.sol";
23
23
  import {Version, VersionLib} from "../type/Version.sol";
24
- import {Versionable} from "../shared/Versionable.sol";
24
+ import {Versionable} from "../upgradeability/Versionable.sol";
25
25
 
26
26
  contract Staking is
27
27
  Component,
@@ -37,6 +37,7 @@ contract Staking is
37
37
  struct StakingStorage {
38
38
  IRegistryService _registryService;
39
39
  TokenRegistry _tokenRegistry;
40
+ TokenHandler _tokenHandler;
40
41
  StakingStore _store;
41
42
  StakingReader _reader;
42
43
  NftId _protocolNftId;
@@ -385,6 +386,7 @@ contract Staking is
385
386
  address(tokenHandler),
386
387
  dipAmount);
387
388
 
389
+ // TODO: centralize token handling (issue #471)
388
390
  tokenHandler.transfer(from, stakingWallet, dipAmount);
389
391
  }
390
392
 
@@ -401,7 +403,8 @@ contract Staking is
401
403
  stakingWallet,
402
404
  address(tokenHandler),
403
405
  dipAmount);
404
-
406
+
407
+ // TODO: centralize token handling (issue #471)
405
408
  tokenHandler.transfer(stakingWallet, to, dipAmount);
406
409
  }
407
410
 
@@ -420,6 +423,9 @@ contract Staking is
420
423
  return address(_getStakingStorage()._tokenRegistry);
421
424
  }
422
425
 
426
+ function getTokenHandler() public virtual override(Component, IComponent) view returns (TokenHandler tokenHandler) {
427
+ return _getStakingStorage()._tokenHandler;
428
+ }
423
429
 
424
430
  // from Versionable
425
431
  function getVersion()
@@ -490,14 +496,13 @@ contract Staking is
490
496
  "", // registry data
491
497
  ""); // component data
492
498
 
493
- _createAndSetTokenHandler();
494
-
495
499
  // wiring to external contracts
496
500
  StakingStorage storage $ = _getStakingStorage();
497
501
  $._protocolNftId = getRegistry().getProtocolNftId();
498
502
  $._store = StakingStore(stakingStoreAddress);
499
503
  $._reader = StakingStore(stakingStoreAddress).getStakingReader();
500
504
  $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
505
+ $._tokenHandler = new TokenHandler(address(getToken()));
501
506
 
502
507
  registerInterface(type(IStaking).interfaceId);
503
508
  }
@@ -1,13 +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";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {Staking} from "./Staking.sol";
7
- import {StakingReader} from "./StakingReader.sol";
8
- import {StakingStore} from "./StakingStore.sol";
9
7
 
10
- import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
11
8
 
12
9
  contract StakingManager is
13
10
  ProxyManager
@@ -1,21 +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 {ObjectType, STAKE, TARGET} from "../type/ObjectType.sol";
15
- import {Seconds} from "../type/Seconds.sol";
12
+ import {STAKE, TARGET} from "../type/ObjectType.sol";
16
13
  import {StakingStore} from "./StakingStore.sol";
17
14
  import {Timestamp} from "../type/Timestamp.sol";
18
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
15
+ import {UFixed} from "../type/UFixed.sol";
19
16
 
20
17
  contract StakingReader is
21
18
  IRegistryLinked,
@@ -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,31 +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
13
  import {NftId, NftIdLib} from "../type/NftId.sol";
18
14
  import {NftIdSet} from "../shared/NftIdSet.sol";
19
- import {ObjectType, INSTANCE, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
20
- import {Seconds, SecondsLib} from "../type/Seconds.sol";
15
+ import {PROTOCOL, STAKE, TARGET} from "../type/ObjectType.sol";
21
16
  import {StakingReader} from "./StakingReader.sol";
22
17
  import {TargetManagerLib} from "./TargetManagerLib.sol";
23
18
  import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
24
- import {TokenRegistry} from "../registry/TokenRegistry.sol";
25
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
26
- import {Version, VersionLib} from "../type/Version.sol";
27
- import {Versionable} from "../shared/Versionable.sol";
28
-
29
- import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
30
19
  import {StakingLifecycle} from "./StakingLifecycle.sol";
20
+ import {UFixed} from "../type/UFixed.sol";
31
21
 
32
22
 
33
23
  contract StakingStore is
@@ -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
@@ -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
 
@@ -6,9 +6,11 @@ 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.toInt,
13
+ SecondsLib.add
12
14
  } for Seconds global;
13
15
 
14
16
  function SecondsEq(Seconds duration1, Seconds duration2) pure returns (bool) {
@@ -19,6 +21,11 @@ function SecondsGt(Seconds duration1, Seconds duration2) pure returns (bool) {
19
21
  return SecondsLib.gt(duration1, duration2);
20
22
  }
21
23
 
24
+ function SecondsAdd(Seconds duration1, Seconds duration2) pure returns (Seconds) {
25
+ return SecondsLib.add(duration1, duration2);
26
+ }
27
+
28
+
22
29
  library SecondsLib {
23
30
 
24
31
  error ErrorSecondsLibDurationTooBig(uint256 duration);
@@ -70,6 +77,11 @@ library SecondsLib {
70
77
  return Seconds.unwrap(duration1) > Seconds.unwrap(duration2);
71
78
  }
72
79
 
80
+ /// @dev return add duration1 and duration2
81
+ function add(Seconds duration1, Seconds duration2) public pure returns (Seconds) {
82
+ return Seconds.wrap(Seconds.unwrap(duration1) + Seconds.unwrap(duration2));
83
+ }
84
+
73
85
  function toInt(Seconds duration) public pure returns (uint256) {
74
86
  return uint256(uint40(Seconds.unwrap(duration)));
75
87
  }
@@ -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) {
@@ -15,9 +15,10 @@ using {
15
15
  lteUFixed as <=,
16
16
  eqUFixed as ==,
17
17
  neUFixed as !=,
18
+ UFixedLib.gt,
19
+ UFixedLib.gtz,
18
20
  UFixedLib.toInt,
19
- UFixedLib.toInt1000,
20
- UFixedLib.gtz
21
+ UFixedLib.toInt1000
21
22
  } for UFixed global;
22
23
 
23
24
  // TODO move to UFixedLib and rename to zero()
@@ -30,7 +31,9 @@ function addUFixed(UFixed a, UFixed b) pure returns (UFixed) {
30
31
  }
31
32
 
32
33
  function subUFixed(UFixed a, UFixed b) pure returns (UFixed) {
33
- require(a >= b, "ERROR:UFM-010:NEGATIVE_RESULT");
34
+ if (a < b) {
35
+ revert UFixedLib.UFixedLibNegativeResult();
36
+ }
34
37
  return UFixed.wrap(UFixed.unwrap(a) - UFixed.unwrap(b));
35
38
  }
36
39
 
@@ -40,8 +43,10 @@ function mulUFixed(UFixed a, UFixed b) pure returns (UFixed) {
40
43
  }
41
44
 
42
45
  function divUFixed(UFixed a, UFixed b) pure returns (UFixed) {
43
- require(UFixed.unwrap(b) > 0, "ERROR:UFM-020:DIVISOR_ZERO");
44
-
46
+ if (UFixed.unwrap(b) == 0) {
47
+ revert UFixedLib.UFixedLibDivisionByZero();
48
+ }
49
+
45
50
  return
46
51
  UFixed.wrap(MathLib.mulDiv(UFixed.unwrap(a), 10 ** 18, UFixed.unwrap(b)));
47
52
  }
@@ -89,6 +94,8 @@ function deltaUFixed(UFixed a, UFixed b) pure returns (UFixed) {
89
94
  /// @dev copied from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.9.3/contracts/utils/math/Math.sol
90
95
  library MathLib {
91
96
 
97
+ error MathLigMulDivOverflow();
98
+
92
99
  enum Rounding {
93
100
  Down, // Toward negative infinity
94
101
  Up, // Toward infinity
@@ -122,8 +129,10 @@ library MathLib {
122
129
  }
123
130
 
124
131
  // Make sure the result is less than 2^256. Also prevents denominator == 0.
125
- require(denominator > prod1, "Math: mulDiv overflow");
126
-
132
+ if (denominator <= prod1) {
133
+ revert MathLigMulDivOverflow();
134
+ }
135
+
127
136
  ///////////////////////////////////////////////
128
137
  // 512 by 256 division.
129
138
  ///////////////////////////////////////////////
@@ -195,6 +204,12 @@ library MathLib {
195
204
  }
196
205
 
197
206
  library UFixedLib {
207
+ error UFixedLibNegativeResult();
208
+ error UFixedLibDivisionByZero();
209
+
210
+ error UFixedLibExponentTooSmall(int8 exp);
211
+ error UFixedLibExponentTooLarge(int8 exp);
212
+
198
213
  int8 public constant EXP = 18;
199
214
  uint256 public constant MULTIPLIER = 10 ** uint256(int256(EXP));
200
215
  uint256 public constant MULTIPLIER_HALF = MULTIPLIER / 2;
@@ -221,9 +236,13 @@ library UFixedLib {
221
236
 
222
237
  /// @dev Converts the uint256 to a UFixed with given exponent.
223
238
  function toUFixed(uint256 a, int8 exp) public pure returns (UFixed) {
224
- require(EXP + exp >= 0, "ERROR:FM-010:EXPONENT_TOO_SMALL");
225
- require(EXP + exp <= 64, "ERROR:FM-011:EXPONENT_TOO_LARGE");
226
-
239
+ if (EXP + exp < 0) {
240
+ revert UFixedLibExponentTooSmall(exp);
241
+ }
242
+ if (EXP + exp > 64) {
243
+ revert UFixedLibExponentTooLarge(exp);
244
+ }
245
+
227
246
  return UFixed.wrap(a * 10 ** uint8(EXP + exp));
228
247
  }
229
248