@etherisc/gif-next 0.0.2-d3ee0cc-268 → 0.0.2-d442a8c-073

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 (620) hide show
  1. package/README.md +250 -23
  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 +1349 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +814 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +315 -1509
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +650 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +416 -1600
  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 +204 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1565 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1053 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3458 -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/base/Cloneable.sol/Cloneable.json +190 -0
  36. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  38. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  41. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  42. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  44. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IDistribution.sol/IDistribution.json} +2 -2
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  48. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  49. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.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/pool/BundleService.sol/BundleService.dbg.json +4 -0
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
  54. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
  56. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +690 -0
  58. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  60. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
  62. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  64. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
  66. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  68. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
  70. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  72. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
  74. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
  76. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  77. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +252 -230
  78. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  80. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -0
  82. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +536 -0
  84. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  86. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IProductService.sol/IProductService.json} +197 -174
  88. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
  90. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
  92. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
  94. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
  96. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  97. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  98. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  100. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  102. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  104. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +678 -77
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1110 -0
  108. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  110. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.json +865 -107
  112. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  113. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1415 -0
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +709 -0
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
  120. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  121. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  123. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  124. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  125. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  126. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  127. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  130. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  131. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  132. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  133. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  134. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  135. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  136. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  137. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
  138. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
  140. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  141. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +526 -0
  142. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  143. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  144. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  146. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  148. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  150. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
  152. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  154. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  155. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -138
  156. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  157. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  158. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  159. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +37 -80
  160. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  162. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  163. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -31
  164. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  165. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  166. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  167. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +158 -151
  168. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  170. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  171. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  172. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  173. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  174. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  175. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  176. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  177. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  178. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  180. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  181. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  182. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  183. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  184. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  186. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  187. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +255 -23
  188. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  189. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  190. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  191. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +260 -218
  192. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  193. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  194. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  195. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  196. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  198. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  199. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  200. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  201. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
  202. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  203. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  204. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  205. package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
  206. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  207. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
  208. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  209. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  210. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  211. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
  212. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
  214. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  215. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  216. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  217. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  218. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  219. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  220. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  221. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  222. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  223. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  224. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  226. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  228. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  229. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  230. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  231. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  232. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  234. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  235. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  236. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  238. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  240. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  242. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  244. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
  246. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  248. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  250. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +280 -0
  252. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  253. package/artifacts/contracts/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
  254. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  255. package/artifacts/contracts/{types/UFixed.sol/UFixedMathLib.json → type/UFixed.sol/UFixedLib.json} +4 -4
  256. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  258. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  260. package/contracts/distribution/Distribution.sol +261 -0
  261. package/contracts/distribution/DistributionService.sol +298 -0
  262. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  263. package/contracts/distribution/IDistributionComponent.sol +66 -0
  264. package/contracts/distribution/IDistributionService.sol +81 -0
  265. package/contracts/instance/BundleManager.sol +126 -0
  266. package/contracts/instance/IInstance.sol +71 -44
  267. package/contracts/instance/IInstanceService.sol +81 -0
  268. package/contracts/instance/Instance.sol +219 -52
  269. package/contracts/instance/InstanceAdmin.sol +331 -0
  270. package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
  271. package/contracts/instance/InstanceReader.sol +365 -0
  272. package/contracts/instance/InstanceService.sol +362 -0
  273. package/contracts/instance/InstanceServiceManager.sol +44 -0
  274. package/contracts/instance/InstanceStore.sol +260 -0
  275. package/contracts/instance/base/BalanceStore.sol +118 -0
  276. package/contracts/instance/base/Cloneable.sol +51 -0
  277. package/contracts/instance/base/ObjectManager.sol +82 -0
  278. package/contracts/instance/module/IAccess.sol +46 -0
  279. package/contracts/instance/module/IBundle.sol +20 -0
  280. package/contracts/instance/module/IComponents.sol +52 -0
  281. package/contracts/instance/module/IDistribution.sol +42 -0
  282. package/contracts/instance/module/IPolicy.sol +84 -0
  283. package/contracts/instance/module/IRisk.sol +11 -0
  284. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  285. package/contracts/pool/BundleService.sol +296 -0
  286. package/contracts/pool/BundleServiceManager.sol +42 -0
  287. package/contracts/pool/IBundleService.sol +106 -0
  288. package/contracts/pool/IPoolComponent.sol +112 -0
  289. package/contracts/pool/IPoolService.sol +150 -0
  290. package/contracts/pool/Pool.sol +299 -0
  291. package/contracts/pool/PoolService.sol +453 -0
  292. package/contracts/pool/PoolServiceManager.sol +42 -0
  293. package/contracts/product/ApplicationService.sol +254 -0
  294. package/contracts/product/ApplicationServiceManager.sol +38 -0
  295. package/contracts/product/ClaimService.sol +442 -0
  296. package/contracts/product/ClaimServiceManager.sol +38 -0
  297. package/contracts/product/IApplicationService.sol +62 -0
  298. package/contracts/product/IClaimService.sol +93 -0
  299. package/contracts/product/IPolicyService.sol +78 -0
  300. package/contracts/product/IPricingService.sol +39 -0
  301. package/contracts/product/IProductComponent.sol +42 -0
  302. package/contracts/product/IProductService.sol +33 -0
  303. package/contracts/product/PolicyService.sol +475 -0
  304. package/contracts/product/PolicyServiceManager.sol +42 -0
  305. package/contracts/product/PricingService.sol +301 -0
  306. package/contracts/product/PricingServiceManager.sol +42 -0
  307. package/contracts/product/Product.sol +377 -0
  308. package/contracts/product/ProductService.sol +124 -0
  309. package/contracts/product/ProductServiceManager.sol +42 -0
  310. package/contracts/registry/ChainNft.sol +95 -37
  311. package/contracts/registry/IRegistry.sol +95 -28
  312. package/contracts/registry/IRegistryService.sol +69 -0
  313. package/contracts/registry/ITransferInterceptor.sol +7 -0
  314. package/contracts/registry/Registry.sol +476 -281
  315. package/contracts/registry/RegistryAdmin.sol +237 -0
  316. package/contracts/registry/RegistryService.sol +266 -0
  317. package/contracts/registry/RegistryServiceManager.sol +58 -0
  318. package/contracts/registry/ReleaseManager.sol +599 -0
  319. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  320. package/contracts/registry/TokenRegistry.sol +315 -0
  321. package/contracts/shared/AccessManagerCustom.sol +736 -0
  322. package/contracts/shared/AccessManagerExtended.sol +470 -0
  323. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  324. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  325. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  326. package/contracts/shared/Component.sol +278 -0
  327. package/contracts/shared/ComponentService.sol +596 -0
  328. package/contracts/shared/ComponentServiceManager.sol +35 -0
  329. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  330. package/contracts/shared/ERC165.sol +15 -9
  331. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  332. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  333. package/contracts/shared/IComponent.sol +70 -0
  334. package/contracts/shared/IComponentService.sol +91 -0
  335. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  336. package/contracts/shared/IKeyValueStore.sol +53 -0
  337. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -4
  338. package/contracts/shared/INftOwnable.sol +23 -0
  339. package/contracts/shared/IPolicyHolder.sol +45 -0
  340. package/contracts/shared/IRegisterable.sol +10 -19
  341. package/contracts/shared/IRegistryLinked.sol +11 -0
  342. package/contracts/shared/IService.sol +18 -0
  343. package/contracts/shared/IVersionable.sol +38 -37
  344. package/contracts/shared/InitializableCustom.sol +177 -0
  345. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  346. package/contracts/shared/KeyValueStore.sol +127 -0
  347. package/contracts/{instance/base → shared}/Lifecycle.sol +43 -17
  348. package/contracts/shared/NftIdSetManager.sol +65 -0
  349. package/contracts/shared/NftOwnable.sol +107 -0
  350. package/contracts/shared/PolicyHolder.sol +102 -0
  351. package/contracts/shared/ProxyManager.sol +199 -0
  352. package/contracts/shared/Registerable.sol +54 -65
  353. package/contracts/shared/RegistryLinked.sol +43 -0
  354. package/contracts/shared/Service.sol +77 -0
  355. package/contracts/shared/TokenHandler.sol +58 -0
  356. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  357. package/contracts/shared/Versionable.sol +38 -68
  358. package/contracts/staking/IStaking.sol +168 -0
  359. package/contracts/staking/IStakingService.sol +149 -0
  360. package/contracts/staking/StakeManagerLib.sol +179 -0
  361. package/contracts/staking/Staking.sol +551 -0
  362. package/contracts/staking/StakingManager.sol +54 -0
  363. package/contracts/staking/StakingReader.sol +187 -0
  364. package/contracts/staking/StakingService.sol +406 -0
  365. package/contracts/staking/StakingServiceManager.sol +45 -0
  366. package/contracts/staking/StakingStore.sol +572 -0
  367. package/contracts/staking/TargetManagerLib.sol +207 -0
  368. package/contracts/{types → type}/AddressSet.sol +1 -1
  369. package/contracts/type/Amount.sol +128 -0
  370. package/contracts/{types → type}/Blocknumber.sol +21 -3
  371. package/contracts/type/ClaimId.sol +75 -0
  372. package/contracts/type/DistributorType.sol +55 -0
  373. package/contracts/type/Fee.sol +66 -0
  374. package/contracts/{types → type}/Key32.sol +8 -3
  375. package/contracts/{types → type}/NftId.sol +21 -15
  376. package/contracts/type/NftIdSet.sol +62 -0
  377. package/contracts/{types → type}/ObjectType.sol +69 -15
  378. package/contracts/type/PayoutId.sol +82 -0
  379. package/contracts/type/Referral.sol +89 -0
  380. package/contracts/type/RiskId.sol +43 -0
  381. package/contracts/type/RoleId.sol +143 -0
  382. package/contracts/type/Seconds.sol +81 -0
  383. package/contracts/{types → type}/StateId.sol +29 -7
  384. package/contracts/{types → type}/Timestamp.sol +22 -13
  385. package/contracts/{types → type}/UFixed.sol +129 -12
  386. package/contracts/{types → type}/Version.sol +15 -2
  387. package/package.json +6 -5
  388. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  389. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  390. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  391. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  392. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  393. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  394. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  395. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  396. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  397. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  398. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  399. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  400. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  401. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  402. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  403. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  404. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  405. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  406. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  407. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  408. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  409. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  410. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  411. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  412. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  413. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  414. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  415. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  416. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  417. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  418. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  419. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  420. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  421. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  422. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  423. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  424. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  425. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  426. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  427. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  428. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  429. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  430. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  431. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  432. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  433. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  434. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  435. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  436. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  437. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  438. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  439. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  440. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  441. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  442. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  443. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  444. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  445. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  446. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  447. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  448. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  449. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  450. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  451. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  452. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  453. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  454. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  455. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  456. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  457. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  458. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  459. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  460. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  461. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  462. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  463. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  464. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  465. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  466. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  467. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  468. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  469. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  470. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  471. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  472. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  473. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  474. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  475. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  476. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  477. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  478. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  479. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  480. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  481. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  482. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  483. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  484. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  485. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  486. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  487. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  488. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  489. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  490. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  491. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  492. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  493. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  494. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  495. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  496. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  497. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -491
  499. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  501. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -376
  502. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  503. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  504. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  505. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  506. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  507. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  508. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  509. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  510. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  511. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  512. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  513. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  514. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  515. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  516. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  517. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  518. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  519. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  520. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -82
  521. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  522. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  523. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  524. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  525. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  526. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  527. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  528. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  529. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  530. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  531. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  532. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  533. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  534. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  535. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  536. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  537. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  538. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  539. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  540. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  541. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  542. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  543. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  544. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  545. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  546. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  547. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  550. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  551. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  552. package/contracts/components/BaseComponent.sol +0 -88
  553. package/contracts/components/IBaseComponent.sol +0 -19
  554. package/contracts/components/IPoolComponent.sol +0 -57
  555. package/contracts/components/IProductComponent.sol +0 -19
  556. package/contracts/components/Pool.sol +0 -174
  557. package/contracts/components/Product.sol +0 -117
  558. package/contracts/experiment/errors/Require.sol +0 -38
  559. package/contracts/experiment/errors/Revert.sol +0 -44
  560. package/contracts/experiment/inheritance/A.sol +0 -53
  561. package/contracts/experiment/inheritance/B.sol +0 -28
  562. package/contracts/experiment/inheritance/C.sol +0 -34
  563. package/contracts/experiment/inheritance/IA.sol +0 -13
  564. package/contracts/experiment/inheritance/IB.sol +0 -10
  565. package/contracts/experiment/inheritance/IC.sol +0 -12
  566. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  567. package/contracts/experiment/statemachine/ISM.sol +0 -25
  568. package/contracts/experiment/statemachine/README.md +0 -112
  569. package/contracts/experiment/statemachine/SM.sol +0 -57
  570. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  571. package/contracts/experiment/types/TypeA.sol +0 -47
  572. package/contracts/experiment/types/TypeB.sol +0 -29
  573. package/contracts/instance/IInstanceLinked.sol +0 -8
  574. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  575. package/contracts/instance/base/IInstanceBase.sol +0 -14
  576. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  577. package/contracts/instance/base/IService.sol +0 -15
  578. package/contracts/instance/base/InstanceBase.sol +0 -80
  579. package/contracts/instance/base/KeyValueStore.sol +0 -156
  580. package/contracts/instance/base/ModuleBase.sol +0 -52
  581. package/contracts/instance/base/ServiceBase.sol +0 -37
  582. package/contracts/instance/module/access/Access.sol +0 -149
  583. package/contracts/instance/module/access/IAccess.sol +0 -53
  584. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  585. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  586. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  587. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  588. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  589. package/contracts/instance/module/component/IComponent.sol +0 -53
  590. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  591. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  592. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  593. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  594. package/contracts/instance/module/risk/IRisk.sol +0 -10
  595. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  596. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  597. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  598. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  599. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  600. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  601. package/contracts/instance/service/IPoolService.sol +0 -30
  602. package/contracts/instance/service/IProductService.sol +0 -58
  603. package/contracts/instance/service/PoolService.sol +0 -123
  604. package/contracts/instance/service/ProductService.sol +0 -354
  605. package/contracts/registry/IChainNft.sol +0 -21
  606. package/contracts/registry/IRegistryLinked.sol +0 -8
  607. package/contracts/shared/IOwnable.sol +0 -6
  608. package/contracts/test/TestFee.sol +0 -25
  609. package/contracts/test/TestPool.sol +0 -22
  610. package/contracts/test/TestProduct.sol +0 -44
  611. package/contracts/test/TestRegisterable.sol +0 -19
  612. package/contracts/test/TestRoleId.sol +0 -14
  613. package/contracts/test/TestService.sol +0 -32
  614. package/contracts/test/TestToken.sol +0 -26
  615. package/contracts/test/TestVersion.sol +0 -44
  616. package/contracts/test/TestVersionable.sol +0 -17
  617. package/contracts/types/ChainId.sol +0 -38
  618. package/contracts/types/Fee.sol +0 -51
  619. package/contracts/types/NftIdSet.sol +0 -60
  620. package/contracts/types/RoleId.sol +0 -36
@@ -0,0 +1,551 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount, AmountLib} from "../type/Amount.sol";
5
+ import {ChainNft} from "../registry/ChainNft.sol";
6
+ import {Component} from "../shared/Component.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IRegistryService} from "../registry/IRegistryService.sol";
9
+ import {IStaking} from "./IStaking.sol";
10
+ import {IVersionable} from "../shared/IVersionable.sol";
11
+ import {Key32} from "../type/Key32.sol";
12
+ import {KEEP_STATE} from "../type/StateId.sol";
13
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
14
+ import {NftId, NftIdLib} from "../type/NftId.sol";
15
+ import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
16
+ import {ObjectType, INSTANCE, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
17
+ import {Seconds, SecondsLib} from "../type/Seconds.sol";
18
+ import {StakeManagerLib} from "./StakeManagerLib.sol";
19
+ import {StakingReader} from "./StakingReader.sol";
20
+ import {StakingStore} from "./StakingStore.sol";
21
+ import {TargetManagerLib} from "./TargetManagerLib.sol";
22
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
23
+ import {TokenHandler} from "../shared/TokenHandler.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
+ contract Staking is
30
+ Component,
31
+ Versionable,
32
+ IStaking
33
+ {
34
+ string public constant CONTRACT_NAME = "Staking";
35
+ uint8 private constant GIF_MAJOR_VERSION = 3;
36
+
37
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
38
+ bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
39
+
40
+ struct StakingStorage {
41
+ IRegistryService _registryService;
42
+ TokenRegistry _tokenRegistry;
43
+ StakingStore _store;
44
+ StakingReader _reader;
45
+ NftId _protocolNftId;
46
+ }
47
+
48
+
49
+ modifier onlyStake(NftId stakeNftId) {
50
+ if (!_getStakingStorage()._store.exists(stakeNftId)) {
51
+ revert ErrorStakingNotStake(stakeNftId);
52
+ }
53
+ _;
54
+ }
55
+
56
+
57
+ modifier onlyTarget(NftId targetNftId) {
58
+ if (!_getStakingStorage()._store.getTargetManager().exists(targetNftId)) {
59
+ revert ErrorStakingNotTarget(targetNftId);
60
+ }
61
+ _;
62
+ }
63
+
64
+
65
+ // from Versionable
66
+ function getVersion()
67
+ public
68
+ pure
69
+ virtual override (IVersionable, Versionable)
70
+ returns(Version)
71
+ {
72
+ return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
73
+ }
74
+
75
+ // set/update staking reader
76
+ function setStakingReader(StakingReader stakingReader)
77
+ external
78
+ virtual
79
+ onlyOwner
80
+ {
81
+ if(stakingReader.getStaking() != IStaking(this)) {
82
+ revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
83
+ }
84
+
85
+ _getStakingStorage()._reader = stakingReader;
86
+ }
87
+
88
+
89
+ // rate management
90
+ function setStakingRate(uint256 chainId, address token, UFixed stakingRate)
91
+ external
92
+ virtual
93
+ onlyOwner
94
+ {
95
+ StakingStorage storage $ = _getStakingStorage();
96
+
97
+ if (!$._tokenRegistry.isRegistered(chainId, token)) {
98
+ revert ErrorStakingTokenNotRegistered(chainId, token);
99
+ }
100
+
101
+ UFixed oldStakingRate = $._store.getStakingRate(chainId, token);
102
+ $._store.setStakingRate(chainId, token, stakingRate);
103
+
104
+ emit LogStakingStakingRateSet(chainId, token, oldStakingRate, stakingRate);
105
+ }
106
+
107
+ // reward management
108
+
109
+ // target management
110
+
111
+ function registerTarget(
112
+ NftId targetNftId,
113
+ ObjectType expectedObjectType,
114
+ uint256 chainId,
115
+ Seconds initialLockingPeriod,
116
+ UFixed initialRewardRate
117
+ )
118
+ external
119
+ virtual
120
+ // restricted // staking service access
121
+ {
122
+ TargetManagerLib.checkTargetParameters(
123
+ getRegistry(),
124
+ _getStakingStorage()._reader,
125
+ targetNftId,
126
+ expectedObjectType,
127
+ initialLockingPeriod,
128
+ initialRewardRate);
129
+
130
+ _getStakingStorage()._store.createTarget(
131
+ targetNftId,
132
+ TargetInfo({
133
+ objectType: expectedObjectType,
134
+ chainId: chainId,
135
+ lockingPeriod: initialLockingPeriod,
136
+ rewardRate: initialRewardRate}));
137
+ }
138
+
139
+
140
+ function setLockingPeriod(
141
+ NftId targetNftId,
142
+ Seconds lockingPeriod
143
+ )
144
+ external
145
+ virtual
146
+ // TODO add restricted // only staking service
147
+ onlyTarget(targetNftId)
148
+ {
149
+ (
150
+ Seconds oldLockingPeriod,
151
+ TargetInfo memory targetInfo
152
+ ) = TargetManagerLib.updateLockingPeriod(
153
+ this,
154
+ targetNftId,
155
+ lockingPeriod);
156
+
157
+ _getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
158
+
159
+ emit LogStakingLockingPeriodSet(targetNftId, oldLockingPeriod, lockingPeriod);
160
+ }
161
+
162
+ // TODO add function to set protocol reward rate: onlyOwner
163
+ // get protocol nft id (from where)
164
+
165
+ function setRewardRate(NftId targetNftId, UFixed rewardRate)
166
+ external
167
+ virtual
168
+ // TODO add restricted // only staking service
169
+ onlyTarget(targetNftId)
170
+ {
171
+ (
172
+ UFixed oldRewardRate,
173
+ TargetInfo memory targetInfo
174
+ ) = TargetManagerLib.updateRewardRate(
175
+ this,
176
+ targetNftId,
177
+ rewardRate);
178
+
179
+ _getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
180
+
181
+ emit LogStakingRewardRateSet(targetNftId, oldRewardRate, rewardRate);
182
+ }
183
+
184
+
185
+ function refillRewardReserves(NftId targetNftId, Amount dipAmount)
186
+ external
187
+ virtual
188
+ // TODO add restricted // only for target locking
189
+ returns (Amount newBalance)
190
+ {
191
+ // update book keeping of reward reserves
192
+ StakingStorage storage $ = _getStakingStorage();
193
+ newBalance = $._store.increaseReserves(targetNftId, dipAmount);
194
+ }
195
+
196
+
197
+ function withdrawRewardReserves(NftId targetNftId, Amount dipAmount)
198
+ external
199
+ virtual
200
+ // TODO add restricted // only staking service
201
+ // onlyNftOwner(targetNftId)
202
+ returns (Amount newBalance)
203
+ {
204
+ // update book keeping of reward reserves
205
+ StakingStorage storage $ = _getStakingStorage();
206
+ newBalance = $._store.decreaseReserves(targetNftId, dipAmount);
207
+ }
208
+
209
+
210
+ function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
211
+ external
212
+ virtual
213
+ // restricted() // only pool service
214
+ returns (Amount newBalance)
215
+ {
216
+ StakingStorage storage $ = _getStakingStorage();
217
+ uint chainId = $._reader.getTargetInfo(targetNftId).chainId;
218
+ UFixed stakingRate = $._reader.getStakingRate(chainId, token);
219
+ newBalance = $._store.increaseTotalValueLocked(targetNftId, stakingRate, token, amount);
220
+ }
221
+
222
+
223
+ function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
224
+ external
225
+ virtual
226
+ // restricted() // only pool service
227
+ returns (Amount newBalance)
228
+ {
229
+ StakingStorage storage $ = _getStakingStorage();
230
+ uint chainId = $._reader.getTargetInfo(targetNftId).chainId;
231
+ UFixed stakingRate = $._reader.getStakingRate(chainId, token);
232
+ newBalance = $._store.decreaseTotalValueLocked(targetNftId, stakingRate, token, amount);
233
+ }
234
+
235
+
236
+ function registerRemoteTarget(NftId targetNftId, TargetInfo memory targetInfo)
237
+ external
238
+ virtual
239
+ onlyOwner // or CCIP
240
+ {
241
+
242
+ }
243
+
244
+ function updateRemoteTvl(NftId targetNftId, address token, Amount amount)
245
+ external
246
+ virtual
247
+ onlyOwner // or CCIP
248
+ {
249
+
250
+ }
251
+
252
+ //--- staking functions -------------------------------------------------//
253
+
254
+ function createStake(
255
+ NftId stakeNftId,
256
+ NftId targetNftId,
257
+ Amount stakeAmount
258
+ )
259
+ external
260
+ virtual
261
+ // TODO add restricted() // only staking service
262
+ {
263
+ StakingStorage storage $ = _getStakingStorage();
264
+ Timestamp lockedUntil = StakeManagerLib.checkCreateParameters(
265
+ $._reader,
266
+ targetNftId,
267
+ stakeAmount);
268
+
269
+ // create new stake
270
+ $._store.create(
271
+ stakeNftId,
272
+ StakeInfo({
273
+ lockedUntil: lockedUntil}));
274
+
275
+ // update target stake balance
276
+ $._store.increaseStake(
277
+ stakeNftId,
278
+ targetNftId,
279
+ stakeAmount);
280
+ }
281
+
282
+
283
+ function stake(
284
+ NftId stakeNftId,
285
+ Amount stakeAmount
286
+ )
287
+ external
288
+ virtual
289
+ // TODO add restricted() // only staking service
290
+ onlyStake(stakeNftId)
291
+ returns (Amount stakeBalance)
292
+ {
293
+ StakingStorage storage $ = _getStakingStorage();
294
+
295
+ // check that target is active for staking
296
+ (
297
+ UFixed rewardRate,
298
+ Seconds lockingPeriod
299
+ ) = StakeManagerLib.checkStakeParameters(
300
+ $._reader,
301
+ stakeNftId);
302
+
303
+ // calculate new rewards (if any)
304
+ (
305
+ Amount rewardIncrementAmount,
306
+ Amount currentTotalDipAmount
307
+ ) = StakeManagerLib.calculateRewardIncrease(
308
+ $._reader,
309
+ stakeNftId,
310
+ rewardRate);
311
+
312
+ stakeBalance = currentTotalDipAmount + stakeAmount;
313
+
314
+ // TODO check that additional dip, rewards and rewards increment
315
+ // are still ok with max target staking amount
316
+ NftId targetNftId = getRegistry().getObjectInfo(stakeNftId).parentNftId;
317
+
318
+ $._store.restakeRewards(
319
+ stakeNftId,
320
+ targetNftId,
321
+ rewardIncrementAmount);
322
+
323
+ $._store.increaseStake(
324
+ stakeNftId,
325
+ targetNftId,
326
+ stakeAmount);
327
+
328
+ // update locked until with target locking period
329
+ $._store.update(
330
+ stakeNftId,
331
+ StakeInfo({
332
+ lockedUntil: TimestampLib.blockTimestamp().addSeconds(
333
+ lockingPeriod)}));
334
+ }
335
+
336
+
337
+ function restake(
338
+ NftId stakeNftId,
339
+ NftId newTargetNftId
340
+ )
341
+ external
342
+ virtual
343
+ // TODO add restricted() // only staking service
344
+ onlyStake(stakeNftId)
345
+ returns (NftId newStakeNftId)
346
+ {
347
+ // TODO add check that allows additional staking amount
348
+ StakingStorage storage $ = _getStakingStorage();
349
+
350
+ // TODO implement
351
+ }
352
+
353
+
354
+ function updateRewards(NftId stakeNftId)
355
+ external
356
+ virtual
357
+ // TODO add restricted() // only staking service
358
+ onlyStake(stakeNftId)
359
+ {
360
+ StakingStorage storage $ = _getStakingStorage();
361
+ _updateRewards($._reader, $._store, stakeNftId);
362
+ }
363
+
364
+
365
+ function claimRewards(NftId stakeNftId)
366
+ external
367
+ virtual
368
+ // TODO add restricted() // only staking service
369
+ onlyStake(stakeNftId)
370
+ returns (
371
+ Amount rewardsClaimedAmount
372
+ )
373
+ {
374
+ StakingStorage storage $ = _getStakingStorage();
375
+
376
+ // update rewards since last update
377
+ NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
378
+
379
+ // unstake all available rewards
380
+ rewardsClaimedAmount = $._store.claimUpTo(
381
+ stakeNftId,
382
+ targetNftId,
383
+ AmountLib.max());
384
+
385
+ // update reward reserves
386
+ $._store.decreaseReserves(targetNftId, rewardsClaimedAmount);
387
+ }
388
+
389
+
390
+ function unstake(NftId stakeNftId)
391
+ external
392
+ virtual
393
+ // TODO add restricted() // only staking service
394
+ onlyStake(stakeNftId)
395
+ returns (
396
+ Amount unstakedAmount,
397
+ Amount rewardsClaimedAmount
398
+ )
399
+ {
400
+ // TODO add check that stake locking is in the past
401
+ StakingStorage storage $ = _getStakingStorage();
402
+
403
+ // update rewards since last update
404
+ NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
405
+
406
+ // unstake all available dips
407
+ (
408
+ unstakedAmount,
409
+ rewardsClaimedAmount
410
+ ) = $._store.unstakeUpTo(
411
+ stakeNftId,
412
+ targetNftId,
413
+ AmountLib.max(), // unstake all stakes
414
+ AmountLib.max()); // claim all rewards
415
+
416
+ // update reward reserves
417
+ $._store.decreaseReserves(targetNftId, rewardsClaimedAmount);
418
+ }
419
+
420
+
421
+
422
+ function _updateRewards(
423
+ StakingReader reader,
424
+ StakingStore store,
425
+ NftId stakeNftId
426
+ )
427
+ internal
428
+ virtual
429
+ returns (NftId targetNftId)
430
+ {
431
+ UFixed rewardRate;
432
+
433
+ (targetNftId, rewardRate) = reader.getTargetRewardRate(stakeNftId);
434
+ (Amount rewardIncrement, ) = StakeManagerLib.calculateRewardIncrease(
435
+ reader,
436
+ stakeNftId,
437
+ rewardRate);
438
+
439
+ store.updateRewards(
440
+ stakeNftId,
441
+ targetNftId,
442
+ rewardIncrement);
443
+ }
444
+
445
+
446
+ //--- other functions ---------------------------------------------------//
447
+
448
+ function collectDipAmount(address from, Amount dipAmount)
449
+ external
450
+ // TODO add restricted() // only staking service
451
+ {
452
+ TokenHandler tokenHandler = getTokenHandler();
453
+ address stakingWallet = getWallet();
454
+
455
+ StakeManagerLib.checkDipBalanceAndAllowance(
456
+ getToken(),
457
+ from,
458
+ address(tokenHandler),
459
+ dipAmount);
460
+
461
+ tokenHandler.transfer(from, stakingWallet, dipAmount);
462
+ }
463
+
464
+
465
+ function transferDipAmount(address to, Amount dipAmount)
466
+ external
467
+ // TODO add restricted() // only staking service
468
+ {
469
+ TokenHandler tokenHandler = getTokenHandler();
470
+ address stakingWallet = getWallet();
471
+
472
+ StakeManagerLib.checkDipBalanceAndAllowance(
473
+ getToken(),
474
+ stakingWallet,
475
+ address(tokenHandler),
476
+ dipAmount);
477
+
478
+ tokenHandler.transfer(stakingWallet, to, dipAmount);
479
+ }
480
+
481
+
482
+ //--- view functions ----------------------------------------------------//
483
+
484
+ function getStakingReader() public view returns (StakingReader reader) {
485
+ return _getStakingStorage()._reader;
486
+ }
487
+
488
+ function getStakingStore() external view returns (StakingStore stakingStore) {
489
+ return _getStakingStorage()._store;
490
+ }
491
+
492
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
493
+ return address(_getStakingStorage()._tokenRegistry);
494
+ }
495
+
496
+ //--- internal functions ------------------------------------------------//
497
+
498
+ function _initialize(
499
+ address owner,
500
+ bytes memory data
501
+ )
502
+ internal
503
+ virtual override
504
+ initializer
505
+ {
506
+ (
507
+ address registryAddress,
508
+ address tokenRegistryAddress,
509
+ address stakingStoreAddress,
510
+ address stakingOwner
511
+ ) = abi.decode(data, (address, address, address, address));
512
+
513
+ // only admin(authority) and dip token address are set in registry at this point
514
+ IRegistry registry = IRegistry(registryAddress);
515
+ address authority = registry.getAuthority();
516
+ TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
517
+ address dipTokenAddress = tokenRegistry.getDipTokenAddress();
518
+
519
+ initializeComponent(
520
+ authority,
521
+ registryAddress,
522
+ registry.getNftId(),
523
+ CONTRACT_NAME,
524
+ dipTokenAddress,
525
+ STAKING(),
526
+ false, // is interceptor
527
+ stakingOwner,
528
+ "", // registry data
529
+ ""); // component data
530
+
531
+ _createAndSetTokenHandler();
532
+
533
+
534
+ // wiring to external contracts
535
+ StakingStorage storage $ = _getStakingStorage();
536
+ $._protocolNftId = getRegistry().getProtocolNftId();
537
+ $._store = StakingStore(stakingStoreAddress);
538
+ $._reader = StakingStore(stakingStoreAddress).getStakingReader();
539
+ $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
540
+
541
+ registerInterface(type(IStaking).interfaceId);
542
+ }
543
+
544
+
545
+ function _getStakingStorage() private pure returns (StakingStorage storage $) {
546
+ assembly {
547
+ $.slot := STAKING_LOCATION_V1
548
+ }
549
+ }
550
+
551
+ }
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../shared/ProxyManager.sol";
6
+ import {ReleaseManager} from "../registry/ReleaseManager.sol";
7
+ import {Staking} from "./Staking.sol";
8
+ import {StakingReader} from "./StakingReader.sol";
9
+ import {StakingStore} from "./StakingStore.sol";
10
+
11
+ import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
12
+
13
+ contract StakingManager is
14
+ ProxyManager
15
+ {
16
+ Staking private _staking;
17
+ address private _initialImplementation;
18
+ bytes private _initializationData;
19
+
20
+ /// @dev initializes proxy manager with service implementation
21
+ constructor(
22
+ address registry,
23
+ address tokenRegistry,
24
+ address stakingStore,
25
+ address initialOwner
26
+ )
27
+ ProxyManager(registry)
28
+ {
29
+ Staking stakingImplementation = new Staking();
30
+
31
+ _initialImplementation = address(stakingImplementation);
32
+ _initializationData = abi.encode(
33
+ registry,
34
+ tokenRegistry,
35
+ stakingStore,
36
+ initialOwner);
37
+
38
+ IVersionable versionable = deploy(
39
+ _initialImplementation,
40
+ _initializationData);
41
+
42
+ _staking = Staking(address(versionable));
43
+ }
44
+
45
+ //--- view functions ----------------------------------------------------//
46
+
47
+ function getStaking()
48
+ external
49
+ view
50
+ returns (Staking)
51
+ {
52
+ return _staking;
53
+ }
54
+ }