@etherisc/gif-next 0.0.2-c34d8ab-035 → 0.0.2-c38863c-705

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 (733) hide show
  1. package/README.md +149 -21
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1379 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1434 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +542 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +571 -523
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +350 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1322 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +589 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1016 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1509 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +864 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +915 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1008 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2032 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1479 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2432 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +648 -246
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +440 -161
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +409 -2981
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1929 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +661 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1715 -569
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +532 -262
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +389 -77
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3718 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +31 -8
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  102. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  103. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  106. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  107. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +569 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +774 -0
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +875 -0
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  125. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +589 -0
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1261 -0
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +800 -0
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  133. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +451 -322
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  135. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +907 -0
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1230 -0
  138. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  139. package/artifacts/contracts/pool/Pool.sol/Pool.json +1027 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  141. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1574 -0
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +808 -0
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +813 -0
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +728 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  151. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +589 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1496 -0
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +848 -0
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IApplicationService.sol/IApplicationService.json} +287 -251
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1064 -0
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +981 -0
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +602 -0
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1018 -0
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  169. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +178 -185
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1333 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +808 -0
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PricingService.sol/PricingService.json +930 -0
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +784 -0
  180. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  181. package/artifacts/contracts/product/Product.sol/Product.json +1119 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.json +659 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +732 -0
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  187. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +920 -154
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  191. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +381 -210
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  193. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  195. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  196. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  197. package/artifacts/contracts/registry/Registry.sol/Registry.json +1248 -258
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1928 -0
  200. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +345 -337
  202. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  203. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +350 -119
  204. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  205. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  206. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  208. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  209. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1333 -0
  210. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  212. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  213. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  214. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  215. package/artifacts/contracts/shared/Component.sol/Component.json +707 -0
  216. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  217. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1571 -0
  218. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
  220. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  221. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +188 -184
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  231. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → shared/IComponent.sol/IComponent.json} +353 -167
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  233. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1203 -0
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +709 -0
  236. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  243. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +143 -15
  246. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  247. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  248. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IService.sol/IService.json +137 -159
  250. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  251. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  252. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +797 -0
  254. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  255. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +159 -55
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Service.sol/Service.json +156 -171
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1447 -0
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1096 -0
  280. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  281. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  282. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  283. package/artifacts/contracts/staking/Staking.sol/Staking.json +1849 -0
  284. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +788 -0
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1301 -0
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +732 -0
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  296. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  298. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  299. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  300. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  302. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  304. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  306. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  308. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  310. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  312. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  313. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  314. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  316. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  317. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  318. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  320. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  322. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  324. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  326. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  328. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +433 -0
  330. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  332. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  334. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  336. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  338. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  340. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  342. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  344. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  346. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +113 -0
  348. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  349. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  350. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  352. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  354. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  356. package/contracts/accounting/AccountingService.sol +262 -0
  357. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  358. package/contracts/accounting/IAccountingService.sol +45 -0
  359. package/contracts/authorization/AccessAdmin.sol +689 -0
  360. package/contracts/authorization/AccessManagerCloneable.sol +149 -0
  361. package/contracts/authorization/Authorization.sol +337 -0
  362. package/contracts/authorization/IAccess.sol +49 -0
  363. package/contracts/authorization/IAccessAdmin.sol +143 -0
  364. package/contracts/authorization/IAuthorization.sol +74 -0
  365. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  366. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  367. package/contracts/distribution/BasicDistribution.sol +141 -0
  368. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  369. package/contracts/distribution/Distribution.sol +289 -0
  370. package/contracts/distribution/DistributionService.sol +358 -0
  371. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  372. package/contracts/distribution/IDistributionComponent.sol +52 -0
  373. package/contracts/distribution/IDistributionService.sol +101 -0
  374. package/contracts/examples/fire/DamageLevel.sol +59 -0
  375. package/contracts/examples/fire/FirePool.sol +90 -0
  376. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  377. package/contracts/examples/fire/FireProduct.sol +437 -0
  378. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  379. package/contracts/examples/fire/FireUSD.sol +26 -0
  380. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  381. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  382. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  383. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  384. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  385. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  386. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  387. package/contracts/instance/BundleSet.sol +130 -0
  388. package/contracts/instance/IInstance.sol +59 -17
  389. package/contracts/instance/IInstanceService.sol +59 -17
  390. package/contracts/instance/Instance.sol +172 -367
  391. package/contracts/instance/InstanceAdmin.sol +437 -0
  392. package/contracts/instance/InstanceAuthorizationV3.sol +213 -0
  393. package/contracts/instance/InstanceReader.sol +417 -70
  394. package/contracts/instance/InstanceService.sol +352 -86
  395. package/contracts/instance/InstanceServiceManager.sol +14 -31
  396. package/contracts/instance/InstanceStore.sol +298 -0
  397. package/contracts/instance/RiskSet.sol +118 -0
  398. package/contracts/instance/base/BalanceStore.sol +123 -0
  399. package/contracts/instance/base/Cloneable.sol +28 -0
  400. package/contracts/instance/base/ObjectCounter.sol +20 -0
  401. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  402. package/contracts/instance/base/ObjectSet.sol +77 -0
  403. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  404. package/contracts/instance/module/IBundle.sol +8 -7
  405. package/contracts/instance/module/IComponents.sol +51 -0
  406. package/contracts/instance/module/IDistribution.sol +8 -5
  407. package/contracts/instance/module/IPolicy.sol +59 -19
  408. package/contracts/instance/module/IRisk.sol +4 -1
  409. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  410. package/contracts/oracle/BasicOracle.sol +47 -0
  411. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  412. package/contracts/oracle/IOracle.sol +36 -0
  413. package/contracts/oracle/IOracleComponent.sol +33 -0
  414. package/contracts/oracle/IOracleService.sol +66 -0
  415. package/contracts/oracle/Oracle.sol +156 -0
  416. package/contracts/oracle/OracleService.sol +310 -0
  417. package/contracts/oracle/OracleServiceManager.sol +39 -0
  418. package/contracts/pool/BasicPool.sol +175 -0
  419. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  420. package/contracts/pool/BundleService.sol +395 -0
  421. package/contracts/pool/BundleServiceManager.sol +39 -0
  422. package/contracts/pool/IBundleService.sol +115 -0
  423. package/contracts/pool/IPoolComponent.sol +62 -0
  424. package/contracts/pool/IPoolService.sol +165 -0
  425. package/contracts/pool/Pool.sol +345 -0
  426. package/contracts/pool/PoolLib.sol +216 -0
  427. package/contracts/pool/PoolService.sol +757 -0
  428. package/contracts/pool/PoolServiceManager.sol +39 -0
  429. package/contracts/product/ApplicationService.sol +259 -0
  430. package/contracts/product/ApplicationServiceManager.sol +38 -0
  431. package/contracts/product/BasicProduct.sol +51 -0
  432. package/contracts/product/BasicProductAuthorization.sol +56 -0
  433. package/contracts/product/ClaimService.sol +632 -0
  434. package/contracts/product/ClaimServiceManager.sol +38 -0
  435. package/contracts/product/IApplicationService.sol +66 -0
  436. package/contracts/product/IClaimService.sol +135 -0
  437. package/contracts/product/IPolicyService.sol +95 -0
  438. package/contracts/product/IPricingService.sol +39 -0
  439. package/contracts/product/IProductComponent.sol +62 -0
  440. package/contracts/product/IRiskService.sol +30 -0
  441. package/contracts/product/PolicyService.sol +682 -0
  442. package/contracts/product/PolicyServiceLib.sol +65 -0
  443. package/contracts/product/PolicyServiceManager.sol +39 -0
  444. package/contracts/product/PricingService.sol +304 -0
  445. package/contracts/product/PricingServiceManager.sol +39 -0
  446. package/contracts/product/Product.sol +469 -0
  447. package/contracts/product/RiskService.sol +144 -0
  448. package/contracts/product/RiskServiceManager.sol +39 -0
  449. package/contracts/registry/ChainNft.sol +82 -35
  450. package/contracts/registry/IRegistry.sol +128 -20
  451. package/contracts/registry/IRegistryService.sol +44 -17
  452. package/contracts/registry/IRelease.sol +26 -0
  453. package/contracts/registry/ITransferInterceptor.sol +1 -1
  454. package/contracts/registry/Registry.sol +574 -267
  455. package/contracts/registry/RegistryAdmin.sol +354 -0
  456. package/contracts/registry/RegistryService.sol +123 -326
  457. package/contracts/registry/RegistryServiceManager.sol +27 -38
  458. package/contracts/registry/ReleaseAdmin.sol +245 -0
  459. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  460. package/contracts/registry/ReleaseRegistry.sol +511 -0
  461. package/contracts/registry/ServiceAuthorizationV3.sol +247 -0
  462. package/contracts/registry/TokenRegistry.sol +313 -0
  463. package/contracts/shared/Component.sol +227 -0
  464. package/contracts/shared/ComponentService.sol +692 -0
  465. package/contracts/shared/ComponentServiceManager.sol +38 -0
  466. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  467. package/contracts/shared/ContractLib.sol +253 -0
  468. package/contracts/shared/IComponent.sol +61 -0
  469. package/contracts/shared/IComponentService.sol +112 -0
  470. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  471. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  472. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  473. package/contracts/shared/INftOwnable.sol +15 -12
  474. package/contracts/shared/IPolicyHolder.sol +35 -0
  475. package/contracts/shared/IRegisterable.sol +25 -5
  476. package/contracts/shared/IRegistryLinked.sol +11 -0
  477. package/contracts/shared/IService.sol +13 -5
  478. package/contracts/shared/InitializableERC165.sol +27 -0
  479. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  480. package/contracts/shared/KeyValueStore.sol +131 -0
  481. package/contracts/shared/Lifecycle.sol +88 -0
  482. package/contracts/shared/NftIdSet.sol +65 -0
  483. package/contracts/shared/NftOwnable.sol +75 -84
  484. package/contracts/shared/PolicyHolder.sol +62 -0
  485. package/contracts/shared/Registerable.sol +57 -37
  486. package/contracts/shared/RegistryLinked.sol +38 -0
  487. package/contracts/shared/Service.sol +44 -33
  488. package/contracts/shared/TokenHandler.sol +326 -12
  489. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  490. package/contracts/staking/IStaking.sol +165 -0
  491. package/contracts/staking/IStakingService.sol +165 -0
  492. package/contracts/staking/StakeManagerLib.sol +224 -0
  493. package/contracts/staking/Staking.sol +526 -0
  494. package/contracts/staking/StakingLifecycle.sol +23 -0
  495. package/contracts/staking/StakingManager.sol +52 -0
  496. package/contracts/staking/StakingReader.sol +190 -0
  497. package/contracts/staking/StakingService.sol +430 -0
  498. package/contracts/staking/StakingServiceManager.sol +45 -0
  499. package/contracts/staking/StakingStore.sol +605 -0
  500. package/contracts/staking/TargetManagerLib.sol +211 -0
  501. package/contracts/{types → type}/AddressSet.sol +1 -1
  502. package/contracts/type/Amount.sol +150 -0
  503. package/contracts/{types → type}/Blocknumber.sol +27 -3
  504. package/contracts/type/ClaimId.sol +80 -0
  505. package/contracts/{types → type}/DistributorType.sol +2 -2
  506. package/contracts/{types → type}/Fee.sol +33 -23
  507. package/contracts/{types → type}/Key32.sol +2 -2
  508. package/contracts/type/Key32Set.sol +62 -0
  509. package/contracts/{types → type}/NftId.sol +28 -15
  510. package/contracts/type/NftIdSet.sol +62 -0
  511. package/contracts/type/ObjectType.sol +303 -0
  512. package/contracts/type/PayoutId.sol +82 -0
  513. package/contracts/{types → type}/Referral.sol +6 -1
  514. package/contracts/type/RequestId.sol +75 -0
  515. package/contracts/type/RiskId.sol +75 -0
  516. package/contracts/type/RoleId.sol +182 -0
  517. package/contracts/type/Seconds.sol +101 -0
  518. package/contracts/type/Selector.sol +107 -0
  519. package/contracts/{types → type}/StateId.sol +52 -4
  520. package/contracts/type/String.sol +53 -0
  521. package/contracts/{types → type}/Timestamp.sol +33 -19
  522. package/contracts/{types → type}/UFixed.sol +41 -121
  523. package/contracts/{types → type}/Version.sol +22 -6
  524. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  525. package/contracts/upgradeability/ProxyManager.sol +232 -0
  526. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  527. package/contracts/upgradeability/Versionable.sol +59 -0
  528. package/package.json +11 -7
  529. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  530. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -314
  531. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  532. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -610
  533. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  534. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
  535. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  536. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  537. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  538. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  539. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  540. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  541. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  542. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -774
  543. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  544. package/artifacts/contracts/components/Product.sol/Product.json +0 -754
  545. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  546. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  547. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  548. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  549. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  550. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  551. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  552. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  553. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  554. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  555. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  557. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  558. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  559. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  560. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  561. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  562. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  563. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  564. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  565. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  566. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  568. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  570. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  572. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  574. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  575. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  576. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  577. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  578. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  579. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  580. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  581. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  582. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  583. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  584. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  585. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  586. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  587. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  588. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  589. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -930
  590. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  591. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  592. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  593. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  594. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  595. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  596. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  597. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  598. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  599. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  600. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -211
  601. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  602. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  603. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  604. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  605. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  606. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  607. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  608. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  609. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  610. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  611. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  612. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  613. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  614. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  615. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  616. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  617. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  618. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  619. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  620. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  621. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  622. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  623. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  624. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  625. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  626. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  627. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  628. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  629. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  630. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  631. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  632. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  633. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  634. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  635. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  636. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  637. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  638. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  639. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  640. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  641. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  642. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  643. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  644. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  645. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  646. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  647. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  648. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  649. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  650. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  651. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  652. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  653. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  654. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  655. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  656. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  657. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  658. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  659. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  660. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  661. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  662. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  663. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  665. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  666. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  667. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  668. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  669. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  670. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  671. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  672. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  673. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  674. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  675. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  676. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  677. package/contracts/components/BaseComponent.sol +0 -86
  678. package/contracts/components/Distribution.sol +0 -166
  679. package/contracts/components/IBaseComponent.sol +0 -24
  680. package/contracts/components/IDistributionComponent.sol +0 -43
  681. package/contracts/components/IPoolComponent.sol +0 -62
  682. package/contracts/components/IProductComponent.sol +0 -35
  683. package/contracts/components/Pool.sol +0 -259
  684. package/contracts/components/Product.sol +0 -297
  685. package/contracts/experiment/cloning/Cloner.sol +0 -47
  686. package/contracts/experiment/errors/Require.sol +0 -38
  687. package/contracts/experiment/errors/Revert.sol +0 -44
  688. package/contracts/experiment/inheritance/A.sol +0 -53
  689. package/contracts/experiment/inheritance/B.sol +0 -28
  690. package/contracts/experiment/inheritance/C.sol +0 -34
  691. package/contracts/experiment/inheritance/IA.sol +0 -13
  692. package/contracts/experiment/inheritance/IB.sol +0 -10
  693. package/contracts/experiment/inheritance/IC.sol +0 -12
  694. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  695. package/contracts/experiment/statemachine/ISM.sol +0 -25
  696. package/contracts/experiment/statemachine/SM.sol +0 -57
  697. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  698. package/contracts/experiment/types/TypeA.sol +0 -47
  699. package/contracts/experiment/types/TypeB.sol +0 -29
  700. package/contracts/instance/AccessManagedSimple.sol +0 -122
  701. package/contracts/instance/AccessManagerSimple.sol +0 -692
  702. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  703. package/contracts/instance/InstanceAccessManager.sol +0 -288
  704. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  705. package/contracts/instance/base/IInstanceBase.sol +0 -23
  706. package/contracts/instance/base/KeyValueStore.sol +0 -172
  707. package/contracts/instance/base/Lifecycle.sol +0 -100
  708. package/contracts/instance/module/IAccess.sol +0 -38
  709. package/contracts/instance/module/ISetup.sol +0 -43
  710. package/contracts/instance/module/ITreasury.sol +0 -23
  711. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  712. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  713. package/contracts/instance/service/IDistributionService.sol +0 -12
  714. package/contracts/instance/service/IPoolService.sol +0 -37
  715. package/contracts/instance/service/IProductService.sol +0 -107
  716. package/contracts/shared/ContractDeployerLib.sol +0 -72
  717. package/contracts/shared/ERC165.sol +0 -21
  718. package/contracts/shared/ProxyManager.sol +0 -94
  719. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  720. package/contracts/shared/Versionable.sol +0 -147
  721. package/contracts/test/TestFee.sol +0 -25
  722. package/contracts/test/TestRegisterable.sol +0 -18
  723. package/contracts/test/TestRoleId.sol +0 -14
  724. package/contracts/test/TestService.sol +0 -24
  725. package/contracts/test/TestToken.sol +0 -26
  726. package/contracts/test/TestVersion.sol +0 -44
  727. package/contracts/test/TestVersionable.sol +0 -17
  728. package/contracts/types/ChainId.sol +0 -38
  729. package/contracts/types/NftIdSet.sol +0 -60
  730. package/contracts/types/NumberId.sol +0 -52
  731. package/contracts/types/ObjectType.sol +0 -152
  732. package/contracts/types/RiskId.sol +0 -43
  733. package/contracts/types/RoleId.sol +0 -82
@@ -0,0 +1,165 @@
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 {Seconds} from "../type/Seconds.sol";
11
+ import {TokenHandler} from "../shared/TokenHandler.sol";
12
+ import {UFixed} from "../type/UFixed.sol";
13
+
14
+
15
+ interface IStakingService is IService
16
+ {
17
+
18
+ event LogStakingServiceProtocolTargetRegistered(NftId protocolNftId);
19
+ event LogStakingServiceInstanceTargetRegistered(NftId instanceNftId, uint256 chainId);
20
+ event LogStakingServiceLockingPeriodSet(NftId targetNftId, Seconds oldLockingDuration, Seconds lockingDuration);
21
+ event LogStakingServiceRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
22
+
23
+ event LogStakingServiceRewardReservesIncreased(NftId targetNftId, address rewardProvider, Amount dipAmount, Amount newBalance);
24
+ event LogStakingServiceRewardReservesDecreased(NftId targetNftId, address targetOwner, Amount dipAmount, Amount newBalance);
25
+
26
+ event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
27
+ event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount, Amount stakeBalance);
28
+ event LogStakingServiceUnstaked(NftId stakeNftId, address stakeOwner, Amount totalAmount);
29
+
30
+ event LogStakingServiceRewardsUpdated(NftId stakeNftId);
31
+ event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
32
+
33
+ // modifiers
34
+ error ErrorStakingServiceNotStakingOwner(address account);
35
+ error ErrorStakingServiceNotStaking(address stakingAddress);
36
+ error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
37
+
38
+ // create
39
+ error ErrorStakingServiceZeroTargetNftId();
40
+ error ErrorStakingServiceNotTargetNftId(NftId targetNftId);
41
+ error ErrorStakingServiceNotActiveTargetNftId(NftId targetNftId);
42
+ error ErrorStakingServiceDipBalanceInsufficient(NftId targetNftId, uint256 amount, uint256 balance);
43
+ error ErrorStakingServiceDipAllowanceInsufficient(NftId targetNftId, address tokenHandler, uint256 amount, uint256 allowance);
44
+
45
+ /// @dev Set the protocol reward rate stake locking period to the specified duration.
46
+ /// Permissioned: only staking owner
47
+ // TODO implement
48
+ // function setProtocolRewardRate(UFixed rewardRate) external;
49
+ // function setProtocolLockingPeriod(Seconds lockingPeriod) external;
50
+ // TODO also make sure that protocol rewards can be refilled and withdrawn
51
+
52
+ /// @dev Approves the staking token handler.
53
+ /// Reverts if the staking token handler wallet is not the token handler itself.
54
+ function approveTokenHandler(
55
+ IERC20Metadata token,
56
+ Amount amount
57
+ ) external;
58
+
59
+ /// @dev creates/registers an on-chain instance staking target.
60
+ /// function granted to instance service
61
+ function createInstanceTarget(
62
+ NftId targetNftId,
63
+ Seconds initialLockingPeriod,
64
+ UFixed initialRewardRate
65
+ ) external;
66
+
67
+ /// @dev Set the instance stake locking period to the specified duration.
68
+ /// Permissioned: Only owner of the specified target.
69
+ function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod) external;
70
+
71
+ /// @dev Set the instance reward rate to the specified value.
72
+ /// Permissioned: Only owner of the specified target.
73
+ function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate) external;
74
+
75
+ /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the reward provider.
76
+ /// unpermissioned: anybody may fill up staking reward reserves
77
+ function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
78
+
79
+ /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the sender
80
+ /// unpermissioned: anybody may fill up staking reward reserves
81
+ function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
82
+
83
+ /// @dev Defunds the staking reward reserves for the specified target
84
+ /// Permissioned: only the target owner may call this function
85
+ function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount) external returns (Amount newBalance);
86
+
87
+ /// @dev create a new stake with amount DIP to the specified target
88
+ /// returns the id of the newly minted stake nft
89
+ /// permissionless function
90
+ function create(
91
+ NftId targetNftId,
92
+ Amount amount
93
+ )
94
+ external
95
+ returns (
96
+ NftId stakeNftId
97
+ );
98
+
99
+
100
+ /// @dev increase an existing stake by amount DIP
101
+ /// updates and restakes the staking reward amount
102
+ /// function restricted to the current stake owner
103
+ function stake(
104
+ NftId stakeNftId,
105
+ Amount amount
106
+ )
107
+ external;
108
+
109
+
110
+ /// @dev re-stakes the current staked DIP as well as all accumulated rewards to the new stake target.
111
+ /// all related stakes and all accumulated reward DIP are transferred to the current stake holder
112
+ /// function restricted to the current stake owner
113
+ function restakeToNewTarget(
114
+ NftId stakeNftId,
115
+ NftId newTargetNftId
116
+ )
117
+ external
118
+ returns (
119
+ NftId newStakeNftId
120
+ );
121
+
122
+
123
+ /// @dev updates the reward balance of the stake using the current reward rate.
124
+ function updateRewards(
125
+ NftId stakeNftId
126
+ )
127
+ external;
128
+
129
+
130
+ /// @dev claims all available rewards.
131
+ function claimRewards(
132
+ NftId stakeNftId
133
+ )
134
+ external;
135
+
136
+
137
+ /// @dev unstakes all dips (stakes and rewards) of an existing stake.
138
+ /// function restricted to the current stake owner
139
+ function unstake(
140
+ NftId stakeNftId
141
+ )
142
+ external;
143
+
144
+
145
+ /// @dev sets total value locked data for a target contract on a different chain.
146
+ /// this is done via CCIP (cross chain communication)
147
+ function setTotalValueLocked(
148
+ NftId targetNftId,
149
+ address token,
150
+ Amount amount
151
+ )
152
+ external;
153
+
154
+ function getDipToken()
155
+ external
156
+ returns (IERC20Metadata dip);
157
+
158
+ function getTokenHandler()
159
+ external
160
+ returns (TokenHandler tokenHandler);
161
+
162
+ function getStaking()
163
+ external
164
+ returns (IStaking staking);
165
+ }
@@ -0,0 +1,224 @@
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.getParentNftId(stakeNftId);
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
+ function checkUnstakeParameters(
118
+ StakingReader stakingReader,
119
+ NftId stakeNftId
120
+ )
121
+ public
122
+ view
123
+ returns (
124
+ UFixed rewardRate,
125
+ Seconds lockingPeriod
126
+ )
127
+ {
128
+ IStaking.StakeInfo memory stakeInfo = stakingReader.getStakeInfo(stakeNftId);
129
+
130
+ if (stakeInfo.lockedUntil > TimestampLib.blockTimestamp()) {
131
+ revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
132
+ }
133
+ }
134
+
135
+
136
+ function checkTarget(
137
+ StakingReader stakingReader,
138
+ NftId targetNftId
139
+ )
140
+ public
141
+ view
142
+ returns (Seconds lockingPeriod)
143
+ {
144
+ // target nft id must be registered
145
+ if (!stakingReader.isTarget(targetNftId)) {
146
+ revert IStaking.ErrorStakingNotTarget(targetNftId);
147
+ }
148
+
149
+ // only accept stakes for active targets
150
+ if (!stakingReader.isActive(targetNftId)) {
151
+ revert IStaking.ErrorStakingTargetNotActive(targetNftId);
152
+ }
153
+
154
+ lockingPeriod = stakingReader.getTargetInfo(targetNftId).lockingPeriod;
155
+ }
156
+
157
+
158
+ function checkDipAmount(
159
+ StakingReader stakingReader,
160
+ NftId targetNftId,
161
+ Amount dipAmount
162
+ )
163
+ public
164
+ pure
165
+ {
166
+ // check stake amount > 0
167
+ if (dipAmount.eqz()) {
168
+ revert IStaking.ErrorStakingStakeAmountZero(targetNftId);
169
+ }
170
+
171
+ // TODO add check for target specific max dip amount (min stake + tvl * stake rate + buffer)
172
+ }
173
+
174
+ function calculateRewardIncrease(
175
+ StakingReader stakingReader,
176
+ NftId stakeNftId,
177
+ UFixed rewardRate
178
+ )
179
+ public
180
+ view
181
+ returns (
182
+ Amount rewardIncreaseAmount,
183
+ Amount totalDipAmount
184
+ )
185
+ {
186
+ (
187
+ Amount stakeAmount,
188
+ Amount rewardAmount,
189
+ Timestamp lastUpdatedAt
190
+ ) = stakingReader.getStakeBalances(stakeNftId);
191
+
192
+ Seconds duration = SecondsLib.toSeconds(
193
+ block.timestamp - lastUpdatedAt.toInt());
194
+
195
+ rewardIncreaseAmount = calculateRewardAmount(
196
+ rewardRate,
197
+ duration,
198
+ stakeAmount);
199
+
200
+ totalDipAmount = stakeAmount + rewardAmount + rewardIncreaseAmount;
201
+ }
202
+
203
+
204
+ function calculateRewardAmount(
205
+ UFixed rewardRate,
206
+ Seconds duration,
207
+ Amount stakeAmount
208
+ )
209
+ public
210
+ pure
211
+ returns(
212
+ Amount rewardAmount
213
+ )
214
+ {
215
+ UFixed rewardRateFraction = getYearFraction(duration) * rewardRate;
216
+ rewardAmount = stakeAmount.multiplyWith(rewardRateFraction);
217
+ }
218
+
219
+
220
+ function getYearFraction(Seconds duration) public pure returns (UFixed yearFraction) {
221
+ return UFixedLib.toUFixed(duration.toInt()) / UFixedLib.toUFixed(SecondsLib.oneYear().toInt());
222
+ }
223
+
224
+ }