@etherisc/gif-next 0.0.2-fbe6493-116 → 0.0.2-fc41a4e-906

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 (533) hide show
  1. package/README.md +86 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → accounting/IAccountingService.sol/IAccountingService.json} +365 -113
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +673 -262
  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 +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +549 -209
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +171 -464
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +90 -356
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +472 -364
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +186 -128
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +84 -198
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +287 -101
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1461 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2018 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1404 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1628 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2405 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +540 -65
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +290 -57
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +549 -166
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1034 -311
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1688 -735
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +303 -227
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +106 -106
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +955 -640
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  89. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +116 -333
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
  108. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +91 -140
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +92 -293
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +169 -190
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +140 -98
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +132 -333
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +195 -423
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +134 -132
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +90 -117
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +122 -182
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +317 -300
  133. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  134. package/artifacts/contracts/pool/Pool.sol/Pool.json +120 -332
  135. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +538 -0
  137. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -583
  139. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +165 -115
  141. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +192 -173
  143. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +128 -98
  145. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +254 -394
  147. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
  149. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +416 -290
  151. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +150 -128
  153. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +131 -9
  155. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +293 -17
  157. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +245 -64
  159. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +157 -83
  161. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +245 -233
  163. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  164. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +88 -8
  165. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +335 -349
  167. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  169. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +135 -129
  171. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.json +224 -338
  173. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +128 -138
  175. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  176. package/artifacts/contracts/product/Product.sol/Product.json +246 -386
  177. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  179. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  181. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  183. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +342 -42
  185. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  187. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  189. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  191. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.json +548 -103
  193. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +795 -394
  195. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +104 -90
  201. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  203. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  205. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +483 -253
  207. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
  209. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
  211. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  212. package/artifacts/contracts/shared/Component.sol/Component.json +80 -252
  213. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +433 -697
  215. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +140 -148
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +80 -100
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +394 -300
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +91 -140
  231. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  233. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  234. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  235. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  237. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  239. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  241. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  244. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  245. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  246. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  247. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +91 -292
  248. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  249. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  250. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  251. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  252. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  253. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  254. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  255. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  256. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  257. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  258. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  260. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  261. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  262. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  263. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  264. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +544 -18
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  268. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  269. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  270. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  271. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +312 -133
  272. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  273. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +155 -23
  274. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  275. package/artifacts/contracts/staking/Staking.sol/Staking.json +418 -384
  276. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  277. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  278. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  280. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +141 -110
  282. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +91 -67
  284. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +224 -171
  286. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +121 -95
  288. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +205 -150
  290. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  291. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +91 -50
  292. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  293. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Amount.sol/AmountLib.json +35 -11
  295. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  298. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  300. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  302. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  304. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  305. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  306. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  308. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  309. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  310. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  312. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  314. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  316. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  318. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  320. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  322. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
  324. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  326. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  328. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  330. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  332. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  334. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
  336. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  338. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  340. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  342. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -80
  343. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  344. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  345. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  346. package/contracts/accounting/AccountingService.sol +261 -0
  347. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  348. package/contracts/accounting/IAccountingService.sol +45 -0
  349. package/contracts/authorization/AccessAdmin.sol +456 -267
  350. package/contracts/authorization/AccessAdminLib.sol +396 -0
  351. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  352. package/contracts/authorization/Authorization.sol +159 -203
  353. package/contracts/authorization/IAccess.sol +25 -6
  354. package/contracts/authorization/IAccessAdmin.sol +87 -79
  355. package/contracts/authorization/IAuthorization.sol +9 -36
  356. package/contracts/authorization/IServiceAuthorization.sol +57 -17
  357. package/contracts/authorization/ServiceAuthorization.sol +254 -24
  358. package/contracts/distribution/BasicDistribution.sol +20 -17
  359. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  360. package/contracts/distribution/Distribution.sol +42 -90
  361. package/contracts/distribution/DistributionService.sol +229 -117
  362. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  363. package/contracts/distribution/IDistributionComponent.sol +4 -11
  364. package/contracts/distribution/IDistributionService.sol +40 -26
  365. package/contracts/examples/fire/DamageLevel.sol +59 -0
  366. package/contracts/examples/fire/FirePool.sol +86 -0
  367. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  368. package/contracts/examples/fire/FireProduct.sol +433 -0
  369. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  370. package/contracts/examples/fire/FireUSD.sol +26 -0
  371. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  372. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  373. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  374. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  375. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  376. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  377. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  378. package/contracts/instance/BundleSet.sol +42 -38
  379. package/contracts/instance/IInstance.sol +101 -42
  380. package/contracts/instance/IInstanceService.sol +52 -31
  381. package/contracts/instance/Instance.sol +189 -97
  382. package/contracts/instance/InstanceAdmin.sol +275 -158
  383. package/contracts/instance/InstanceAuthorizationV3.sol +120 -58
  384. package/contracts/instance/InstanceReader.sol +477 -253
  385. package/contracts/instance/InstanceService.sol +284 -239
  386. package/contracts/instance/InstanceServiceManager.sol +6 -7
  387. package/contracts/instance/InstanceStore.sol +23 -2
  388. package/contracts/instance/RiskSet.sol +118 -0
  389. package/contracts/instance/base/BalanceStore.sol +3 -5
  390. package/contracts/instance/base/ObjectCounter.sol +1 -2
  391. package/contracts/instance/base/ObjectLifecycle.sol +10 -2
  392. package/contracts/instance/base/ObjectSet.sol +31 -33
  393. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  394. package/contracts/instance/module/IBundle.sol +6 -5
  395. package/contracts/instance/module/IComponents.sol +29 -13
  396. package/contracts/instance/module/IDistribution.sol +21 -8
  397. package/contracts/instance/module/IPolicy.sol +49 -28
  398. package/contracts/instance/module/IRisk.sol +5 -0
  399. package/contracts/oracle/BasicOracle.sol +1 -4
  400. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  401. package/contracts/oracle/IOracle.sol +9 -4
  402. package/contracts/oracle/IOracleService.sol +2 -1
  403. package/contracts/oracle/Oracle.sol +7 -19
  404. package/contracts/oracle/OracleService.sol +117 -85
  405. package/contracts/oracle/OracleServiceManager.sol +6 -6
  406. package/contracts/pool/BasicPool.sol +32 -25
  407. package/contracts/pool/BasicPoolAuthorization.sol +33 -9
  408. package/contracts/pool/BundleService.sol +101 -144
  409. package/contracts/pool/BundleServiceManager.sol +6 -6
  410. package/contracts/pool/IBundleService.sol +15 -33
  411. package/contracts/pool/IPoolComponent.sol +19 -15
  412. package/contracts/pool/IPoolService.sol +86 -71
  413. package/contracts/pool/Pool.sol +139 -124
  414. package/contracts/pool/PoolLib.sol +353 -0
  415. package/contracts/pool/PoolService.sol +346 -292
  416. package/contracts/pool/PoolServiceManager.sol +4 -4
  417. package/contracts/product/ApplicationService.sol +80 -31
  418. package/contracts/product/ApplicationServiceManager.sol +4 -4
  419. package/contracts/product/BasicProduct.sol +10 -13
  420. package/contracts/product/BasicProductAuthorization.sol +32 -12
  421. package/contracts/product/ClaimService.sol +368 -154
  422. package/contracts/product/ClaimServiceManager.sol +4 -4
  423. package/contracts/product/IApplicationService.sol +8 -2
  424. package/contracts/product/IClaimService.sol +43 -8
  425. package/contracts/product/IPolicyService.sol +38 -28
  426. package/contracts/product/IPricingService.sol +11 -10
  427. package/contracts/product/IProductComponent.sol +27 -5
  428. package/contracts/product/{IProductService.sol → IRiskService.sol} +8 -8
  429. package/contracts/product/PolicyService.sol +365 -323
  430. package/contracts/product/PolicyServiceLib.sol +139 -0
  431. package/contracts/product/PolicyServiceManager.sol +4 -4
  432. package/contracts/product/PricingService.sol +85 -83
  433. package/contracts/product/PricingServiceManager.sol +4 -4
  434. package/contracts/product/Product.sol +147 -91
  435. package/contracts/product/RiskService.sol +157 -0
  436. package/contracts/product/RiskServiceManager.sol +39 -0
  437. package/contracts/registry/ChainNft.sol +72 -40
  438. package/contracts/registry/IRegistry.sol +64 -28
  439. package/contracts/registry/IRegistryService.sol +5 -12
  440. package/contracts/registry/IRelease.sol +29 -0
  441. package/contracts/registry/ITransferInterceptor.sol +1 -2
  442. package/contracts/registry/Registry.sol +357 -203
  443. package/contracts/registry/RegistryAdmin.sol +110 -287
  444. package/contracts/registry/RegistryAuthorization.sol +284 -0
  445. package/contracts/registry/RegistryService.sol +37 -48
  446. package/contracts/registry/RegistryServiceManager.sol +3 -3
  447. package/contracts/registry/ReleaseAdmin.sol +195 -0
  448. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  449. package/contracts/registry/ReleaseRegistry.sol +275 -240
  450. package/contracts/registry/ServiceAuthorizationV3.sol +201 -57
  451. package/contracts/registry/TokenRegistry.sol +12 -13
  452. package/contracts/shared/Component.sol +66 -137
  453. package/contracts/shared/ComponentService.sol +414 -376
  454. package/contracts/shared/ComponentServiceManager.sol +8 -5
  455. package/contracts/shared/ContractLib.sol +311 -0
  456. package/contracts/shared/IComponent.sol +6 -19
  457. package/contracts/shared/IComponentService.sol +42 -40
  458. package/contracts/shared/IInstanceLinkedComponent.sol +2 -28
  459. package/contracts/shared/ILifecycle.sol +3 -1
  460. package/contracts/shared/INftOwnable.sol +2 -0
  461. package/contracts/shared/IPolicyHolder.sol +12 -22
  462. package/contracts/shared/IRegisterable.sol +22 -1
  463. package/contracts/shared/IService.sol +3 -5
  464. package/contracts/shared/InitializableERC165.sol +10 -2
  465. package/contracts/shared/InstanceLinkedComponent.sol +72 -50
  466. package/contracts/shared/KeyValueStore.sol +1 -1
  467. package/contracts/shared/Lifecycle.sol +15 -4
  468. package/contracts/shared/NftOwnable.sol +29 -9
  469. package/contracts/shared/PolicyHolder.sol +18 -54
  470. package/contracts/shared/Registerable.sol +52 -21
  471. package/contracts/shared/RegistryLinked.sol +9 -14
  472. package/contracts/shared/Service.sol +20 -35
  473. package/contracts/shared/TokenHandler.sol +309 -29
  474. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  475. package/contracts/staking/IStaking.sol +48 -20
  476. package/contracts/staking/IStakingService.sol +21 -11
  477. package/contracts/staking/Staking.sol +198 -109
  478. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +95 -45
  479. package/contracts/staking/StakingManager.sol +8 -6
  480. package/contracts/staking/StakingReader.sol +40 -24
  481. package/contracts/staking/StakingService.sol +88 -27
  482. package/contracts/staking/StakingServiceManager.sol +6 -5
  483. package/contracts/staking/StakingStore.sol +3 -2
  484. package/contracts/staking/TargetManagerLib.sol +8 -4
  485. package/contracts/type/Amount.sol +15 -0
  486. package/contracts/type/ClaimId.sol +6 -1
  487. package/contracts/type/Fee.sol +8 -8
  488. package/contracts/type/Key32.sol +2 -2
  489. package/contracts/type/Key32Set.sol +62 -0
  490. package/contracts/type/NftId.sol +7 -0
  491. package/contracts/type/ObjectType.sol +73 -37
  492. package/contracts/type/PayoutId.sol +10 -10
  493. package/contracts/type/RiskId.sol +38 -6
  494. package/contracts/type/RoleId.sol +61 -55
  495. package/contracts/type/Seconds.sol +12 -0
  496. package/contracts/type/Selector.sol +5 -0
  497. package/contracts/type/StateId.sol +15 -1
  498. package/contracts/type/String.sol +12 -0
  499. package/contracts/type/Timestamp.sol +0 -5
  500. package/contracts/type/UFixed.sol +37 -126
  501. package/contracts/type/Version.sol +54 -5
  502. package/contracts/upgradeability/ProxyManager.sol +81 -45
  503. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
  504. package/contracts/upgradeability/Versionable.sol +6 -3
  505. package/package.json +5 -4
  506. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  507. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  508. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  509. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  510. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  511. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  512. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  513. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  514. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  515. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  516. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  517. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  518. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  519. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  520. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +0 -4
  521. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +0 -42
  522. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  523. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -470
  524. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  525. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  526. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  527. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  528. package/contracts/instance/module/IAccess.sol +0 -46
  529. package/contracts/product/ProductService.sol +0 -99
  530. package/contracts/product/ProductServiceManager.sol +0 -39
  531. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  532. package/contracts/shared/InitializableCustom.sol +0 -177
  533. package/contracts/shared/TokenTransferLib.sol +0 -60
@@ -3,13 +3,12 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
- import {Amount} from "../type/Amount.sol";
7
6
  import {IService} from "../shared/IService.sol";
8
7
  import {IStaking} from "./IStaking.sol";
8
+
9
+ import {Amount} from "../type/Amount.sol";
9
10
  import {NftId} from "../type/NftId.sol";
10
- import {ObjectType} from "../type/ObjectType.sol";
11
11
  import {Seconds} from "../type/Seconds.sol";
12
- import {Timestamp} from "../type/Timestamp.sol";
13
12
  import {TokenHandler} from "../shared/TokenHandler.sol";
14
13
  import {UFixed} from "../type/UFixed.sol";
15
14
 
@@ -28,28 +27,31 @@ interface IStakingService is IService
28
27
  event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
29
28
  event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount, Amount stakeBalance);
30
29
  event LogStakingServiceUnstaked(NftId stakeNftId, address stakeOwner, Amount totalAmount);
30
+ event LogStakingServiceStakeRestaked(address stakeOwner, NftId indexed stakeNftId, NftId newStakeNftId, NftId indexed newTargetNftId, Amount indexed newStakeBalance);
31
31
 
32
32
  event LogStakingServiceRewardsUpdated(NftId stakeNftId);
33
33
  event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
34
34
 
35
35
  // modifiers
36
- error ErrorStakingServiceNotNftOwner(NftId nftId, address expectedOwner, address owner);
36
+ error ErrorStakingServiceNotStakingOwner(address account);
37
37
  error ErrorStakingServiceNotStaking(address stakingAddress);
38
38
  error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
39
39
 
40
40
  // create
41
+ error ErrorStakingServiceTargetUnknown(NftId targetNftId);
41
42
  error ErrorStakingServiceZeroTargetNftId();
42
43
  error ErrorStakingServiceNotTargetNftId(NftId targetNftId);
43
44
  error ErrorStakingServiceNotActiveTargetNftId(NftId targetNftId);
44
45
  error ErrorStakingServiceDipBalanceInsufficient(NftId targetNftId, uint256 amount, uint256 balance);
45
46
  error ErrorStakingServiceDipAllowanceInsufficient(NftId targetNftId, address tokenHandler, uint256 amount, uint256 allowance);
46
47
 
47
- /// @dev Set the protocol reward rate stake locking period to the specified duration.
48
- /// Permissioned: only staking owner
49
- // TODO implement
50
- // function setProtocolRewardRate(UFixed rewardRate) external;
51
- // function setProtocolLockingPeriod(Seconds lockingPeriod) external;
52
- // TODO also make sure that protocol rewards can be refilled and withdrawn
48
+
49
+ /// @dev Approves the staking token handler.
50
+ /// Reverts if the staking token handler wallet is not the token handler itself.
51
+ function approveTokenHandler(
52
+ IERC20Metadata token,
53
+ Amount amount
54
+ ) external;
53
55
 
54
56
  /// @dev creates/registers an on-chain instance staking target.
55
57
  /// function granted to instance service
@@ -67,6 +69,10 @@ interface IStakingService is IService
67
69
  /// Permissioned: Only owner of the specified target.
68
70
  function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate) external;
69
71
 
72
+ /// @dev Set the instance max staked amount to the specified value.
73
+ /// Permissioned: Only owner of the specified target.
74
+ function setInstanceMaxStakedAmount(NftId instanceNftId, Amount maxStakingAmount) external;
75
+
70
76
  /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the reward provider.
71
77
  /// unpermissioned: anybody may fill up staking reward reserves
72
78
  function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
@@ -111,7 +117,8 @@ interface IStakingService is IService
111
117
  )
112
118
  external
113
119
  returns (
114
- NftId newStakeNftId
120
+ NftId newStakeNftId,
121
+ Amount newStakeBalance
115
122
  );
116
123
 
117
124
 
@@ -148,13 +155,16 @@ interface IStakingService is IService
148
155
 
149
156
  function getDipToken()
150
157
  external
158
+ view
151
159
  returns (IERC20Metadata dip);
152
160
 
153
161
  function getTokenHandler()
154
162
  external
163
+ view
155
164
  returns (TokenHandler tokenHandler);
156
165
 
157
166
  function getStaking()
158
167
  external
168
+ view
159
169
  returns (IStaking staking);
160
170
  }
@@ -1,26 +1,31 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
4
6
  import {IRegistry} from "../registry/IRegistry.sol";
5
- import {IRegistryService} from "../registry/IRegistryService.sol";
7
+ import {IRelease} from "../registry/IRelease.sol";
6
8
  import {IStaking} from "./IStaking.sol";
7
9
  import {IVersionable} from "../upgradeability/IVersionable.sol";
8
10
 
9
11
  import {Amount, AmountLib} from "../type/Amount.sol";
10
12
  import {Component} from "../shared/Component.sol";
11
13
  import {IComponent} from "../shared/IComponent.sol";
14
+ import {IComponentService} from "../shared/IComponentService.sol";
12
15
  import {NftId} from "../type/NftId.sol";
13
- import {ObjectType, STAKING} from "../type/ObjectType.sol";
16
+ import {ObjectType, STAKE, STAKING} from "../type/ObjectType.sol";
14
17
  import {Seconds} from "../type/Seconds.sol";
15
- import {StakeManagerLib} from "./StakeManagerLib.sol";
18
+ import {Registerable} from "../shared/Registerable.sol";
19
+ import {StakingLib} from "./StakingLib.sol";
16
20
  import {StakingReader} from "./StakingReader.sol";
17
21
  import {StakingStore} from "./StakingStore.sol";
18
22
  import {TargetManagerLib} from "./TargetManagerLib.sol";
19
23
  import {Timestamp} from "../type/Timestamp.sol";
20
24
  import {TokenHandler} from "../shared/TokenHandler.sol";
25
+ import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
21
26
  import {TokenRegistry} from "../registry/TokenRegistry.sol";
22
27
  import {UFixed} from "../type/UFixed.sol";
23
- import {Version, VersionLib} from "../type/Version.sol";
28
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
24
29
  import {Versionable} from "../upgradeability/Versionable.sol";
25
30
 
26
31
  contract Staking is
@@ -29,13 +34,11 @@ contract Staking is
29
34
  IStaking
30
35
  {
31
36
  string public constant CONTRACT_NAME = "Staking";
32
- uint8 private constant GIF_MAJOR_VERSION = 3;
33
37
 
34
38
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
35
39
  bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
36
40
 
37
41
  struct StakingStorage {
38
- IRegistryService _registryService;
39
42
  TokenRegistry _tokenRegistry;
40
43
  TokenHandler _tokenHandler;
41
44
  StakingStore _store;
@@ -59,24 +62,60 @@ contract Staking is
59
62
  _;
60
63
  }
61
64
 
62
- // set/update staking reader
63
- function setStakingReader(StakingReader stakingReader)
65
+ //--- contract intitialization -------------------------------------------
66
+
67
+ function initializeTokenHandler()
64
68
  external
65
69
  virtual
66
- onlyOwner()
67
70
  {
68
- if(stakingReader.getStaking() != IStaking(this)) {
69
- revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
71
+ if (msg.sender != address(getRegistry())) {
72
+ revert ErrorStakingNotRegistry(msg.sender);
70
73
  }
71
74
 
72
- _getStakingStorage()._reader = stakingReader;
75
+ StakingStorage storage $ = _getStakingStorage();
76
+ address dipToken = _getStakingStorage()._tokenRegistry.getDipTokenAddress();
77
+ $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
78
+ address(getRegistry()),
79
+ address(this),
80
+ dipToken,
81
+ getRegistry().getAuthority());
82
+ }
83
+
84
+ //--- staking owner functions -------------------------------------------//
85
+
86
+ // TODO also make sure that protocol rewards can be refilled and withdrawn
87
+
88
+ /// @inheritdoc IStaking
89
+ function setProtocolRewardRate(UFixed rewardRate)
90
+ external
91
+ virtual
92
+ restricted()
93
+ onlyOwner()
94
+ {
95
+ NftId protocolNftId = getRegistry().getProtocolNftId();
96
+ UFixed oldRewardRate = _updateRewardRate(protocolNftId, rewardRate);
97
+ emit LogStakingProtocolRewardRateSet(protocolNftId, oldRewardRate, rewardRate);
98
+ }
99
+
100
+
101
+ /// @inheritdoc IStaking
102
+ function setProtocolLockingPeriod(Seconds lockingPeriod)
103
+ external
104
+ virtual
105
+ restricted()
106
+ onlyOwner()
107
+ {
108
+ NftId protocolNftId = getRegistry().getProtocolNftId();
109
+ Seconds oldLockingPeriod = _updateLockingPeriod(protocolNftId, lockingPeriod);
110
+ emit LogStakingProtocolLockingPeriodSet(protocolNftId, oldLockingPeriod, lockingPeriod);
73
111
  }
74
112
 
75
113
 
76
- // rate management
114
+ /// @inheritdoc IStaking
77
115
  function setStakingRate(uint256 chainId, address token, UFixed stakingRate)
78
116
  external
79
117
  virtual
118
+ restricted()
80
119
  onlyOwner()
81
120
  {
82
121
  StakingStorage storage $ = _getStakingStorage();
@@ -91,7 +130,31 @@ contract Staking is
91
130
  emit LogStakingStakingRateSet(chainId, token, oldStakingRate, stakingRate);
92
131
  }
93
132
 
94
- // target management
133
+
134
+ /// @inheritdoc IStaking
135
+ function setStakingReader(StakingReader stakingReader)
136
+ external
137
+ virtual
138
+ onlyOwner()
139
+ {
140
+ if(stakingReader.getStaking() != IStaking(this)) {
141
+ revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
142
+ }
143
+
144
+ _getStakingStorage()._reader = stakingReader;
145
+ }
146
+
147
+
148
+ /// @inheritdoc IStaking
149
+ function approveTokenHandler(IERC20Metadata token, Amount amount)
150
+ public
151
+ restricted()
152
+ onlyOwner()
153
+ {
154
+ _approveTokenHandler(token, amount);
155
+ }
156
+
157
+ //--- target management -------------------------------------------------//
95
158
 
96
159
  function registerTarget(
97
160
  NftId targetNftId,
@@ -118,7 +181,21 @@ contract Staking is
118
181
  objectType: expectedObjectType,
119
182
  chainId: chainId,
120
183
  lockingPeriod: initialLockingPeriod,
121
- rewardRate: initialRewardRate}));
184
+ rewardRate: initialRewardRate,
185
+ maxStakedAmount: AmountLib.max()}));
186
+
187
+ emit LogStakingTargetRegistered(targetNftId, expectedObjectType, initialLockingPeriod, initialRewardRate, AmountLib.max());
188
+ }
189
+
190
+
191
+ function setRewardRate(NftId targetNftId, UFixed rewardRate)
192
+ external
193
+ virtual
194
+ restricted()
195
+ onlyTarget(targetNftId)
196
+ {
197
+ UFixed oldRewardRate = _updateRewardRate(targetNftId, rewardRate);
198
+ emit LogStakingRewardRateSet(targetNftId, oldRewardRate, rewardRate);
122
199
  }
123
200
 
124
201
 
@@ -131,39 +208,24 @@ contract Staking is
131
208
  restricted()
132
209
  onlyTarget(targetNftId)
133
210
  {
134
- (
135
- Seconds oldLockingPeriod,
136
- TargetInfo memory targetInfo
137
- ) = TargetManagerLib.updateLockingPeriod(
138
- this,
139
- targetNftId,
140
- lockingPeriod);
141
-
142
- _getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
143
-
211
+ Seconds oldLockingPeriod = _updateLockingPeriod(targetNftId, lockingPeriod);
144
212
  emit LogStakingLockingPeriodSet(targetNftId, oldLockingPeriod, lockingPeriod);
145
213
  }
146
214
 
147
- // TODO add function to set protocol reward rate: onlyOwner
148
- // get protocol nft id (from where)
149
215
 
150
- function setRewardRate(NftId targetNftId, UFixed rewardRate)
216
+ function setMaxStakedAmount(NftId targetNftId, Amount maxStakedAmount)
151
217
  external
152
218
  virtual
153
219
  restricted()
154
220
  onlyTarget(targetNftId)
155
221
  {
156
- (
157
- UFixed oldRewardRate,
158
- TargetInfo memory targetInfo
159
- ) = TargetManagerLib.updateRewardRate(
160
- this,
161
- targetNftId,
162
- rewardRate);
222
+ IStaking.TargetInfo memory targetInfo = getStakingReader().getTargetInfo(targetNftId);
223
+
224
+ targetInfo.maxStakedAmount = maxStakedAmount;
163
225
 
164
226
  _getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
165
227
 
166
- emit LogStakingRewardRateSet(targetNftId, oldRewardRate, rewardRate);
228
+ emit LogStakingMaxStakedAmountSet(targetNftId, maxStakedAmount);
167
229
  }
168
230
 
169
231
 
@@ -198,7 +260,7 @@ contract Staking is
198
260
  returns (Amount newBalance)
199
261
  {
200
262
  StakingStorage storage $ = _getStakingStorage();
201
- uint chainId = $._reader.getTargetInfo(targetNftId).chainId;
263
+ uint256 chainId = $._reader.getTargetInfo(targetNftId).chainId;
202
264
  UFixed stakingRate = $._reader.getStakingRate(chainId, token);
203
265
  newBalance = $._store.increaseTotalValueLocked(targetNftId, stakingRate, token, amount);
204
266
  }
@@ -211,7 +273,7 @@ contract Staking is
211
273
  returns (Amount newBalance)
212
274
  {
213
275
  StakingStorage storage $ = _getStakingStorage();
214
- uint chainId = $._reader.getTargetInfo(targetNftId).chainId;
276
+ uint256 chainId = $._reader.getTargetInfo(targetNftId).chainId;
215
277
  UFixed stakingRate = $._reader.getStakingRate(chainId, token);
216
278
  newBalance = $._store.decreaseTotalValueLocked(targetNftId, stakingRate, token, amount);
217
279
  }
@@ -247,7 +309,7 @@ contract Staking is
247
309
  restricted() // only staking service
248
310
  {
249
311
  StakingStorage storage $ = _getStakingStorage();
250
- Timestamp lockedUntil = StakeManagerLib.checkCreateParameters(
312
+ Timestamp lockedUntil = StakingLib.checkCreateParameters(
251
313
  $._reader,
252
314
  targetNftId,
253
315
  stakeAmount);
@@ -277,7 +339,7 @@ contract Staking is
277
339
  returns (Amount stakeBalance)
278
340
  {
279
341
  StakingStorage storage $ = _getStakingStorage();
280
- stakeBalance = StakeManagerLib.stake(
342
+ stakeBalance = StakingLib.stake(
281
343
  getRegistry(),
282
344
  $._reader,
283
345
  $._store,
@@ -288,20 +350,25 @@ contract Staking is
288
350
 
289
351
  function restake(
290
352
  NftId stakeNftId,
291
- NftId newTargetNftId
353
+ NftId newStakeNftId
292
354
  )
293
355
  external
294
356
  virtual
295
357
  restricted() // only staking service
296
358
  onlyStake(stakeNftId)
297
- returns (NftId newStakeNftId)
359
+ returns (Amount newStakeBalance)
298
360
  {
361
+ _checkNftType(stakeNftId, STAKE());
362
+ _checkNftType(newStakeNftId, STAKE());
363
+
299
364
  // TODO add check that allows additional staking amount
300
365
  StakingStorage storage $ = _getStakingStorage();
301
-
302
- // TODO implement
303
- }
304
-
366
+ newStakeBalance = StakingLib.restake(
367
+ $._reader,
368
+ $._store,
369
+ stakeNftId,
370
+ newStakeNftId);
371
+ }
305
372
 
306
373
  function updateRewards(NftId stakeNftId)
307
374
  external
@@ -349,9 +416,10 @@ contract Staking is
349
416
  Amount rewardsClaimedAmount
350
417
  )
351
418
  {
352
- // TODO add check that stake locking is in the past
353
419
  StakingStorage storage $ = _getStakingStorage();
354
-
420
+
421
+ StakingLib.checkUnstakeParameters($._reader, stakeNftId);
422
+
355
423
  // update rewards since last update
356
424
  NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
357
425
 
@@ -370,56 +438,17 @@ contract Staking is
370
438
  }
371
439
 
372
440
 
373
-
374
- //--- other functions ---------------------------------------------------//
375
-
376
- function collectDipAmount(address from, Amount dipAmount)
377
- external
378
- restricted() // only staking service
379
- {
380
- TokenHandler tokenHandler = getTokenHandler();
381
- address stakingWallet = getWallet();
382
-
383
- StakeManagerLib.checkDipBalanceAndAllowance(
384
- getToken(),
385
- from,
386
- address(tokenHandler),
387
- dipAmount);
388
-
389
- // TODO: centralize token handling (issue #471)
390
- tokenHandler.transfer(from, stakingWallet, dipAmount);
391
- }
392
-
393
-
394
- function transferDipAmount(address to, Amount dipAmount)
395
- external
396
- restricted() // only staking service
397
- {
398
- TokenHandler tokenHandler = getTokenHandler();
399
- address stakingWallet = getWallet();
400
-
401
- StakeManagerLib.checkDipBalanceAndAllowance(
402
- getToken(),
403
- stakingWallet,
404
- address(tokenHandler),
405
- dipAmount);
406
-
407
- // TODO: centralize token handling (issue #471)
408
- tokenHandler.transfer(stakingWallet, to, dipAmount);
409
- }
410
-
411
-
412
441
  //--- view functions ----------------------------------------------------//
413
442
 
414
- function getStakingReader() public view returns (StakingReader reader) {
443
+ function getStakingReader() public virtual view returns (StakingReader reader) {
415
444
  return _getStakingStorage()._reader;
416
445
  }
417
446
 
418
- function getStakingStore() external view returns (StakingStore stakingStore) {
447
+ function getStakingStore() external virtual view returns (StakingStore stakingStore) {
419
448
  return _getStakingStorage()._store;
420
449
  }
421
450
 
422
- function getTokenRegistryAddress() external view returns (address tokenRegistry) {
451
+ function getTokenRegistryAddress() external virtual view returns (address tokenRegistry) {
423
452
  return address(_getStakingStorage()._tokenRegistry);
424
453
  }
425
454
 
@@ -427,18 +456,65 @@ contract Staking is
427
456
  return _getStakingStorage()._tokenHandler;
428
457
  }
429
458
 
430
- // from Versionable
459
+ // from IRegisterable
460
+ function getRelease()
461
+ public
462
+ pure
463
+ virtual override (IRelease, Registerable)
464
+ returns(VersionPart)
465
+ {
466
+ return VersionPartLib.toVersionPart(3);
467
+ }
468
+
469
+ // from IVersionable
431
470
  function getVersion()
432
471
  public
433
472
  pure
434
- virtual override (IVersionable, Versionable)
473
+ virtual override (Component, IVersionable, Versionable)
435
474
  returns(Version)
436
475
  {
437
- return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
476
+ return VersionLib.toVersion(3,0,0);
438
477
  }
439
478
 
440
479
  //--- internal functions ------------------------------------------------//
441
480
 
481
+ function _updateRewardRate(
482
+ NftId targetNftId,
483
+ UFixed rewardRate
484
+ )
485
+ internal
486
+ virtual
487
+ returns (UFixed oldRewardRate)
488
+ {
489
+
490
+ TargetInfo memory targetInfo;
491
+ (oldRewardRate, targetInfo) = TargetManagerLib.updateRewardRate(
492
+ this,
493
+ targetNftId,
494
+ rewardRate);
495
+
496
+ _getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
497
+ }
498
+
499
+
500
+ function _updateLockingPeriod(
501
+ NftId targetNftId,
502
+ Seconds lockingPeriod
503
+ )
504
+ internal
505
+ virtual
506
+ returns (Seconds oldLockingPeriod)
507
+ {
508
+ TargetInfo memory targetInfo;
509
+ (oldLockingPeriod, targetInfo) = TargetManagerLib.updateLockingPeriod(
510
+ this,
511
+ targetNftId,
512
+ lockingPeriod);
513
+
514
+ _getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
515
+ }
516
+
517
+
442
518
  function _updateRewards(
443
519
  StakingReader reader,
444
520
  StakingStore store,
@@ -451,7 +527,7 @@ contract Staking is
451
527
  UFixed rewardRate;
452
528
 
453
529
  (targetNftId, rewardRate) = reader.getTargetRewardRate(stakeNftId);
454
- (Amount rewardIncrement, ) = StakeManagerLib.calculateRewardIncrease(
530
+ (Amount rewardIncrement, ) = StakingLib.calculateRewardIncrease(
455
531
  reader,
456
532
  stakeNftId,
457
533
  rewardRate);
@@ -463,13 +539,26 @@ contract Staking is
463
539
  }
464
540
 
465
541
 
542
+ function _approveTokenHandler(
543
+ IERC20Metadata token,
544
+ Amount amount)
545
+ internal
546
+ virtual override
547
+ {
548
+ IComponentService(_getServiceAddress(STAKING())).approveTokenHandler(
549
+ token,
550
+ amount);
551
+ }
552
+
553
+
554
+ /// @dev top level initializer (upgradable contract)
466
555
  function _initialize(
467
- address owner,
556
+ address,
468
557
  bytes memory data
469
558
  )
470
559
  internal
471
560
  virtual override
472
- initializer
561
+ initializer()
473
562
  {
474
563
  (
475
564
  address registryAddress,
@@ -481,30 +570,30 @@ contract Staking is
481
570
  // only admin(authority) and dip token address are set in registry at this point
482
571
  IRegistry registry = IRegistry(registryAddress);
483
572
  address authority = registry.getAuthority();
484
- TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
485
- address dipTokenAddress = tokenRegistry.getDipTokenAddress();
486
573
 
487
- initializeComponent(
574
+ // wiring to external contracts
575
+ StakingStorage storage $ = _getStakingStorage();
576
+ $._protocolNftId = registry.getProtocolNftId();
577
+ $._store = StakingStore(stakingStoreAddress);
578
+ $._reader = StakingStore(stakingStoreAddress).getStakingReader();
579
+ $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
580
+
581
+ _initializeComponent(
488
582
  authority,
489
583
  registryAddress,
490
- registry.getNftId(),
584
+ registry.getNftId(), // parent nft id
491
585
  CONTRACT_NAME,
492
- dipTokenAddress,
493
586
  STAKING(),
494
587
  false, // is interceptor
495
588
  stakingOwner,
496
589
  "", // registry data
497
590
  ""); // component data
498
591
 
499
- // wiring to external contracts
500
- StakingStorage storage $ = _getStakingStorage();
501
- $._protocolNftId = getRegistry().getProtocolNftId();
502
- $._store = StakingStore(stakingStoreAddress);
503
- $._reader = StakingStore(stakingStoreAddress).getStakingReader();
504
- $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
505
- $._tokenHandler = new TokenHandler(address(getToken()));
592
+ // HINT: protocol target is created in the StakingStore constructor.
593
+ // This allows setting up the protocol target before the full
594
+ // staking authorization setup is in place.
506
595
 
507
- registerInterface(type(IStaking).interfaceId);
596
+ _registerInterface(type(IStaking).interfaceId);
508
597
  }
509
598
 
510
599