@etherisc/gif-next 0.0.2-df73b56-462 → 0.0.2-e016345-525

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 (453) 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 +944 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +746 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +711 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
  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/Authorization.sol/Authorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  15. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -13
  18. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  22. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +159 -209
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +99 -125
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +175 -86
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +104 -60
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +87 -108
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1441 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1991 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +187 -169
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +131 -157
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +262 -202
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +562 -252
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +116 -48
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +53 -101
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +149 -60
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +186 -125
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -85
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +514 -88
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +113 -148
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +72 -40
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +185 -124
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  97. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +119 -169
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  108. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +82 -103
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +95 -121
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +142 -79
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +92 -36
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +95 -149
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +143 -150
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +86 -66
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +48 -33
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +82 -142
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +272 -185
  133. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  134. package/artifacts/contracts/pool/Pool.sol/Pool.json +95 -160
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +408 -263
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +109 -41
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +114 -45
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -36
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +156 -141
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +183 -90
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +102 -58
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +63 -7
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +64 -8
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +96 -19
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +139 -119
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +215 -125
  165. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +102 -54
  167. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  168. package/artifacts/contracts/product/PricingService.sol/PricingService.json +165 -107
  169. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +85 -45
  171. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  172. package/artifacts/contracts/product/Product.sol/Product.json +152 -137
  173. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  174. package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -26
  175. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -30
  177. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  179. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  180. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +91 -15
  181. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  183. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  184. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  185. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  186. package/artifacts/contracts/registry/Registry.sol/Registry.json +135 -51
  187. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +203 -162
  189. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +89 -172
  191. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +65 -29
  193. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  195. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +123 -225
  197. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  199. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  201. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Component.sol/Component.json +72 -80
  203. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +478 -477
  205. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +96 -72
  207. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
  209. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
  211. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  212. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  213. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  215. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +61 -64
  217. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +425 -261
  219. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +82 -103
  221. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  223. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  225. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  227. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +1 -1
  229. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  231. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  234. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  235. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  236. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +94 -120
  237. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  238. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  239. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  240. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -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 +18 -2
  245. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  246. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +3 -3
  247. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
  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 +42 -0
  253. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  255. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  257. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  258. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  259. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  260. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +79 -100
  261. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  262. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  263. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  264. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  265. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  266. package/artifacts/contracts/staking/Staking.sol/Staking.json +158 -170
  267. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  269. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +81 -51
  271. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  273. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +82 -53
  275. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +69 -33
  277. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
  279. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  280. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  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 +32 -8
  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 +28 -4
  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 +2 -2
  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 +19 -19
  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 +99 -5
  309. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  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/SelectorSetLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  316. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  320. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  322. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  324. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  325. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  326. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
  327. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  328. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  329. package/contracts/accounting/AccountingService.sol +244 -0
  330. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  331. package/contracts/accounting/IAccountingService.sol +42 -0
  332. package/contracts/authorization/AccessAdmin.sol +86 -62
  333. package/contracts/authorization/Authorization.sol +111 -39
  334. package/contracts/authorization/IAccess.sol +1 -0
  335. package/contracts/authorization/IAccessAdmin.sol +4 -2
  336. package/contracts/authorization/IAuthorization.sol +13 -7
  337. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  338. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  339. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  340. package/contracts/distribution/BasicDistribution.sol +8 -7
  341. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  342. package/contracts/distribution/Distribution.sol +32 -40
  343. package/contracts/distribution/DistributionService.sol +80 -59
  344. package/contracts/distribution/IDistributionComponent.sol +1 -1
  345. package/contracts/distribution/IDistributionService.sol +5 -6
  346. package/contracts/examples/fire/DamageLevel.sol +59 -0
  347. package/contracts/examples/fire/FirePool.sol +90 -0
  348. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  349. package/contracts/examples/fire/FireProduct.sol +436 -0
  350. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  351. package/contracts/examples/fire/FireUSD.sol +26 -0
  352. package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
  353. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  354. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  355. package/contracts/examples/unpermissioned/SimplePool.sol +37 -6
  356. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  357. package/contracts/examples/unpermissioned/SimpleProduct.sol +24 -23
  358. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  359. package/contracts/instance/BundleSet.sol +38 -34
  360. package/contracts/instance/IInstance.sol +11 -3
  361. package/contracts/instance/IInstanceService.sol +7 -29
  362. package/contracts/instance/Instance.sol +36 -26
  363. package/contracts/instance/InstanceAdmin.sol +38 -38
  364. package/contracts/instance/InstanceAuthorizationV3.sol +50 -32
  365. package/contracts/instance/InstanceReader.sol +168 -19
  366. package/contracts/instance/InstanceService.sol +51 -126
  367. package/contracts/instance/RiskSet.sol +119 -0
  368. package/contracts/instance/base/ObjectSet.sol +24 -25
  369. package/contracts/instance/module/IComponents.sol +7 -5
  370. package/contracts/instance/module/IPolicy.sol +4 -3
  371. package/contracts/instance/module/IRisk.sol +1 -0
  372. package/contracts/oracle/BasicOracle.sol +0 -1
  373. package/contracts/oracle/IOracleService.sol +2 -1
  374. package/contracts/oracle/Oracle.sol +4 -15
  375. package/contracts/oracle/OracleService.sol +104 -76
  376. package/contracts/pool/BasicPool.sol +33 -24
  377. package/contracts/pool/BasicPoolAuthorization.sol +12 -2
  378. package/contracts/pool/BundleService.sol +68 -81
  379. package/contracts/pool/IBundleService.sol +2 -14
  380. package/contracts/pool/IPoolComponent.sol +1 -7
  381. package/contracts/pool/IPoolService.sol +30 -37
  382. package/contracts/pool/Pool.sol +123 -120
  383. package/contracts/pool/PoolService.sol +261 -154
  384. package/contracts/product/ApplicationService.sol +28 -16
  385. package/contracts/product/BasicProduct.sol +8 -12
  386. package/contracts/product/BasicProductAuthorization.sol +1 -3
  387. package/contracts/product/ClaimService.sol +110 -69
  388. package/contracts/product/IApplicationService.sol +5 -2
  389. package/contracts/product/IClaimService.sol +3 -2
  390. package/contracts/product/IPolicyService.sol +18 -5
  391. package/contracts/product/IPricingService.sol +9 -9
  392. package/contracts/product/IProductComponent.sol +23 -3
  393. package/contracts/product/PolicyService.sol +277 -187
  394. package/contracts/product/PricingService.sol +8 -8
  395. package/contracts/product/Product.sol +76 -75
  396. package/contracts/product/RiskService.sol +14 -3
  397. package/contracts/registry/ChainNft.sol +6 -9
  398. package/contracts/registry/IRegistry.sol +8 -3
  399. package/contracts/registry/IRegistryService.sol +5 -12
  400. package/contracts/registry/ITransferInterceptor.sol +1 -2
  401. package/contracts/registry/Registry.sol +29 -6
  402. package/contracts/registry/RegistryAdmin.sol +28 -35
  403. package/contracts/registry/RegistryService.sol +33 -44
  404. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  405. package/contracts/registry/ReleaseRegistry.sol +202 -208
  406. package/contracts/registry/ServiceAuthorizationV3.sol +28 -52
  407. package/contracts/shared/Component.sol +56 -105
  408. package/contracts/shared/ComponentService.sol +376 -324
  409. package/contracts/shared/ComponentVerifyingService.sol +27 -16
  410. package/contracts/shared/ContractLib.sol +196 -10
  411. package/contracts/shared/IComponent.sol +6 -14
  412. package/contracts/shared/IComponentService.sol +45 -37
  413. package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
  414. package/contracts/shared/ILifecycle.sol +3 -1
  415. package/contracts/shared/INftOwnable.sol +2 -0
  416. package/contracts/shared/IRegisterable.sol +11 -0
  417. package/contracts/shared/InstanceLinkedComponent.sol +68 -43
  418. package/contracts/shared/KeyValueStore.sol +1 -1
  419. package/contracts/shared/Lifecycle.sol +15 -4
  420. package/contracts/shared/NftOwnable.sol +23 -3
  421. package/contracts/shared/PolicyHolder.sol +4 -0
  422. package/contracts/shared/Registerable.sol +15 -7
  423. package/contracts/shared/RegistryLinked.sol +6 -12
  424. package/contracts/shared/Service.sol +4 -7
  425. package/contracts/shared/TokenHandler.sol +316 -66
  426. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  427. package/contracts/staking/IStaking.sol +9 -4
  428. package/contracts/staking/IStakingService.sol +0 -3
  429. package/contracts/staking/Staking.sol +41 -24
  430. package/contracts/staking/StakingReader.sol +12 -5
  431. package/contracts/staking/StakingService.sol +56 -23
  432. package/contracts/type/Amount.sol +15 -0
  433. package/contracts/type/ClaimId.sol +6 -1
  434. package/contracts/type/Key32.sol +2 -2
  435. package/contracts/type/Key32Set.sol +62 -0
  436. package/contracts/type/NftId.sol +7 -0
  437. package/contracts/type/ObjectType.sol +11 -0
  438. package/contracts/type/PayoutId.sol +10 -10
  439. package/contracts/type/RiskId.sol +30 -4
  440. package/contracts/type/RoleId.sol +0 -12
  441. package/contracts/type/StateId.sol +14 -1
  442. package/contracts/type/UFixed.sol +4 -0
  443. package/contracts/upgradeability/ProxyManager.sol +2 -1
  444. package/package.json +4 -3
  445. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  446. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  447. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  448. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  449. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  450. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  451. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  452. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  453. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -4,21 +4,15 @@ pragma solidity ^0.8.20;
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
6
  import {Amount} from "../type/Amount.sol";
7
- import {ChainNft} from "../registry/ChainNft.sol";
8
- import {IPoolService} from "../pool/IPoolService.sol";
9
7
  import {IRegisterable} from "../shared/IRegisterable.sol";
10
8
  import {IRegistry} from "../registry/IRegistry.sol";
11
9
  import {RegistryService} from "../registry/RegistryService.sol";
12
10
  import {IStaking} from "./IStaking.sol";
13
11
  import {IStakingService} from "./IStakingService.sol";
14
12
  import {NftId, NftIdLib} from "../type/NftId.sol";
15
- import {ObjectType, INSTANCE, PROTOCOL, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
13
+ import {ObjectType, INSTANCE, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
16
14
  import {Seconds} from "../type/Seconds.sol";
17
15
  import {Service} from "../shared/Service.sol";
18
- import {StakeManagerLib} from "./StakeManagerLib.sol";
19
- import {StakingReader} from "./StakingReader.sol";
20
- import {TargetManagerLib} from "./TargetManagerLib.sol";
21
- import {Timestamp} from "../type/Timestamp.sol";
22
16
  import {TokenHandler} from "../shared/TokenHandler.sol";
23
17
  import {UFixed} from "../type/UFixed.sol";
24
18
 
@@ -38,14 +32,6 @@ contract StakingService is
38
32
  TokenHandler _tokenHandler;
39
33
  }
40
34
 
41
- modifier onlyNftOwner(NftId nftId) {
42
- if(msg.sender != getRegistry().ownerOf(nftId)) {
43
- revert ErrorStakingServiceNotNftOwner(nftId, getRegistry().ownerOf(nftId), msg.sender);
44
- }
45
- _;
46
- }
47
-
48
-
49
35
  function createInstanceTarget(
50
36
  NftId targetNftId,
51
37
  Seconds initialLockingPeriod,
@@ -72,6 +58,7 @@ contract StakingService is
72
58
  virtual
73
59
  restricted()
74
60
  {
61
+ _checkNftType(instanceNftId, INSTANCE());
75
62
  _getStakingServiceStorage()._staking.setLockingPeriod(
76
63
  instanceNftId,
77
64
  lockingPeriod);
@@ -83,6 +70,7 @@ contract StakingService is
83
70
  virtual
84
71
  restricted()
85
72
  {
73
+ _checkNftType(instanceNftId, INSTANCE());
86
74
  _getStakingServiceStorage()._staking.setRewardRate(
87
75
  instanceNftId,
88
76
  rewardRate);
@@ -95,6 +83,7 @@ contract StakingService is
95
83
  restricted()
96
84
  returns (Amount newBalance)
97
85
  {
86
+ _checkNftType(instanceNftId, INSTANCE());
98
87
  return _refillRewardReserves(instanceNftId, rewardProvider, dipAmount);
99
88
  }
100
89
 
@@ -116,6 +105,7 @@ contract StakingService is
116
105
  restricted()
117
106
  returns (Amount newBalance)
118
107
  {
108
+ _checkNftType(instanceNftId, INSTANCE());
119
109
  // update reward reserve book keeping
120
110
  StakingServiceStorage storage $ = _getStakingServiceStorage();
121
111
  newBalance = $._staking.withdrawRewardReserves(instanceNftId, dipAmount);
@@ -123,7 +113,8 @@ contract StakingService is
123
113
  // transfer withdrawal amount to target owner
124
114
  address instanceOwner = getRegistry().ownerOf(instanceNftId);
125
115
  emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
126
- $._staking.transferDipAmount(
116
+ _distributeToken(
117
+ $._staking.getTokenHandler(),
127
118
  instanceOwner,
128
119
  dipAmount);
129
120
  }
@@ -171,11 +162,39 @@ contract StakingService is
171
162
  emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
172
163
 
173
164
  // collect staked dip by staking
174
- $._staking.collectDipAmount(
175
- stakeOwner,
165
+ _collectToken(
166
+ $._staking.getTokenHandler(),
167
+ stakeOwner,
176
168
  dipAmount);
177
169
  }
178
170
 
171
+ function _collectToken(
172
+ TokenHandler tokenHandler,
173
+ address from,
174
+ Amount amount
175
+ )
176
+ internal
177
+ virtual
178
+ {
179
+ tokenHandler.collectTokens(
180
+ from,
181
+ amount);
182
+ }
183
+
184
+ function _distributeToken(
185
+ TokenHandler tokenHandler,
186
+ address to,
187
+ Amount amount
188
+ )
189
+ internal
190
+ virtual
191
+ {
192
+ tokenHandler.distributeTokens(
193
+ tokenHandler.getWallet(),
194
+ to,
195
+ amount);
196
+ }
197
+
179
198
 
180
199
  function stake(
181
200
  NftId stakeNftId,
@@ -186,6 +205,8 @@ contract StakingService is
186
205
  restricted()
187
206
  onlyNftOwner(stakeNftId)
188
207
  {
208
+ _checkNftType(stakeNftId, STAKE());
209
+
189
210
  StakingServiceStorage storage $ = _getStakingServiceStorage();
190
211
  address stakeOwner = msg.sender;
191
212
 
@@ -197,7 +218,8 @@ contract StakingService is
197
218
  // collect staked dip by staking
198
219
  if (dipAmount.gtz()) {
199
220
  emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
200
- $._staking.collectDipAmount(
221
+ _collectToken(
222
+ $._staking.getTokenHandler(),
201
223
  stakeOwner,
202
224
  dipAmount);
203
225
  }
@@ -216,6 +238,8 @@ contract StakingService is
216
238
  NftId newStakeNftId
217
239
  )
218
240
  {
241
+ _checkNftType(stakeNftId, STAKE());
242
+
219
243
  StakingServiceStorage storage $ = _getStakingServiceStorage();
220
244
  // TODO implement
221
245
  }
@@ -228,6 +252,8 @@ contract StakingService is
228
252
  virtual
229
253
  restricted()
230
254
  {
255
+ _checkNftType(stakeNftId, STAKE());
256
+
231
257
  StakingServiceStorage storage $ = _getStakingServiceStorage();
232
258
  $._staking.updateRewards(stakeNftId);
233
259
 
@@ -241,12 +267,15 @@ contract StakingService is
241
267
  restricted()
242
268
  onlyNftOwner(stakeNftId)
243
269
  {
270
+ _checkNftType(stakeNftId, STAKE());
271
+
244
272
  StakingServiceStorage storage $ = _getStakingServiceStorage();
245
273
  address stakeOwner = msg.sender;
246
274
 
247
275
  Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
248
276
  emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
249
- $._staking.transferDipAmount(
277
+ _distributeToken(
278
+ $._staking.getTokenHandler(),
250
279
  stakeOwner,
251
280
  rewardsClaimedAmount);
252
281
  }
@@ -258,6 +287,8 @@ contract StakingService is
258
287
  restricted()
259
288
  onlyNftOwner(stakeNftId)
260
289
  {
290
+ _checkNftType(stakeNftId, STAKE());
291
+
261
292
  StakingServiceStorage storage $ = _getStakingServiceStorage();
262
293
  address stakeOwner = msg.sender;
263
294
 
@@ -268,8 +299,9 @@ contract StakingService is
268
299
 
269
300
  Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
270
301
  emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
271
- $._staking.transferDipAmount(
272
- stakeOwner,
302
+
303
+ $._staking.getTokenHandler().pushToken(
304
+ stakeOwner,
273
305
  totalAmount);
274
306
  }
275
307
 
@@ -388,7 +420,8 @@ contract StakingService is
388
420
  emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
389
421
 
390
422
  // collect reward dip from provider
391
- $._staking.collectDipAmount(
423
+ _collectToken(
424
+ $._staking.getTokenHandler(),
392
425
  rewardProvider,
393
426
  dipAmount);
394
427
  }
@@ -11,7 +11,9 @@ using {
11
11
  eqAmount as ==,
12
12
  nqAmount as !=,
13
13
  ltAmount as <,
14
+ ltAmount as <=,
14
15
  gtAmount as >,
16
+ gteAmount as >=,
15
17
  AmountLib.add,
16
18
  AmountLib.eq,
17
19
  AmountLib.eqz,
@@ -43,10 +45,18 @@ function ltAmount(Amount a, Amount b) pure returns (bool) {
43
45
  return AmountLib.lt(a, b);
44
46
  }
45
47
 
48
+ function lteAmount(Amount a, Amount b) pure returns (bool) {
49
+ return AmountLib.lte(a, b);
50
+ }
51
+
46
52
  function gtAmount(Amount a, Amount b) pure returns (bool) {
47
53
  return AmountLib.gt(a, b);
48
54
  }
49
55
 
56
+ function gteAmount(Amount a, Amount b) pure returns (bool) {
57
+ return AmountLib.gte(a, b);
58
+ }
59
+
50
60
  library AmountLib {
51
61
 
52
62
  error ErrorAmountLibValueTooBig(uint256 amount);
@@ -84,6 +94,11 @@ library AmountLib {
84
94
  return Amount.unwrap(a1) < Amount.unwrap(a2);
85
95
  }
86
96
 
97
+ /// @dev return true if amount a1 is less or equal than a2
98
+ function lte(Amount a1, Amount a2) public pure returns (bool) {
99
+ return Amount.unwrap(a1) <= Amount.unwrap(a2);
100
+ }
101
+
87
102
  /// @dev return true if amount a1 is greater than a2
88
103
  function gt(Amount a1, Amount a2) public pure returns (bool) {
89
104
  return Amount.unwrap(a1) > Amount.unwrap(a2);
@@ -12,6 +12,7 @@ import {NftId} from "./NftId.sol";
12
12
  using {
13
13
  eqClaimId as ==,
14
14
  neClaimId as !=,
15
+ ClaimIdLib.eq,
15
16
  ClaimIdLib.eqz,
16
17
  ClaimIdLib.gtz,
17
18
  ClaimIdLib.toInt,
@@ -21,7 +22,7 @@ using {
21
22
 
22
23
  // pure free functions for operators
23
24
  function eqClaimId(ClaimId a, ClaimId b) pure returns (bool isSame) {
24
- return ClaimId.unwrap(a) == ClaimId.unwrap(b);
25
+ return ClaimIdLib.eq(a, b);
25
26
  }
26
27
 
27
28
  function neClaimId(ClaimId a, ClaimId b) pure returns (bool isDifferent) {
@@ -68,6 +69,10 @@ library ClaimIdLib {
68
69
  return ClaimId.unwrap(a) > 0;
69
70
  }
70
71
 
72
+ function eq(ClaimId a, ClaimId b) public pure returns (bool) {
73
+ return ClaimId.unwrap(a) == ClaimId.unwrap(b);
74
+ }
75
+
71
76
  /// @dev Returns true if the value is zero (== 0).
72
77
  function eqz(ClaimId a) public pure returns (bool) {
73
78
  return ClaimId.unwrap(a) == 0;
@@ -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
+ }
@@ -14,6 +14,7 @@ using {
14
14
  NftIdLib.toInt,
15
15
  NftIdLib.gtz,
16
16
  NftIdLib.eqz,
17
+ NftIdLib.eq,
17
18
  NftIdLib.toKeyId,
18
19
  NftIdLib.toKey32
19
20
  } for NftId global;
@@ -75,4 +76,10 @@ library NftIdLib {
75
76
  function toKeyId(NftId id) public pure returns (KeyId keyId) {
76
77
  return KeyId.wrap(bytes31(uint248(NftId.unwrap(id))));
77
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
+ }
78
85
  }
@@ -9,6 +9,7 @@ using {
9
9
  neObjectType as !=,
10
10
  ObjectTypeLib.toInt,
11
11
  ObjectTypeLib.eqz,
12
+ ObjectTypeLib.eq,
12
13
  ObjectTypeLib.gtz
13
14
  } for ObjectType global;
14
15
 
@@ -119,6 +120,12 @@ function STAKE() pure returns (ObjectType) {
119
120
  return ObjectType.wrap(33);
120
121
  }
121
122
 
123
+ // TODO: change id for accounting
124
+ function ACCOUNTING() pure returns (ObjectType) {
125
+ return ObjectType.wrap(34);
126
+ }
127
+
128
+
122
129
  /// @dev Object type that includes any other object type.
123
130
  /// Note that eq()/'==' does not take this property into account.
124
131
  function ALL() pure returns (ObjectType) {
@@ -201,6 +208,10 @@ library ObjectTypeLib {
201
208
  return "Price";
202
209
  } else if (objectType == BUNDLE()) {
203
210
  return "Bundle";
211
+ } else if (objectType == RISK()) {
212
+ return "Risk";
213
+ } else if (objectType == ACCOUNTING()) {
214
+ return "Accounting";
204
215
  }
205
216
 
206
217
  // fallback: ObjectType<obect-type-int>
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- // uint24 allows for 65'535 claims with 255 payouts each per policy
5
- type PayoutId is uint24;
4
+ // uint40 allows for 65'535 claims with 16'777'216 payouts each per policy
5
+ type PayoutId is uint40;
6
6
 
7
7
  import {ClaimId} from "./ClaimId.sol";
8
8
  import {PAYOUT} from "./ObjectType.sol";
@@ -39,21 +39,21 @@ library PayoutIdLib {
39
39
  }
40
40
 
41
41
  /// @dev Converts an uint into a PayoutId.
42
- function toPayoutId(ClaimId claimId, uint8 payoutNo) public pure returns (PayoutId) {
43
- return PayoutId.wrap((ClaimId.unwrap(claimId) << 8) + payoutNo);
42
+ function toPayoutId(ClaimId claimId, uint24 payoutNo) public pure returns (PayoutId) {
43
+ return PayoutId.wrap((uint40(ClaimId.unwrap(claimId)) << 24) + payoutNo);
44
44
  }
45
45
 
46
46
  function toClaimId(PayoutId payoutId) public pure returns (ClaimId) {
47
- return ClaimId.wrap(uint16(PayoutId.unwrap(payoutId) >> 8));
47
+ return ClaimId.wrap(uint16(PayoutId.unwrap(payoutId) >> 24));
48
48
  }
49
49
 
50
- function toPayoutNo(PayoutId payoutId) public pure returns (uint8) {
51
- return uint8(PayoutId.unwrap(payoutId) & 255);
50
+ function toPayoutNo(PayoutId payoutId) public pure returns (uint24) {
51
+ return uint24(PayoutId.unwrap(payoutId) & 16777215);
52
52
  }
53
53
 
54
54
  /// @dev Converts the PayoutId to a uint.
55
- function toInt(PayoutId a) public pure returns (uint24) {
56
- return uint24(PayoutId.unwrap(a));
55
+ function toInt(PayoutId a) public pure returns (uint40) {
56
+ return PayoutId.unwrap(a);
57
57
  }
58
58
 
59
59
  /// @dev Returns true if the value is non-zero (> 0).
@@ -77,6 +77,6 @@ library PayoutIdLib {
77
77
  bytes31(
78
78
  bytes15(
79
79
  uint120(
80
- (NftId.unwrap(policyNftId) << 24) + PayoutId.unwrap(payoutId)))));
80
+ (NftId.unwrap(policyNftId) << 40) + PayoutId.unwrap(payoutId)))));
81
81
  }
82
82
  }
@@ -10,6 +10,10 @@ type RiskId is bytes8;
10
10
  using {
11
11
  eqRiskId as ==,
12
12
  neRiskId as !=,
13
+ RiskIdLib.eq,
14
+ RiskIdLib.eqz,
15
+ RiskIdLib.toInt,
16
+ RiskIdLib.toKeyId,
13
17
  RiskIdLib.toKey32
14
18
  } for RiskId global;
15
19
 
@@ -26,18 +30,40 @@ function neRiskId(RiskId a, RiskId b) pure returns (bool isDifferent) {
26
30
  }
27
31
 
28
32
  library RiskIdLib {
29
- // @dev Converts a role string into a role id.
33
+ function zero() public pure returns (RiskId) {
34
+ return RiskId.wrap(bytes8(0));
35
+ }
36
+
37
+ // @dev Converts a risk id into a uint256.
38
+ function toInt(RiskId riskId) public pure returns (uint256) {
39
+ return uint64(RiskId.unwrap(riskId));
40
+ }
41
+
42
+ // @dev Converts a risk id string into a risk id.
30
43
  function toRiskId(string memory risk) public pure returns (RiskId) {
31
44
  return RiskId.wrap(bytes8(keccak256(abi.encode(risk))));
32
45
  }
33
46
 
34
- /// @dev Returns the key32 value for the specified nft id and object type.
35
- function toKey32(RiskId id) public pure returns (Key32 key) {
36
- return Key32Lib.toKey32(RISK(), toKeyId(id));
47
+ /// @dev Returns the key32 value for the specified risk id.
48
+ function toKey32(RiskId riskId) public pure returns (Key32 key) {
49
+ return Key32Lib.toKey32(RISK(), toKeyId(riskId));
37
50
  }
38
51
 
39
52
  /// @dev Returns the key id value for the specified nft id
40
53
  function toKeyId(RiskId id) public pure returns (KeyId keyId) {
41
54
  return KeyId.wrap(bytes31(RiskId.unwrap(id)));
42
55
  }
56
+
57
+ function toRiskId(KeyId keyId) public pure returns (RiskId riskId) {
58
+ riskId = RiskId.wrap(bytes8(KeyId.unwrap(keyId)));
59
+ assert(toInt(riskId) < 2**64);
60
+ }
61
+
62
+ function eq(RiskId a, RiskId b) public pure returns (bool isSame) {
63
+ return eqRiskId(a, b);
64
+ }
65
+
66
+ function eqz(RiskId a) public pure returns (bool isZero) {
67
+ return eqRiskId(a, zero());
68
+ }
43
69
  }
@@ -54,18 +54,6 @@ function GIF_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2)
54
54
  /// @dev role for registering remote staking targets and reporting remote total value locked amounts.
55
55
  function GIF_REMOTE_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(3); }
56
56
 
57
- /// @dev instance specific role to register/own a product component
58
- function PRODUCT_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(11); }
59
-
60
- /// @dev instance specific role to register/own an oracle component
61
- function ORACLE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(12); }
62
-
63
- /// @dev instance specific role to register/own a distribution component
64
- function DISTRIBUTION_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(13); }
65
-
66
- /// @dev instance specific role to register/own a pool component
67
- function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(14); }
68
-
69
57
  //--- GIF core contract roles (range: 200 - 9'900) --------------------------//
70
58
  // created and assigned during initial deployment for registry and staking
71
59
  // granting for instances and components in instance service
@@ -28,10 +28,18 @@ function DEPLOYING() pure returns (StateId) {
28
28
  return toStateId(3);
29
29
  }
30
30
 
31
- function ACTIVE() pure returns (StateId) {
31
+ function DEPLOYED() pure returns (StateId) {
32
32
  return toStateId(4);
33
33
  }
34
34
 
35
+ function ACTIVE() pure returns (StateId) {
36
+ return toStateId(5);
37
+ }
38
+
39
+ function SKIPPED() pure returns (StateId) {
40
+ return toStateId(6);
41
+ }
42
+
35
43
  function APPLIED() pure returns (StateId) {
36
44
  return toStateId(10);
37
45
  }
@@ -114,6 +122,11 @@ function neStateId(StateId a, StateId b) pure returns (bool isDifferent) {
114
122
 
115
123
  // library functions that operate on user defined type
116
124
  library StateIdLib {
125
+
126
+ function zero() public pure returns (StateId) {
127
+ return StateId.wrap(0);
128
+ }
129
+
117
130
  /// @dev Converts the NftId to a uint256.
118
131
  function toInt(StateId stateId) public pure returns (uint96) {
119
132
  return uint96(StateId.unwrap(stateId));
@@ -344,6 +344,10 @@ library UFixedLib {
344
344
  return UFixed.wrap(0);
345
345
  }
346
346
 
347
+ function one() public pure returns (UFixed) {
348
+ return UFixed.wrap(MULTIPLIER);
349
+ }
350
+
347
351
  /// @dev return the absolute delta between two UFixed numbers
348
352
  function delta(UFixed a, UFixed b) public pure returns (UFixed) {
349
353
  return deltaUFixed(a, b);
@@ -192,7 +192,8 @@ contract ProxyManager is
192
192
  revert ErrorProxyManagerAlreadyDeployed();
193
193
  }
194
194
 
195
- _initializeNftOwnable(msg.sender, registry);
195
+ address initialOwner = msg.sender;
196
+ _initializeNftOwnable(registry, initialOwner);
196
197
 
197
198
  currentProxyOwner = getOwner(); // used by implementation
198
199
  initialProxyAdminOwner = address(this); // used by proxy
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etherisc/gif-next",
3
- "version": "0.0.2-df73b56-462",
3
+ "version": "0.0.2-e016345-525",
4
4
  "description": "This is the repository for the next version of the Generic Insurance Framework (GIF) smart contracts. ",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -32,8 +32,8 @@
32
32
  "@nomicfoundation/hardhat-foundry": "^1.1.1",
33
33
  "@nomicfoundation/hardhat-toolbox": "^5.0.0",
34
34
  "@nomicfoundation/hardhat-verify": "^2.0.1",
35
- "@typescript-eslint/eslint-plugin": "^7.1.0",
36
- "@typescript-eslint/parser": "^7.1.0",
35
+ "@typescript-eslint/eslint-plugin": "^8.1.0",
36
+ "@typescript-eslint/parser": "^8.1.0",
37
37
  "antlr4ng-cli": "^2.0.0",
38
38
  "dotenv": "^16.3.1",
39
39
  "eslint": "^8.50.0",
@@ -49,6 +49,7 @@
49
49
  "abi-coder": "^5.0.0",
50
50
  "antlr4ng": "^3.0.4",
51
51
  "ethers": "^6.7.1",
52
+ "ethers-decode-error": "^2.1.3",
52
53
  "solidity-docgen": "^0.6.0-beta.36",
53
54
  "winston": "^3.10.0"
54
55
  }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/bb527b66bace75f3186e90c8491949c9.json"
4
- }