@etherisc/gif-next 0.0.2-f13c010-035 → 0.0.2-f15b559-661

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 (467) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +148 -62
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
  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 +82 -12
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +108 -188
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +244 -190
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +82 -56
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -73
  38. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +101 -164
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +152 -33
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +256 -296
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +139 -131
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +638 -301
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  62. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  64. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -39
  66. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
  68. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/Instance.sol/Instance.json +163 -56
  70. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +375 -99
  72. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
  74. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +586 -215
  76. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
  78. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
  80. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +412 -372
  82. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  84. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  86. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  89. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  91. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  93. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  94. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  95. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  100. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
  103. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
  105. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +44 -58
  108. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  110. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
  112. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
  114. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
  116. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
  118. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +152 -33
  120. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +127 -331
  122. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +53 -87
  124. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +56 -136
  126. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
  128. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +164 -217
  130. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  131. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
  132. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  134. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -353
  136. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -51
  138. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
  140. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
  142. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
  144. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
  146. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -179
  148. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +74 -64
  150. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  152. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  154. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
  156. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  158. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
  160. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +37 -7
  162. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +211 -180
  164. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  165. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  166. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +76 -50
  168. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
  170. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
  172. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  173. package/artifacts/contracts/product/Product.sol/Product.json +163 -175
  174. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.json +114 -77
  176. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +62 -24
  178. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  180. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
  182. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  184. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  185. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  186. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  187. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/Registry.sol/Registry.json +88 -40
  189. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +262 -220
  191. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  193. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
  195. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  196. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  197. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  199. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +318 -52
  201. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  203. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  204. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  205. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  206. package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
  207. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +225 -439
  209. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -64
  211. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  213. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  215. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  221. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
  223. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +125 -282
  225. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
  227. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  228. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  229. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  233. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  236. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  237. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  238. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
  239. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  240. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  241. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  242. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  243. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  245. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  246. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  247. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  249. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  250. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  251. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  252. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  253. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +289 -112
  255. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  257. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  258. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +70 -30
  259. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  260. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
  261. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  262. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +56 -3
  263. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  264. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +33 -33
  265. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  266. package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
  267. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  269. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
  271. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
  273. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +101 -49
  275. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +47 -25
  277. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  279. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  280. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  281. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  282. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  284. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  287. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  289. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  291. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  293. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  294. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  295. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  297. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  298. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  299. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  301. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  303. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  305. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  307. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  309. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  311. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  314. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  316. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  320. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  322. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  324. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  326. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  327. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  328. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  329. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  330. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  331. package/contracts/accounting/AccountingService.sol +262 -0
  332. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  333. package/contracts/accounting/IAccountingService.sol +45 -0
  334. package/contracts/authorization/AccessAdmin.sol +177 -84
  335. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  336. package/contracts/authorization/Authorization.sol +277 -229
  337. package/contracts/authorization/IAccessAdmin.sol +13 -7
  338. package/contracts/authorization/IAuthorization.sol +15 -1
  339. package/contracts/distribution/BasicDistribution.sol +13 -11
  340. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  341. package/contracts/distribution/Distribution.sol +42 -38
  342. package/contracts/distribution/DistributionService.sol +54 -51
  343. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  344. package/contracts/distribution/IDistributionService.sol +19 -19
  345. package/contracts/examples/fire/FirePool.sol +22 -5
  346. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  347. package/contracts/examples/fire/FireProduct.sol +32 -10
  348. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  349. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  350. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  351. package/contracts/examples/unpermissioned/SimplePool.sol +33 -3
  352. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  353. package/contracts/examples/unpermissioned/SimpleProduct.sol +51 -25
  354. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  355. package/contracts/instance/BundleSet.sol +42 -38
  356. package/contracts/instance/IInstance.sol +13 -9
  357. package/contracts/instance/IInstanceService.sol +9 -9
  358. package/contracts/instance/Instance.sol +33 -18
  359. package/contracts/instance/InstanceAdmin.sol +242 -84
  360. package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
  361. package/contracts/instance/InstanceReader.sol +174 -32
  362. package/contracts/instance/InstanceService.sol +73 -82
  363. package/contracts/instance/InstanceServiceManager.sol +1 -1
  364. package/contracts/instance/InstanceStore.sol +13 -2
  365. package/contracts/instance/RiskSet.sol +118 -0
  366. package/contracts/instance/base/ObjectCounter.sol +1 -2
  367. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  368. package/contracts/instance/base/ObjectSet.sol +31 -33
  369. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  370. package/contracts/instance/module/IComponents.sol +4 -4
  371. package/contracts/instance/module/IDistribution.sol +2 -1
  372. package/contracts/instance/module/IPolicy.sol +2 -1
  373. package/contracts/instance/module/IRisk.sol +3 -0
  374. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  375. package/contracts/oracle/Oracle.sol +1 -1
  376. package/contracts/oracle/OracleService.sol +92 -73
  377. package/contracts/oracle/OracleServiceManager.sol +1 -1
  378. package/contracts/pool/BasicPool.sol +24 -3
  379. package/contracts/pool/BasicPoolAuthorization.sol +27 -8
  380. package/contracts/pool/BundleService.sol +47 -145
  381. package/contracts/pool/BundleServiceManager.sol +1 -1
  382. package/contracts/pool/IBundleService.sol +15 -43
  383. package/contracts/pool/IPoolComponent.sol +1 -7
  384. package/contracts/pool/IPoolService.sol +58 -60
  385. package/contracts/pool/Pool.sol +106 -96
  386. package/contracts/pool/PoolLib.sol +216 -0
  387. package/contracts/pool/PoolService.sol +427 -214
  388. package/contracts/pool/PoolServiceManager.sol +1 -1
  389. package/contracts/product/ApplicationService.sol +15 -15
  390. package/contracts/product/ApplicationServiceManager.sol +1 -1
  391. package/contracts/product/BasicProduct.sol +9 -11
  392. package/contracts/product/BasicProductAuthorization.sol +24 -10
  393. package/contracts/product/ClaimService.sol +157 -137
  394. package/contracts/product/ClaimServiceManager.sol +1 -1
  395. package/contracts/product/IApplicationService.sol +5 -2
  396. package/contracts/product/IClaimService.sol +14 -2
  397. package/contracts/product/IPolicyService.sol +26 -11
  398. package/contracts/product/IProductComponent.sol +4 -1
  399. package/contracts/product/IRiskService.sol +5 -8
  400. package/contracts/product/PolicyService.sol +244 -253
  401. package/contracts/product/PolicyServiceLib.sol +65 -0
  402. package/contracts/product/PolicyServiceManager.sol +1 -1
  403. package/contracts/product/PricingService.sol +23 -19
  404. package/contracts/product/PricingServiceManager.sol +3 -3
  405. package/contracts/product/Product.sol +66 -52
  406. package/contracts/product/RiskService.sol +79 -31
  407. package/contracts/product/RiskServiceManager.sol +1 -1
  408. package/contracts/registry/ChainNft.sol +4 -2
  409. package/contracts/registry/IRegistry.sol +10 -15
  410. package/contracts/registry/IRelease.sol +26 -0
  411. package/contracts/registry/Registry.sol +16 -3
  412. package/contracts/registry/RegistryAdmin.sol +132 -226
  413. package/contracts/registry/RegistryService.sol +3 -3
  414. package/contracts/registry/RegistryServiceManager.sol +1 -1
  415. package/contracts/registry/ReleaseAdmin.sol +245 -0
  416. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  417. package/contracts/registry/ReleaseRegistry.sol +129 -119
  418. package/contracts/registry/ServiceAuthorizationV3.sol +93 -40
  419. package/contracts/registry/TokenRegistry.sol +6 -8
  420. package/contracts/shared/Component.sol +61 -105
  421. package/contracts/shared/ComponentService.sol +301 -295
  422. package/contracts/shared/ComponentServiceManager.sol +1 -1
  423. package/contracts/shared/ComponentVerifyingService.sol +16 -14
  424. package/contracts/shared/ContractLib.sol +224 -9
  425. package/contracts/shared/IComponent.sol +4 -17
  426. package/contracts/shared/IComponentService.sol +16 -25
  427. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  428. package/contracts/shared/IRegisterable.sol +15 -4
  429. package/contracts/shared/IService.sol +3 -5
  430. package/contracts/shared/InstanceLinkedComponent.sol +4 -20
  431. package/contracts/shared/NftOwnable.sol +4 -4
  432. package/contracts/shared/PolicyHolder.sol +1 -1
  433. package/contracts/shared/Registerable.sol +44 -20
  434. package/contracts/shared/RegistryLinked.sol +7 -13
  435. package/contracts/shared/Service.sol +8 -27
  436. package/contracts/shared/TokenHandler.sol +263 -105
  437. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  438. package/contracts/staking/IStaking.sol +5 -8
  439. package/contracts/staking/IStakingService.sol +8 -0
  440. package/contracts/staking/StakeManagerLib.sol +1 -1
  441. package/contracts/staking/Staking.sol +62 -33
  442. package/contracts/staking/StakingReader.sol +1 -1
  443. package/contracts/staking/StakingService.sol +35 -12
  444. package/contracts/staking/StakingServiceManager.sol +5 -4
  445. package/contracts/type/Key32.sol +2 -2
  446. package/contracts/type/Key32Set.sol +62 -0
  447. package/contracts/type/NftId.sol +6 -0
  448. package/contracts/type/ObjectType.sol +48 -21
  449. package/contracts/type/RiskId.sol +26 -8
  450. package/contracts/type/RoleId.sol +24 -4
  451. package/contracts/type/Selector.sol +5 -0
  452. package/contracts/type/Timestamp.sol +0 -5
  453. package/contracts/type/UFixed.sol +9 -119
  454. package/contracts/type/Version.sol +15 -5
  455. package/contracts/upgradeability/ProxyManager.sol +1 -1
  456. package/package.json +3 -3
  457. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  458. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  459. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  460. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  461. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
  462. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
  463. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  464. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  465. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  466. package/contracts/instance/module/IAccess.sol +0 -46
  467. package/contracts/shared/ComponentServiceHelperLib.sol +0 -118
@@ -5,8 +5,16 @@ import {TokenHandler} from "./TokenHandler.sol";
5
5
 
6
6
  library TokenHandlerDeployerLib {
7
7
 
8
- function deployTokenHandler(address token, address authority, address initalAllowedWallet) public returns (TokenHandler) {
9
- return new TokenHandler(address(token), authority, initalAllowedWallet);
8
+ function deployTokenHandler(
9
+ address registry,
10
+ address component,
11
+ address token,
12
+ address authority
13
+ )
14
+ public
15
+ returns (TokenHandler)
16
+ {
17
+ return new TokenHandler(registry, component, token, authority);
10
18
  }
11
19
 
12
20
  }
@@ -30,6 +30,9 @@ interface IStaking is
30
30
  error ErrorStakingNotStakingOwner();
31
31
  error ErrorStakingNotNftOwner(NftId nftId);
32
32
 
33
+ // initializeTokenHandler
34
+ error ErrorStakingNotRegistry(address registry);
35
+
33
36
  // staking rate
34
37
  error ErrorStakingTokenNotRegistered(uint256 chainId, address token);
35
38
 
@@ -64,6 +67,8 @@ interface IStaking is
64
67
  UFixed rewardRate;
65
68
  }
66
69
 
70
+ function initializeTokenHandler() external;
71
+
67
72
  // staking rate management
68
73
 
69
74
  /// @dev sets the rate that converts 1 token of total value locked into the
@@ -153,14 +158,6 @@ interface IStaking is
153
158
  Amount rewardsClaimedAmount
154
159
  );
155
160
 
156
- //--- helper functions --------------------------------------------------//
157
-
158
- /// @dev transfers the specified amount of dips from the from address to the staking wallet.
159
- function collectDipAmount(address from, Amount dipAmount) external;
160
-
161
- /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
162
- function transferDipAmount(address to, Amount dipAmount) external;
163
-
164
161
  //--- view and pure functions -------------------------------------------//
165
162
 
166
163
  function getStakingStore() external view returns (StakingStore stakingStore);
@@ -31,6 +31,7 @@ interface IStakingService is IService
31
31
  event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
32
32
 
33
33
  // modifiers
34
+ error ErrorStakingServiceNotStakingOwner(address account);
34
35
  error ErrorStakingServiceNotStaking(address stakingAddress);
35
36
  error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
36
37
 
@@ -48,6 +49,13 @@ interface IStakingService is IService
48
49
  // function setProtocolLockingPeriod(Seconds lockingPeriod) external;
49
50
  // TODO also make sure that protocol rewards can be refilled and withdrawn
50
51
 
52
+ /// @dev Approves the staking token handler.
53
+ /// Reverts if the staking token handler wallet is not the token handler itself.
54
+ function approveTokenHandler(
55
+ IERC20Metadata token,
56
+ Amount amount
57
+ ) external;
58
+
51
59
  /// @dev creates/registers an on-chain instance staking target.
52
60
  /// function granted to instance service
53
61
  function createInstanceTarget(
@@ -51,7 +51,7 @@ library StakeManagerLib {
51
51
 
52
52
  // TODO check that additional dip, rewards and rewards increment
53
53
  // are still ok with max target staking amount
54
- NftId targetNftId = registry.getObjectInfo(stakeNftId).parentNftId;
54
+ NftId targetNftId = registry.getParentNftId(stakeNftId);
55
55
 
56
56
  stakingStore.restakeRewards(
57
57
  stakeNftId,
@@ -1,17 +1,22 @@
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
7
  import {IRegistryService} from "../registry/IRegistryService.sol";
8
+ import {IRelease} from "../registry/IRelease.sol";
6
9
  import {IStaking} from "./IStaking.sol";
7
10
  import {IVersionable} from "../upgradeability/IVersionable.sol";
8
11
 
9
12
  import {Amount, AmountLib} from "../type/Amount.sol";
10
13
  import {Component} from "../shared/Component.sol";
11
14
  import {IComponent} from "../shared/IComponent.sol";
15
+ import {IComponentService} from "../shared/IComponentService.sol";
12
16
  import {NftId} from "../type/NftId.sol";
13
- import {ObjectType, STAKING} from "../type/ObjectType.sol";
17
+ import {ObjectType, COMPONENT, STAKING} from "../type/ObjectType.sol";
14
18
  import {Seconds} from "../type/Seconds.sol";
19
+ import {Registerable} from "../shared/Registerable.sol";
15
20
  import {StakeManagerLib} from "./StakeManagerLib.sol";
16
21
  import {StakingReader} from "./StakingReader.sol";
17
22
  import {StakingStore} from "./StakingStore.sol";
@@ -21,7 +26,7 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
21
26
  import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
22
27
  import {TokenRegistry} from "../registry/TokenRegistry.sol";
23
28
  import {UFixed} from "../type/UFixed.sol";
24
- import {Version, VersionLib} from "../type/Version.sol";
29
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
25
30
  import {Versionable} from "../upgradeability/Versionable.sol";
26
31
 
27
32
  contract Staking is
@@ -35,7 +40,6 @@ contract Staking is
35
40
  bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
36
41
 
37
42
  struct StakingStorage {
38
- IRegistryService _registryService;
39
43
  TokenRegistry _tokenRegistry;
40
44
  TokenHandler _tokenHandler;
41
45
  StakingStore _store;
@@ -59,6 +63,31 @@ contract Staking is
59
63
  _;
60
64
  }
61
65
 
66
+ function initializeTokenHandler()
67
+ external
68
+ {
69
+ if (msg.sender != address(getRegistry())) {
70
+ revert ErrorStakingNotRegistry(msg.sender);
71
+ }
72
+
73
+ StakingStorage storage $ = _getStakingStorage();
74
+ $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
75
+ address(getRegistry()),
76
+ address(this),
77
+ address(getToken()),
78
+ getRegistry().getAuthority());
79
+ }
80
+
81
+
82
+ function approveTokenHandler(IERC20Metadata token, Amount amount)
83
+ public
84
+ restricted()
85
+ onlyOwner()
86
+ {
87
+ _approveTokenHandler(token, amount);
88
+ }
89
+
90
+
62
91
  // set/update staking reader
63
92
  function setStakingReader(StakingReader stakingReader)
64
93
  external
@@ -371,25 +400,6 @@ contract Staking is
371
400
  }
372
401
 
373
402
 
374
-
375
- //--- other functions ---------------------------------------------------//
376
-
377
- function collectDipAmount(address from, Amount dipAmount)
378
- external
379
- restricted() // only staking service
380
- {
381
- getTokenHandler().collectTokens(from, getWallet(), dipAmount);
382
- }
383
-
384
-
385
- function transferDipAmount(address to, Amount dipAmount)
386
- external
387
- restricted() // only staking service
388
- {
389
- getTokenHandler().distributeTokens(getWallet(), to, dipAmount);
390
- }
391
-
392
-
393
403
  //--- view functions ----------------------------------------------------//
394
404
 
395
405
  function getStakingReader() public view returns (StakingReader reader) {
@@ -408,14 +418,24 @@ contract Staking is
408
418
  return _getStakingStorage()._tokenHandler;
409
419
  }
410
420
 
411
- // from Versionable
421
+ // from IRegisterable
422
+ function getRelease()
423
+ public
424
+ pure
425
+ virtual override (IRelease, Registerable)
426
+ returns(VersionPart)
427
+ {
428
+ return VersionPartLib.toVersionPart(3);
429
+ }
430
+
431
+ // from IVersionable
412
432
  function getVersion()
413
433
  public
414
434
  pure
415
- virtual override (IVersionable, Versionable)
435
+ virtual override (Component, IVersionable, Versionable)
416
436
  returns(Version)
417
437
  {
418
- return VersionLib.toVersion(GIF_RELEASE,0,0);
438
+ return VersionLib.toVersion(3,0,0);
419
439
  }
420
440
 
421
441
  //--- internal functions ------------------------------------------------//
@@ -444,6 +464,16 @@ contract Staking is
444
464
  }
445
465
 
446
466
 
467
+ function _approveTokenHandler(IERC20Metadata token, Amount amount)
468
+ internal
469
+ virtual override
470
+ {
471
+ IComponentService(_getServiceAddress(STAKING())).approveTokenHandler(
472
+ token,
473
+ amount);
474
+ }
475
+
476
+
447
477
  function _initialize(
448
478
  address owner,
449
479
  bytes memory data
@@ -465,6 +495,13 @@ contract Staking is
465
495
  TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
466
496
  address dipTokenAddress = tokenRegistry.getDipTokenAddress();
467
497
 
498
+ // wiring to external contracts
499
+ StakingStorage storage $ = _getStakingStorage();
500
+ $._protocolNftId = registry.getProtocolNftId();
501
+ $._store = StakingStore(stakingStoreAddress);
502
+ $._reader = StakingStore(stakingStoreAddress).getStakingReader();
503
+ $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
504
+
468
505
  _initializeComponent(
469
506
  authority,
470
507
  registryAddress,
@@ -477,14 +514,6 @@ contract Staking is
477
514
  "", // registry data
478
515
  ""); // component data
479
516
 
480
- // wiring to external contracts
481
- StakingStorage storage $ = _getStakingStorage();
482
- $._protocolNftId = getRegistry().getProtocolNftId();
483
- $._store = StakingStore(stakingStoreAddress);
484
- $._reader = StakingStore(stakingStoreAddress).getStakingReader();
485
- $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
486
- $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(dipTokenAddress, authority, address(this));
487
-
488
517
  _registerInterface(type(IStaking).interfaceId);
489
518
  }
490
519
 
@@ -93,7 +93,7 @@ contract StakingReader is
93
93
 
94
94
 
95
95
  function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
96
- return _registry.getObjectInfo(stakeNftId).parentNftId;
96
+ return _registry.getParentNftId(stakeNftId);
97
97
  }
98
98
 
99
99
 
@@ -32,6 +32,28 @@ contract StakingService is
32
32
  TokenHandler _tokenHandler;
33
33
  }
34
34
 
35
+
36
+ modifier onlyStaking() {
37
+ if (msg.sender != address(_getStakingServiceStorage()._staking)) {
38
+ revert ErrorStakingServiceNotStaking(msg.sender);
39
+ }
40
+ _;
41
+ }
42
+
43
+
44
+ function approveTokenHandler(
45
+ IERC20Metadata token,
46
+ Amount amount
47
+ )
48
+ external
49
+ virtual
50
+ onlyStaking()
51
+ {
52
+ _getStakingServiceStorage()._tokenHandler.approve(
53
+ token, amount);
54
+ }
55
+
56
+
35
57
  function createInstanceTarget(
36
58
  NftId targetNftId,
37
59
  Seconds initialLockingPeriod,
@@ -113,7 +135,7 @@ contract StakingService is
113
135
  // transfer withdrawal amount to target owner
114
136
  address instanceOwner = getRegistry().ownerOf(instanceNftId);
115
137
  emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
116
- $._staking.transferDipAmount(
138
+ $._tokenHandler.pushToken(
117
139
  instanceOwner,
118
140
  dipAmount);
119
141
  }
@@ -161,8 +183,8 @@ contract StakingService is
161
183
  emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
162
184
 
163
185
  // collect staked dip by staking
164
- $._staking.collectDipAmount(
165
- stakeOwner,
186
+ $._tokenHandler.pullToken(
187
+ stakeOwner,
166
188
  dipAmount);
167
189
  }
168
190
 
@@ -189,7 +211,7 @@ contract StakingService is
189
211
  // collect staked dip by staking
190
212
  if (dipAmount.gtz()) {
191
213
  emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
192
- $._staking.collectDipAmount(
214
+ $._tokenHandler.pullToken(
193
215
  stakeOwner,
194
216
  dipAmount);
195
217
  }
@@ -244,7 +266,7 @@ contract StakingService is
244
266
 
245
267
  Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
246
268
  emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
247
- $._staking.transferDipAmount(
269
+ $._tokenHandler.pushToken(
248
270
  stakeOwner,
249
271
  rewardsClaimedAmount);
250
272
  }
@@ -268,8 +290,9 @@ contract StakingService is
268
290
 
269
291
  Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
270
292
  emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
271
- $._staking.transferDipAmount(
272
- stakeOwner,
293
+
294
+ $._tokenHandler.pushToken(
295
+ stakeOwner,
273
296
  totalAmount);
274
297
  }
275
298
 
@@ -327,15 +350,15 @@ contract StakingService is
327
350
  {
328
351
  (
329
352
  address authority,
330
- address registryAddress,
331
- address stakingAddress
353
+ address registry,
354
+ address staking
332
355
  ) = abi.decode(data, (address, address, address));
333
356
 
334
- _initializeService(registryAddress, authority, owner);
357
+ __Service_init(authority, registry, owner);
335
358
 
336
359
  StakingServiceStorage storage $ = _getStakingServiceStorage();
337
360
  $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
338
- $._staking = _registerStaking(stakingAddress);
361
+ $._staking = _registerStaking(staking);
339
362
  $._dip = $._staking.getToken();
340
363
  $._tokenHandler = $._staking.getTokenHandler();
341
364
 
@@ -388,7 +411,7 @@ contract StakingService is
388
411
  emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
389
412
 
390
413
  // collect reward dip from provider
391
- $._staking.collectDipAmount(
414
+ $._tokenHandler.pullToken(
392
415
  rewardProvider,
393
416
  dipAmount);
394
417
  }
@@ -15,17 +15,18 @@ contract StakingServiceManager is
15
15
  /// @dev initializes proxy manager with service implementation
16
16
  constructor(
17
17
  address authority,
18
- address registryAddress,
18
+ address registry,
19
19
  bytes32 salt
20
20
  )
21
21
  {
22
22
  StakingService svc = new StakingService();
23
23
  bytes memory data = abi.encode(
24
24
  authority,
25
- registryAddress,
26
- IRegistry(registryAddress).getStakingAddress());
25
+ registry,
26
+ IRegistry(registry).getStakingAddress());
27
+
27
28
  IVersionable versionable = initialize(
28
- registryAddress,
29
+ registry,
29
30
  address(svc),
30
31
  data,
31
32
  salt);
@@ -28,8 +28,8 @@ library Key32Lib {
28
28
 
29
29
  uint8 public constant TYPE_SHIFT = 31 * 8;
30
30
  uint8 public constant ID_SHIFT = uint8(32 * 8 - TYPE_SHIFT);
31
- bytes32 public constant TYPE_MASK = bytes32(bytes1(type(uint8).max)); // first byte in bytes32
32
- bytes32 public constant ID_MASK = bytes32(~TYPE_MASK); // remaining bytes in bytes32
31
+ bytes32 public constant TYPE_MASK = bytes32(bytes1(type(uint8).max)); // [32] byte in bytes32
32
+ bytes32 public constant ID_MASK = bytes32(~TYPE_MASK); // [0..31] bytes in bytes32
33
33
 
34
34
  function toKey32(ObjectType objectType, KeyId id) public pure returns (Key32) {
35
35
  uint256 uintObjectType = ObjectType.unwrap(objectType);
@@ -0,0 +1,62 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Key32} from "../type/Key32.sol";
5
+
6
+ // based on https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/structs/EnumerableSet.sol
7
+ library LibKey32Set {
8
+
9
+ struct Set {
10
+ Key32[] keys;
11
+ mapping(Key32 key => uint256 index) at;
12
+ }
13
+
14
+ error ErrorKey32SetAlreadyAdded(Key32 key);
15
+ error ErrorKey32SetNotInSet(Key32 key);
16
+
17
+
18
+ function add(Set storage set, Key32 key) external {
19
+ if (set.at[key] > 0) {
20
+ revert ErrorKey32SetAlreadyAdded(key);
21
+ }
22
+
23
+ set.keys.push(key);
24
+ set.at[key] = set.keys.length;
25
+ }
26
+
27
+ function remove(Set storage set, Key32 key) external {
28
+ uint256 nftIdIndex = set.at[key];
29
+
30
+ if (nftIdIndex == 0) {
31
+ revert ErrorKey32SetNotInSet(key);
32
+ }
33
+
34
+ uint256 toDeleteIndex = nftIdIndex - 1;
35
+ uint256 lastIndex = set.keys.length - 1;
36
+
37
+ if (lastIndex != toDeleteIndex) {
38
+ Key32 lastId = set.keys[lastIndex];
39
+ set.keys[toDeleteIndex] = lastId;
40
+ set.at[lastId] = nftIdIndex; // Replace lastValue's index to valueIndex
41
+ }
42
+
43
+ set.keys.pop();
44
+ delete set.at[key];
45
+ }
46
+
47
+ function isEmpty(Set storage set) external view returns(bool empty) {
48
+ return set.keys.length == 0;
49
+ }
50
+
51
+ function contains(Set storage set, Key32 key) external view returns(bool inSet) {
52
+ return set.at[key] > 0;
53
+ }
54
+
55
+ function size(Set storage set) external view returns(uint256 length) {
56
+ return set.keys.length;
57
+ }
58
+
59
+ function getElementAt(Set storage set, uint256 index) external view returns(Key32 key) {
60
+ return set.keys[index];
61
+ }
62
+ }
@@ -76,4 +76,10 @@ library NftIdLib {
76
76
  function toKeyId(NftId id) public pure returns (KeyId keyId) {
77
77
  return KeyId.wrap(bytes31(uint248(NftId.unwrap(id))));
78
78
  }
79
+
80
+ function toNftId(KeyId keyId) public pure returns (NftId nftId) {
81
+ uint248 keyIdInt = uint248(bytes31(KeyId.unwrap(keyId)));
82
+ assert(keyIdInt < type(uint96).max);
83
+ return NftId.wrap(uint96(keyIdInt));
84
+ }
79
85
  }
@@ -44,10 +44,16 @@ function INSTANCE() pure returns (ObjectType) {
44
44
  return ObjectType.wrap(10);
45
45
  }
46
46
 
47
+ /// @dev Generic component object type.
48
+ /// Component role id range is 11-19.
49
+ /// Stick to this range for new component object types.
47
50
  function COMPONENT() pure returns (ObjectType) {
48
51
  return ObjectType.wrap(11);
49
52
  }
50
53
 
54
+ /// @dev Product object type.
55
+ /// IMPORTANT the actual value has an influence on the corresponding role id (RoleIdLib.sol).
56
+ /// Do not change this value without updating the corresponding role id calculation.
51
57
  function PRODUCT() pure returns (ObjectType) {
52
58
  return ObjectType.wrap(12);
53
59
  }
@@ -64,6 +70,8 @@ function POOL() pure returns (ObjectType) {
64
70
  return ObjectType.wrap(15);
65
71
  }
66
72
 
73
+ /// @dev Application object type.
74
+ /// Range for NFT objects created thorugh components is 20-29.
67
75
  function APPLICATION() pure returns (ObjectType) {
68
76
  return ObjectType.wrap(20);
69
77
  }
@@ -72,54 +80,69 @@ function POLICY() pure returns (ObjectType) {
72
80
  return ObjectType.wrap(21);
73
81
  }
74
82
 
75
- function PREMIUM() pure returns (ObjectType) {
83
+ function BUNDLE() pure returns (ObjectType) {
76
84
  return ObjectType.wrap(22);
77
85
  }
78
86
 
79
- function CLAIM() pure returns (ObjectType) {
87
+ function DISTRIBUTOR() pure returns (ObjectType) {
80
88
  return ObjectType.wrap(23);
81
89
  }
82
90
 
83
- function PAYOUT() pure returns (ObjectType) {
84
- return ObjectType.wrap(24);
91
+ /// @dev Stake object type.
92
+ /// NFT object type is 30
93
+ function STAKE() pure returns (ObjectType) {
94
+ return ObjectType.wrap(30);
85
95
  }
86
96
 
87
- function RISK() pure returns (ObjectType) {
88
- return ObjectType.wrap(25);
97
+ /// @dev Staking target object type.
98
+ function TARGET() pure returns (ObjectType) {
99
+ return ObjectType.wrap(31);
100
+ }
101
+
102
+ /// @dev Accounting object type.
103
+ /// Range for non-NFT types created through components is 40+
104
+ function ACCOUNTING() pure returns (ObjectType) {
105
+ return ObjectType.wrap(40);
106
+ }
107
+
108
+ function FEE() pure returns (ObjectType) {
109
+ return ObjectType.wrap(41);
89
110
  }
90
111
 
91
112
  function PRICE() pure returns (ObjectType) {
92
- return ObjectType.wrap(26);
113
+ return ObjectType.wrap(42);
93
114
  }
94
115
 
95
- function REQUEST() pure returns (ObjectType) {
96
- return ObjectType.wrap(27);
116
+ function PREMIUM() pure returns (ObjectType) {
117
+ return ObjectType.wrap(43);
97
118
  }
98
119
 
99
- function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
100
- return ObjectType.wrap(28);
120
+ function RISK() pure returns (ObjectType) {
121
+ return ObjectType.wrap(44);
101
122
  }
102
123
 
103
- function DISTRIBUTOR() pure returns (ObjectType) {
104
- return ObjectType.wrap(29);
124
+ function CLAIM() pure returns (ObjectType) {
125
+ return ObjectType.wrap(45);
105
126
  }
106
127
 
107
- function REFERRAL() pure returns (ObjectType) {
108
- return ObjectType.wrap(30);
128
+ function PAYOUT() pure returns (ObjectType) {
129
+ return ObjectType.wrap(46);
109
130
  }
110
131
 
111
- function BUNDLE() pure returns (ObjectType) {
112
- return ObjectType.wrap(31);
132
+ function REQUEST() pure returns (ObjectType) {
133
+ return ObjectType.wrap(47);
113
134
  }
114
135
 
115
- function TARGET() pure returns (ObjectType) {
116
- return ObjectType.wrap(32);
136
+ function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
137
+ return ObjectType.wrap(48);
117
138
  }
118
139
 
119
- function STAKE() pure returns (ObjectType) {
120
- return ObjectType.wrap(33);
140
+ function REFERRAL() pure returns (ObjectType) {
141
+ return ObjectType.wrap(49);
121
142
  }
122
143
 
144
+
145
+
123
146
  /// @dev Object type that includes any other object type.
124
147
  /// Note that eq()/'==' does not take this property into account.
125
148
  function ALL() pure returns (ObjectType) {
@@ -202,6 +225,10 @@ library ObjectTypeLib {
202
225
  return "Price";
203
226
  } else if (objectType == BUNDLE()) {
204
227
  return "Bundle";
228
+ } else if (objectType == RISK()) {
229
+ return "Risk";
230
+ } else if (objectType == ACCOUNTING()) {
231
+ return "Accounting";
205
232
  }
206
233
 
207
234
  // fallback: ObjectType<obect-type-int>
@@ -2,6 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
+ import {NftId} from "./NftId.sol";
5
6
  import {RISK} from "./ObjectType.sol";
6
7
 
7
8
  type RiskId is bytes8;
@@ -10,9 +11,12 @@ type RiskId is bytes8;
10
11
  using {
11
12
  eqRiskId as ==,
12
13
  neRiskId as !=,
13
- RiskIdLib.toKey32,
14
14
  RiskIdLib.eq,
15
- RiskIdLib.eqz
15
+ RiskIdLib.eqz,
16
+ RiskIdLib.gtz,
17
+ RiskIdLib.toInt,
18
+ RiskIdLib.toKeyId,
19
+ RiskIdLib.toKey32
16
20
  } for RiskId global;
17
21
 
18
22
  // general pure free functions
@@ -32,14 +36,19 @@ library RiskIdLib {
32
36
  return RiskId.wrap(bytes8(0));
33
37
  }
34
38
 
35
- // @dev Converts a role string into a role id.
36
- function toRiskId(string memory risk) public pure returns (RiskId) {
37
- return RiskId.wrap(bytes8(keccak256(abi.encode(risk))));
39
+ // @dev Converts a risk id into a uint256.
40
+ function toInt(RiskId riskId) public pure returns (uint256) {
41
+ return uint64(RiskId.unwrap(riskId));
38
42
  }
39
43
 
40
- /// @dev Returns the key32 value for the specified nft id and object type.
41
- function toKey32(RiskId id) public pure returns (Key32 key) {
42
- return Key32Lib.toKey32(RISK(), toKeyId(id));
44
+ // @dev Converts a risk id string with a product NftId into a risk id.
45
+ function toRiskId(NftId productNftId, bytes32 risk) public pure returns (RiskId) {
46
+ return RiskId.wrap(bytes8(keccak256(abi.encode(productNftId, risk))));
47
+ }
48
+
49
+ /// @dev Returns the key32 value for the specified risk id.
50
+ function toKey32(RiskId riskId) public pure returns (Key32 key) {
51
+ return Key32Lib.toKey32(RISK(), toKeyId(riskId));
43
52
  }
44
53
 
45
54
  /// @dev Returns the key id value for the specified nft id
@@ -47,6 +56,11 @@ library RiskIdLib {
47
56
  return KeyId.wrap(bytes31(RiskId.unwrap(id)));
48
57
  }
49
58
 
59
+ function toRiskId(KeyId keyId) public pure returns (RiskId riskId) {
60
+ riskId = RiskId.wrap(bytes8(KeyId.unwrap(keyId)));
61
+ assert(toInt(riskId) < 2**64);
62
+ }
63
+
50
64
  function eq(RiskId a, RiskId b) public pure returns (bool isSame) {
51
65
  return eqRiskId(a, b);
52
66
  }
@@ -54,4 +68,8 @@ library RiskIdLib {
54
68
  function eqz(RiskId a) public pure returns (bool isZero) {
55
69
  return eqRiskId(a, zero());
56
70
  }
71
+
72
+ function gtz(RiskId a) public pure returns (bool isZero) {
73
+ return uint64(RiskId.unwrap(a)) > 0;
74
+ }
57
75
  }