@etherisc/gif-next 0.0.2-8d47fa1-080 → 0.0.2-8d6e553-386

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 (731) hide show
  1. package/README.md +209 -16
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1524 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1210 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +919 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +843 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +344 -1864
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +499 -2174
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1735 -0
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1160 -0
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  69. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  70. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  72. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  74. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  76. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  78. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  79. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  80. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  82. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  84. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  86. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  88. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  90. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
  92. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  94. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  96. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  98. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  100. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  105. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +342 -313
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +959 -0
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +1269 -0
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  116. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  118. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  120. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  122. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  124. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  125. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  126. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  128. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  130. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  132. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  134. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +320 -255
  136. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +966 -0
  138. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IProductService.sol/IProductService.json} +187 -176
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  146. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  148. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  149. package/artifacts/contracts/product/Product.sol/Product.json +1257 -0
  150. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  152. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +60 -2
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +399 -60
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +457 -185
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  162. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.json +567 -144
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +863 -272
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  173. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  175. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  178. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  179. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1596 -0
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +808 -0
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  185. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +298 -152
  186. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +941 -0
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  197. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  198. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  199. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +66 -52
  200. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  201. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  202. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +65 -8
  204. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  205. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  206. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  207. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +155 -153
  208. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  209. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  210. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  212. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  213. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +102 -165
  214. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  216. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  217. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  218. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  219. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  220. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  221. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  222. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +205 -12
  224. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  226. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  227. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +242 -191
  228. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  230. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  231. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  232. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  233. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  236. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  237. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  251. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  253. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  256. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  258. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  260. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  269. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  286. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  290. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  298. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  302. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  307. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  308. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  309. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  310. package/contracts/authorization/AccessAdmin.sol +591 -0
  311. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  312. package/contracts/authorization/Authorization.sol +218 -0
  313. package/contracts/authorization/IAccess.sol +48 -0
  314. package/contracts/authorization/IAccessAdmin.sol +136 -0
  315. package/contracts/authorization/IAuthorization.sol +54 -0
  316. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  317. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  318. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  319. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  320. package/contracts/distribution/BasicDistribution.sol +149 -0
  321. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  322. package/contracts/distribution/Distribution.sol +301 -0
  323. package/contracts/distribution/DistributionService.sol +288 -0
  324. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  325. package/contracts/distribution/IDistributionComponent.sol +49 -0
  326. package/contracts/distribution/IDistributionService.sol +85 -0
  327. package/contracts/instance/BundleSet.sol +126 -0
  328. package/contracts/instance/IInstance.sol +78 -46
  329. package/contracts/instance/IInstanceService.sol +92 -0
  330. package/contracts/instance/Instance.sol +237 -68
  331. package/contracts/instance/InstanceAdmin.sol +266 -0
  332. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  333. package/contracts/instance/InstanceReader.sol +405 -0
  334. package/contracts/instance/InstanceService.sol +443 -0
  335. package/contracts/instance/InstanceServiceManager.sol +40 -0
  336. package/contracts/instance/InstanceStore.sol +276 -0
  337. package/contracts/instance/base/BalanceStore.sol +123 -0
  338. package/contracts/instance/base/Cloneable.sol +28 -0
  339. package/contracts/instance/base/ObjectCounter.sol +21 -0
  340. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  341. package/contracts/instance/base/ObjectSet.sol +79 -0
  342. package/contracts/instance/module/IAccess.sol +46 -0
  343. package/contracts/instance/module/IBundle.sol +20 -0
  344. package/contracts/instance/module/IComponents.sol +51 -0
  345. package/contracts/instance/module/IDistribution.sol +42 -0
  346. package/contracts/instance/module/IPolicy.sol +84 -0
  347. package/contracts/instance/module/IRisk.sol +11 -0
  348. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  349. package/contracts/oracle/BasicOracle.sol +48 -0
  350. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  351. package/contracts/oracle/IOracle.sol +36 -0
  352. package/contracts/oracle/IOracleComponent.sol +32 -0
  353. package/contracts/oracle/IOracleService.sol +65 -0
  354. package/contracts/oracle/Oracle.sol +157 -0
  355. package/contracts/oracle/OracleService.sol +278 -0
  356. package/contracts/oracle/OracleServiceManager.sol +39 -0
  357. package/contracts/pool/BasicPool.sol +164 -0
  358. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  359. package/contracts/pool/BundleService.sol +284 -0
  360. package/contracts/pool/BundleServiceManager.sol +39 -0
  361. package/contracts/pool/IBundleService.sol +106 -0
  362. package/contracts/pool/IPoolComponent.sol +52 -0
  363. package/contracts/pool/IPoolService.sol +150 -0
  364. package/contracts/pool/Pool.sol +311 -0
  365. package/contracts/pool/PoolService.sol +436 -0
  366. package/contracts/pool/PoolServiceManager.sol +39 -0
  367. package/contracts/product/ApplicationService.sol +230 -0
  368. package/contracts/product/ApplicationServiceManager.sol +38 -0
  369. package/contracts/product/BasicProduct.sol +82 -0
  370. package/contracts/product/BasicProductAuthorization.sol +40 -0
  371. package/contracts/product/ClaimService.sol +416 -0
  372. package/contracts/product/ClaimServiceManager.sol +38 -0
  373. package/contracts/product/IApplicationService.sol +62 -0
  374. package/contracts/product/IClaimService.sol +99 -0
  375. package/contracts/product/IPolicyService.sol +78 -0
  376. package/contracts/product/IPricingService.sol +39 -0
  377. package/contracts/product/IProductComponent.sol +39 -0
  378. package/contracts/product/IProductService.sol +33 -0
  379. package/contracts/product/PolicyService.sol +475 -0
  380. package/contracts/product/PolicyServiceManager.sol +39 -0
  381. package/contracts/product/PricingService.sol +300 -0
  382. package/contracts/product/PricingServiceManager.sol +39 -0
  383. package/contracts/product/Product.sol +392 -0
  384. package/contracts/product/ProductService.sol +99 -0
  385. package/contracts/product/ProductServiceManager.sol +39 -0
  386. package/contracts/registry/ChainNft.sol +55 -25
  387. package/contracts/registry/IRegistry.sol +100 -41
  388. package/contracts/registry/IRegistryService.sol +56 -16
  389. package/contracts/registry/ITransferInterceptor.sol +1 -0
  390. package/contracts/registry/Registry.sol +406 -335
  391. package/contracts/registry/RegistryAdmin.sol +365 -0
  392. package/contracts/registry/RegistryService.sol +150 -281
  393. package/contracts/registry/RegistryServiceManager.sol +53 -0
  394. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  395. package/contracts/registry/ReleaseRegistry.sol +487 -0
  396. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  397. package/contracts/registry/TokenRegistry.sol +315 -0
  398. package/contracts/shared/Component.sol +274 -0
  399. package/contracts/shared/ComponentService.sol +617 -0
  400. package/contracts/shared/ComponentServiceManager.sol +35 -0
  401. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  402. package/contracts/shared/ERC165.sol +16 -10
  403. package/contracts/shared/IComponent.sol +70 -0
  404. package/contracts/shared/IComponentService.sol +108 -0
  405. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  406. package/contracts/shared/IKeyValueStore.sol +54 -0
  407. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -5
  408. package/contracts/shared/INftOwnable.sol +23 -0
  409. package/contracts/shared/IPolicyHolder.sol +45 -0
  410. package/contracts/shared/IRegisterable.sol +5 -12
  411. package/contracts/shared/IRegistryLinked.sol +11 -0
  412. package/contracts/shared/IService.sol +25 -0
  413. package/contracts/shared/InitializableCustom.sol +177 -0
  414. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  415. package/contracts/shared/KeyValueStore.sol +131 -0
  416. package/contracts/shared/Lifecycle.sol +77 -0
  417. package/contracts/shared/NftIdSet.sol +65 -0
  418. package/contracts/shared/NftOwnable.sol +107 -0
  419. package/contracts/shared/PolicyHolder.sol +102 -0
  420. package/contracts/shared/Registerable.sol +33 -75
  421. package/contracts/shared/RegistryLinked.sol +43 -0
  422. package/contracts/shared/Service.sol +82 -0
  423. package/contracts/shared/TokenHandler.sol +58 -0
  424. package/contracts/staking/IStaking.sol +167 -0
  425. package/contracts/staking/IStakingService.sol +160 -0
  426. package/contracts/staking/StakeManagerLib.sol +231 -0
  427. package/contracts/staking/Staking.sol +514 -0
  428. package/contracts/staking/StakingLifecycle.sol +23 -0
  429. package/contracts/staking/StakingManager.sol +50 -0
  430. package/contracts/staking/StakingReader.sol +183 -0
  431. package/contracts/staking/StakingService.sol +411 -0
  432. package/contracts/staking/StakingServiceManager.sol +44 -0
  433. package/contracts/staking/StakingStore.sol +605 -0
  434. package/contracts/staking/TargetManagerLib.sol +207 -0
  435. package/contracts/{types → type}/AddressSet.sol +1 -1
  436. package/contracts/type/Amount.sol +128 -0
  437. package/contracts/{types → type}/Blocknumber.sol +21 -3
  438. package/contracts/type/ClaimId.sol +75 -0
  439. package/contracts/type/DistributorType.sol +55 -0
  440. package/contracts/type/Fee.sol +66 -0
  441. package/contracts/{types → type}/Key32.sol +8 -3
  442. package/contracts/{types → type}/NftId.sol +21 -15
  443. package/contracts/type/NftIdSet.sol +62 -0
  444. package/contracts/type/ObjectType.sol +271 -0
  445. package/contracts/type/PayoutId.sol +82 -0
  446. package/contracts/type/Referral.sol +89 -0
  447. package/contracts/type/RequestId.sol +75 -0
  448. package/contracts/{types → type}/RiskId.sol +1 -1
  449. package/contracts/type/RoleId.sol +174 -0
  450. package/contracts/type/Seconds.sol +81 -0
  451. package/contracts/type/Selector.sol +102 -0
  452. package/contracts/{types → type}/StateId.sol +39 -5
  453. package/contracts/type/String.sol +53 -0
  454. package/contracts/{types → type}/Timestamp.sol +27 -14
  455. package/contracts/type/UFixed.sol +332 -0
  456. package/contracts/{types → type}/Version.sol +8 -2
  457. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  458. package/contracts/upgradeability/ProxyManager.sol +198 -0
  459. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +2 -4
  460. package/contracts/upgradeability/Versionable.sol +59 -0
  461. package/package.json +11 -7
  462. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  463. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -213
  464. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  465. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -445
  466. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  467. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -177
  468. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  469. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -343
  470. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  471. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -474
  472. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  473. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -373
  474. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  475. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -602
  476. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  477. package/artifacts/contracts/components/Product.sol/Product.json +0 -502
  478. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  480. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  482. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  484. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  486. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  488. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  490. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  492. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  494. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  496. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  498. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  500. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  503. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  505. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  507. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  509. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  510. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  511. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  512. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  513. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  514. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  516. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  517. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  518. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  519. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  520. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  521. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -710
  522. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  524. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  525. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  526. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -380
  527. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  528. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  529. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  530. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  531. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  532. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  533. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  534. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  535. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  536. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  537. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  538. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  539. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  540. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  541. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  542. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  543. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  544. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  546. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  547. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  549. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  550. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  551. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  552. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  554. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  555. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  556. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  557. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  558. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  559. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  560. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  561. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  562. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  563. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  564. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  565. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  566. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  567. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  568. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  569. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  570. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  571. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  572. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -690
  573. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -526
  575. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -369
  578. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  580. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  581. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -649
  582. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  583. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -964
  584. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  585. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  586. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  587. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.dbg.json +0 -4
  588. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.json +0 -344
  589. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  590. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  591. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  592. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  593. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  594. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -310
  595. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  596. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  597. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  598. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  599. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  600. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -445
  601. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  602. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  603. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  604. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
  605. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  606. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
  607. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  608. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -191
  609. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  610. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  611. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  612. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -472
  613. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  614. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  615. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  616. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  617. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  618. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -270
  619. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  620. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  621. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  622. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  623. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  624. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  625. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  627. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  628. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  629. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  630. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  631. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  632. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  633. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  634. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  635. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  636. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  637. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  638. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  639. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  640. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  641. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  642. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  643. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  644. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  645. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  646. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  648. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  649. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  650. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  652. package/contracts/components/BaseComponent.sol +0 -79
  653. package/contracts/components/Distribution.sol +0 -155
  654. package/contracts/components/IBaseComponent.sol +0 -19
  655. package/contracts/components/IDistributionComponent.sol +0 -47
  656. package/contracts/components/IPoolComponent.sol +0 -65
  657. package/contracts/components/IProductComponent.sol +0 -39
  658. package/contracts/components/Pool.sol +0 -246
  659. package/contracts/components/Product.sol +0 -299
  660. package/contracts/experiment/errors/Require.sol +0 -38
  661. package/contracts/experiment/errors/Revert.sol +0 -44
  662. package/contracts/experiment/inheritance/A.sol +0 -53
  663. package/contracts/experiment/inheritance/B.sol +0 -28
  664. package/contracts/experiment/inheritance/C.sol +0 -34
  665. package/contracts/experiment/inheritance/IA.sol +0 -13
  666. package/contracts/experiment/inheritance/IB.sol +0 -10
  667. package/contracts/experiment/inheritance/IC.sol +0 -12
  668. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  669. package/contracts/experiment/statemachine/ISM.sol +0 -25
  670. package/contracts/experiment/statemachine/SM.sol +0 -57
  671. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  672. package/contracts/experiment/types/TypeA.sol +0 -47
  673. package/contracts/experiment/types/TypeB.sol +0 -29
  674. package/contracts/instance/IInstanceLinked.sol +0 -8
  675. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  676. package/contracts/instance/base/IInstanceBase.sol +0 -23
  677. package/contracts/instance/base/IKeyValueStore.sol +0 -50
  678. package/contracts/instance/base/IService.sol +0 -15
  679. package/contracts/instance/base/InstanceBase.sol +0 -89
  680. package/contracts/instance/base/KeyValueStore.sol +0 -161
  681. package/contracts/instance/base/Lifecycle.sol +0 -100
  682. package/contracts/instance/base/ModuleBase.sol +0 -57
  683. package/contracts/instance/base/ServiceBase.sol +0 -43
  684. package/contracts/instance/module/access/Access.sol +0 -149
  685. package/contracts/instance/module/access/IAccess.sol +0 -53
  686. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  687. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  688. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  689. package/contracts/instance/module/component/IComponent.sol +0 -28
  690. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  691. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  692. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  693. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  694. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  695. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  696. package/contracts/instance/module/risk/IRisk.sol +0 -26
  697. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  698. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  699. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  700. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  701. package/contracts/instance/service/ComponentOwnerService.sol +0 -272
  702. package/contracts/instance/service/DistributionService.sol +0 -54
  703. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  704. package/contracts/instance/service/IDistributionService.sol +0 -12
  705. package/contracts/instance/service/IPoolService.sol +0 -37
  706. package/contracts/instance/service/IProductService.sol +0 -107
  707. package/contracts/instance/service/PoolService.sol +0 -149
  708. package/contracts/instance/service/ProductService.sol +0 -509
  709. package/contracts/registry/IChainNft.sol +0 -22
  710. package/contracts/registry/IRegistryLinked.sol +0 -8
  711. package/contracts/registry/RegistryInstaller.sol +0 -100
  712. package/contracts/shared/IOwnable.sol +0 -6
  713. package/contracts/shared/ProxyManager.sol +0 -115
  714. package/contracts/shared/Versionable.sol +0 -147
  715. package/contracts/test/TestDistribution.sol +0 -22
  716. package/contracts/test/TestFee.sol +0 -25
  717. package/contracts/test/TestPool.sol +0 -27
  718. package/contracts/test/TestProduct.sol +0 -74
  719. package/contracts/test/TestRegisterable.sol +0 -18
  720. package/contracts/test/TestRoleId.sol +0 -14
  721. package/contracts/test/TestService.sol +0 -26
  722. package/contracts/test/TestVersion.sol +0 -44
  723. package/contracts/test/TestVersionable.sol +0 -17
  724. package/contracts/test/Usdc.sol +0 -26
  725. package/contracts/types/ChainId.sol +0 -38
  726. package/contracts/types/Fee.sol +0 -56
  727. package/contracts/types/NftIdSet.sol +0 -60
  728. package/contracts/types/ObjectType.sol +0 -131
  729. package/contracts/types/ReferralId.sol +0 -48
  730. package/contracts/types/RoleId.sol +0 -38
  731. package/contracts/types/UFixed.sol +0 -209
@@ -0,0 +1,167 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {IComponent} from "../shared/IComponent.sol";
6
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
+ import {Seconds} from "../type/Seconds.sol";
10
+ import {StakingReader} from "./StakingReader.sol";
11
+ import {StakingStore} from "./StakingStore.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
13
+ import {UFixed} from "../type/UFixed.sol";
14
+
15
+ interface IStaking is
16
+ IComponent,
17
+ IVersionable
18
+ {
19
+ // staking rate
20
+ event LogStakingStakingRateSet(uint256 chainId, address token, UFixed oldStakingRate, UFixed newStakingRate);
21
+
22
+ // target parameters
23
+ event LogStakingLockingPeriodSet(NftId targetNftId, Seconds oldLockingPeriod, Seconds lockingPeriod);
24
+ event LogStakingRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
25
+
26
+ // modifiers
27
+ error ErrorStakingNotStake(NftId stakeNftId);
28
+ error ErrorStakingNotTarget(NftId targetNftId);
29
+
30
+ error ErrorStakingNotStakingOwner();
31
+ error ErrorStakingNotNftOwner(NftId nftId);
32
+
33
+ // staking rate
34
+ error ErrorStakingTokenNotRegistered(uint256 chainId, address token);
35
+
36
+ // check dip balance and allowance
37
+ error ErrorStakingDipBalanceInsufficient(address owner, uint256 amount, uint256 dipBalance);
38
+ error ErrorStakingDipAllowanceInsufficient(address owner, address tokenHandler, uint256 amount, uint256 dipAllowance);
39
+
40
+ error ErrorStakingStakingReaderStakingMismatch(address stakingByStakingReader);
41
+ error ErrorStakingTargetAlreadyRegistered(NftId targetNftId);
42
+ error ErrorStakingTargetNftIdZero();
43
+ error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
44
+ error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
45
+ error ErrorStakingLockingPeriodZero(NftId targetNftId);
46
+ error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
47
+ error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
48
+ error ErrorStakingTargetNotFound(NftId targetNftId);
49
+ error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
50
+
51
+ error ErrorStakingTargetNotActive(NftId targetNftId);
52
+ error ErrorStakingStakeAmountZero(NftId targetNftId);
53
+
54
+ // info for individual stake
55
+ struct StakeInfo {
56
+ Timestamp lockedUntil;
57
+ }
58
+
59
+ struct TargetInfo {
60
+ ObjectType objectType;
61
+ uint256 chainId;
62
+ Seconds lockingPeriod;
63
+ UFixed rewardRate;
64
+ }
65
+
66
+ // staking rate management
67
+
68
+ /// @dev sets the rate that converts 1 token of total value locked into the
69
+ /// the required staked dip amount to back up the locked token value
70
+ function setStakingRate(uint256 chainId, address token, UFixed stakingRate) external;
71
+
72
+
73
+ // target management
74
+
75
+ function registerTarget(
76
+ NftId targetNftId,
77
+ ObjectType expectedObjectType,
78
+ uint256 chainId,
79
+ Seconds initialLockingPeriod,
80
+ UFixed initialRewardRate
81
+ ) external;
82
+
83
+
84
+ /// @dev set the stake locking period to the specified duration.
85
+ /// permissioned: only the staking service may call this function
86
+ function setLockingPeriod(NftId targetNftId, Seconds lockingPeriod) external;
87
+
88
+ /// @dev update the target specific reward rate.
89
+ /// permissioned: only the staking service may call this function
90
+ function setRewardRate(NftId targetNftId, UFixed rewardRate) external;
91
+
92
+ /// @dev (re)fills the staking reward reserves for the specified target
93
+ /// unpermissioned: anybody may fill up staking reward reserves
94
+ function refillRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
95
+
96
+ /// @dev defunds the staking reward reserves for the specified target
97
+ /// permissioned: only the staking service may call this function
98
+ function withdrawRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
99
+
100
+
101
+ /// @dev increases the total value locked amount for the specified target by the provided token amount.
102
+ /// function is called when a new policy is collateralized.
103
+ /// function restricted to the pool service.
104
+ function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
105
+
106
+
107
+ /// @dev decreases the total value locked amount for the specified target by the provided token amount.
108
+ /// function is called when a new policy is closed or payouts are executed.
109
+ /// function restricted to the pool service.
110
+ function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
111
+
112
+
113
+ function updateRemoteTvl(NftId targetNftId, address token, Amount amount) external;
114
+
115
+ // staking functions
116
+
117
+ /// @dev creat a new stake info object
118
+ /// permissioned: only staking service may call this function.
119
+ function createStake(NftId stakeNftId, NftId targetNftId, Amount dipAmount) external;
120
+
121
+ /// @dev increase the staked dip by dipAmount for the specified stake.
122
+ /// staking rewards are updated and added to the staked dips as well.
123
+ /// the function returns the new total amount of staked dips.
124
+ function stake(NftId stakeNftId, Amount dipAmount) external returns (Amount stakeBalance);
125
+
126
+ /// @dev restakes the dips to a new target.
127
+ /// the sum of the staked dips and the accumulated rewards will be restaked.
128
+ /// permissioned: only staking service may call this function.
129
+ function restake(NftId stakeNftId, NftId newTargetNftId) external returns (NftId newStakeNftId);
130
+
131
+ /// @dev retuns the specified amount of dips to the holder of the specified stake nft.
132
+ /// if dipAmount is set to Amount.max() all staked dips and all rewards are transferred to
133
+ /// permissioned: only staking service may call this function.
134
+ function unstake(NftId stakeNftId)
135
+ external
136
+ returns (
137
+ Amount unstakedAmount,
138
+ Amount rewardsClaimedAmount
139
+ );
140
+
141
+ /// @dev update stake rewards for current time.
142
+ /// may be called before an announement of a decrease of a reward rate reduction.
143
+ /// calling this functions ensures that reward balance is updated using the current (higher) reward rate.
144
+ /// unpermissioned.
145
+ function updateRewards(NftId stakeNftId) external;
146
+
147
+ /// @dev transfers all rewards accumulated so far to the holder of the specified stake nft.
148
+ /// permissioned: only staking service may call this function.
149
+ function claimRewards(NftId stakeNftId)
150
+ external
151
+ returns (
152
+ Amount rewardsClaimedAmount
153
+ );
154
+
155
+ //--- helper functions --------------------------------------------------//
156
+
157
+ /// @dev transfers the specified amount of dips from the from address to the staking wallet.
158
+ function collectDipAmount(address from, Amount dipAmount) external;
159
+
160
+ /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
161
+ function transferDipAmount(address to, Amount dipAmount) external;
162
+
163
+ //--- view and pure functions -------------------------------------------//
164
+
165
+ function getStakingStore() external view returns (StakingStore stakingStore);
166
+ function getStakingReader() external view returns (StakingReader reader);
167
+ }
@@ -0,0 +1,160 @@
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 {IService} from "../shared/IService.sol";
8
+ import {IStaking} from "./IStaking.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {ObjectType} from "../type/ObjectType.sol";
11
+ import {Seconds} from "../type/Seconds.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
13
+ import {TokenHandler} from "../shared/TokenHandler.sol";
14
+ import {UFixed} from "../type/UFixed.sol";
15
+
16
+
17
+ interface IStakingService is IService
18
+ {
19
+
20
+ event LogStakingServiceProtocolTargetRegistered(NftId protocolNftId);
21
+ event LogStakingServiceInstanceTargetRegistered(NftId instanceNftId, uint256 chainId);
22
+ event LogStakingServiceLockingPeriodSet(NftId targetNftId, Seconds oldLockingDuration, Seconds lockingDuration);
23
+ event LogStakingServiceRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
24
+
25
+ event LogStakingServiceRewardReservesIncreased(NftId targetNftId, address rewardProvider, Amount dipAmount, Amount newBalance);
26
+ event LogStakingServiceRewardReservesDecreased(NftId targetNftId, address targetOwner, Amount dipAmount, Amount newBalance);
27
+
28
+ event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
29
+ event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount, Amount stakeBalance);
30
+ event LogStakingServiceUnstaked(NftId stakeNftId, address stakeOwner, Amount totalAmount);
31
+
32
+ event LogStakingServiceRewardsUpdated(NftId stakeNftId);
33
+ event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
34
+
35
+ // modifiers
36
+ error ErrorStakingServiceNotNftOwner(NftId nftId, address expectedOwner, address owner);
37
+ error ErrorStakingServiceNotStaking(address stakingAddress);
38
+ error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
39
+
40
+ // create
41
+ error ErrorStakingServiceZeroTargetNftId();
42
+ error ErrorStakingServiceNotTargetNftId(NftId targetNftId);
43
+ error ErrorStakingServiceNotActiveTargetNftId(NftId targetNftId);
44
+ error ErrorStakingServiceDipBalanceInsufficient(NftId targetNftId, uint256 amount, uint256 balance);
45
+ error ErrorStakingServiceDipAllowanceInsufficient(NftId targetNftId, address tokenHandler, uint256 amount, uint256 allowance);
46
+
47
+ /// @dev Set the protocol reward rate stake locking period to the specified duration.
48
+ /// Permissioned: only staking owner
49
+ // TODO implement
50
+ // function setProtocolRewardRate(UFixed rewardRate) external;
51
+ // function setProtocolLockingPeriod(Seconds lockingPeriod) external;
52
+ // TODO also make sure that protocol rewards can be refilled and withdrawn
53
+
54
+ /// @dev creates/registers an on-chain instance staking target.
55
+ /// function granted to instance service
56
+ function createInstanceTarget(
57
+ NftId targetNftId,
58
+ Seconds initialLockingPeriod,
59
+ UFixed initialRewardRate
60
+ ) external;
61
+
62
+ /// @dev Set the instance stake locking period to the specified duration.
63
+ /// Permissioned: Only owner of the specified target.
64
+ function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod) external;
65
+
66
+ /// @dev Set the instance reward rate to the specified value.
67
+ /// Permissioned: Only owner of the specified target.
68
+ function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate) external;
69
+
70
+ /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the reward provider.
71
+ /// unpermissioned: anybody may fill up staking reward reserves
72
+ function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
73
+
74
+ /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the sender
75
+ /// unpermissioned: anybody may fill up staking reward reserves
76
+ function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
77
+
78
+ /// @dev Defunds the staking reward reserves for the specified target
79
+ /// Permissioned: only the target owner may call this function
80
+ function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount) external returns (Amount newBalance);
81
+
82
+ /// @dev create a new stake with amount DIP to the specified target
83
+ /// returns the id of the newly minted stake nft
84
+ /// permissionless function
85
+ function create(
86
+ NftId targetNftId,
87
+ Amount amount
88
+ )
89
+ external
90
+ returns (
91
+ NftId stakeNftId
92
+ );
93
+
94
+
95
+ /// @dev increase an existing stake by amount DIP
96
+ /// updates and restakes the staking reward amount
97
+ /// function restricted to the current stake owner
98
+ function stake(
99
+ NftId stakeNftId,
100
+ Amount amount
101
+ )
102
+ external;
103
+
104
+
105
+ /// @dev re-stakes the current staked DIP as well as all accumulated rewards to the new stake target.
106
+ /// all related stakes and all accumulated reward DIP are transferred to the current stake holder
107
+ /// function restricted to the current stake owner
108
+ function restakeToNewTarget(
109
+ NftId stakeNftId,
110
+ NftId newTargetNftId
111
+ )
112
+ external
113
+ returns (
114
+ NftId newStakeNftId
115
+ );
116
+
117
+
118
+ /// @dev updates the reward balance of the stake using the current reward rate.
119
+ function updateRewards(
120
+ NftId stakeNftId
121
+ )
122
+ external;
123
+
124
+
125
+ /// @dev claims all available rewards.
126
+ function claimRewards(
127
+ NftId stakeNftId
128
+ )
129
+ external;
130
+
131
+
132
+ /// @dev unstakes all dips (stakes and rewards) of an existing stake.
133
+ /// function restricted to the current stake owner
134
+ function unstake(
135
+ NftId stakeNftId
136
+ )
137
+ external;
138
+
139
+
140
+ /// @dev sets total value locked data for a target contract on a different chain.
141
+ /// this is done via CCIP (cross chain communication)
142
+ function setTotalValueLocked(
143
+ NftId targetNftId,
144
+ address token,
145
+ Amount amount
146
+ )
147
+ external;
148
+
149
+ function getDipToken()
150
+ external
151
+ returns (IERC20Metadata dip);
152
+
153
+ function getTokenHandler()
154
+ external
155
+ returns (TokenHandler tokenHandler);
156
+
157
+ function getStaking()
158
+ external
159
+ returns (IStaking staking);
160
+ }
@@ -0,0 +1,231 @@
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, AmountLib} from "../type/Amount.sol";
7
+ import {Component} from "../shared/Component.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {IRegistryService} from "../registry/IRegistryService.sol";
10
+ import {IStaking} from "./IStaking.sol";
11
+ import {Key32} from "../type/Key32.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {ObjectType, INSTANCE, PROTOCOL, TARGET} from "../type/ObjectType.sol";
14
+ import {Seconds, SecondsLib} from "../type/Seconds.sol";
15
+ import {StakingReader} from "./StakingReader.sol";
16
+ import {StakingStore} from "./StakingStore.sol";
17
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
18
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
+
20
+
21
+ library StakeManagerLib {
22
+
23
+ function stake(
24
+ IRegistry registry,
25
+ StakingReader stakingReader,
26
+ StakingStore stakingStore,
27
+ NftId stakeNftId,
28
+ Amount stakeAmount
29
+ )
30
+ external
31
+ returns (Amount stakeBalance)
32
+ {
33
+ // check that target is active for staking
34
+ (
35
+ UFixed rewardRate,
36
+ Seconds lockingPeriod
37
+ ) = checkStakeParameters(
38
+ stakingReader,
39
+ stakeNftId);
40
+
41
+ // calculate new rewards (if any)
42
+ (
43
+ Amount rewardIncrementAmount,
44
+ Amount currentTotalDipAmount
45
+ ) = calculateRewardIncrease(
46
+ stakingReader,
47
+ stakeNftId,
48
+ rewardRate);
49
+
50
+ stakeBalance = currentTotalDipAmount + stakeAmount;
51
+
52
+ // TODO check that additional dip, rewards and rewards increment
53
+ // are still ok with max target staking amount
54
+ NftId targetNftId = registry.getObjectInfo(stakeNftId).parentNftId;
55
+
56
+ stakingStore.restakeRewards(
57
+ stakeNftId,
58
+ targetNftId,
59
+ rewardIncrementAmount);
60
+
61
+ stakingStore.increaseStake(
62
+ stakeNftId,
63
+ targetNftId,
64
+ stakeAmount);
65
+
66
+ // update locked until with target locking period
67
+ stakingStore.update(
68
+ stakeNftId,
69
+ IStaking.StakeInfo({
70
+ lockedUntil: TimestampLib.blockTimestamp().addSeconds(
71
+ lockingPeriod)}));
72
+
73
+ }
74
+
75
+ function checkCreateParameters(
76
+ StakingReader stakingReader,
77
+ NftId targetNftId,
78
+ Amount dipAmount
79
+ )
80
+ external
81
+ view
82
+ returns (
83
+ Timestamp lockedUntil
84
+ )
85
+ {
86
+ Seconds lockingPeriod = checkTarget(stakingReader, targetNftId);
87
+ checkDipAmount(stakingReader, targetNftId, dipAmount);
88
+
89
+ Timestamp currentTime = TimestampLib.blockTimestamp();
90
+ lockedUntil = currentTime.addSeconds(lockingPeriod);
91
+ }
92
+
93
+
94
+ function checkStakeParameters(
95
+ StakingReader stakingReader,
96
+ NftId stakeNftId
97
+ )
98
+ public
99
+ view
100
+ returns (
101
+ UFixed rewardRate,
102
+ Seconds lockingPeriod
103
+ )
104
+ {
105
+ NftId targetNftId = stakingReader.getTargetNftId(stakeNftId);
106
+
107
+ // only accept stakes for active targets
108
+ if (!stakingReader.isActive(targetNftId)) {
109
+ revert IStaking.ErrorStakingTargetNotActive(targetNftId);
110
+ }
111
+
112
+ IStaking.TargetInfo memory info = stakingReader.getTargetInfo(targetNftId);
113
+ rewardRate = info.rewardRate;
114
+ lockingPeriod = info.lockingPeriod;
115
+ }
116
+
117
+
118
+ function checkTarget(
119
+ StakingReader stakingReader,
120
+ NftId targetNftId
121
+ )
122
+ public
123
+ view
124
+ returns (Seconds lockingPeriod)
125
+ {
126
+ // target nft id must be registered
127
+ if (!stakingReader.isTarget(targetNftId)) {
128
+ revert IStaking.ErrorStakingNotTarget(targetNftId);
129
+ }
130
+
131
+ // only accept stakes for active targets
132
+ if (!stakingReader.isActive(targetNftId)) {
133
+ revert IStaking.ErrorStakingTargetNotActive(targetNftId);
134
+ }
135
+
136
+ lockingPeriod = stakingReader.getTargetInfo(targetNftId).lockingPeriod;
137
+ }
138
+
139
+
140
+ function checkDipAmount(
141
+ StakingReader stakingReader,
142
+ NftId targetNftId,
143
+ Amount dipAmount
144
+ )
145
+ public
146
+ pure
147
+ {
148
+ // check stake amount > 0
149
+ if (dipAmount.eqz()) {
150
+ revert IStaking.ErrorStakingStakeAmountZero(targetNftId);
151
+ }
152
+
153
+ // TODO add check for target specific max dip amount (min stake + tvl * stake rate + buffer)
154
+ }
155
+
156
+
157
+ function checkDipBalanceAndAllowance(
158
+ IERC20Metadata dip,
159
+ address owner,
160
+ address tokenHandlerAddress,
161
+ Amount dipAmount
162
+ )
163
+ public
164
+ view
165
+ {
166
+ // check balance
167
+ uint256 amount = dipAmount.toInt();
168
+ uint256 dipBalance = dip.balanceOf(owner);
169
+ if (dipBalance < amount) {
170
+ revert IStaking.ErrorStakingDipBalanceInsufficient(owner, amount, dipBalance);
171
+ }
172
+
173
+ // check allowance
174
+ uint256 dipAllowance = dip.allowance(owner, tokenHandlerAddress);
175
+ if (dipAllowance < amount) {
176
+ revert IStaking.ErrorStakingDipAllowanceInsufficient(owner, tokenHandlerAddress, amount, dipAllowance);
177
+ }
178
+ }
179
+
180
+
181
+ function calculateRewardIncrease(
182
+ StakingReader stakingReader,
183
+ NftId stakeNftId,
184
+ UFixed rewardRate
185
+ )
186
+ public
187
+ view
188
+ returns (
189
+ Amount rewardIncreaseAmount,
190
+ Amount totalDipAmount
191
+ )
192
+ {
193
+ (
194
+ Amount stakeAmount,
195
+ Amount rewardAmount,
196
+ Timestamp lastUpdatedAt
197
+ ) = stakingReader.getStakeBalances(stakeNftId);
198
+
199
+ Seconds duration = SecondsLib.toSeconds(
200
+ block.timestamp - lastUpdatedAt.toInt());
201
+
202
+ rewardIncreaseAmount = calculateRewardAmount(
203
+ rewardRate,
204
+ duration,
205
+ stakeAmount);
206
+
207
+ totalDipAmount = stakeAmount + rewardAmount + rewardIncreaseAmount;
208
+ }
209
+
210
+
211
+ function calculateRewardAmount(
212
+ UFixed rewardRate,
213
+ Seconds duration,
214
+ Amount stakeAmount
215
+ )
216
+ public
217
+ pure
218
+ returns(
219
+ Amount rewardAmount
220
+ )
221
+ {
222
+ UFixed rewardRateFraction = getYearFraction(duration) * rewardRate;
223
+ rewardAmount = stakeAmount.multiplyWith(rewardRateFraction);
224
+ }
225
+
226
+
227
+ function getYearFraction(Seconds duration) public pure returns (UFixed yearFraction) {
228
+ return UFixedLib.toUFixed(duration.toInt()) / UFixedLib.toUFixed(SecondsLib.oneYear().toInt());
229
+ }
230
+
231
+ }