@etherisc/gif-next 0.0.2-9e03baf-990 → 0.0.2-9e6b423-414

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 (489) hide show
  1. package/README.md +54 -1
  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/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 +640 -269
  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 +409 -33
  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 +525 -213
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +179 -19
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +110 -209
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +381 -46
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +40 -128
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +374 -196
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +113 -71
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +26 -114
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +210 -71
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +134 -102
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +355 -52
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +291 -252
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +380 -45
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +181 -207
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +75 -100
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +151 -129
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +380 -256
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +502 -49
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +300 -12
  69. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/Instance.sol/Instance.json +518 -84
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1022 -326
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +393 -52
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1064 -471
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +309 -84
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +40 -52
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +673 -557
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  87. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  94. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  96. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  101. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +60 -83
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +379 -47
  106. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +30 -53
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +44 -67
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +114 -83
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +71 -45
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +65 -88
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +355 -52
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +120 -312
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +62 -104
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +44 -128
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +40 -63
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +138 -193
  131. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  132. package/artifacts/contracts/pool/Pool.sol/Pool.json +53 -76
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  134. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +538 -0
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +288 -317
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +105 -67
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +167 -59
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +56 -42
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +176 -184
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +380 -45
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +260 -187
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +86 -88
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +103 -10
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +105 -55
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +48 -3
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +157 -165
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +58 -7
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +220 -195
  165. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  166. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  167. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +87 -77
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.json +112 -108
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +57 -71
  173. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  174. package/artifacts/contracts/product/Product.sol/Product.json +170 -178
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.json +131 -81
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +60 -42
  179. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  181. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +36 -12
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  185. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  186. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  187. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  188. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/Registry.sol/Registry.json +74 -50
  190. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +728 -480
  192. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  193. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  194. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +55 -48
  196. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +36 -38
  198. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  200. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +386 -64
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
  206. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
  208. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Component.sol/Component.json +43 -52
  210. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +206 -562
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +69 -87
  214. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  216. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +525 -4
  218. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  224. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +30 -39
  226. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +115 -390
  228. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +30 -53
  230. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  231. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  236. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  239. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  241. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +43 -66
  243. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  244. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  245. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  246. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  247. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  249. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  250. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  251. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  252. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  253. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  254. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  255. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  256. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  260. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
  261. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  262. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
  263. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  264. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +96 -40
  265. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  266. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +134 -10
  267. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  268. package/artifacts/contracts/staking/Staking.sol/Staking.json +191 -103
  269. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  270. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  271. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  273. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +66 -46
  275. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +40 -67
  277. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +189 -58
  279. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  280. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +53 -43
  281. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +163 -149
  283. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +61 -51
  285. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  286. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
  288. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  291. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  293. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  295. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  297. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  298. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  299. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  301. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  302. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  303. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  305. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  307. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  309. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  311. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  313. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  315. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  318. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  320. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  323. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  325. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
  327. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  329. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  331. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  332. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  333. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -18
  334. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  336. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  337. package/contracts/accounting/AccountingService.sol +261 -0
  338. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  339. package/contracts/accounting/IAccountingService.sol +45 -0
  340. package/contracts/authorization/AccessAdmin.sol +426 -242
  341. package/contracts/authorization/AccessAdminLib.sol +396 -0
  342. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  343. package/contracts/authorization/Authorization.sol +142 -257
  344. package/contracts/authorization/IAccess.sol +25 -7
  345. package/contracts/authorization/IAccessAdmin.sol +87 -80
  346. package/contracts/authorization/IAuthorization.sol +9 -42
  347. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  348. package/contracts/authorization/ServiceAuthorization.sol +247 -33
  349. package/contracts/distribution/BasicDistribution.sol +18 -16
  350. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  351. package/contracts/distribution/Distribution.sol +38 -78
  352. package/contracts/distribution/DistributionService.sol +183 -96
  353. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  354. package/contracts/distribution/IDistributionComponent.sol +3 -10
  355. package/contracts/distribution/IDistributionService.sol +32 -24
  356. package/contracts/examples/fire/FirePool.sol +6 -6
  357. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  358. package/contracts/examples/fire/FireProduct.sol +9 -7
  359. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  360. package/contracts/examples/unpermissioned/SimpleDistribution.sol +34 -11
  361. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  362. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  363. package/contracts/examples/unpermissioned/SimplePool.sol +7 -13
  364. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  365. package/contracts/examples/unpermissioned/SimpleProduct.sol +36 -8
  366. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  367. package/contracts/instance/BundleSet.sol +42 -38
  368. package/contracts/instance/IInstance.sol +97 -18
  369. package/contracts/instance/IInstanceService.sol +50 -8
  370. package/contracts/instance/Instance.sol +170 -57
  371. package/contracts/instance/InstanceAdmin.sol +271 -165
  372. package/contracts/instance/InstanceAuthorizationV3.sol +114 -43
  373. package/contracts/instance/InstanceReader.sol +449 -312
  374. package/contracts/instance/InstanceService.sol +260 -163
  375. package/contracts/instance/InstanceServiceManager.sol +1 -1
  376. package/contracts/instance/InstanceStore.sol +13 -2
  377. package/contracts/instance/RiskSet.sol +118 -0
  378. package/contracts/instance/base/BalanceStore.sol +3 -5
  379. package/contracts/instance/base/ObjectCounter.sol +1 -2
  380. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  381. package/contracts/instance/base/ObjectSet.sol +31 -33
  382. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  383. package/contracts/instance/module/IBundle.sol +6 -5
  384. package/contracts/instance/module/IComponents.sol +19 -7
  385. package/contracts/instance/module/IDistribution.sol +21 -8
  386. package/contracts/instance/module/IPolicy.sol +28 -8
  387. package/contracts/instance/module/IRisk.sol +5 -0
  388. package/contracts/oracle/BasicOracle.sol +1 -3
  389. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  390. package/contracts/oracle/IOracle.sol +9 -4
  391. package/contracts/oracle/Oracle.sol +1 -3
  392. package/contracts/oracle/OracleService.sol +96 -78
  393. package/contracts/oracle/OracleServiceManager.sol +1 -1
  394. package/contracts/pool/BasicPool.sol +0 -2
  395. package/contracts/pool/BasicPoolAuthorization.sol +28 -14
  396. package/contracts/pool/BundleService.sol +35 -125
  397. package/contracts/pool/BundleServiceManager.sol +1 -1
  398. package/contracts/pool/IBundleService.sol +13 -38
  399. package/contracts/pool/IPoolService.sol +49 -56
  400. package/contracts/pool/Pool.sol +9 -11
  401. package/contracts/pool/PoolLib.sol +353 -0
  402. package/contracts/pool/PoolService.sol +190 -223
  403. package/contracts/pool/PoolServiceManager.sol +1 -1
  404. package/contracts/product/ApplicationService.sol +34 -15
  405. package/contracts/product/ApplicationServiceManager.sol +1 -1
  406. package/contracts/product/BasicProduct.sol +2 -2
  407. package/contracts/product/BasicProductAuthorization.sol +30 -11
  408. package/contracts/product/ClaimService.sol +167 -150
  409. package/contracts/product/ClaimServiceManager.sol +1 -1
  410. package/contracts/product/IApplicationService.sol +8 -2
  411. package/contracts/product/IClaimService.sol +14 -2
  412. package/contracts/product/IPolicyService.sol +23 -10
  413. package/contracts/product/IPricingService.sol +1 -0
  414. package/contracts/product/IProductComponent.sol +4 -1
  415. package/contracts/product/IRiskService.sol +7 -7
  416. package/contracts/product/PolicyService.sol +235 -290
  417. package/contracts/product/PolicyServiceLib.sol +139 -0
  418. package/contracts/product/PolicyServiceManager.sol +1 -1
  419. package/contracts/product/PricingService.sol +30 -21
  420. package/contracts/product/PricingServiceManager.sol +3 -3
  421. package/contracts/product/Product.sol +57 -22
  422. package/contracts/product/RiskService.sol +89 -31
  423. package/contracts/product/RiskServiceManager.sol +1 -1
  424. package/contracts/registry/ChainNft.sol +4 -2
  425. package/contracts/registry/IRegistry.sol +12 -15
  426. package/contracts/registry/IRelease.sol +29 -0
  427. package/contracts/registry/Registry.sol +7 -2
  428. package/contracts/registry/RegistryAdmin.sol +100 -374
  429. package/contracts/registry/RegistryAuthorization.sol +277 -0
  430. package/contracts/registry/RegistryService.sol +3 -3
  431. package/contracts/registry/RegistryServiceManager.sol +1 -1
  432. package/contracts/registry/ReleaseAdmin.sol +195 -0
  433. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  434. package/contracts/registry/ReleaseRegistry.sol +153 -118
  435. package/contracts/registry/ServiceAuthorizationV3.sol +187 -46
  436. package/contracts/registry/TokenRegistry.sol +12 -13
  437. package/contracts/shared/Component.sol +30 -49
  438. package/contracts/shared/ComponentService.sol +330 -431
  439. package/contracts/shared/ComponentServiceManager.sol +1 -1
  440. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  441. package/contracts/shared/ContractLib.sol +259 -2
  442. package/contracts/shared/IComponent.sol +0 -9
  443. package/contracts/shared/IComponentService.sol +21 -41
  444. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  445. package/contracts/shared/IRegisterable.sol +15 -5
  446. package/contracts/shared/IService.sol +3 -5
  447. package/contracts/shared/InitializableERC165.sol +9 -1
  448. package/contracts/shared/InstanceLinkedComponent.sol +3 -14
  449. package/contracts/shared/NftOwnable.sol +6 -6
  450. package/contracts/shared/PolicyHolder.sol +1 -1
  451. package/contracts/shared/Registerable.sol +42 -19
  452. package/contracts/shared/RegistryLinked.sol +1 -1
  453. package/contracts/shared/Service.sol +13 -30
  454. package/contracts/shared/TokenHandler.sol +45 -100
  455. package/contracts/staking/IStaking.sol +18 -12
  456. package/contracts/staking/IStakingService.sol +19 -1
  457. package/contracts/staking/Staking.sol +73 -33
  458. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
  459. package/contracts/staking/StakingReader.sol +6 -16
  460. package/contracts/staking/StakingService.sol +71 -57
  461. package/contracts/staking/StakingServiceManager.sol +5 -4
  462. package/contracts/staking/StakingStore.sol +2 -1
  463. package/contracts/staking/TargetManagerLib.sol +1 -1
  464. package/contracts/type/Fee.sol +8 -8
  465. package/contracts/type/Key32.sol +2 -2
  466. package/contracts/type/Key32Set.sol +62 -0
  467. package/contracts/type/NftId.sol +6 -0
  468. package/contracts/type/ObjectType.sol +69 -38
  469. package/contracts/type/RiskId.sol +26 -8
  470. package/contracts/type/RoleId.sol +63 -45
  471. package/contracts/type/Selector.sol +5 -0
  472. package/contracts/type/String.sol +12 -0
  473. package/contracts/type/Timestamp.sol +0 -5
  474. package/contracts/type/UFixed.sol +34 -127
  475. package/contracts/type/Version.sol +54 -5
  476. package/contracts/upgradeability/ProxyManager.sol +14 -12
  477. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
  478. package/contracts/upgradeability/Versionable.sol +4 -1
  479. package/package.json +2 -2
  480. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  481. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  482. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  483. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  484. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  485. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  486. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  487. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  488. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  489. package/contracts/instance/module/IAccess.sol +0 -46
@@ -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,
@@ -76,6 +98,17 @@ contract StakingService is
76
98
  rewardRate);
77
99
  }
78
100
 
101
+ function setInstanceMaxStakedAmount(NftId instanceNftId, Amount maxStakingAmount)
102
+ external
103
+ virtual
104
+ restricted()
105
+ {
106
+ _checkNftType(instanceNftId, INSTANCE());
107
+ _getStakingServiceStorage()._staking.setMaxStakedAmount(
108
+ instanceNftId,
109
+ maxStakingAmount);
110
+ }
111
+
79
112
 
80
113
  function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount)
81
114
  external
@@ -113,8 +146,7 @@ contract StakingService is
113
146
  // transfer withdrawal amount to target owner
114
147
  address instanceOwner = getRegistry().ownerOf(instanceNftId);
115
148
  emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
116
- _distributeToken(
117
- $._staking.getTokenHandler(),
149
+ $._tokenHandler.pushToken(
118
150
  instanceOwner,
119
151
  dipAmount);
120
152
  }
@@ -162,44 +194,9 @@ contract StakingService is
162
194
  emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
163
195
 
164
196
  // collect staked dip by staking
165
- _collectToken(
166
- $._staking.getTokenHandler(),
197
+ $._tokenHandler.pullToken(
167
198
  stakeOwner,
168
199
  dipAmount);
169
-
170
- // TODO cleanup
171
- // TokenHandler tokenHandler = $._staking.getTokenHandler();
172
- // tokenHandler.collectTokens(
173
- // stakeOwner,
174
- // tokenHandler.getWallet(),
175
- // dipAmount);
176
- }
177
-
178
- function _collectToken(
179
- TokenHandler tokenHandler,
180
- address from,
181
- Amount amount
182
- )
183
- internal
184
- virtual
185
- {
186
- tokenHandler.collectTokens(
187
- from,
188
- amount);
189
- }
190
-
191
- function _distributeToken(
192
- TokenHandler tokenHandler,
193
- address to,
194
- Amount amount
195
- )
196
- internal
197
- virtual
198
- {
199
- tokenHandler.distributeTokens(
200
- tokenHandler.getWallet(),
201
- to,
202
- amount);
203
200
  }
204
201
 
205
202
 
@@ -225,8 +222,7 @@ contract StakingService is
225
222
  // collect staked dip by staking
226
223
  if (dipAmount.gtz()) {
227
224
  emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
228
- _collectToken(
229
- $._staking.getTokenHandler(),
225
+ $._tokenHandler.pullToken(
230
226
  stakeOwner,
231
227
  dipAmount);
232
228
  }
@@ -242,13 +238,36 @@ contract StakingService is
242
238
  restricted()
243
239
  onlyNftOwner(stakeNftId)
244
240
  returns (
245
- NftId newStakeNftId
241
+ NftId newStakeNftId,
242
+ Amount newStakeBalance
246
243
  )
247
244
  {
248
245
  _checkNftType(stakeNftId, STAKE());
249
246
 
250
247
  StakingServiceStorage storage $ = _getStakingServiceStorage();
251
- // TODO implement
248
+ address stakeOwner = msg.sender;
249
+
250
+ if (! getRegistry().isRegistered(newTargetNftId)) {
251
+ revert ErrorStakingServiceTargetUnknown(newTargetNftId);
252
+ }
253
+
254
+ // register new stake object with registry
255
+ newStakeNftId = $._registryService.registerStake(
256
+ IRegistry.ObjectInfo({
257
+ nftId: NftIdLib.zero(),
258
+ parentNftId: newTargetNftId,
259
+ objectType: STAKE(),
260
+ isInterceptor: false,
261
+ objectAddress: address(0),
262
+ initialOwner: stakeOwner,
263
+ data: ""
264
+ }));
265
+
266
+ newStakeBalance = $._staking.restake(
267
+ stakeNftId,
268
+ newStakeNftId);
269
+
270
+ emit LogStakingServiceStakeRestaked(stakeOwner, stakeNftId, newStakeNftId, newTargetNftId, newStakeBalance);
252
271
  }
253
272
 
254
273
 
@@ -281,8 +300,7 @@ contract StakingService is
281
300
 
282
301
  Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
283
302
  emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
284
- _distributeToken(
285
- $._staking.getTokenHandler(),
303
+ $._tokenHandler.pushToken(
286
304
  stakeOwner,
287
305
  rewardsClaimedAmount);
288
306
  }
@@ -307,15 +325,9 @@ contract StakingService is
307
325
  Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
308
326
  emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
309
327
 
310
- $._staking.getTokenHandler().pushToken(
328
+ $._tokenHandler.pushToken(
311
329
  stakeOwner,
312
330
  totalAmount);
313
-
314
- // TODO cleanup
315
- // _distributeToken(
316
- // $._staking.getTokenHandler(),
317
- // stakeOwner,
318
- // totalAmount);
319
331
  }
320
332
 
321
333
 
@@ -336,6 +348,7 @@ contract StakingService is
336
348
 
337
349
  function getDipToken()
338
350
  external
351
+ view
339
352
  virtual
340
353
  returns (IERC20Metadata dip)
341
354
  {
@@ -345,6 +358,7 @@ contract StakingService is
345
358
 
346
359
  function getTokenHandler()
347
360
  external
361
+ view
348
362
  virtual
349
363
  returns (TokenHandler tokenHandler)
350
364
  {
@@ -354,6 +368,7 @@ contract StakingService is
354
368
 
355
369
  function getStaking()
356
370
  external
371
+ view
357
372
  virtual
358
373
  returns (IStaking staking)
359
374
  {
@@ -372,15 +387,15 @@ contract StakingService is
372
387
  {
373
388
  (
374
389
  address authority,
375
- address registryAddress,
376
- address stakingAddress
390
+ address registry,
391
+ address staking
377
392
  ) = abi.decode(data, (address, address, address));
378
393
 
379
- _initializeService(registryAddress, authority, owner);
394
+ __Service_init(authority, registry, owner);
380
395
 
381
396
  StakingServiceStorage storage $ = _getStakingServiceStorage();
382
397
  $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
383
- $._staking = _registerStaking(stakingAddress);
398
+ $._staking = _registerStaking(staking);
384
399
  $._dip = $._staking.getToken();
385
400
  $._tokenHandler = $._staking.getTokenHandler();
386
401
 
@@ -433,8 +448,7 @@ contract StakingService is
433
448
  emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
434
449
 
435
450
  // collect reward dip from provider
436
- _collectToken(
437
- $._staking.getTokenHandler(),
451
+ $._tokenHandler.pullToken(
438
452
  rewardProvider,
439
453
  dipAmount);
440
454
  }
@@ -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);
@@ -91,7 +91,8 @@ contract StakingStore is
91
91
  objectType: PROTOCOL(),
92
92
  chainId: 1,
93
93
  lockingPeriod: TargetManagerLib.getDefaultLockingPeriod(),
94
- rewardRate: TargetManagerLib.getDefaultRewardRate()}));
94
+ rewardRate: TargetManagerLib.getDefaultRewardRate(),
95
+ maxStakedAmount: AmountLib.max()}));
95
96
  }
96
97
 
97
98
 
@@ -160,7 +160,7 @@ library TargetManagerLib {
160
160
  UFixed stakingRate
161
161
  )
162
162
  public
163
- view
163
+ pure
164
164
  returns (Amount dipAmount)
165
165
  {
166
166
  dipAmount = tokenAmount.multiplyWith(stakingRate);
@@ -5,16 +5,16 @@ import {Amount, AmountLib} from "./Amount.sol";
5
5
  import {UFixed, UFixedLib} from "./UFixed.sol";
6
6
 
7
7
  struct Fee {
8
+ // slot 0
8
9
  UFixed fractionalFee;
9
- // TODO migrate fixed fee to Amount
10
- uint256 fixedFee;
10
+ Amount fixedFee;
11
11
  }
12
12
 
13
13
  library FeeLib {
14
14
 
15
15
  /// @dev Return a zero fee struct (0, 0)
16
16
  function zero() public pure returns (Fee memory fee) {
17
- return Fee(UFixed.wrap(0), 0);
17
+ return Fee(UFixed.wrap(0), AmountLib.zero());
18
18
  }
19
19
 
20
20
  /// @dev Converts the uint256 to a fee struct.
@@ -22,7 +22,7 @@ library FeeLib {
22
22
  UFixed fractionalFee,
23
23
  uint256 fixedFee
24
24
  ) public pure returns (Fee memory fee) {
25
- return Fee(fractionalFee, fixedFee);
25
+ return Fee(fractionalFee, AmountLib.toAmount(fixedFee));
26
26
  }
27
27
 
28
28
  /// @dev Calculates fee and net amounts for the provided parameters
@@ -41,14 +41,14 @@ library FeeLib {
41
41
  if(gtz(fee)) {
42
42
  UFixed fractionalAmount =
43
43
  amount.toUFixed() * fee.fractionalFee;
44
- feeAmount = AmountLib.toAmount(fractionalAmount.toInt() + fee.fixedFee);
44
+ feeAmount = AmountLib.toAmount(fractionalAmount.toInt()) + fee.fixedFee;
45
45
  netAmount = netAmount - feeAmount;
46
46
  }
47
47
  }
48
48
 
49
49
  /// @dev Return the percent fee struct (x%, 0)
50
50
  function percentageFee(uint8 percent) public pure returns (Fee memory fee) {
51
- return Fee(UFixedLib.toUFixed(percent, -2), 0);
51
+ return Fee(UFixedLib.toUFixed(percent, -2), AmountLib.zero());
52
52
  }
53
53
 
54
54
  // pure free functions for operators
@@ -57,10 +57,10 @@ library FeeLib {
57
57
  }
58
58
 
59
59
  function gtz(Fee memory fee) public pure returns (bool) {
60
- return UFixed.unwrap(fee.fractionalFee) > 0 || fee.fixedFee > 0;
60
+ return UFixed.unwrap(fee.fractionalFee) > 0 || fee.fixedFee.gtz();
61
61
  }
62
62
 
63
63
  function eqz(Fee memory fee) public pure returns (bool) {
64
- return fee.fixedFee == 0 && UFixed.unwrap(fee.fractionalFee) == 0;
64
+ return fee.fixedFee.eqz() && UFixed.unwrap(fee.fractionalFee) == 0;
65
65
  }
66
66
  }
@@ -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
  }
@@ -1,6 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {VersionPart} from "./Version.sol";
5
+
4
6
  type ObjectType is uint8;
5
7
 
6
8
  // type bindings
@@ -8,6 +10,7 @@ using {
8
10
  eqObjectType as ==,
9
11
  neObjectType as !=,
10
12
  ObjectTypeLib.toInt,
13
+ ObjectTypeLib.toName,
11
14
  ObjectTypeLib.eqz,
12
15
  ObjectTypeLib.eq,
13
16
  ObjectTypeLib.gtz
@@ -44,10 +47,16 @@ function INSTANCE() pure returns (ObjectType) {
44
47
  return ObjectType.wrap(10);
45
48
  }
46
49
 
50
+ /// @dev Generic component object type.
51
+ /// Component role id range is 11-19.
52
+ /// Stick to this range for new component object types.
47
53
  function COMPONENT() pure returns (ObjectType) {
48
54
  return ObjectType.wrap(11);
49
55
  }
50
56
 
57
+ /// @dev Product object type.
58
+ /// IMPORTANT the actual value has an influence on the corresponding role id (RoleIdLib.sol).
59
+ /// Do not change this value without updating the corresponding role id calculation.
51
60
  function PRODUCT() pure returns (ObjectType) {
52
61
  return ObjectType.wrap(12);
53
62
  }
@@ -64,6 +73,8 @@ function POOL() pure returns (ObjectType) {
64
73
  return ObjectType.wrap(15);
65
74
  }
66
75
 
76
+ /// @dev Application object type.
77
+ /// Range for NFT objects created thorugh components is 20-29.
67
78
  function APPLICATION() pure returns (ObjectType) {
68
79
  return ObjectType.wrap(20);
69
80
  }
@@ -72,52 +83,76 @@ function POLICY() pure returns (ObjectType) {
72
83
  return ObjectType.wrap(21);
73
84
  }
74
85
 
75
- function PREMIUM() pure returns (ObjectType) {
86
+ function BUNDLE() pure returns (ObjectType) {
76
87
  return ObjectType.wrap(22);
77
88
  }
78
89
 
79
- function CLAIM() pure returns (ObjectType) {
90
+ function DISTRIBUTOR() pure returns (ObjectType) {
80
91
  return ObjectType.wrap(23);
81
92
  }
82
93
 
83
- function PAYOUT() pure returns (ObjectType) {
84
- return ObjectType.wrap(24);
94
+ /// @dev Stake object type.
95
+ /// NFT object type is 30
96
+ function STAKE() pure returns (ObjectType) {
97
+ return ObjectType.wrap(30);
85
98
  }
86
99
 
87
- function RISK() pure returns (ObjectType) {
88
- return ObjectType.wrap(25);
100
+ /// @dev Staking target object type.
101
+ function TARGET() pure returns (ObjectType) {
102
+ return ObjectType.wrap(31);
103
+ }
104
+
105
+ /// @dev Accounting object type.
106
+ /// Range for non-NFT types created through components is 40+
107
+ function ACCOUNTING() pure returns (ObjectType) {
108
+ return ObjectType.wrap(40);
109
+ }
110
+
111
+ function FEE() pure returns (ObjectType) {
112
+ return ObjectType.wrap(41);
89
113
  }
90
114
 
91
115
  function PRICE() pure returns (ObjectType) {
92
- return ObjectType.wrap(26);
116
+ return ObjectType.wrap(42);
93
117
  }
94
118
 
95
- function REQUEST() pure returns (ObjectType) {
96
- return ObjectType.wrap(27);
119
+ function PREMIUM() pure returns (ObjectType) {
120
+ return ObjectType.wrap(43);
97
121
  }
98
122
 
99
- function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
100
- return ObjectType.wrap(28);
123
+ function RISK() pure returns (ObjectType) {
124
+ return ObjectType.wrap(44);
101
125
  }
102
126
 
103
- function DISTRIBUTOR() pure returns (ObjectType) {
104
- return ObjectType.wrap(29);
127
+ function CLAIM() pure returns (ObjectType) {
128
+ return ObjectType.wrap(45);
105
129
  }
106
130
 
107
- function REFERRAL() pure returns (ObjectType) {
108
- return ObjectType.wrap(30);
131
+ function PAYOUT() pure returns (ObjectType) {
132
+ return ObjectType.wrap(46);
109
133
  }
110
134
 
111
- function BUNDLE() pure returns (ObjectType) {
112
- return ObjectType.wrap(31);
135
+ function REQUEST() pure returns (ObjectType) {
136
+ return ObjectType.wrap(47);
113
137
  }
114
138
 
115
- function TARGET() pure returns (ObjectType) {
116
- return ObjectType.wrap(32);
139
+ function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
140
+ return ObjectType.wrap(48);
117
141
  }
118
142
 
119
- function STAKE() pure returns (ObjectType) {
120
- return ObjectType.wrap(33);
143
+ function REFERRAL() pure returns (ObjectType) {
144
+ return ObjectType.wrap(49);
145
+ }
146
+
147
+ /// @dev Object type for GIF core target roles.
148
+ function CORE() pure returns (ObjectType) {
149
+ return ObjectType.wrap(97);
150
+ }
151
+
152
+ /// @dev Object type for target roles of contracts outside the GIF framework.
153
+ /// Example: Custom supporting contracts for a product component.
154
+ function CUSTOM() pure returns (ObjectType) {
155
+ return ObjectType.wrap(98);
121
156
  }
122
157
 
123
158
  /// @dev Object type that includes any other object type.
@@ -138,8 +173,6 @@ function neObjectType(ObjectType a, ObjectType b) pure returns (bool isSame) {
138
173
  // library functions that operate on user defined type
139
174
  library ObjectTypeLib {
140
175
 
141
- error ErrorVersionTooBig(uint256 version);
142
-
143
176
  function zero() public pure returns (ObjectType) {
144
177
  return ObjectType.wrap(0);
145
178
  }
@@ -180,6 +213,8 @@ library ObjectTypeLib {
180
213
  return "Registry";
181
214
  } else if (objectType == STAKING()) {
182
215
  return "Staking";
216
+ } else if (objectType == RELEASE()) {
217
+ return "Release";
183
218
  } else if (objectType == INSTANCE()) {
184
219
  return "Instance";
185
220
  } else if (objectType == COMPONENT()) {
@@ -202,6 +237,10 @@ library ObjectTypeLib {
202
237
  return "Price";
203
238
  } else if (objectType == BUNDLE()) {
204
239
  return "Bundle";
240
+ } else if (objectType == RISK()) {
241
+ return "Risk";
242
+ } else if (objectType == ACCOUNTING()) {
243
+ return "Accounting";
205
244
  }
206
245
 
207
246
  // fallback: ObjectType<obect-type-int>
@@ -212,23 +251,20 @@ library ObjectTypeLib {
212
251
  toInt(objectType))));
213
252
  }
214
253
 
254
+ // TODO move to IService
215
255
  function toVersionedName(
216
256
  string memory name,
217
257
  string memory suffix,
218
- uint256 version
258
+ VersionPart release
219
259
  )
220
260
  external
221
261
  pure
222
262
  returns (string memory versionedName)
223
263
  {
224
- if (version > maxNumReleases()) {
225
- revert ErrorVersionTooBig(version);
226
- }
227
-
228
- string memory versionName = "_v0";
264
+ string memory versionName = "V0";
229
265
 
230
- if (version >= 10) {
231
- versionName = "_v";
266
+ if (release.toInt() >= 10) {
267
+ versionName = "V";
232
268
  }
233
269
 
234
270
  versionedName = string(
@@ -236,12 +272,7 @@ library ObjectTypeLib {
236
272
  name,
237
273
  suffix,
238
274
  versionName,
239
- toString(version)));
240
- }
241
-
242
- /// @dev returns the max number of releases (major versions) this gif setup can handle.
243
- function maxNumReleases() public pure returns (uint8) {
244
- return 99;
275
+ release.toString()));
245
276
  }
246
277
 
247
278
  /// @dev returns the provied int as a string
@@ -259,7 +290,7 @@ library ObjectTypeLib {
259
290
  }
260
291
 
261
292
  bytes memory buffer = new bytes(digits);
262
- uint index = digits - 1;
293
+ uint256 index = digits - 1;
263
294
 
264
295
  temp = value;
265
296
  while (temp != 0) {