@etherisc/gif-next 0.0.2-a63347a-883 → 0.0.2-a6ce659-551

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 (626) hide show
  1. package/README.md +28 -16
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +485 -258
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +61 -116
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +239 -1554
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +373 -190
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +430 -2524
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +661 -341
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +544 -363
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +389 -104
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3597 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  40. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  42. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  44. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  46. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  47. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  50. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  51. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  52. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  54. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  55. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → oracle/IOracleComponent.sol/IOracleComponent.json} +209 -299
  56. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  58. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  60. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  62. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  64. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  66. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  68. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  69. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +273 -285
  70. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  71. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +638 -197
  72. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  73. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  74. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  75. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  76. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  78. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  79. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  80. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  82. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  84. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  86. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  88. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  89. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +211 -230
  90. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  91. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  92. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  93. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +251 -297
  94. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  95. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +270 -215
  96. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  97. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +358 -312
  98. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  99. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +126 -167
  100. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  102. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  104. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  106. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  108. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  109. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  110. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  112. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  114. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  115. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  116. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +203 -21
  118. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +360 -218
  120. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  121. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  122. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  123. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  124. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  125. package/artifacts/contracts/registry/Registry.sol/Registry.json +440 -36
  126. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  127. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  128. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +506 -254
  130. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -95
  132. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  134. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  135. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +764 -100
  136. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  137. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  138. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  139. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +206 -0
  140. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  141. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +349 -82
  142. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  144. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  146. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  148. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  150. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  151. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  152. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  153. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  154. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  155. package/artifacts/contracts/{components/Pool.sol/Pool.json → shared/Component.sol/Component.json} +346 -364
  156. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  158. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  160. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  161. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +178 -242
  162. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  163. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  164. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  166. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  168. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  170. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  171. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IComponent.sol/IComponent.json} +213 -230
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  173. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  175. package/artifacts/contracts/{components/Component.sol/Component.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +210 -161
  176. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  177. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  178. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  180. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  182. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  184. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -30
  186. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  187. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  188. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  189. package/artifacts/contracts/shared/IService.sol/IService.json +84 -154
  190. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  192. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  193. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  194. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  195. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  196. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  197. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +547 -0
  198. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  200. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  201. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  202. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +108 -35
  204. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  205. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  206. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  207. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -75
  208. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +131 -60
  210. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  211. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  212. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Service.sol/Service.json +188 -157
  214. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  215. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  216. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  217. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  218. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  220. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  221. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  222. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  223. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  224. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  226. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  227. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  228. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  230. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  232. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  234. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  236. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  238. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  240. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  241. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  242. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  244. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  246. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  248. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  250. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  252. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  254. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  255. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  256. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  258. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  260. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  262. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  264. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  266. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  268. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  270. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  272. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  274. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  276. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  278. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  280. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  282. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  284. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  286. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  288. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  289. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  290. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  291. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  292. package/contracts/distribution/Distribution.sol +261 -0
  293. package/contracts/distribution/DistributionService.sol +297 -0
  294. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  295. package/contracts/distribution/IDistributionComponent.sol +66 -0
  296. package/contracts/distribution/IDistributionService.sol +81 -0
  297. package/contracts/instance/BundleManager.sol +15 -14
  298. package/contracts/instance/IInstance.sol +61 -46
  299. package/contracts/instance/IInstanceService.sol +76 -20
  300. package/contracts/instance/Instance.sol +176 -182
  301. package/contracts/instance/InstanceAdmin.sol +331 -0
  302. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  303. package/contracts/instance/InstanceReader.sol +159 -60
  304. package/contracts/instance/InstanceService.sol +313 -309
  305. package/contracts/instance/InstanceServiceManager.sol +12 -22
  306. package/contracts/instance/InstanceStore.sol +272 -0
  307. package/contracts/instance/base/BalanceStore.sol +123 -0
  308. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  309. package/contracts/instance/base/ObjectCounter.sol +21 -0
  310. package/contracts/instance/base/ObjectLifecycle.sol +99 -0
  311. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -16
  312. package/contracts/instance/module/IAccess.sol +19 -21
  313. package/contracts/instance/module/IBundle.sol +8 -8
  314. package/contracts/instance/module/IComponents.sol +52 -0
  315. package/contracts/instance/module/IDistribution.sol +7 -4
  316. package/contracts/instance/module/IPolicy.sol +56 -17
  317. package/contracts/instance/module/IRisk.sol +1 -1
  318. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  319. package/contracts/oracle/IOracle.sol +20 -0
  320. package/contracts/oracle/IOracleComponent.sol +32 -0
  321. package/contracts/oracle/IOracleService.sol +65 -0
  322. package/contracts/oracle/Oracle.sol +145 -0
  323. package/contracts/oracle/OracleService.sol +278 -0
  324. package/contracts/oracle/OracleServiceManager.sol +42 -0
  325. package/contracts/pool/BundleService.sol +296 -0
  326. package/contracts/pool/BundleServiceManager.sol +42 -0
  327. package/contracts/pool/IBundleService.sol +106 -0
  328. package/contracts/pool/IPoolComponent.sol +112 -0
  329. package/contracts/pool/IPoolService.sol +150 -0
  330. package/contracts/pool/Pool.sol +299 -0
  331. package/contracts/pool/PoolService.sol +452 -0
  332. package/contracts/pool/PoolServiceManager.sol +42 -0
  333. package/contracts/product/ApplicationService.sol +254 -0
  334. package/contracts/product/ApplicationServiceManager.sol +38 -0
  335. package/contracts/product/ClaimService.sol +442 -0
  336. package/contracts/product/ClaimServiceManager.sol +38 -0
  337. package/contracts/product/IApplicationService.sol +62 -0
  338. package/contracts/product/IClaimService.sol +99 -0
  339. package/contracts/product/IPolicyService.sol +78 -0
  340. package/contracts/product/IPricingService.sol +39 -0
  341. package/contracts/product/IProductComponent.sol +42 -0
  342. package/contracts/product/IProductService.sol +33 -0
  343. package/contracts/product/PolicyService.sol +475 -0
  344. package/contracts/product/PolicyServiceManager.sol +42 -0
  345. package/contracts/product/PricingService.sol +300 -0
  346. package/contracts/product/PricingServiceManager.sol +42 -0
  347. package/contracts/product/Product.sol +377 -0
  348. package/contracts/product/ProductService.sol +124 -0
  349. package/contracts/product/ProductServiceManager.sol +42 -0
  350. package/contracts/registry/ChainNft.sol +16 -1
  351. package/contracts/registry/IRegistry.sol +47 -21
  352. package/contracts/registry/IRegistryService.sol +42 -38
  353. package/contracts/registry/IServiceAuthorization.sol +38 -0
  354. package/contracts/registry/ITransferInterceptor.sol +1 -0
  355. package/contracts/registry/Registry.sol +227 -97
  356. package/contracts/registry/RegistryAdmin.sol +333 -0
  357. package/contracts/registry/RegistryService.sol +108 -104
  358. package/contracts/registry/RegistryServiceManager.sol +22 -31
  359. package/contracts/registry/ReleaseLifecycle.sol +28 -0
  360. package/contracts/registry/ReleaseManager.sol +387 -196
  361. package/contracts/registry/ServiceAuthorization.sol +90 -0
  362. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  363. package/contracts/registry/TokenRegistry.sol +263 -60
  364. package/contracts/shared/AccessAdmin.sol +759 -0
  365. package/contracts/shared/AccessManagerCustom.sol +741 -0
  366. package/contracts/shared/AccessManagerExtended.sol +481 -0
  367. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  368. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  369. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  370. package/contracts/shared/Component.sol +281 -0
  371. package/contracts/shared/ComponentService.sol +620 -0
  372. package/contracts/shared/ComponentServiceManager.sol +35 -0
  373. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  374. package/contracts/shared/ERC165.sol +15 -13
  375. package/contracts/shared/IAccessAdmin.sol +168 -0
  376. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  377. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  378. package/contracts/shared/IComponent.sol +70 -0
  379. package/contracts/shared/IComponentService.sol +102 -0
  380. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  381. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  382. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  383. package/contracts/shared/INftOwnable.sol +13 -12
  384. package/contracts/shared/IPolicyHolder.sol +45 -0
  385. package/contracts/shared/IRegisterable.sol +3 -3
  386. package/contracts/shared/IRegistryLinked.sol +11 -0
  387. package/contracts/shared/IService.sol +14 -5
  388. package/contracts/shared/IVersionable.sol +5 -48
  389. package/contracts/shared/InitializableCustom.sol +177 -0
  390. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  391. package/contracts/shared/KeyValueStore.sol +131 -0
  392. package/contracts/shared/Lifecycle.sol +67 -0
  393. package/contracts/shared/NftIdSetManager.sol +65 -0
  394. package/contracts/shared/NftOwnable.sol +59 -91
  395. package/contracts/shared/PolicyHolder.sol +102 -0
  396. package/contracts/shared/ProxyManager.sol +131 -26
  397. package/contracts/shared/Registerable.sol +19 -30
  398. package/contracts/shared/RegistryLinked.sol +43 -0
  399. package/contracts/shared/Service.sol +54 -31
  400. package/contracts/shared/TokenHandler.sol +37 -6
  401. package/contracts/shared/Versionable.sol +4 -92
  402. package/contracts/staking/IStaking.sol +168 -0
  403. package/contracts/staking/IStakingService.sol +153 -0
  404. package/contracts/staking/StakeManagerLib.sol +231 -0
  405. package/contracts/staking/Staking.sol +513 -0
  406. package/contracts/staking/StakingLifecycle.sol +24 -0
  407. package/contracts/staking/StakingManager.sol +54 -0
  408. package/contracts/staking/StakingReader.sol +187 -0
  409. package/contracts/staking/StakingService.sol +411 -0
  410. package/contracts/staking/StakingServiceManager.sol +44 -0
  411. package/contracts/staking/StakingStore.sol +615 -0
  412. package/contracts/staking/TargetManagerLib.sol +207 -0
  413. package/contracts/{types → type}/AddressSet.sol +1 -1
  414. package/contracts/type/Amount.sol +128 -0
  415. package/contracts/{types → type}/Blocknumber.sol +21 -3
  416. package/contracts/type/ClaimId.sol +75 -0
  417. package/contracts/{types → type}/DistributorType.sol +2 -2
  418. package/contracts/{types → type}/Fee.sol +33 -23
  419. package/contracts/{types → type}/NftId.sol +21 -15
  420. package/contracts/{types → type}/NftIdSet.sol +2 -2
  421. package/contracts/type/ObjectType.sol +241 -0
  422. package/contracts/type/PayoutId.sol +82 -0
  423. package/contracts/{types → type}/Referral.sol +5 -1
  424. package/contracts/type/RequestId.sol +75 -0
  425. package/contracts/{types → type}/RiskId.sol +1 -1
  426. package/contracts/type/RoleId.sol +201 -0
  427. package/contracts/type/Seconds.sol +81 -0
  428. package/contracts/type/Selector.sol +102 -0
  429. package/contracts/{types → type}/StateId.sol +34 -4
  430. package/contracts/type/String.sol +53 -0
  431. package/contracts/{types → type}/Timestamp.sol +23 -14
  432. package/contracts/{types → type}/UFixed.sol +1 -0
  433. package/contracts/{types → type}/Version.sol +2 -1
  434. package/package.json +8 -5
  435. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  436. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  437. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  438. package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -455
  439. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  440. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  441. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  442. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  443. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  444. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  445. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  446. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  447. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  448. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  449. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  450. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  452. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  454. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  456. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  457. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  458. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  459. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  460. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  462. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  464. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  465. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  467. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  469. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  471. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  473. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  474. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  476. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  478. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  480. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  482. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  483. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  484. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
  485. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  486. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  487. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  488. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  489. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  490. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  491. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  492. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  493. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  494. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  495. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  497. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1102
  498. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  499. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
  500. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  501. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
  502. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  503. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
  504. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  506. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
  511. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  512. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
  513. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  514. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
  515. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  516. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
  517. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  518. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
  519. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  520. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
  521. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  522. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  523. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  524. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  525. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  526. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  527. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  528. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
  529. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  530. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  531. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  532. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
  533. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  534. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  535. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  536. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  537. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  538. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  539. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  540. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  541. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  542. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  543. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  544. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  545. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  546. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  547. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  549. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  550. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  551. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  552. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  553. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  554. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  555. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  557. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  559. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  561. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  562. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  563. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  564. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  565. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  568. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  569. package/contracts/components/Component.sol +0 -216
  570. package/contracts/components/Distribution.sol +0 -153
  571. package/contracts/components/IComponent.sol +0 -43
  572. package/contracts/components/IDistributionComponent.sol +0 -47
  573. package/contracts/components/IPoolComponent.sol +0 -51
  574. package/contracts/components/IProductComponent.sol +0 -39
  575. package/contracts/components/Pool.sol +0 -208
  576. package/contracts/components/Product.sol +0 -266
  577. package/contracts/experiment/cloning/Cloner.sol +0 -47
  578. package/contracts/experiment/errors/Require.sol +0 -38
  579. package/contracts/experiment/errors/Revert.sol +0 -44
  580. package/contracts/experiment/inheritance/A.sol +0 -53
  581. package/contracts/experiment/inheritance/B.sol +0 -28
  582. package/contracts/experiment/inheritance/C.sol +0 -34
  583. package/contracts/experiment/inheritance/IA.sol +0 -13
  584. package/contracts/experiment/inheritance/IB.sol +0 -10
  585. package/contracts/experiment/inheritance/IC.sol +0 -12
  586. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  587. package/contracts/experiment/statemachine/ISM.sol +0 -25
  588. package/contracts/experiment/statemachine/SM.sol +0 -57
  589. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  590. package/contracts/experiment/types/TypeA.sol +0 -47
  591. package/contracts/experiment/types/TypeB.sol +0 -29
  592. package/contracts/instance/InstanceAccessManager.sol +0 -298
  593. package/contracts/instance/base/ComponentService.sol +0 -134
  594. package/contracts/instance/base/KeyValueStore.sol +0 -172
  595. package/contracts/instance/base/Lifecycle.sol +0 -100
  596. package/contracts/instance/module/ISetup.sol +0 -46
  597. package/contracts/instance/module/ITreasury.sol +0 -23
  598. package/contracts/instance/service/BundleService.sol +0 -293
  599. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  600. package/contracts/instance/service/DistributionService.sol +0 -106
  601. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  602. package/contracts/instance/service/IBundleService.sol +0 -44
  603. package/contracts/instance/service/IDistributionService.sol +0 -12
  604. package/contracts/instance/service/IPolicyService.sol +0 -94
  605. package/contracts/instance/service/IPoolService.sol +0 -20
  606. package/contracts/instance/service/IProductService.sol +0 -40
  607. package/contracts/instance/service/PolicyService.sol +0 -538
  608. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  609. package/contracts/instance/service/PoolService.sol +0 -110
  610. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  611. package/contracts/instance/service/ProductService.sol +0 -233
  612. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  613. package/contracts/registry/RegistryAccessManager.sol +0 -216
  614. package/contracts/shared/ContractDeployerLib.sol +0 -72
  615. package/contracts/test/TestFee.sol +0 -25
  616. package/contracts/test/TestRegisterable.sol +0 -18
  617. package/contracts/test/TestRoleId.sol +0 -14
  618. package/contracts/test/TestService.sol +0 -25
  619. package/contracts/test/TestVersion.sol +0 -44
  620. package/contracts/test/TestVersionable.sol +0 -17
  621. package/contracts/test/Usdc.sol +0 -26
  622. package/contracts/types/ChainId.sol +0 -38
  623. package/contracts/types/NumberId.sol +0 -52
  624. package/contracts/types/ObjectType.sol +0 -152
  625. package/contracts/types/RoleId.sol +0 -90
  626. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,187 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
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
+ import {IRegistry} from "../registry/IRegistry.sol";
10
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
11
+ import {IStaking} from "../staking/IStaking.sol";
12
+ import {IVersionable} from "../shared/IVersionable.sol";
13
+ import {NftId} from "../type/NftId.sol";
14
+ import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
15
+ import {ObjectType, STAKE, TARGET} from "../type/ObjectType.sol";
16
+ import {Seconds} from "../type/Seconds.sol";
17
+ import {StakingStore} from "./StakingStore.sol";
18
+ import {Timestamp} from "../type/Timestamp.sol";
19
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
20
+
21
+ contract StakingReader is
22
+ IRegistryLinked,
23
+ InitializableCustom
24
+ {
25
+
26
+ error ErrorStakingReaderDependenciesAlreadySet();
27
+
28
+ IRegistry private _registry;
29
+ IStaking private _staking;
30
+ StakingStore private _store;
31
+
32
+ constructor(IRegistry registry) InitializableCustom() {
33
+ _registry = registry;
34
+ }
35
+
36
+ function initialize(
37
+ address stakingAddress,
38
+ address stakingStoreAddress
39
+ )
40
+ external
41
+ initializer
42
+ {
43
+ _staking = IStaking(stakingAddress);
44
+ _store = StakingStore(stakingStoreAddress);
45
+ }
46
+
47
+ // view and pure functions
48
+
49
+ function getRegistry() external view returns (IRegistry registry) {
50
+ return _registry;
51
+ }
52
+
53
+ function getStaking() external view returns (IStaking staking) {
54
+ return _staking;
55
+ }
56
+
57
+ function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) {
58
+ return _store.getStakingRate(chainId, token);
59
+ }
60
+
61
+
62
+ function isTarget(NftId targetNftId) external view returns (bool) {
63
+ return _store.getTargetManager().exists(targetNftId);
64
+ }
65
+
66
+
67
+ function targets() external view returns (uint256) {
68
+ return _store.getTargetManager().nftIds();
69
+ }
70
+
71
+
72
+ function getTargetNftId(uint256 idx) external view returns (NftId) {
73
+ return _store.getTargetManager().getNftId(idx);
74
+ }
75
+
76
+
77
+ function isActive(NftId targetNftId) external view returns (bool) {
78
+ return _store.getTargetManager().isActive(targetNftId);
79
+ }
80
+
81
+
82
+ function activeTargets() external view returns (uint256) {
83
+ return _store.getTargetManager().activeNftIds();
84
+ }
85
+
86
+
87
+ function getActiveTargetNftId(uint256 idx) external view returns (NftId) {
88
+ return _store.getTargetManager().getActiveNftId(idx);
89
+ }
90
+
91
+
92
+ function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
93
+ return _registry.getObjectInfo(stakeNftId).parentNftId;
94
+ }
95
+
96
+
97
+ function getTargetInfo(NftId targetNftId) public view returns (IStaking.TargetInfo memory info) {
98
+ bytes memory data = _store.getData(targetNftId.toKey32(TARGET()));
99
+ if (data.length > 0) {
100
+ return abi.decode(data, (IStaking.TargetInfo));
101
+ }
102
+ }
103
+
104
+
105
+ function getStakeInfo(NftId stakeNftId) external view returns (IStaking.StakeInfo memory stakeInfo) {
106
+ bytes memory data = _store.getData(stakeNftId.toKey32(STAKE()));
107
+ if (data.length > 0) {
108
+ return abi.decode(data, (IStaking.StakeInfo));
109
+ }
110
+ }
111
+
112
+
113
+ /// @dev get the reward rate that applies to the specified stake nft id.
114
+ function getTargetRewardRate(NftId stakeNftId) external view returns (NftId targetNftId, UFixed rewardRate) {
115
+ targetNftId = getTargetNftId(stakeNftId);
116
+ rewardRate = getTargetInfo(targetNftId).rewardRate;
117
+ }
118
+
119
+
120
+ /// @dev get the reward rate for the specified target nft id.
121
+ function getRewardRate(NftId targetNftId) external view returns (UFixed rewardRate) {
122
+ return getTargetInfo(targetNftId).rewardRate;
123
+ }
124
+
125
+ /// @dev returns the current reward reserve balance for the specified target.
126
+ function getReserveBalance(NftId targetNftId) external view returns (Amount rewardReserveBalance) {
127
+ return _store.getReserveBalance(targetNftId);
128
+ }
129
+
130
+ function getStakeBalance(NftId nftId) external view returns (Amount balanceAmount) {
131
+ return _store.getStakeBalance(nftId);
132
+ }
133
+
134
+ function getRewardBalance(NftId nftId) external view returns (Amount rewardAmount) {
135
+ return _store.getRewardBalance(nftId);
136
+ }
137
+
138
+ function getBalanceUpdatedAt(NftId nftId) external view returns (Timestamp updatedAt) {
139
+ return _store.getBalanceUpdatedAt(nftId);
140
+ }
141
+
142
+ function getBalanceUpdatedIn(NftId nftId) external view returns (Blocknumber blocknumber) {
143
+ return _store.getBalanceUpdatedIn(nftId);
144
+ }
145
+
146
+ function getTotalValueLocked(NftId nftId, address token) external view returns (Amount totalValueLocked) {
147
+ return _store.getTotalValueLocked(nftId, token);
148
+ }
149
+
150
+ function getRequiredStakeBalance(NftId nftId) external view returns (Amount requiredStakedAmount) {
151
+ return _store.getRequiredStakeBalance(nftId);
152
+ }
153
+
154
+ function getTargetBalances(NftId stakeNftId)
155
+ public
156
+ view
157
+ returns (
158
+ Amount balanceAmount,
159
+ Amount stakeAmount,
160
+ Amount rewardAmount,
161
+ Blocknumber lastUpdatedIn
162
+ )
163
+ {
164
+ (
165
+ balanceAmount,
166
+ stakeAmount,
167
+ rewardAmount,
168
+ lastUpdatedIn
169
+ ) = _store.getTargetBalances(stakeNftId);
170
+ }
171
+
172
+ function getStakeBalances(NftId stakeNftId)
173
+ external
174
+ view
175
+ returns (
176
+ Amount stakeAmount,
177
+ Amount rewardAmount,
178
+ Timestamp lastUpdatedAt
179
+ )
180
+ {
181
+ (
182
+ stakeAmount,
183
+ rewardAmount,
184
+ lastUpdatedAt
185
+ ) = _store.getStakeBalances(stakeNftId);
186
+ }
187
+ }
@@ -0,0 +1,411 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {ChainNft} from "../registry/ChainNft.sol";
8
+ import {IPoolService} from "../pool/IPoolService.sol";
9
+ import {IRegisterable} from "../shared/IRegisterable.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {RegistryService} from "../registry/RegistryService.sol";
12
+ import {IStaking} from "./IStaking.sol";
13
+ import {IStakingService} from "./IStakingService.sol";
14
+ import {NftId, NftIdLib} from "../type/NftId.sol";
15
+ import {ObjectType, INSTANCE, PROTOCOL, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
16
+ import {Seconds} from "../type/Seconds.sol";
17
+ import {Service} from "../shared/Service.sol";
18
+ import {StakeManagerLib} from "./StakeManagerLib.sol";
19
+ import {StakingReader} from "./StakingReader.sol";
20
+ import {TargetManagerLib} from "./TargetManagerLib.sol";
21
+ import {Timestamp} from "../type/Timestamp.sol";
22
+ import {TokenHandler} from "../shared/TokenHandler.sol";
23
+ import {UFixed} from "../type/UFixed.sol";
24
+
25
+
26
+ contract StakingService is
27
+ Service,
28
+ IStakingService
29
+ {
30
+ // TODO decide and implement string spec for location calculation
31
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.StakingService.sol")) - 1)) & ~bytes32(uint256(0xff));
32
+ bytes32 public constant STAKING_SERVICE_LOCATION_V1 = 0x6548005c3f4340f82f348c576c0ff69f7f529cadd5ad41f96aae61abceeaa300;
33
+
34
+ struct StakingServiceStorage {
35
+ RegistryService _registryService;
36
+ IStaking _staking;
37
+ IERC20Metadata _dip;
38
+ TokenHandler _tokenHandler;
39
+ }
40
+
41
+ modifier onlyNftOwner(NftId nftId) {
42
+ if(msg.sender != getRegistry().ownerOf(nftId)) {
43
+ revert ErrorStakingServiceNotNftOwner(nftId, getRegistry().ownerOf(nftId), msg.sender);
44
+ }
45
+ _;
46
+ }
47
+
48
+
49
+ function createInstanceTarget(
50
+ NftId targetNftId,
51
+ Seconds initialLockingPeriod,
52
+ UFixed initialRewardRate
53
+ )
54
+ external
55
+ virtual
56
+ restricted()
57
+ {
58
+ uint256 chainId = block.chainid;
59
+ _getStakingServiceStorage()._staking.registerTarget(
60
+ targetNftId,
61
+ INSTANCE(),
62
+ chainId,
63
+ initialLockingPeriod,
64
+ initialRewardRate);
65
+
66
+ emit LogStakingServiceInstanceTargetRegistered(targetNftId, chainId);
67
+ }
68
+
69
+
70
+ function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod)
71
+ external
72
+ virtual
73
+ restricted()
74
+ {
75
+ _getStakingServiceStorage()._staking.setLockingPeriod(
76
+ instanceNftId,
77
+ lockingPeriod);
78
+ }
79
+
80
+
81
+ function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate)
82
+ external
83
+ virtual
84
+ restricted()
85
+ {
86
+ _getStakingServiceStorage()._staking.setRewardRate(
87
+ instanceNftId,
88
+ rewardRate);
89
+ }
90
+
91
+
92
+ function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount)
93
+ external
94
+ virtual
95
+ restricted()
96
+ returns (Amount newBalance)
97
+ {
98
+ return _refillRewardReserves(instanceNftId, rewardProvider, dipAmount);
99
+ }
100
+
101
+
102
+ function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount)
103
+ external
104
+ virtual
105
+ restricted()
106
+ returns (Amount newBalance)
107
+ {
108
+ address rewardProvider = msg.sender;
109
+ return _refillRewardReserves(targetNftId, rewardProvider, dipAmount);
110
+ }
111
+
112
+
113
+ function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount)
114
+ external
115
+ virtual
116
+ restricted()
117
+ returns (Amount newBalance)
118
+ {
119
+ // update reward reserve book keeping
120
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
121
+ newBalance = $._staking.withdrawRewardReserves(instanceNftId, dipAmount);
122
+
123
+ // transfer withdrawal amount to target owner
124
+ address instanceOwner = getRegistry().ownerOf(instanceNftId);
125
+ $._staking.transferDipAmount(
126
+ instanceOwner,
127
+ dipAmount);
128
+
129
+ emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
130
+ }
131
+
132
+
133
+ /// @dev creates a new stake to the specified target nft id with the provided dip amount
134
+ /// the target nft id must have been registered as an active staking target prior to this call
135
+ /// the sender of this transaction becomes the stake owner via the minted nft.
136
+ /// to create the new stake balance and allowance of the staker need to cover the dip amount
137
+ /// the allowance needs to be on the token handler of the staking contract (getTokenHandler())
138
+ /// this is a permissionless function.
139
+ function create(
140
+ NftId targetNftId,
141
+ Amount dipAmount
142
+ )
143
+ external
144
+ virtual
145
+ restricted()
146
+ returns (
147
+ NftId stakeNftId
148
+ )
149
+ {
150
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
151
+ address stakeOwner = msg.sender;
152
+
153
+ // target nft id checks are performed in $._staking.createStake() below
154
+ // register new stake object with registry
155
+ stakeNftId = $._registryService.registerStake(
156
+ IRegistry.ObjectInfo({
157
+ nftId: NftIdLib.zero(),
158
+ parentNftId: targetNftId,
159
+ objectType: STAKE(),
160
+ isInterceptor: false,
161
+ objectAddress: address(0),
162
+ initialOwner: stakeOwner,
163
+ data: ""
164
+ }));
165
+
166
+ // create stake info with staking
167
+ $._staking.createStake(
168
+ stakeNftId,
169
+ targetNftId,
170
+ dipAmount);
171
+
172
+ // collect staked dip by staking
173
+ $._staking.collectDipAmount(
174
+ stakeOwner,
175
+ dipAmount);
176
+
177
+ emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
178
+ }
179
+
180
+
181
+ function stake(
182
+ NftId stakeNftId,
183
+ Amount dipAmount
184
+ )
185
+ external
186
+ virtual
187
+ restricted()
188
+ onlyNftOwner(stakeNftId)
189
+ {
190
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
191
+ address stakeOwner = msg.sender;
192
+
193
+ // add additional staked dips by staking
194
+ Amount stakeBalance = $._staking.stake(
195
+ stakeNftId,
196
+ dipAmount);
197
+
198
+ // collect staked dip by staking
199
+ if (dipAmount.gtz()) {
200
+ $._staking.collectDipAmount(
201
+ stakeOwner,
202
+ dipAmount);
203
+ }
204
+
205
+ emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
206
+ }
207
+
208
+
209
+ function restakeToNewTarget(
210
+ NftId stakeNftId,
211
+ NftId newTargetNftId
212
+ )
213
+ external
214
+ virtual
215
+ restricted()
216
+ onlyNftOwner(stakeNftId)
217
+ returns (
218
+ NftId newStakeNftId
219
+ )
220
+ {
221
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
222
+ // TODO implement
223
+ }
224
+
225
+
226
+ function updateRewards(
227
+ NftId stakeNftId
228
+ )
229
+ external
230
+ virtual
231
+ restricted()
232
+ {
233
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
234
+ $._staking.updateRewards(stakeNftId);
235
+
236
+ emit LogStakingServiceRewardsUpdated(stakeNftId);
237
+ }
238
+
239
+
240
+ function claimRewards(NftId stakeNftId)
241
+ external
242
+ virtual
243
+ restricted()
244
+ onlyNftOwner(stakeNftId)
245
+ {
246
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
247
+ address stakeOwner = msg.sender;
248
+
249
+ Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
250
+ $._staking.transferDipAmount(
251
+ stakeOwner,
252
+ rewardsClaimedAmount);
253
+
254
+ emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
255
+ }
256
+
257
+
258
+ function unstake(NftId stakeNftId)
259
+ external
260
+ virtual
261
+ restricted()
262
+ onlyNftOwner(stakeNftId)
263
+ {
264
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
265
+ address stakeOwner = msg.sender;
266
+
267
+ (
268
+ Amount unstakedAmount,
269
+ Amount rewardsClaimedAmount
270
+ ) = $._staking.unstake(stakeNftId);
271
+
272
+ Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
273
+ $._staking.transferDipAmount(
274
+ stakeOwner,
275
+ totalAmount);
276
+
277
+ emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
278
+ }
279
+
280
+
281
+ function setTotalValueLocked(
282
+ NftId targetNftId,
283
+ address token,
284
+ Amount amount
285
+ )
286
+ external
287
+ virtual
288
+ restricted()
289
+ {
290
+ // TODO implement
291
+
292
+ }
293
+
294
+ //--- view functions ----------------------------------------------------//
295
+
296
+ function getDipToken()
297
+ external
298
+ virtual
299
+ returns (IERC20Metadata dip)
300
+ {
301
+ return _getStakingServiceStorage()._dip;
302
+ }
303
+
304
+
305
+ function getTokenHandler()
306
+ external
307
+ virtual
308
+ returns (TokenHandler tokenHandler)
309
+ {
310
+ return _getStakingServiceStorage()._tokenHandler;
311
+ }
312
+
313
+
314
+ function getStaking()
315
+ external
316
+ virtual
317
+ returns (IStaking staking)
318
+ {
319
+ return _getStakingServiceStorage()._staking;
320
+ }
321
+
322
+ //--- internal functions ------------------------------------------------//
323
+
324
+ function _initialize(
325
+ address owner,
326
+ bytes memory data
327
+ )
328
+ internal
329
+ virtual override
330
+ initializer()
331
+ {
332
+ (
333
+ address authority,
334
+ address registryAddress,
335
+ address stakingAddress
336
+ ) = abi.decode(data, (address, address, address));
337
+
338
+ initializeService(registryAddress, authority, owner);
339
+
340
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
341
+ $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
342
+ $._staking = _registerStaking(stakingAddress);
343
+ $._dip = $._staking.getToken();
344
+ $._tokenHandler = $._staking.getTokenHandler();
345
+
346
+ registerInterface(type(IStakingService).interfaceId);
347
+ }
348
+
349
+
350
+ function _registerStaking(
351
+ address stakingAddress
352
+ )
353
+ internal
354
+ returns (IStaking staking)
355
+ {
356
+ // check if provided staking contract is already registred
357
+ // staking contract may have been already registered by a previous major relase
358
+ IRegistry.ObjectInfo memory stakingInfo = getRegistry().getObjectInfo(stakingAddress);
359
+ if (stakingInfo.nftId.gtz()) {
360
+ // registered object but wrong type
361
+ if (stakingInfo.objectType != STAKING()) {
362
+ revert ErrorStakingServiceNotStaking(stakingAddress);
363
+ }
364
+
365
+ // return correctly registered staking contract
366
+ return IStaking(stakingAddress);
367
+ }
368
+
369
+ // check that contract implements IStaking
370
+ if(!IStaking(stakingAddress).supportsInterface(type(IStaking).interfaceId)) {
371
+ revert ErrorStakingServiceNotSupportingIStaking(stakingAddress);
372
+ }
373
+
374
+ address owner = msg.sender;
375
+ _getStakingServiceStorage()._registryService.registerStaking(
376
+ IRegisterable(stakingAddress),
377
+ owner);
378
+
379
+ return IStaking(stakingAddress);
380
+ }
381
+
382
+
383
+ function _refillRewardReserves(NftId targetNftId, address rewardProvider, Amount dipAmount)
384
+ internal
385
+ virtual
386
+ returns (Amount newBalance)
387
+ {
388
+ // update reward reserve book keeping
389
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
390
+ newBalance = $._staking.refillRewardReserves(targetNftId, dipAmount);
391
+
392
+ // collect reward dip from provider
393
+ $._staking.collectDipAmount(
394
+ rewardProvider,
395
+ dipAmount);
396
+
397
+ emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
398
+ }
399
+
400
+
401
+ function _getStakingServiceStorage() private pure returns (StakingServiceStorage storage $) {
402
+ assembly {
403
+ $.slot := STAKING_SERVICE_LOCATION_V1
404
+ }
405
+ }
406
+
407
+
408
+ function _getDomain() internal pure override returns(ObjectType) {
409
+ return STAKING();
410
+ }
411
+ }
@@ -0,0 +1,44 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {IVersionable} from "../shared/IVersionable.sol";
6
+ import {ProxyManager} from "../shared/ProxyManager.sol";
7
+ import {StakingService} from "./StakingService.sol";
8
+
9
+ contract StakingServiceManager is
10
+ ProxyManager
11
+ {
12
+
13
+ StakingService private _stakingService;
14
+
15
+ /// @dev initializes proxy manager with service implementation
16
+ constructor(
17
+ address authority,
18
+ address registryAddress,
19
+ bytes32 salt
20
+ )
21
+ ProxyManager(registryAddress)
22
+ {
23
+ StakingService svc = new StakingService();
24
+ bytes memory data = abi.encode(
25
+ authority,
26
+ registryAddress,
27
+ IRegistry(registryAddress).getStakingAddress());
28
+ IVersionable versionable = deployDetermenistic(
29
+ address(svc),
30
+ data,
31
+ salt);
32
+
33
+ _stakingService = StakingService(address(versionable));
34
+ }
35
+
36
+ //--- view functions ----------------------------------------------------//
37
+ function getStakingService()
38
+ external
39
+ view
40
+ returns (StakingService)
41
+ {
42
+ return _stakingService;
43
+ }
44
+ }