@etherisc/gif-next 0.0.2-da77c50-824 → 0.0.2-da87b00-860

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 (768) hide show
  1. package/README.md +376 -27
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +949 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +930 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +848 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1284 -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 +1484 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -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 +1439 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -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 +616 -1486
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +1082 -0
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +694 -1670
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2646 -0
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1328 -0
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +772 -0
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3792 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -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/base/Cloneable.sol/Cloneable.json +137 -0
  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 +4 -0
  101. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  102. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  105. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  106. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  107. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  108. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/{pool/IPoolModule.sol/IPool.json → IRisk.sol/IRisk.json} +2 -2
  110. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  111. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  112. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  114. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  116. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  118. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  120. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  122. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
  124. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  126. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  128. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  130. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  132. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  134. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  136. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  138. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +905 -0
  140. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  142. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  143. package/artifacts/contracts/pool/Pool.sol/Pool.json +1025 -0
  144. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  146. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  148. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  150. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  152. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  154. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  156. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  158. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  160. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  162. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +804 -0
  164. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  166. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  168. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  169. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +652 -0
  170. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  171. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1016 -0
  172. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  173. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +665 -0
  174. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  176. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  178. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  180. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  181. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  182. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  184. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  185. package/artifacts/contracts/product/Product.sol/Product.json +1117 -0
  186. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  187. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  188. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  190. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +242 -12
  192. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1035 -119
  194. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  195. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1072 -0
  196. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  197. package/artifacts/contracts/{instance/IInstanceLinked.sol/IInstanceLinked.json → registry/IRelease.sol/IRelease.json} +6 -6
  198. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  199. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  200. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/Registry.sol/Registry.json +1473 -231
  202. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  204. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  206. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  207. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1298 -0
  208. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  209. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +773 -0
  210. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  212. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  214. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  216. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  217. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  218. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  219. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +721 -0
  220. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  221. package/artifacts/contracts/shared/Component.sol/Component.json +705 -0
  222. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  224. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/{IOwnable.sol/IOwnable.json → ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  230. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  234. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +630 -0
  236. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  238. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +707 -0
  240. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  241. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +510 -0
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/{instance/module/lifecycle → shared}/ILifecycle.sol/ILifecycle.json +65 -53
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  245. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +62 -70
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  247. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +248 -21
  250. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  251. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  252. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  253. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +224 -160
  254. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  255. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  256. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  257. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +795 -0
  258. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  259. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  260. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  261. package/artifacts/contracts/{instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.json → shared/Lifecycle.sol/Lifecycle.json} +50 -58
  262. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  263. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  264. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  265. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +228 -0
  266. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  267. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  268. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +294 -18
  270. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  271. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  272. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  273. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → shared/Service.sol/Service.json} +239 -234
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  276. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  278. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  279. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  280. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  281. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2757 -0
  282. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  283. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  284. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  285. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  286. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  287. package/artifacts/contracts/staking/Staking.sol/Staking.json +3201 -0
  288. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  290. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +855 -0
  292. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  294. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  296. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  298. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  299. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3065 -0
  300. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  301. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  302. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  303. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  304. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  305. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  306. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  308. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  310. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  312. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  314. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  316. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  318. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  319. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  320. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  321. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  322. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  324. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  325. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  326. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  328. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  330. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  332. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  334. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  336. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  338. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +289 -0
  340. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  342. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  344. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  346. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  348. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  350. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  352. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  354. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  355. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  356. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  358. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  360. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  361. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  362. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  363. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  364. package/contracts/accounting/AccountingService.sol +274 -0
  365. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  366. package/contracts/accounting/IAccountingService.sol +47 -0
  367. package/contracts/authorization/AccessAdmin.sol +780 -0
  368. package/contracts/authorization/AccessAdminLib.sol +396 -0
  369. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  370. package/contracts/authorization/Authorization.sol +169 -0
  371. package/contracts/authorization/IAccess.sol +67 -0
  372. package/contracts/authorization/IAccessAdmin.sol +144 -0
  373. package/contracts/authorization/IAuthorization.sol +26 -0
  374. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  375. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  376. package/contracts/distribution/BasicDistribution.sol +141 -0
  377. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  378. package/contracts/distribution/Distribution.sol +247 -0
  379. package/contracts/distribution/DistributionService.sol +448 -0
  380. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  381. package/contracts/distribution/IDistributionComponent.sol +45 -0
  382. package/contracts/distribution/IDistributionService.sol +115 -0
  383. package/contracts/examples/fire/DamageLevel.sol +59 -0
  384. package/contracts/examples/fire/FirePool.sol +86 -0
  385. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  386. package/contracts/examples/fire/FireProduct.sol +433 -0
  387. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  388. package/contracts/examples/fire/FireUSD.sol +26 -0
  389. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  390. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  391. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  392. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  393. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  394. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  395. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  396. package/contracts/instance/BundleSet.sol +130 -0
  397. package/contracts/instance/IInstance.sol +138 -43
  398. package/contracts/instance/IInstanceService.sol +117 -0
  399. package/contracts/instance/Instance.sol +333 -48
  400. package/contracts/instance/InstanceAdmin.sol +383 -0
  401. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  402. package/contracts/instance/InstanceReader.sol +632 -0
  403. package/contracts/instance/InstanceService.sol +500 -0
  404. package/contracts/instance/InstanceServiceManager.sol +39 -0
  405. package/contracts/instance/InstanceStore.sol +298 -0
  406. package/contracts/instance/RiskSet.sol +126 -0
  407. package/contracts/instance/base/BalanceStore.sol +121 -0
  408. package/contracts/instance/base/Cloneable.sol +28 -0
  409. package/contracts/instance/base/ObjectCounter.sol +20 -0
  410. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  411. package/contracts/instance/base/ObjectSet.sol +77 -0
  412. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  413. package/contracts/instance/module/IBundle.sol +21 -0
  414. package/contracts/instance/module/IComponents.sol +62 -0
  415. package/contracts/instance/module/IDistribution.sol +54 -0
  416. package/contracts/instance/module/IPolicy.sol +105 -0
  417. package/contracts/instance/module/IRisk.sol +16 -0
  418. package/contracts/{test/TestToken.sol → mock/Dip.sol} +6 -6
  419. package/contracts/oracle/BasicOracle.sol +45 -0
  420. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  421. package/contracts/oracle/IOracle.sol +41 -0
  422. package/contracts/oracle/IOracleComponent.sol +33 -0
  423. package/contracts/oracle/IOracleService.sol +66 -0
  424. package/contracts/oracle/Oracle.sol +154 -0
  425. package/contracts/oracle/OracleService.sol +310 -0
  426. package/contracts/oracle/OracleServiceManager.sol +39 -0
  427. package/contracts/pool/BasicPool.sol +162 -0
  428. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  429. package/contracts/pool/BundleService.sol +386 -0
  430. package/contracts/pool/BundleServiceManager.sol +39 -0
  431. package/contracts/pool/IBundleService.sol +116 -0
  432. package/contracts/pool/IPoolComponent.sol +62 -0
  433. package/contracts/pool/IPoolService.sol +170 -0
  434. package/contracts/pool/Pool.sol +333 -0
  435. package/contracts/pool/PoolLib.sol +341 -0
  436. package/contracts/pool/PoolService.sol +614 -0
  437. package/contracts/pool/PoolServiceManager.sol +39 -0
  438. package/contracts/product/ApplicationService.sol +327 -0
  439. package/contracts/product/ApplicationServiceManager.sol +38 -0
  440. package/contracts/product/BasicProduct.sol +49 -0
  441. package/contracts/product/BasicProductAuthorization.sol +63 -0
  442. package/contracts/product/ClaimService.sol +630 -0
  443. package/contracts/product/ClaimServiceManager.sol +38 -0
  444. package/contracts/product/IApplicationService.sol +88 -0
  445. package/contracts/product/IClaimService.sol +136 -0
  446. package/contracts/product/IPolicyService.sol +102 -0
  447. package/contracts/product/IPricingService.sol +40 -0
  448. package/contracts/product/IProductComponent.sol +62 -0
  449. package/contracts/product/IRiskService.sol +48 -0
  450. package/contracts/product/PolicyService.sol +645 -0
  451. package/contracts/product/PolicyServiceLib.sol +139 -0
  452. package/contracts/product/PolicyServiceManager.sol +39 -0
  453. package/contracts/product/PricingService.sol +306 -0
  454. package/contracts/product/PricingServiceManager.sol +39 -0
  455. package/contracts/product/Product.sol +493 -0
  456. package/contracts/product/RiskService.sol +190 -0
  457. package/contracts/product/RiskServiceManager.sol +39 -0
  458. package/contracts/registry/ChainNft.sol +130 -40
  459. package/contracts/registry/IRegistry.sol +144 -29
  460. package/contracts/registry/IRegistryService.sol +62 -0
  461. package/contracts/registry/IRelease.sol +29 -0
  462. package/contracts/registry/ITransferInterceptor.sol +6 -0
  463. package/contracts/registry/Registry.sol +637 -282
  464. package/contracts/registry/RegistryAdmin.sol +191 -0
  465. package/contracts/registry/RegistryAuthorization.sol +336 -0
  466. package/contracts/registry/RegistryService.sol +241 -0
  467. package/contracts/registry/RegistryServiceManager.sol +53 -0
  468. package/contracts/registry/ReleaseAdmin.sol +195 -0
  469. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  470. package/contracts/registry/ReleaseRegistry.sol +525 -0
  471. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  472. package/contracts/registry/TokenRegistry.sol +317 -0
  473. package/contracts/shared/Component.sol +214 -0
  474. package/contracts/shared/ComponentService.sol +687 -0
  475. package/contracts/shared/ComponentServiceManager.sol +38 -0
  476. package/contracts/shared/ContractLib.sol +312 -0
  477. package/contracts/shared/IComponent.sol +58 -0
  478. package/contracts/shared/IComponentService.sol +111 -0
  479. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  480. package/contracts/shared/IKeyValueStore.sol +54 -0
  481. package/contracts/shared/ILifecycle.sol +31 -0
  482. package/contracts/shared/INftOwnable.sol +27 -0
  483. package/contracts/shared/IPolicyHolder.sol +35 -0
  484. package/contracts/shared/IRegisterable.sol +31 -19
  485. package/contracts/shared/IRegistryLinked.sol +11 -0
  486. package/contracts/shared/IService.sol +23 -0
  487. package/contracts/shared/InitializableERC165.sol +35 -0
  488. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  489. package/contracts/shared/KeyValueStore.sol +131 -0
  490. package/contracts/shared/Lifecycle.sol +88 -0
  491. package/contracts/shared/NftIdSet.sol +65 -0
  492. package/contracts/shared/NftOwnable.sol +129 -0
  493. package/contracts/shared/PolicyHolder.sol +63 -0
  494. package/contracts/shared/Registerable.sol +80 -60
  495. package/contracts/shared/RegistryLinked.sol +38 -0
  496. package/contracts/shared/Service.sol +67 -0
  497. package/contracts/shared/TokenHandler.sol +342 -0
  498. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  499. package/contracts/staking/IStaking.sol +367 -0
  500. package/contracts/staking/IStakingService.sol +127 -0
  501. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  502. package/contracts/staking/Staking.sol +797 -0
  503. package/contracts/staking/StakingLib.sol +195 -0
  504. package/contracts/staking/StakingManager.sol +53 -0
  505. package/contracts/staking/StakingReader.sol +171 -0
  506. package/contracts/staking/StakingService.sol +321 -0
  507. package/contracts/staking/StakingServiceManager.sol +46 -0
  508. package/contracts/staking/StakingStore.sol +1364 -0
  509. package/contracts/staking/TargetHandler.sol +132 -0
  510. package/contracts/staking/TargetManagerLib.sol +234 -0
  511. package/contracts/{types → type}/AddressSet.sol +1 -1
  512. package/contracts/type/Amount.sol +154 -0
  513. package/contracts/{types → type}/Blocknumber.sol +36 -12
  514. package/contracts/type/ChainId.sol +101 -0
  515. package/contracts/type/ClaimId.sol +80 -0
  516. package/contracts/type/DistributorType.sol +55 -0
  517. package/contracts/type/Fee.sol +66 -0
  518. package/contracts/type/Key32.sol +50 -0
  519. package/contracts/type/Key32Set.sol +62 -0
  520. package/contracts/type/NftId.sol +85 -0
  521. package/contracts/type/NftIdSet.sol +62 -0
  522. package/contracts/type/ObjectType.sol +307 -0
  523. package/contracts/type/PayoutId.sol +82 -0
  524. package/contracts/type/Referral.sol +90 -0
  525. package/contracts/type/RequestId.sol +75 -0
  526. package/contracts/type/RiskId.sol +75 -0
  527. package/contracts/type/RoleId.sol +180 -0
  528. package/contracts/type/Seconds.sol +120 -0
  529. package/contracts/type/Selector.sol +107 -0
  530. package/contracts/{types → type}/StateId.sol +60 -6
  531. package/contracts/type/String.sol +65 -0
  532. package/contracts/{types → type}/Timestamp.sol +39 -19
  533. package/contracts/{types → type}/UFixed.sol +91 -34
  534. package/contracts/type/Version.sol +159 -0
  535. package/contracts/upgradeability/IVersionable.sol +56 -0
  536. package/contracts/upgradeability/ProxyManager.sol +246 -0
  537. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  538. package/contracts/upgradeability/Versionable.sol +62 -0
  539. package/package.json +13 -8
  540. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  541. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  542. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  543. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  544. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  545. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  546. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  547. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  548. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  549. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  550. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  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/IA.sol/ISharedA.json +0 -37
  567. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  568. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  569. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  570. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  571. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  572. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  573. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  574. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  575. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  576. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  577. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  578. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  579. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  580. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  581. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  582. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  583. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  584. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  585. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  586. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
  587. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
  588. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  589. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -313
  590. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  591. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  592. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  593. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  594. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  595. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  596. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -276
  597. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  598. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  599. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -276
  600. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  601. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  602. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  603. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  604. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  605. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  606. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  607. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  608. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  609. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  610. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  611. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  612. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  613. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  614. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  615. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  616. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  617. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  618. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  619. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  620. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.dbg.json +0 -4
  621. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.json +0 -10
  622. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +0 -4
  623. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.json +0 -10
  624. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  625. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  626. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  627. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -538
  628. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  629. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  630. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  631. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -538
  632. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  633. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -519
  634. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  635. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  636. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  637. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  638. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -376
  639. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  640. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
  641. package/artifacts/contracts/instance/service/IService.sol/IService.json +0 -300
  642. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  643. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -499
  644. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  645. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -685
  646. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  647. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.json +0 -300
  648. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  649. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  650. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  651. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  652. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  653. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  654. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  655. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -164
  656. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  657. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -164
  658. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  659. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -95
  660. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  661. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  662. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  663. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  664. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  665. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  666. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  667. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -82
  668. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  669. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -407
  670. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  671. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  672. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  673. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -222
  674. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  675. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -230
  676. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  677. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  678. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  679. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  680. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  681. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  682. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  683. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  684. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  685. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  686. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  687. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  688. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  689. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  690. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  691. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  692. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  693. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  694. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  695. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -78
  696. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  697. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  698. package/contracts/components/BaseComponent.sol +0 -89
  699. package/contracts/components/IBaseComponent.sol +0 -19
  700. package/contracts/components/IPoolComponent.sol +0 -57
  701. package/contracts/components/IProductComponent.sol +0 -19
  702. package/contracts/components/Pool.sol +0 -174
  703. package/contracts/components/Product.sol +0 -117
  704. package/contracts/experiment/errors/Require.sol +0 -38
  705. package/contracts/experiment/errors/Revert.sol +0 -44
  706. package/contracts/experiment/inheritance/A.sol +0 -53
  707. package/contracts/experiment/inheritance/B.sol +0 -28
  708. package/contracts/experiment/inheritance/C.sol +0 -34
  709. package/contracts/experiment/inheritance/IA.sol +0 -13
  710. package/contracts/experiment/inheritance/IB.sol +0 -10
  711. package/contracts/experiment/inheritance/IC.sol +0 -12
  712. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  713. package/contracts/experiment/statemachine/ISM.sol +0 -25
  714. package/contracts/experiment/statemachine/README.md +0 -112
  715. package/contracts/experiment/statemachine/SM.sol +0 -57
  716. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  717. package/contracts/experiment/types/TypeA.sol +0 -47
  718. package/contracts/experiment/types/TypeB.sol +0 -29
  719. package/contracts/instance/IInstanceLinked.sol +0 -8
  720. package/contracts/instance/IServiceLinked.sol +0 -12
  721. package/contracts/instance/InstanceBase.sol +0 -74
  722. package/contracts/instance/module/access/Access.sol +0 -149
  723. package/contracts/instance/module/access/IAccess.sol +0 -53
  724. package/contracts/instance/module/bundle/BundleModule.sol +0 -228
  725. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  726. package/contracts/instance/module/component/ComponentModule.sol +0 -104
  727. package/contracts/instance/module/component/IComponent.sol +0 -53
  728. package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
  729. package/contracts/instance/module/lifecycle/LifecycleModule.sol +0 -89
  730. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  731. package/contracts/instance/module/policy/PolicyModule.sol +0 -84
  732. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  733. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  734. package/contracts/instance/module/product/IProductModule.sol +0 -6
  735. package/contracts/instance/module/product/ProductModule.sol +0 -8
  736. package/contracts/instance/module/treasury/ITreasury.sol +0 -104
  737. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  738. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -148
  739. package/contracts/instance/service/ComponentOwnerService.sol +0 -174
  740. package/contracts/instance/service/ComponentServiceBase.sol +0 -41
  741. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  742. package/contracts/instance/service/IPoolService.sol +0 -30
  743. package/contracts/instance/service/IProductService.sol +0 -58
  744. package/contracts/instance/service/IService.sol +0 -15
  745. package/contracts/instance/service/PoolService.sol +0 -98
  746. package/contracts/instance/service/ProductService.sol +0 -358
  747. package/contracts/instance/service/ServiceBase.sol +0 -39
  748. package/contracts/registry/IChainNft.sol +0 -21
  749. package/contracts/registry/IRegistryLinked.sol +0 -8
  750. package/contracts/shared/ERC165.sol +0 -21
  751. package/contracts/shared/IOwnable.sol +0 -6
  752. package/contracts/shared/IVersionable.sol +0 -52
  753. package/contracts/shared/Versionable.sol +0 -92
  754. package/contracts/test/TestFee.sol +0 -25
  755. package/contracts/test/TestPool.sol +0 -22
  756. package/contracts/test/TestProduct.sol +0 -44
  757. package/contracts/test/TestRegisterable.sol +0 -19
  758. package/contracts/test/TestRoleId.sol +0 -14
  759. package/contracts/test/TestService.sol +0 -35
  760. package/contracts/test/TestVersion.sol +0 -47
  761. package/contracts/test/TestVersionable.sol +0 -20
  762. package/contracts/types/ChainId.sol +0 -38
  763. package/contracts/types/Fee.sol +0 -32
  764. package/contracts/types/NftId.sol +0 -57
  765. package/contracts/types/NftIdSet.sol +0 -60
  766. package/contracts/types/ObjectType.sol +0 -115
  767. package/contracts/types/RoleId.sol +0 -36
  768. package/contracts/types/Version.sol +0 -91
@@ -0,0 +1,797 @@
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 {IRegistry} from "../registry/IRegistry.sol";
7
+ import {IRelease} from "../registry/IRelease.sol";
8
+ import {IStaking} from "./IStaking.sol";
9
+ import {IStakingService} from "./IStakingService.sol";
10
+ import {ITargetLimitHandler} from "./ITargetLimitHandler.sol";
11
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
12
+
13
+ import {Amount, AmountLib} from "../type/Amount.sol";
14
+ import {Blocknumber} from "../type/Blocknumber.sol";
15
+ import {ChainId, ChainIdLib} from "../type/ChainId.sol";
16
+ import {Component} from "../shared/Component.sol";
17
+ import {IComponent} from "../shared/IComponent.sol";
18
+ import {NftId} from "../type/NftId.sol";
19
+ import {ObjectType, PROTOCOL, INSTANCE, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
20
+ import {Seconds, SecondsLib} from "../type/Seconds.sol";
21
+ import {Registerable} from "../shared/Registerable.sol";
22
+ import {StakingLib} from "./StakingLib.sol";
23
+ import {StakingReader} from "./StakingReader.sol";
24
+ import {StakingStore} from "./StakingStore.sol";
25
+ import {TargetHandler} from "./TargetHandler.sol";
26
+ import {TokenHandler} from "../shared/TokenHandler.sol";
27
+ import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
28
+ import {TokenRegistry} from "../registry/TokenRegistry.sol";
29
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
30
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
31
+ import {Versionable} from "../upgradeability/Versionable.sol";
32
+
33
+
34
+ contract Staking is
35
+ Component,
36
+ Versionable,
37
+ IStaking
38
+ {
39
+ string public constant CONTRACT_NAME = "Staking";
40
+
41
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
42
+ bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
43
+
44
+ struct StakingStorage {
45
+ TokenRegistry _tokenRegistry;
46
+ TokenHandler _tokenHandler;
47
+ IStakingService _stakingService;
48
+ TargetHandler _targetHandler;
49
+ StakingStore _store;
50
+ StakingReader _reader;
51
+ NftId _protocolNftId;
52
+ }
53
+
54
+
55
+ modifier onlyStakeOwner(NftId stakeNftId) {
56
+ _checkTypeAndOwner(stakeNftId, STAKE(), true);
57
+ _;
58
+ }
59
+
60
+
61
+ modifier onlyTarget(NftId targetNftId) {
62
+ _checkTypeAndOwner(targetNftId, TARGET(), false);
63
+ _;
64
+ }
65
+
66
+
67
+ modifier onlyTargetOwner(NftId targetNftId) {
68
+ _checkTypeAndOwner(targetNftId, TARGET(), true);
69
+ _;
70
+ }
71
+
72
+ //--- contract intitialization -------------------------------------------
73
+
74
+ function initializeTokenHandler()
75
+ external
76
+ virtual
77
+ {
78
+ if (msg.sender != address(getRegistry())) {
79
+ revert ErrorStakingNotRegistry(msg.sender);
80
+ }
81
+
82
+ StakingStorage storage $ = _getStakingStorage();
83
+ address dipToken = _getStakingStorage()._tokenRegistry.getDipTokenAddress();
84
+ $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
85
+ address(getRegistry()),
86
+ address(this),
87
+ dipToken,
88
+ getRegistry().getAuthority());
89
+ }
90
+
91
+
92
+ //--- staking owner functions -------------------------------------------//
93
+
94
+ function setSupportInfo(
95
+ ObjectType targetType,
96
+ bool isSupported,
97
+ bool allowNewTargets,
98
+ bool allowCrossChain,
99
+ Amount minStakingAmount,
100
+ Amount maxStakingAmount,
101
+ Seconds minLockingPeriod,
102
+ Seconds maxLockingPeriod,
103
+ UFixed minRewardRate,
104
+ UFixed maxRewardRate
105
+ )
106
+ external
107
+ virtual
108
+ restricted()
109
+ onlyOwner()
110
+ {
111
+ StakingStorage storage $ = _getStakingStorage();
112
+ $._store.setSupportInfo(
113
+ targetType,
114
+ isSupported,
115
+ allowNewTargets,
116
+ allowCrossChain,
117
+ minStakingAmount,
118
+ maxStakingAmount,
119
+ minLockingPeriod,
120
+ maxLockingPeriod,
121
+ minRewardRate,
122
+ maxRewardRate);
123
+ }
124
+
125
+
126
+ /// @inheritdoc IStaking
127
+ function setUpdateTriggers(
128
+ uint16 tvlUpdatesTrigger,
129
+ UFixed minTvlRatioTrigger
130
+ )
131
+ external
132
+ restricted()
133
+ {
134
+ StakingStorage storage $ = _getStakingStorage();
135
+ $._targetHandler.setUpdateTriggers(tvlUpdatesTrigger, minTvlRatioTrigger);
136
+ }
137
+
138
+
139
+ /// @inheritdoc IStaking
140
+ function setProtocolLockingPeriod(Seconds newLockingPeriod)
141
+ external
142
+ virtual
143
+ restricted()
144
+ onlyOwner()
145
+ {
146
+ StakingStorage storage $ = _getStakingStorage();
147
+ $._store.setLockingPeriod($._protocolNftId, newLockingPeriod);
148
+ }
149
+
150
+
151
+ /// @inheritdoc IStaking
152
+ function setProtocolRewardRate(UFixed newRewardRate)
153
+ external
154
+ virtual
155
+ restricted()
156
+ onlyOwner()
157
+ {
158
+ StakingStorage storage $ = _getStakingStorage();
159
+ $._store.setRewardRate($._protocolNftId, newRewardRate);
160
+ }
161
+
162
+
163
+ /// @inheritdoc IStaking
164
+ function setStakingRate(
165
+ ChainId chainId,
166
+ address token,
167
+ UFixed stakingRate
168
+ )
169
+ external
170
+ virtual
171
+ restricted()
172
+ onlyOwner()
173
+ {
174
+ (
175
+ UFixed oldStakingRate,
176
+ Blocknumber lastUpdateIn
177
+ ) = _getStakingStorage()._store.setStakingRate(chainId, token, stakingRate);
178
+
179
+ emit LogStakingStakingRateSet(chainId, token, stakingRate, oldStakingRate, lastUpdateIn);
180
+ }
181
+
182
+
183
+ /// @inheritdoc IStaking
184
+ function setStakingService(VersionPart release)
185
+ external
186
+ virtual
187
+ restricted()
188
+ onlyOwner()
189
+ {
190
+ // effects
191
+ StakingStorage storage $ = _getStakingStorage();
192
+ address oldStakingService = address($._stakingService);
193
+ $._stakingService = StakingLib.checkAndGetStakingService(getRegistry(), release);
194
+
195
+ emit LogStakingStakingServiceSet(address($._stakingService), release, oldStakingService);
196
+ }
197
+
198
+
199
+ /// @inheritdoc IStaking
200
+ function setStakingReader(address reader)
201
+ external
202
+ virtual
203
+ restricted()
204
+ onlyOwner()
205
+ {
206
+ StakingReader stakingReader = StakingReader(reader);
207
+
208
+ if(stakingReader.getStaking() != IStaking(this)) {
209
+ revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
210
+ }
211
+
212
+ StakingStorage storage $ = _getStakingStorage();
213
+ $._reader = stakingReader;
214
+ $._store.setStakingReader(reader);
215
+ }
216
+
217
+
218
+ // TODO move to TargetHandler?
219
+ /// @inheritdoc IStaking
220
+ function addToken(
221
+ ChainId chainId,
222
+ address token
223
+ )
224
+ external
225
+ virtual
226
+ restricted()
227
+ onlyOwner()
228
+ {
229
+ _addToken(
230
+ _getStakingStorage(), chainId, token);
231
+ }
232
+
233
+
234
+ /// @inheritdoc IStaking
235
+ function approveTokenHandler(IERC20Metadata token, Amount amount)
236
+ public
237
+ virtual
238
+ restricted()
239
+ onlyOwner()
240
+ {
241
+ StakingStorage storage $ = _getStakingStorage();
242
+ Amount oldAllowanceAmount = AmountLib.toAmount(
243
+ token.allowance(
244
+ address(this),
245
+ address($._tokenHandler)));
246
+
247
+ // staking token handler approval via its own implementation in staking service
248
+ $._stakingService.approveTokenHandler(
249
+ token,
250
+ amount);
251
+
252
+ emit LogStakingTokenHandlerApproved(address(token), amount, oldAllowanceAmount);
253
+ }
254
+
255
+ //--- target management -------------------------------------------------//
256
+
257
+
258
+ /// @inheritdoc IStaking
259
+ function refillRewardReserves(NftId targetNftId, Amount dipAmount)
260
+ external
261
+ virtual
262
+ restricted()
263
+ onlyTarget(targetNftId)
264
+ returns (Amount newBalance)
265
+ {
266
+ address transferFrom = msg.sender;
267
+ _refillRewardReserves(targetNftId, dipAmount, transferFrom);
268
+ }
269
+
270
+
271
+ /// @inheritdoc IStaking
272
+ function withdrawRewardReserves(NftId targetNftId, Amount dipAmount)
273
+ external
274
+ virtual
275
+ restricted()
276
+ onlyTarget(targetNftId)
277
+ returns (Amount newBalance)
278
+ {
279
+ address transferTo;
280
+
281
+ // case 1: protocol target: staking owner is recipient
282
+ if (targetNftId == getRegistry().getProtocolNftId()) {
283
+ // verify that the caller is the staking owner
284
+ transferTo = getOwner();
285
+ if (msg.sender != transferTo) {
286
+ revert ErrorStakingNotStakingOwner();
287
+ }
288
+
289
+ // case 2: same chain target: target owner is recipient
290
+ } else if (ChainIdLib.isCurrentChain(targetNftId)) {
291
+ // verify that the caller is the target owner
292
+ transferTo = getRegistry().ownerOf(targetNftId);
293
+ if (msg.sender != transferTo) {
294
+ revert ErrorStakingNotNftOwner(targetNftId);
295
+ }
296
+
297
+ // case 3: cross-chain target: TODO decide how to handle and implement
298
+ } else {
299
+ revert("Cross-chain target not supported");
300
+ }
301
+
302
+ newBalance = _withdrawRewardReserves(targetNftId, dipAmount, transferTo);
303
+ }
304
+
305
+
306
+ /// @inheritdoc IStaking
307
+ function refillRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferFrom)
308
+ external
309
+ virtual
310
+ restricted()
311
+ onlyTarget(targetNftId)
312
+ returns (Amount newBalance)
313
+ {
314
+ _refillRewardReserves(targetNftId, dipAmount, transferFrom);
315
+ }
316
+
317
+
318
+ /// @inheritdoc IStaking
319
+ function withdrawRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferTo)
320
+ external
321
+ virtual
322
+ restricted()
323
+ onlyTarget(targetNftId)
324
+ returns (Amount newBalance)
325
+ {
326
+ // check that service does not withdraw from protocol target
327
+ if (targetNftId == getRegistry().getProtocolNftId()) {
328
+ revert ErrorStakingTargetTypeNotSupported(targetNftId, PROTOCOL());
329
+ }
330
+
331
+ // default: on-chain target owner is recipient
332
+ address targetOwner = getRegistry().ownerOf(targetNftId);
333
+ return _withdrawRewardReserves(targetNftId, dipAmount, targetOwner);
334
+ }
335
+
336
+
337
+ /// @inheritdoc IStaking
338
+ function registerTarget(
339
+ NftId targetNftId,
340
+ ObjectType expectedObjectType,
341
+ Seconds initialLockingPeriod,
342
+ UFixed initialRewardRate
343
+ )
344
+ external
345
+ virtual
346
+ restricted() // staking service
347
+ {
348
+ // checks done by staking store
349
+ _getStakingStorage()._store.createTarget(
350
+ targetNftId,
351
+ expectedObjectType,
352
+ initialLockingPeriod,
353
+ initialRewardRate);
354
+ }
355
+
356
+
357
+ /// @inheritdoc IStaking
358
+ function setLockingPeriod(
359
+ NftId targetNftId,
360
+ Seconds lockingPeriod
361
+ )
362
+ external
363
+ virtual
364
+ restricted()
365
+ onlyTarget(targetNftId)
366
+ {
367
+ _getStakingStorage()._store.setLockingPeriod(targetNftId, lockingPeriod);
368
+ }
369
+
370
+
371
+ /// @inheritdoc IStaking
372
+ function setRewardRate(NftId targetNftId, UFixed rewardRate)
373
+ external
374
+ virtual
375
+ restricted()
376
+ onlyTarget(targetNftId)
377
+ {
378
+ _getStakingStorage()._store.setRewardRate(targetNftId, rewardRate);
379
+ }
380
+
381
+
382
+ // TODO refactor into setTargetLimits
383
+ /// @inheritdoc IStaking
384
+ function setMaxStakedAmount(NftId targetNftId, Amount stakeLimitAmount)
385
+ external
386
+ virtual
387
+ restricted()
388
+ onlyTarget(targetNftId)
389
+ {
390
+ StakingStorage storage $ = _getStakingStorage();
391
+ $._store.setMaxStakedAmount(targetNftId, stakeLimitAmount);
392
+ }
393
+
394
+
395
+ /// @inheritdoc IStaking
396
+ function setTargetLimits(NftId targetNftId, Amount marginAmount, Amount limitAmount)
397
+ external
398
+ virtual
399
+ restricted()
400
+ onlyTargetOwner(targetNftId)
401
+ {
402
+ StakingStorage storage $ = _getStakingStorage();
403
+ $._store.setTargetLimits(targetNftId, marginAmount, limitAmount);
404
+ }
405
+
406
+
407
+ /// @inheritdoc IStaking
408
+ function addTargetToken(NftId targetNftId, address token)
409
+ external
410
+ virtual
411
+ restricted()
412
+ onlyTarget(targetNftId)
413
+ {
414
+ StakingStorage storage $ = _getStakingStorage();
415
+ ChainId chainId = ChainIdLib.fromNftId(targetNftId);
416
+ _addToken($, chainId, token);
417
+
418
+ $._store.addTargetToken(targetNftId, token);
419
+
420
+ // TODO move logging to store
421
+ emit LogStakingTargetTokenAdded(targetNftId, chainId, token);
422
+ }
423
+
424
+
425
+ /// @inheritdoc IStaking
426
+ function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
427
+ external
428
+ virtual
429
+ restricted() // only pool service
430
+ {
431
+ StakingStorage storage $ = _getStakingStorage();
432
+ $._store.increaseTotalValueLocked(targetNftId, token, amount);
433
+ }
434
+
435
+
436
+ /// @inheritdoc IStaking
437
+ function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
438
+ external
439
+ virtual
440
+ restricted() // only pool service
441
+ {
442
+ StakingStorage storage $ = _getStakingStorage();
443
+ $._store.decreaseTotalValueLocked(targetNftId, token, amount);
444
+ }
445
+
446
+
447
+ // TODO add to interface and implement
448
+ /// inheritdoc IStaking
449
+ function registerRemoteTarget(NftId targetNftId, TargetInfo memory targetInfo)
450
+ external
451
+ virtual
452
+ restricted()
453
+ onlyOwner // or CCIP
454
+ {
455
+
456
+ }
457
+
458
+ // TODO add to interface and implement
459
+ /// @inheritdoc IStaking
460
+ function updateRemoteTvl(NftId targetNftId, address token, Amount amount)
461
+ external
462
+ virtual
463
+ restricted()
464
+ onlyOwner // or CCIP
465
+ {
466
+
467
+ }
468
+
469
+ //--- public functions --------------------------------------------------//
470
+
471
+ /// @inheritdoc IStaking
472
+ function updateTargetLimit(NftId targetNftId)
473
+ external
474
+ restricted()
475
+ {
476
+ StakingStorage storage $ = _getStakingStorage();
477
+ $._store.updateTargetLimit(targetNftId);
478
+ }
479
+
480
+
481
+ /// @inheritdoc IStaking
482
+ function createStake(
483
+ NftId targetNftId,
484
+ Amount stakeAmount,
485
+ address stakeOwner
486
+ )
487
+ external
488
+ virtual
489
+ restricted()
490
+ onlyTarget(targetNftId)
491
+ returns (NftId stakeNftId)
492
+ {
493
+ // effects (includes further checks in service)
494
+ StakingStorage storage $ = _getStakingStorage();
495
+ stakeNftId = $._stakingService.createStakeObject(targetNftId, stakeOwner);
496
+ $._store.createStake(stakeNftId, targetNftId, stakeOwner, stakeAmount);
497
+
498
+ // interactions
499
+ if (stakeAmount.gtz()) {
500
+ $._stakingService.pullDipToken(stakeAmount, stakeOwner);
501
+ }
502
+ }
503
+
504
+ //--- stake owner functions ---------------------------------------------//
505
+
506
+
507
+ /// @inheritdoc IStaking
508
+ function stake(
509
+ NftId stakeNftId,
510
+ Amount stakeAmount
511
+ )
512
+ external
513
+ virtual
514
+ restricted()
515
+ onlyStakeOwner(stakeNftId)
516
+ returns (Amount newStakeBalance)
517
+ {
518
+ StakingStorage storage $ = _getStakingStorage();
519
+ $._store.stake(
520
+ stakeNftId,
521
+ true, // update rewards
522
+ true, // restake rewards
523
+ SecondsLib.max(), // max additional locking duration
524
+ stakeAmount);
525
+
526
+ // collect staked DIP token via staking service
527
+ if (stakeAmount.gtz()) {
528
+ address stakeOwner = getRegistry().ownerOf(stakeNftId);
529
+ $._stakingService.pullDipToken(stakeAmount, stakeOwner);
530
+ }
531
+ }
532
+
533
+
534
+ /// @inheritdoc IStaking
535
+ function unstake(NftId stakeNftId)
536
+ external
537
+ virtual
538
+ restricted()
539
+ onlyStakeOwner(stakeNftId)
540
+ returns (Amount unstakedAmount)
541
+ {
542
+ StakingStorage storage $ = _getStakingStorage();
543
+ unstakedAmount = $._store.unstake(
544
+ stakeNftId,
545
+ true, // update rewards
546
+ true, // restake rewards
547
+ AmountLib.max()); // unstake up to this amount
548
+
549
+ // transfer unstaked DIP token via staking service
550
+ if (unstakedAmount.gtz()) {
551
+ address stakeOwner = getRegistry().ownerOf(stakeNftId);
552
+ $._stakingService.pushDipToken(unstakedAmount, stakeOwner);
553
+ }
554
+ }
555
+
556
+
557
+ /// @inheritdoc IStaking
558
+ function restake(
559
+ NftId stakeNftId,
560
+ NftId newTargetNftId
561
+ )
562
+ external
563
+ virtual
564
+ restricted() // only staking service
565
+ onlyStakeOwner(stakeNftId)
566
+ onlyTarget(newTargetNftId)
567
+ returns (
568
+ NftId newStakeNftId,
569
+ Amount newStakedAmount
570
+ )
571
+ {
572
+ StakingStorage storage $ = _getStakingStorage();
573
+
574
+ // step 1: unstake as much as possible
575
+ newStakedAmount = $._store.unstake(
576
+ stakeNftId,
577
+ true, // update rewards
578
+ true, // restake rewards
579
+ AmountLib.max()); // unstake up to this amount
580
+
581
+ // step 2: create new stake with full unstaked amount
582
+ address stakeOwner = getRegistry().ownerOf(stakeNftId);
583
+ newStakeNftId = $._stakingService.createStakeObject(newTargetNftId, stakeOwner);
584
+ $._store.createStake(newStakeNftId, newTargetNftId, stakeOwner, newStakedAmount);
585
+
586
+ // logging
587
+ emit LogStakingStakeRestaked(newStakeNftId, newTargetNftId, newStakedAmount, stakeOwner, stakeNftId);
588
+ }
589
+
590
+
591
+ function updateRewards(NftId stakeNftId)
592
+ external
593
+ virtual
594
+ restricted()
595
+ onlyStakeOwner(stakeNftId)
596
+ returns (Amount newRewardAmount)
597
+ {
598
+ StakingStorage storage $ = _getStakingStorage();
599
+ $._store.updateRewards(stakeNftId);
600
+ }
601
+
602
+
603
+ function claimRewards(NftId stakeNftId)
604
+ external
605
+ virtual
606
+ restricted()
607
+ onlyStakeOwner(stakeNftId)
608
+ returns (
609
+ Amount claimedAmount
610
+ )
611
+ {
612
+ StakingStorage storage $ = _getStakingStorage();
613
+ claimedAmount = $._store.claimRewards(
614
+ stakeNftId,
615
+ true,
616
+ AmountLib.max());
617
+
618
+ // collect staked DIP token by staking service
619
+ if (claimedAmount.gtz()) {
620
+ // interactions
621
+ address stakeOwner = getRegistry().ownerOf(stakeNftId);
622
+ $._stakingService.pushDipToken(claimedAmount, stakeOwner);
623
+ }
624
+ }
625
+
626
+
627
+ //--- view functions ----------------------------------------------------//
628
+
629
+ function getStakingReader() public virtual view returns (StakingReader reader) {
630
+ return _getStakingStorage()._reader;
631
+ }
632
+
633
+ function getTargetHandler() external virtual view returns (TargetHandler targetHandler) {
634
+ return _getStakingStorage()._targetHandler;
635
+ }
636
+
637
+ function getStakingStore() external virtual view returns (StakingStore stakingStore) {
638
+ return _getStakingStorage()._store;
639
+ }
640
+
641
+ function getTokenRegistryAddress() external virtual view returns (address tokenRegistry) {
642
+ return address(_getStakingStorage()._tokenRegistry);
643
+ }
644
+
645
+ function getTokenHandler() public virtual override(Component, IComponent) view returns (TokenHandler tokenHandler) {
646
+ return _getStakingStorage()._tokenHandler;
647
+ }
648
+
649
+ // from IRegisterable
650
+ function getRelease()
651
+ public
652
+ pure
653
+ virtual override (IRelease, Registerable)
654
+ returns(VersionPart)
655
+ {
656
+ return VersionPartLib.toVersionPart(3);
657
+ }
658
+
659
+ // from IVersionable
660
+ function getVersion()
661
+ public
662
+ pure
663
+ virtual override (Component, IVersionable, Versionable)
664
+ returns(Version)
665
+ {
666
+ return VersionLib.toVersion(3,0,0);
667
+ }
668
+
669
+ //--- internal functions ------------------------------------------------//
670
+
671
+
672
+ function _refillRewardReserves(NftId targetNftId, Amount dipAmount, address transferFrom)
673
+ internal
674
+ virtual
675
+ returns (Amount newBalance)
676
+ {
677
+ // checks + effects
678
+ StakingStorage storage $ = _getStakingStorage();
679
+ newBalance = $._store.refillRewardReserves(targetNftId, dipAmount);
680
+
681
+ // interactions
682
+ // collect DIP token from target owner
683
+ if (dipAmount.gtz()) {
684
+ $._stakingService.pullDipToken(dipAmount, transferFrom);
685
+ }
686
+ }
687
+
688
+
689
+ function _withdrawRewardReserves(NftId targetNftId, Amount dipAmount, address transferTo)
690
+ internal
691
+ virtual
692
+ returns (Amount newBalance)
693
+ {
694
+ // checks + effects
695
+ StakingStorage storage $ = _getStakingStorage();
696
+ newBalance = $._store.withdrawRewardReserves(targetNftId, dipAmount);
697
+
698
+ // interactions
699
+ // transfer DIP token to designated address
700
+ if (dipAmount.gtz()) {
701
+ $._stakingService.pushDipToken(dipAmount, transferTo);
702
+ }
703
+ }
704
+
705
+
706
+ function _addToken(
707
+ StakingStorage storage $,
708
+ ChainId chainId,
709
+ address token
710
+ )
711
+ internal
712
+ virtual
713
+ {
714
+ if ($._store.getTokenInfo(chainId, token).lastUpdateIn.eqz()) {
715
+ $._store.addToken(chainId, token);
716
+ }
717
+ }
718
+
719
+
720
+ /// @dev top level initializer (upgradable contract)
721
+ function _initialize(
722
+ address owner,
723
+ bytes memory data
724
+ )
725
+ internal
726
+ virtual override
727
+ onlyInitializing()
728
+ {
729
+ (
730
+ address registryAddress,
731
+ address targetHandlerAddress,
732
+ address stakingStoreAddress,
733
+ address tokenRegistryAddress
734
+ ) = abi.decode(data, (address, address, address, address));
735
+
736
+ // wiring to external contracts
737
+ IRegistry registry = IRegistry(registryAddress);
738
+ StakingStorage storage $ = _getStakingStorage();
739
+ $._protocolNftId = registry.getProtocolNftId();
740
+ $._targetHandler = TargetHandler(targetHandlerAddress);
741
+ $._store = StakingStore(stakingStoreAddress);
742
+ $._reader = StakingStore(stakingStoreAddress).getStakingReader();
743
+ $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
744
+ // staking service has to be set via setStakingService after deploying the first GIF release
745
+
746
+ // initialize component
747
+ __Component_init(
748
+ registry.getAuthority(),
749
+ address(registry),
750
+ registry.getNftId(), // parent nft id
751
+ CONTRACT_NAME,
752
+ STAKING(),
753
+ false, // is interceptor
754
+ owner,
755
+ "", // registry data
756
+ ""); // component data
757
+
758
+ // Protocol target is created in the StakingStore constructor.
759
+ // This allows setting up the protocol target before the full
760
+ // staking authorization setup is in place.
761
+
762
+ _registerInterface(type(IStaking).interfaceId);
763
+ }
764
+
765
+
766
+ function _checkTypeAndOwner(NftId nftId, ObjectType expectedObjectType, bool checkOwner)
767
+ internal
768
+ view
769
+ {
770
+ StakingStorage storage $ = _getStakingStorage();
771
+ if (expectedObjectType == STAKE()) {
772
+ if (!$._store.exists(nftId)) {
773
+ revert ErrorStakingNotStake(nftId);
774
+ }
775
+ } else {
776
+ if (expectedObjectType == TARGET()) {
777
+ if (!$._store.getTargetSet().exists(nftId)) {
778
+ revert ErrorStakingNotTarget(nftId);
779
+ }
780
+ }
781
+ }
782
+
783
+ if (checkOwner) {
784
+ address nftOwner = getRegistry().ownerOf(nftId);
785
+ if (msg.sender != nftOwner) {
786
+ revert ErrorStakingNotOwner(nftId, nftOwner, msg.sender);
787
+ }
788
+ }
789
+ }
790
+
791
+
792
+ function _getStakingStorage() private pure returns (StakingStorage storage $) {
793
+ assembly {
794
+ $.slot := STAKING_LOCATION_V1
795
+ }
796
+ }
797
+ }