@etherisc/gif-next 0.0.2-bdcb44f-543 → 0.0.2-be78639-672

Sign up to get free protection for your applications and to get access to all the features.
Files changed (736) hide show
  1. package/README.md +178 -409
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +810 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1735 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +817 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1400 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +465 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +407 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +652 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +844 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +939 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +950 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +294 -285
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1284 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1474 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +844 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +844 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
  66. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  67. package/artifacts/contracts/instance/{base/IKeyValueStore.sol/IKeyValueStore.json → BaseStore.sol/BaseStore.json} +87 -184
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  72. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +595 -1842
  74. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +678 -85
  76. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  77. package/artifacts/contracts/instance/Instance.sol/Instance.json +684 -2663
  78. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2400 -0
  80. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +872 -0
  82. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1881 -710
  84. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +621 -319
  86. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +217 -118
  88. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3039 -0
  90. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  92. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  93. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  94. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  96. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  98. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  100. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  102. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  103. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  104. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  105. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  106. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  108. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  109. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  110. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  111. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  112. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  113. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  114. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  116. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +849 -0
  118. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  120. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  121. package/artifacts/contracts/{components/Component.sol/Component.json → oracle/IOracleComponent.sol/IOracleComponent.json} +230 -242
  122. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  124. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  126. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  128. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +830 -0
  130. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  131. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +317 -536
  132. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +844 -0
  134. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  136. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  137. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +886 -0
  138. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  140. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  141. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +895 -0
  142. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  144. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  145. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → pool/Pool.sol/Pool.json} +402 -416
  146. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  148. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  149. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  150. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +886 -0
  152. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  153. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  154. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +810 -0
  156. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  157. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → product/BasicProduct.sol/BasicProduct.json} +435 -565
  158. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  159. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +844 -0
  160. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  162. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  163. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +906 -0
  164. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +804 -0
  166. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  168. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  169. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  170. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +243 -147
  172. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  173. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1006 -0
  174. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  175. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IRiskService.sol/IRiskService.json} +289 -143
  176. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  178. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  179. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  180. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +874 -0
  182. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  183. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  184. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +834 -0
  186. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  187. package/artifacts/contracts/{components → product}/Product.sol/Product.json +467 -459
  188. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  190. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  191. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +794 -0
  192. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  193. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  194. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  195. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +515 -31
  196. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  197. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +306 -124
  198. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  199. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  200. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  201. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  202. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  203. package/artifacts/contracts/registry/Registry.sol/Registry.json +999 -124
  204. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2255 -0
  206. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  207. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  208. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  209. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +381 -260
  210. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  211. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +233 -110
  212. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -0
  214. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  216. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  217. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1401 -0
  218. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  219. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +705 -0
  220. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  221. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +360 -137
  222. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  223. package/artifacts/contracts/shared/Component.sol/Component.json +695 -0
  224. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  226. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +882 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  234. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  235. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  236. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/IComponent.sol/IComponent.json} +271 -203
  238. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  240. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  241. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +261 -236
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +38 -10
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +163 -3
  250. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  252. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  253. package/artifacts/contracts/shared/IService.sol/IService.json +177 -18
  254. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  255. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  256. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  257. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +785 -0
  258. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  259. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  260. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  261. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  262. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +47 -70
  264. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  265. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  266. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  267. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +145 -100
  268. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  269. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  270. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  271. package/artifacts/contracts/shared/Service.sol/Service.json +163 -106
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  276. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  278. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2747 -0
  280. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  281. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  282. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  283. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  284. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  285. package/artifacts/contracts/staking/Staking.sol/Staking.json +3175 -0
  286. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  288. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +867 -0
  290. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  292. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  294. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +786 -0
  296. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  298. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  299. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  300. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  301. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  302. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  303. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  304. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  306. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +270 -0
  308. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  310. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  312. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  314. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  316. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  318. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  319. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  320. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  322. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  323. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  324. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  326. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  328. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  330. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  332. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  334. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  336. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +289 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  340. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  342. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  344. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  346. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  348. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  350. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  352. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  354. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  355. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  356. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +672 -0
  358. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  360. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  361. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  362. package/contracts/accounting/AccountingService.sol +274 -0
  363. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  364. package/contracts/accounting/IAccountingService.sol +47 -0
  365. package/contracts/authorization/AccessAdmin.sol +679 -0
  366. package/contracts/authorization/AccessAdminLib.sol +678 -0
  367. package/contracts/authorization/AccessManagerCloneable.sol +140 -0
  368. package/contracts/authorization/Authorization.sol +190 -0
  369. package/contracts/authorization/IAccess.sol +66 -0
  370. package/contracts/authorization/IAccessAdmin.sol +142 -0
  371. package/contracts/authorization/IAuthorization.sol +26 -0
  372. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  373. package/contracts/authorization/ServiceAuthorization.sol +300 -0
  374. package/contracts/distribution/BasicDistribution.sol +140 -0
  375. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  376. package/contracts/distribution/Distribution.sol +245 -0
  377. package/contracts/distribution/DistributionService.sol +448 -0
  378. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  379. package/contracts/distribution/IDistributionComponent.sol +45 -0
  380. package/contracts/distribution/IDistributionService.sol +115 -0
  381. package/contracts/examples/fire/DamageLevel.sol +59 -0
  382. package/contracts/examples/fire/FirePool.sol +86 -0
  383. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  384. package/contracts/examples/fire/FireProduct.sol +433 -0
  385. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  386. package/contracts/examples/fire/FireUSD.sol +26 -0
  387. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  388. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  389. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  390. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  391. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  392. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  393. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  394. package/contracts/instance/BaseStore.sol +93 -0
  395. package/contracts/instance/BundleSet.sol +130 -0
  396. package/contracts/instance/IBaseStore.sol +37 -0
  397. package/contracts/instance/IInstance.sol +130 -66
  398. package/contracts/instance/IInstanceService.sol +86 -26
  399. package/contracts/instance/Instance.sol +266 -206
  400. package/contracts/instance/InstanceAdmin.sol +307 -0
  401. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  402. package/contracts/instance/InstanceReader.sol +506 -193
  403. package/contracts/instance/InstanceService.sol +412 -388
  404. package/contracts/instance/InstanceServiceManager.sol +14 -29
  405. package/contracts/instance/InstanceStore.sol +323 -0
  406. package/contracts/instance/ProductStore.sol +290 -0
  407. package/contracts/instance/RiskSet.sol +126 -0
  408. package/contracts/instance/TargetNames.sol +10 -0
  409. package/contracts/instance/base/BalanceStore.sol +121 -0
  410. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  411. package/contracts/instance/base/ObjectCounter.sol +20 -0
  412. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  413. package/contracts/instance/base/ObjectSet.sol +77 -0
  414. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  415. package/contracts/instance/module/IBundle.sol +10 -10
  416. package/contracts/instance/module/IComponents.sol +60 -0
  417. package/contracts/instance/module/IDistribution.sol +25 -12
  418. package/contracts/instance/module/IPolicy.sol +71 -38
  419. package/contracts/instance/module/IRisk.sol +6 -1
  420. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  421. package/contracts/oracle/BasicOracle.sol +44 -0
  422. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  423. package/contracts/oracle/IOracle.sol +41 -0
  424. package/contracts/oracle/IOracleComponent.sol +33 -0
  425. package/contracts/oracle/IOracleService.sol +66 -0
  426. package/contracts/oracle/Oracle.sol +152 -0
  427. package/contracts/oracle/OracleService.sol +310 -0
  428. package/contracts/oracle/OracleServiceManager.sol +39 -0
  429. package/contracts/pool/BasicPool.sol +161 -0
  430. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  431. package/contracts/pool/BundleService.sol +386 -0
  432. package/contracts/pool/BundleServiceManager.sol +39 -0
  433. package/contracts/pool/IBundleService.sol +116 -0
  434. package/contracts/pool/IPoolComponent.sol +62 -0
  435. package/contracts/pool/IPoolService.sol +170 -0
  436. package/contracts/pool/Pool.sol +331 -0
  437. package/contracts/pool/PoolLib.sol +341 -0
  438. package/contracts/pool/PoolService.sol +614 -0
  439. package/contracts/pool/PoolServiceManager.sol +39 -0
  440. package/contracts/product/ApplicationService.sol +327 -0
  441. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  442. package/contracts/product/BasicProduct.sol +48 -0
  443. package/contracts/product/BasicProductAuthorization.sol +63 -0
  444. package/contracts/product/ClaimService.sol +626 -0
  445. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  446. package/contracts/{instance/service → product}/IApplicationService.sol +41 -35
  447. package/contracts/product/IClaimService.sol +136 -0
  448. package/contracts/product/IPolicyService.sol +102 -0
  449. package/contracts/product/IPricingService.sol +40 -0
  450. package/contracts/product/IProductComponent.sol +62 -0
  451. package/contracts/product/IRiskService.sol +48 -0
  452. package/contracts/product/PolicyService.sol +645 -0
  453. package/contracts/product/PolicyServiceLib.sol +139 -0
  454. package/contracts/product/PolicyServiceManager.sol +39 -0
  455. package/contracts/product/PricingService.sol +306 -0
  456. package/contracts/product/PricingServiceManager.sol +39 -0
  457. package/contracts/product/Product.sol +491 -0
  458. package/contracts/product/RiskService.sol +189 -0
  459. package/contracts/product/RiskServiceManager.sol +39 -0
  460. package/contracts/registry/ChainNft.sol +83 -36
  461. package/contracts/registry/IRegistry.sol +106 -33
  462. package/contracts/registry/IRegistryService.sol +36 -41
  463. package/contracts/registry/IRelease.sol +29 -0
  464. package/contracts/registry/ITransferInterceptor.sol +1 -1
  465. package/contracts/registry/Registry.sol +481 -209
  466. package/contracts/registry/RegistryAdmin.sol +173 -0
  467. package/contracts/registry/RegistryAuthorization.sol +337 -0
  468. package/contracts/registry/RegistryService.sol +90 -132
  469. package/contracts/registry/RegistryServiceManager.sol +23 -32
  470. package/contracts/registry/ReleaseAdmin.sol +199 -0
  471. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  472. package/contracts/registry/ReleaseRegistry.sol +525 -0
  473. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  474. package/contracts/registry/TokenRegistry.sol +265 -64
  475. package/contracts/shared/Component.sol +210 -0
  476. package/contracts/shared/ComponentService.sol +691 -0
  477. package/contracts/shared/ComponentServiceManager.sol +38 -0
  478. package/contracts/shared/ContractLib.sol +312 -0
  479. package/contracts/shared/IComponent.sol +58 -0
  480. package/contracts/shared/IComponentService.sol +111 -0
  481. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  482. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  483. package/contracts/shared/INftOwnable.sol +6 -2
  484. package/contracts/shared/IPolicyHolder.sol +23 -14
  485. package/contracts/shared/IRegisterable.sol +22 -1
  486. package/contracts/shared/IRegistryLinked.sol +0 -1
  487. package/contracts/shared/IService.sol +12 -7
  488. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  489. package/contracts/shared/InstanceLinkedComponent.sol +192 -0
  490. package/contracts/shared/Lifecycle.sol +88 -0
  491. package/contracts/shared/NftIdSet.sol +65 -0
  492. package/contracts/shared/NftOwnable.sol +36 -27
  493. package/contracts/shared/PolicyHolder.sol +23 -41
  494. package/contracts/shared/Registerable.sol +52 -20
  495. package/contracts/shared/RegistryLinked.sol +9 -19
  496. package/contracts/shared/Service.sol +38 -29
  497. package/contracts/shared/TokenHandler.sol +327 -12
  498. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  499. package/contracts/staking/IStaking.sol +366 -0
  500. package/contracts/staking/IStakingService.sol +127 -0
  501. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  502. package/contracts/staking/Staking.sol +797 -0
  503. package/contracts/staking/StakingLib.sol +195 -0
  504. package/contracts/staking/StakingManager.sol +53 -0
  505. package/contracts/staking/StakingReader.sol +171 -0
  506. package/contracts/staking/StakingService.sol +321 -0
  507. package/contracts/staking/StakingServiceManager.sol +46 -0
  508. package/contracts/staking/StakingStore.sol +1368 -0
  509. package/contracts/staking/TargetHandler.sol +132 -0
  510. package/contracts/staking/TargetManagerLib.sol +234 -0
  511. package/contracts/{types → type}/AddressSet.sol +1 -1
  512. package/contracts/type/Amount.sol +154 -0
  513. package/contracts/{types → type}/Blocknumber.sol +38 -19
  514. package/contracts/type/ChainId.sol +101 -0
  515. package/contracts/{types → type}/ClaimId.sol +31 -3
  516. package/contracts/type/Fee.sol +66 -0
  517. package/contracts/{types → type}/Key32.sol +2 -2
  518. package/contracts/type/Key32Set.sol +62 -0
  519. package/contracts/{types → type}/NftId.sol +28 -15
  520. package/contracts/{types → type}/NftIdSet.sol +2 -2
  521. package/contracts/type/ObjectType.sol +307 -0
  522. package/contracts/type/PayoutId.sol +82 -0
  523. package/contracts/{types → type}/Referral.sol +6 -1
  524. package/contracts/type/RequestId.sol +75 -0
  525. package/contracts/type/RiskId.sol +75 -0
  526. package/contracts/type/RoleId.sol +180 -0
  527. package/contracts/type/Seconds.sol +120 -0
  528. package/contracts/type/Selector.sol +107 -0
  529. package/contracts/{types → type}/StateId.sol +48 -4
  530. package/contracts/type/String.sol +65 -0
  531. package/contracts/{types → type}/Timestamp.sol +24 -7
  532. package/contracts/type/UFixed.sol +263 -0
  533. package/contracts/{types → type}/Version.sol +59 -7
  534. package/contracts/{shared → upgradeability}/IVersionable.sol +4 -1
  535. package/contracts/{shared → upgradeability}/ProxyManager.sol +118 -41
  536. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  537. package/contracts/{shared → upgradeability}/Versionable.sol +9 -6
  538. package/package.json +12 -8
  539. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  540. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  541. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  542. package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -447
  543. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  544. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  545. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  546. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  547. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  548. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  549. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  550. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  551. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  552. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  553. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  554. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  555. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  556. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  557. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  558. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  559. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  560. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  561. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  562. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  563. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -254
  564. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  565. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  566. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
  568. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  570. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  571. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1096
  572. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  573. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  574. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  575. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  576. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  578. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1553
  580. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  581. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -793
  582. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  583. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  584. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +0 -633
  585. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  586. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -409
  587. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  588. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -858
  589. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  590. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  591. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -347
  592. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  593. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +0 -384
  594. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  595. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1000
  596. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  597. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  598. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  599. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
  600. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  601. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -649
  602. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  603. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  604. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  605. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  606. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  607. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  608. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  609. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  610. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  611. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  612. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  613. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  614. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  615. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  616. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  617. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  618. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  619. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  620. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  621. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  622. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  623. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  624. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  625. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  626. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  627. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  628. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  629. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  630. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  631. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  632. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  633. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  634. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  635. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  636. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  637. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  638. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  640. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  641. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  642. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  644. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  645. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  646. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  648. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  649. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  650. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  652. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  653. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  654. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  655. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  656. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  657. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  658. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  659. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  660. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  662. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  664. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  665. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  666. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  667. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  668. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  669. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  670. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  671. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  672. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  673. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  674. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  675. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  676. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  677. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  678. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  679. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  680. package/contracts/components/Component.sol +0 -221
  681. package/contracts/components/Distribution.sol +0 -293
  682. package/contracts/components/IComponent.sol +0 -68
  683. package/contracts/components/IDistributionComponent.sol +0 -79
  684. package/contracts/components/IPoolComponent.sol +0 -151
  685. package/contracts/components/IProductComponent.sol +0 -40
  686. package/contracts/components/Pool.sol +0 -378
  687. package/contracts/components/Product.sol +0 -289
  688. package/contracts/instance/BundleManager.sol +0 -125
  689. package/contracts/instance/InstanceAccessManager.sol +0 -297
  690. package/contracts/instance/ObjectManager.sol +0 -84
  691. package/contracts/instance/base/ComponentService.sol +0 -134
  692. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  693. package/contracts/instance/base/KeyValueStore.sol +0 -172
  694. package/contracts/instance/base/Lifecycle.sol +0 -100
  695. package/contracts/instance/module/IAccess.sol +0 -47
  696. package/contracts/instance/module/ISetup.sol +0 -46
  697. package/contracts/instance/module/ITreasury.sol +0 -23
  698. package/contracts/instance/service/ApplicationService.sol +0 -349
  699. package/contracts/instance/service/BundleService.sol +0 -299
  700. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  701. package/contracts/instance/service/ClaimService.sol +0 -151
  702. package/contracts/instance/service/DistributionService.sol +0 -394
  703. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  704. package/contracts/instance/service/IBundleService.sol +0 -55
  705. package/contracts/instance/service/IClaimService.sol +0 -61
  706. package/contracts/instance/service/IDistributionService.sol +0 -86
  707. package/contracts/instance/service/IPolicyService.sol +0 -70
  708. package/contracts/instance/service/IPoolService.sol +0 -20
  709. package/contracts/instance/service/IProductService.sol +0 -40
  710. package/contracts/instance/service/PolicyService.sol +0 -402
  711. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  712. package/contracts/instance/service/PoolService.sol +0 -109
  713. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  714. package/contracts/instance/service/ProductService.sol +0 -233
  715. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  716. package/contracts/registry/RegistryAccessManager.sol +0 -216
  717. package/contracts/registry/ReleaseManager.sol +0 -322
  718. package/contracts/shared/ContractDeployerLib.sol +0 -72
  719. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  720. package/contracts/test/TestFee.sol +0 -25
  721. package/contracts/test/TestRegisterable.sol +0 -18
  722. package/contracts/test/TestRoleId.sol +0 -14
  723. package/contracts/test/TestService.sol +0 -25
  724. package/contracts/test/TestToken.sol +0 -26
  725. package/contracts/test/TestVersion.sol +0 -44
  726. package/contracts/test/TestVersionable.sol +0 -17
  727. package/contracts/types/ChainId.sol +0 -38
  728. package/contracts/types/Fee.sol +0 -56
  729. package/contracts/types/NumberId.sol +0 -52
  730. package/contracts/types/ObjectType.sol +0 -156
  731. package/contracts/types/PayoutId.sol +0 -54
  732. package/contracts/types/RiskId.sol +0 -43
  733. package/contracts/types/RoleId.sol +0 -95
  734. package/contracts/types/Seconds.sol +0 -54
  735. package/contracts/types/UFixed.sol +0 -325
  736. /package/contracts/{types → type}/DistributorType.sol +0 -0
package/README.md CHANGED
@@ -1,46 +1,73 @@
1
- # GIF-Next (Generic Insurance Framework, next version)
2
-
3
-
4
- ```mermaid
5
- graph TD
6
- IPoolComponent --> IComponent
7
- IComponent --> IRegisterable
8
- IComponent --> ITransferInterceptor
9
- IRegistryService --> IService
10
- IService-->IRegisterable
11
- IService-->IVersionable
12
- IRegisterable-->INftOwnable
13
- INftOwnable-->IERC165
1
+ # GIF-Next (Generic Insurance Framework, version 3)
2
+
3
+ For technical reason, this repository is called `gif-next`, but it contains the code of the version 3 of the Generic Insurance Framework (GIF).
4
+
5
+ ## Submodules checkout
6
+
7
+ The project depends heavily on the use of submodules for dependencies, so it is important to checkout the submodules when cloning the repository.
8
+
9
+ For initial checkout call
10
+
11
+ ```shell
12
+ git submodule update --init --recursive
14
13
  ```
15
14
 
16
- ## Add OpenZeppelin V5 Dependencies
15
+ To update to the latest submodules, run the following command after updating to any revision (or checking out the repository)
17
16
 
18
17
  ```shell
19
- forge install openzeppelin-contracts-500=OpenZeppelin/openzeppelin-contracts@v5.0.0
20
- cd cd lib/openzeppelin-contracts-500
21
- git checkout tags/v5.0.0
22
- cd ../..
18
+ git submodule update --recursive
23
19
  ```
24
20
 
25
- See `remappings.txt` to see how to work with different OpenZeppelin versions in parallel
21
+ ## Recommended IDE & Development Environment
22
+
23
+ The project is setup with a devcontainer for Visual Studio Code. This is the recommended way for use with the project.
24
+ It will provide a consistent development environment for all developers with all the required dependencies installed.
25
+
26
+ Hardhat is used for compiling the smart contracts and all deployment scripts are hardhat based.
27
+ Unit tests are written using the forge testing framework. See below for most important commands to run tests and deployments.
26
28
 
29
+ If you are interested in creating your own products, have a look at our [example sandbox repository](https://github.com/etherisc/gif-next-sandbox) that contains a simple example of how to build new products on top of the GIF.
30
+ Or see our documentation on the setup of the [fire example components](https://docs.etherisc.com/gif-next/3.x/example-fire).
31
+
32
+ ### Running all unit tests
33
+
34
+ ```bash
35
+ forge test
27
36
  ```
28
- cat remappings.txt
29
- @openzeppelin5/contracts/=lib/openzeppelin-contracts-500/contracts/
30
- @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
31
- @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
37
+
38
+ ### Staring a full protocol deployment
39
+
40
+ ```bash
41
+ hh run scripts/deploy_gif.ts
32
42
  ```
33
43
 
44
+ To include the fire example components instead run the following command
34
45
 
35
- ## Submodules checkout
46
+ ```bash
47
+ hh run scripts/deploy_all.ts
48
+ ```
36
49
 
37
- This repository uses submodules. To checkout or update to the latest submodules, run the following command after updating to any revision (or checking out the repository)
50
+ The command accepts regular hardhat parameters for network selection and other configuration. Also some environment variables are required for deployment.
38
51
 
39
- ```shell
40
- git submodule update --recursive
52
+ Code verification is done separately using the following command (which read data from the serialized deployment state of the deploymnent script that ran beforehand)
53
+
54
+ ```bash
55
+ hh run scripts/verify_deployment.ts
41
56
  ```
42
57
 
43
- ## Hardhat
58
+ This uses the same environment variables as the deployment script.
59
+
60
+ #### Important environment variables
61
+
62
+ - `NETWORK_URL` the rpc endpoint to use
63
+ - `WALLET_MNEMONIC` the HD wallet mnemonic to use for deployment. Wallet #0 will be the protocol owner.
64
+ - `GAS_PRICE` the gas price to use for deployment
65
+ - `RESUMEABLE_DEPLOYMENT` if this flag is set to `true`, the deployment will write all transactions to a state file so the deployment can be resumed after a failure (or after a manual stop). data is stored in the `deployment/<chainid>/` directory.
66
+
67
+ - `POLYGONSCAN_API_KEY` the api key for polygonscan
68
+
69
+
70
+ ## Hardhat commands
44
71
 
45
72
  ### NPM Commands
46
73
 
@@ -72,46 +99,56 @@ Install the dependencies before running the script below for the first time.
72
99
  npm install
73
100
  ```
74
101
 
75
- The deploy script will deploy all required contracts and create a test instance with a test product and a test pool.
102
+ The deploy script will deploy all required contracts for gif and create a test instance.
76
103
 
77
104
  ```bash
78
105
  # run deployment on a locally created ganache instance
79
- export SKIP_VERIFICATION=true
80
- hh run scripts/deploy_all.ts
106
+ hh run scripts/deploy_gif.ts
81
107
  ```
82
108
 
83
109
  ```bash
84
110
  # set appropriate values vor env variables (see below)
85
111
 
86
112
  # run deployment on another network
87
- hh run --network <networkname> scripts/deploy_all.ts
113
+ hh run --network <networkname> scripts/deploy_gif.ts
114
+ ```
115
+
116
+ The deployment will persist deployment information into the files `deployments/<chainid>/deployment_state.json`, `deployments/<chainid>/libraries.json` and `deployments/<chainid>/verification_log.json`.
117
+ This data can then be used for verification of the deployed contracts on etherscan/polygonscan.
118
+
119
+ For the verification of the contracts on etherscan/polygonscan the above files (created by previous deployment) are required and then the following command can be used:
120
+
121
+ ```bash
122
+ hh run --network <networkname> scripts/verify_deployment.ts
88
123
  ```
89
124
 
90
125
  Environment variables:
91
126
 
92
- - `SKIP_VERIFICATION` set to `true` to skip etherscan verification (required for ganacht and anvil)
93
- - `WEB3_INFURA_PROJECT_ID` set to infura project id (required for mumbai and mainnet)
127
+ - `WRITE_ADDRESSES_TO_FILE` set to `true` to write the addresses of the deployed contracts to a file (default: `false`)
128
+ - `RESUMEABLE_DEPLOYMENT` set to `true` to have all (deployment) transactions written to a state file so the script can be resumed after a failure (or after a manual stop) (default: `false`)
129
+ - `GAS_PRICE` set to the gas price to use for deployment (default: `undefined`)
94
130
  - `WALLET_MNEMONIC` the mnemonic of the wallet to use for deployment (required for mumbai and mainnet)
131
+ - `DIP_ADDRESS` the address of the already deployed DIP token. if not set, the script will deploy a new DIP token
132
+ - `WEB3_INFURA_PROJECT_ID` set to infura project id (required for mumbai and mainnet)
95
133
  - `ETHERSCAN_API_KEY` `POLYGONSCAN_API_KEY` the api key for etherscan/polygonscan (required for mumbai and mainnet)
96
134
 
97
- ### Create a new instance
98
-
99
- Requires previous step to be completed.
135
+ ### Deploy full protocol with fire example components
100
136
 
101
137
  ```bash
102
- # set appropriate values vor env variables (see below)
103
-
104
- hh run --network <networkname> scripts/new_instance.ts
138
+ hh run scripts/deploy_all.ts
105
139
  ```
106
140
 
107
- Currently an HD wallet is expected to be used for the deployment. The mnemonic of the wallet needs to be provided via the `WALLET_MNEMONIC` environment variable.
108
- The instance owner will be the 11th address of the wallet.
141
+ Like before, use the `--network` option to deploy on a different network.
109
142
 
110
- Environment variables:
143
+ ### Deploy only the fire example components
111
144
 
112
- - `WEB3_INFURA_PROJECT_ID` set to infura project id (required for mumbai and mainnet)
113
- - `WALLET_MNEMONIC` the mnemonic of the wallet to use for deployment (required for mumbai and mainnet)
114
- - `REGISTRY_ADDRESS` the address of the registry that is already deployed and configured and has a valid master instance
145
+ ```bash
146
+ hh run scripts/deploy_fire_components.ts
147
+ ```
148
+
149
+ Ensure that the deployment runs on a chain where a compatible version of the GIF is already deployed. Then ensure the correct environment variables are set. An up to date list of required environment variables can be found in the `deploy_fire_components.ts` script in the main method (just check the lines that contain a `process.env` statement). To be safe, set the environment variable `WRITE_ADDRESSES_TO_FILE` to `true` when deploying the gif and then copy all values from the generated `deployment.env` file to the `.env` file in the root directory of the repository before running the fire example deployment.
150
+
151
+ Like before, use the `--network` option to deploy on a different network.
115
152
 
116
153
 
117
154
  ### Console
@@ -125,9 +162,27 @@ await provider.getBalance(me)
125
162
  ```
126
163
 
127
164
 
128
- ### Documentation
129
165
 
130
- https://hardhat.org/hardhat-runner/docs/guides/compile-contracts
166
+ ### Scripts to find syntax bugs in code
167
+
168
+ #### find methods missing the `restricted` modifier
169
+
170
+ ```bash
171
+ hh run scripts/find_unrestricted_methods.ts
172
+ ```
173
+
174
+ Checks all public/external methods in services and components for methods that are missing the `restricted` modifier but should have one.
175
+
176
+ The script `find_unrestricted_methods.ts` is based on the ANTLR grammar `Solidity.g4` (from https://github.com/solidity-parser/antlr) and uses the antlr4ng runtime (https://github.com/mike-lischke/antlr4ng).
177
+ To compile grammar to ts classes run `antlr4ng -Dlanguage=TypeScript -o antlr/generated/ -visitor -listener antlr/Solidity.g4` (requires openjdk to be installed `sudo apt install openjdk-17-jre-headless`).
178
+
179
+ #### find methods missing the `virtual` keyword
180
+
181
+ ```bash
182
+ hh run scripts/find_missing_virtual_methods.ts.ts
183
+ ```
184
+
185
+ Checks all public/external methods in services and components for methods that are not marked as `virtual` but should be.
131
186
 
132
187
  ## Forge
133
188
 
@@ -137,16 +192,20 @@ https://hardhat.org/hardhat-runner/docs/guides/compile-contracts
137
192
  forge build
138
193
 
139
194
  # contract sizes
140
- forge build --sizes | grep Instance
195
+ forge build --sizes
141
196
 
142
197
  forge test
143
198
 
144
199
  # run single test case
145
- forge test --mt test_decimals
200
+ forge test --mt test_deployAllSetup
201
+
202
+ # run all tests except long running
203
+ forge test --nmt longRunning
146
204
 
147
- # run single test case with substantial logginglogging
205
+ # run single test case with substantial logging
148
206
  # to include logs as well use -vvvvv
149
- forge test -vvvv --mt test_decimals
207
+ # to add internal functions to trace add --
208
+ forge test --decode-internal --mt test_decimals -vvvv
150
209
 
151
210
  # provide gas report for a single test
152
211
  forge test --mt test_decimals --gas-report
@@ -154,64 +213,28 @@ forge test --mt test_decimals --gas-report
154
213
  # provide code coverage report
155
214
  forge coverage
156
215
  forge coverage --report lcov
216
+ ```
157
217
 
218
+ ### Aliases configured in the devcontainer setup
158
219
 
159
- ```
160
220
 
161
- Chisel session
162
- ```typescript
163
- import "./contracts/components/Component.sol";
164
- import "./contracts/components/IPool.sol";
165
- import "./contracts/components/IProduct.sol";
166
- import "./contracts/components/Pool.sol";
167
- import "./contracts/components/Product.sol";
168
- import "./contracts/instance/access/Access.sol";
169
- import "./contracts/instance/access/IAccess.sol";
170
- import "./contracts/instance/component/ComponentModule.sol";
171
- import "./contracts/instance/component/IComponent.sol";
172
- import "./contracts/instance/IInstance.sol";
173
- import "./contracts/instance/policy/IPolicy.sol";
174
- import "./contracts/instance/policy/PolicyModule.sol";
175
- import "./contracts/instance/product/IProductService.sol";
176
- import "./contracts/instance/product/ProductService.sol";
177
- import "./contracts/registry/IRegistry.sol";
178
-
179
- import {Instance} from "./contracts/instance/Instance.sol";
180
- import {Registry} from "./contracts/registry/Registry.sol";
181
- import {DeployAll} from "./scripts/DeployAll.s.sol";
182
- import {TestPool} from "./test_forge/mock/TestPool.sol";
183
- import {TestProduct} from "./test_forge/mock/TestProduct.sol";
184
-
185
- string memory instanceOwnerName = "instanceOwner";
186
- address instanceOwner = vm.addr(uint256(keccak256(abi.encodePacked(instanceOwnerName))));
187
-
188
- string memory productOwnerName = "productOwner";
189
- address productOwner = vm.addr(uint256(keccak256(abi.encodePacked(productOwnerName))));
190
-
191
- string memory poolOwnerName = "poolOwner";
192
- address poolOwner = vm.addr(uint256(keccak256(abi.encodePacked(poolOwnerName))));
193
-
194
- string memory customerName = "customer";
195
- address customer = vm.addr(uint256(keccak256(abi.encodePacked(customerName))));
196
-
197
- DeployAll deployer = new DeployAll();
198
- (
199
- Registry registry,
200
- Instance instance,
201
- TestProduct product,
202
- TestPool pool
203
- ) = deployer.run(
204
- instanceOwner,
205
- productOwner,
206
- poolOwner);
207
-
208
- ProductService ps = ProductService(address(registry));
209
-
210
- uint256 bundleNftId = 99;
211
- uint256 sumInsuredAmount = 1000*10**6;
212
- uint256 premiumAmount = 110*10**6;
213
- uint256 lifetime =365*24*3600;
214
- uint256 policyNftId = ps.createApplicationForBundle(customer, bundleNftId, sumInsuredAmount, premiumAmount, lifetime);
221
+ | Alias | Command |
222
+ | --- | --- |
223
+ | fb | forge build |
224
+ | fbw | forge build --watch |
225
+ | fbc | forge build contracts/ |
226
+ | fbcw | forge build --watch contracts/ |
227
+ | ft | forge test |
228
+ | ftf | forge test --nmt "_longRunning" |
229
+ | ftt | forge test -vvvv --mt |
230
+ | fttg | forge test -vvvv --gas-report --mt |
231
+ | fttw | forge test -vvvv --watch --mt |
232
+ | ftc | forge test -vvvv --mc |
233
+ | ftcw | forge test -vvvv --watch --mc |
234
+ | fcf | forge coverage --nmt "_longRunning" |
235
+ | fcfr | forge coverage --nmt "_longRunning" --report lcov |
236
+
237
+ **Important**: All profiles are run using the foundry `ci` profile which disables the optimizer (for speed).
215
238
 
216
239
  ```
217
240
  ### Library Linking
@@ -232,17 +255,7 @@ https://book.getfoundry.sh/reference/
232
255
 
233
256
  ## Style Guide
234
257
 
235
- Solidity code is to be written according to the [Solidity Style Guide](https://docs.soliditylang.org/en/latest/style-guide.html).
236
-
237
- Documentation of the code should be written inline using [NatSpec](https://docs.soliditylang.org/en/latest/natspec-format.html).
238
-
239
- ### Naming conventions
240
-
241
- Additionally, we use the following naming conventions:
242
-
243
- - Function arguments and return types: If using custom data types, make the name include the type by appending the Type to the argument name, e.g. `function getInfo(NftId bundleNftId)` instead of `function getInfo(NftId bundleId)`. Background: Custom data types are lost when using the ABI or Typescript binding classes (e.g. instead of `NftID` a `uint96` is used), so the type needs to be included in the name to make it clear what the argument is without having to look at the documentation or checking the solidity source code.
244
- - When naming a field or an attribute `id` and the context is not clear, call it `nftId` instead so its clear what type if id it is as there will be multiple ids for different kind of objects. Example: if you the function has a bundle nft id and a policy nft id as arguments, call them `bundleNftId` and `policyNftId` instead of `id` and `policyId`. In case of doubt, be a bit more verbose for the sake of clarity.
245
- - When naming things, remember that the code will likely be used in Javascript/Typescript as well, so avoid names that are reserved in Javascript/Typescript. A list of reserved words in Javascript can be found [here](https://www.w3schools.com/js/js_reserved.asp) and a list of reserved words in Typescript can be found [here](https://www.tektutorialshub.com/typescript/identifiers-keywords-in-typescript/).
258
+ Please see https://docs.etherisc.com/gif-next/3.x/ for style guide and general coding rules.
246
259
 
247
260
  ### Automatic code formatting
248
261
 
@@ -256,300 +269,56 @@ To execute formatting run `npm run styleFix`.
256
269
  We use solhint to lint the code.
257
270
  To execute linting run `npm run lint`.
258
271
 
272
+ ## Storage layout
259
273
 
260
- ### Adding Brownie (Legacy)
274
+ ### Analysis tool
261
275
 
262
- python3 is already installed
276
+ Command line call
263
277
 
264
278
  ```bash
265
- npm install -g ganache
266
- sudo apt update
267
- sudo apt install python3-pip
268
- pip install eth-brownie
269
- brownie pm install OpenZeppelin/openzeppelin-contracts@4.9.3
270
- brownie pm install OpenZeppelin/openzeppelin-contracts@5.0.0
279
+ hh run scripts/analyze_storage_layout.ts
271
280
  ```
272
281
 
273
- ```bash
274
- brownie compile --all
275
- brownie console
276
- ```
277
-
278
- ```python
279
- registry_owner = accounts[0]
280
- instance_owner = accounts[1]
281
- product_owner = accounts[2]
282
-
283
- # deploy libs and helper contracts
284
- nft_id_lib = NftIdLib.deploy({'from': registry_owner})
285
- ufixed_math_lib = UFixedMathLib.deploy({'from': registry_owner})
286
- test_fee = TestFee.deploy({'from': registry_owner})
287
-
288
- # deploy registry and a token
289
- registry = Registry.deploy({'from': registry_owner})
290
- nft = ChainNft.deploy(registry, {'from': registry_owner})
291
- registry.initialize(nft, {'from': registry_owner})
292
- token = TestUsdc.deploy({'from': registry_owner})
293
-
294
- # deploy services
295
- component_owner_service = ComponentOwnerService.deploy(registry, {'from': registry_owner})
296
- product_service = ProductService.deploy(registry, {'from': registry_owner})
297
-
298
- # deploy an instance
299
- instance = Instance.deploy(registry, component_owner_service, product_service, {'from': instance_owner})
300
-
301
- # deploy product
302
- pool = TestPool.deploy(registry, instance, token, {'from': product_owner})
303
- policy_fee = test_fee.createFee(1, -1, 0)
304
- product = TestProduct.deploy(registry, instance, token, pool, policy_fee, {'from': product_owner})
305
-
306
- # grant roles
307
- pool_owner_role = instance.getRoleForName("PoolOwner")
308
- product_owner_role = instance.getRoleForName("ProductOwner")
309
- instance.grantRole(pool_owner_role, product_owner, {'from': instance_owner})
310
- instance.grantRole(product_owner_role, product_owner, {'from': instance_owner})
311
-
312
- # register objects
313
- instance.register()
314
- component_owner_service.register(pool, {'from': product_owner})
315
- component_owner_service.register(product, {'from': product_owner})
316
-
317
- instance_id = instance.getNftId()
318
- pool_id = pool.getNftId()
319
- product_id = product.getNftId()
320
- ```
321
-
322
- ## Objects
323
-
324
- ### Registry
325
-
326
- Mandatory properties
327
-
328
- * One registry per chain
329
- * Global registry: the registry on mainnet
330
- * One entry per protocol object
331
- * Once registered object properties are immutable
332
- * Globally unique NFT minted per protocol object (chain id is embedded in NFT id)
333
- * Object ownership defined by NFT ownernship
334
- * Typed objects (instance, product, policy, ...)
335
- * Each object has parent object (only one exception: protocol object does not have parent object)
336
- * Parent object type is defined by type of child object
337
-
338
- Object properties (for smart contracts)
339
- * Objects that represent a smart contract record its contract address
340
- * With one exception (see next point) smart contract addresses refer to the address on the same chain as the registry
341
- * The global registry also holds entries for all the registries on different chains than mainnet, in these cases the addresses refer to the chains of these chain specific registries (this is the only case where registered addresses do not refer to the same chain)
342
-
343
- Optional properties
344
-
345
- * Objects can have names
346
- * Object names are unique per chain
347
- * Objects may define an intercepting property, in which case a predefined smart contract is involved in NFT transfers of the objects NFT (transfer may trigger actions, transfer may be blocked etc)
348
- *
349
-
350
- Ownership property
351
-
352
- * Object ownership defined by ownership of NFT representing the object
353
- * Protocol
354
- * Fixed/predefined owner (address without private key)
355
- * Registry
356
- * Allows registration of token and services (per major release)
357
- * May transfer ownership
358
- * Token
359
- * Fixed/predefined owner (address without private key)
360
- * TODO add whitelisting for token per major release
361
- * Service
362
- * Allows upgrades of services as long as major version is same
363
- * Until further notice the same entity as the registry owner
364
- * May transfer ownership
365
- * Instance
366
- * Granting/revoking of roles (both default + custom)
367
- * Management of custom roles and targets
368
- * May lock instance and/or components
369
- * May transfer ownership
370
- * Component (Product, Pool, Distribution, Oracle)
371
- * Register component
372
- * Set component wallet (which receives fees, holds funds)
373
- * May lock component
374
- * May transfer ownership
375
- * Additional use case specific features
376
- * Policy
377
- * Represents policy holder
378
- * Receive payouts (GIF default behaviour)
379
- * May transfer ownership
380
- * Bundle
381
- * Represents funds owner
382
- * May withdraw funds not locked by active policies
383
- * May transfer ownership
384
- * Distributor
385
- * Receives commissions from sales (GIF default behaviour)
386
- * May transfer ownership
387
-
388
- Intercepting property
389
- * Service owner is indirectly owner of service manager contract
390
-
391
- * Instance
392
- * intercepts transfer of instance owner (new owner needs access manager admin rights for custom roles and targets)
393
- * intercepts transfer of components, to do what? check that new owner has necessary roles?
394
- * Product
395
- * intercepts transfer of policies (use case specific: eg. limit/disallow transfers)
396
- * Pool:
397
- * intercepts transfer of bundles (use case specific: eg. limit/disallow transfers)
398
- * Distribution
399
- * intercepts transfer of distributors (bookkeeping: only one distributor per address allowed)
400
- * Oracle
401
- * likely meaningless
402
-
403
-
404
- ### Instance
405
-
406
- ### Product
407
-
408
- ### Payout Handling
409
-
410
- Pool specifies **retention level**.
411
- Retention level defines up to which percentage of the sum insured the pool is payout out using its own/current funds.
412
- Depending on the amount of a new payout the poolService decides to either execute the payout directly or to add the payout as a pending payout with a notification of the pool.
413
-
414
- The sequence below sketches the small payout flow (payout < retention amount)
415
- - retention level: 30%
416
- - sum insured: 1000
417
- - payout: 200
418
-
419
- ```mermaid
420
- sequenceDiagram
421
- participant customer
422
- participant product
423
- participant claimService
424
- participant poolService
425
- participant pool
426
- product->>claimService: createPayout()
427
- claimService ->> poolService: requestPayout()
428
- poolService -->> pool: verifyPayout() *
429
- poolService ->> poolService: processPayout()
430
- poolService ->> customer: transfer token for payout
431
- poolService ->> claimService: payoutExecuted()
432
- poolService -->> customer: payoutExecutedCallback() **
433
- ```
434
-
435
- *: if pool is configured to verify payouts before execution
436
-
437
- **: callback only if customer is contract (IPolicyHolder)
438
-
439
- The sequence below sketches the call flow for payouts larger than the retention amount
440
- - retention level: 30%
441
- - sum insured: 1000
442
- - payout: 500
443
- * locally available: 300
444
- * via policy (re-insurance): 200
445
-
446
- ```mermaid
447
- sequenceDiagram
448
- participant customer
449
- participant product
450
- participant claimService
451
- participant poolService
452
- participant pool
453
- pool ->> reinsuranceProduct: applyForPolicy()
454
- product->>claimService: createPayout()
455
- claimService ->> poolService: requestPayout()
456
- poolService ->> pool: pendingPayoutAdded()
457
- pool ->> pool: getReinsurancePolicy()
458
- pool ->> reinsuranceProduct: claim()
459
- reinsuranceProduct -->> reinsurancePool: createPayout
460
- reinsurancePool ->> pool: transfer token for payout
461
- reinsurancePool ->> pool: payoutExecutedCallback()
462
- pool ->> poolService: processPendingPayout()
463
- poolService ->> customer: transfer token for payout
464
- poolService ->> claimService: payoutExecuted()
465
- ```
466
-
467
- ### Pool
468
-
469
- ### Distribution
470
-
471
- ### Oracle
472
-
473
- ## Registry and Services
474
-
475
- ### Principles
476
-
477
- - 1 service per object type and major version
478
- - registry service guards write access to registry
479
- - all other objects registered via registry service
480
- - root object for the complete tree is the protocol object
481
- - under the root object a single registry object is registered (= global registry/ethereum mainnet)
482
-
483
-
484
- ### Service Responsibilities
485
-
486
- Registry Service
487
-
488
- - deployed and registered during bootstrapping of registry
489
- - used to register tokens and other services by registry owner
490
- - an object may only be registered by the service designated by the type of the object
491
- - to register an object the parent object needs already be registered
492
- - the type of the object to be registered needs to match a valid child type/parent type combination
493
-
494
- Instance Service
495
-
496
- - deploys master instance during its own bootstrapping (if allowed by contract size)
497
- - registered via registry service by registry owner
498
- - registeres master instance during its own registration by regsitry owner
499
- - deploys and registeres new instances (= instance factory) by instance owner (instance owner is a permissionless role, anybody may creates a new instance)
500
- - provides upgrade functionality to instance owners
501
-
502
- Product Service
503
-
504
- - registered via registry service by registry owner
505
- - registers products for registered instances via registry service by product owner (product owner role is permissend by the product's instance)
506
- - registers applications/policies for registered products via registry service
507
-
508
- Distribution Service
509
-
510
- - registered via registry service by registry owner
511
- - registers distribution components for registered products via registry service by distribution owner (distribution owner role is permissend by the product's instance)
512
- - registers distributors for registered distribution components via registry service
513
-
514
- ## Contract Organisation
515
-
516
- now
517
-
518
- contracts
519
- components
520
- instance
521
- registry
522
- shared
523
- types
524
-
525
-
526
- contracts
527
- component
528
- pool
529
- Pool.sol
530
- PoolService.sol
531
- oracle
532
- distribution
533
- product
534
- Product.sol
535
- ProductService.sol
536
- Component.sol
537
- ComponentService.sol
538
- instance
539
- Instance.sol
540
- InstanceAccessManager.sol
541
- InstanceReader.sol
542
- InstanceService.sol
543
- InstanceServiceManager.sol
544
- registry
545
- ChainNft.sol
546
- Registry.sol
547
- RegistryService.sol
548
- RegistryServiceManager.sol
549
- shared
550
- Registerable.sol
551
- RegisterableUpgradable.sol
552
- type
553
- NftId.sol
554
- ObjectType.sol
555
-
282
+ Analyses contract `MockStorageLayout.sol` and writes the storage layout to `storage_layout.json` and `storage_layout.csv`.
283
+ New structs must be added to `MockStorageLayout` to be included in analysis.
284
+
285
+ Storage layout details:
286
+ - Items fill up the current slot if possible
287
+ - If not enough space is left in the current slot, the item is placed in the next slot
288
+ - Stucts and arrays always start a new slot
289
+ - Items following a struct or array always start a new slot
290
+
291
+ More at https://docs.soliditylang.org/en/latest/internals/layout_in_storage.html
292
+
293
+ ### Custom types sizes
294
+
295
+ | Type | Size |
296
+ | --- | --- |
297
+ | Amount | 12 bytes |
298
+ | Blocknumber | 4 bytes |
299
+ | ClaimId | 2 bytes |
300
+ | DistributorType | 8 bytes |
301
+ | NftId | 12 bytes |
302
+ | ObjectType | 1 byte |
303
+ | ReferralId | 8 bytes |
304
+ | RoleId | 1 byte |
305
+ | RiskId | 8 bytes |
306
+ | Seconds | 5 bytes |
307
+ | Selector | 4 bytes |
308
+ | StateId | 1 byte |
309
+ | Str | 32 bytes |
310
+ | Timestamp | 5 bytes |
311
+ | Version | 3 byte |
312
+ | VersionPart | 1 byte |
313
+ | UFixed | 20 bytes |
314
+ | address | 20 bytes |
315
+ | uint256 | 32 bytes |
316
+ | uint128 | 16 bytes |
317
+ | uint160 | 20 bytes |
318
+ | uint64 | 8 bytes |
319
+ | uint32 | 4 bytes |
320
+ | uint16 | 2 bytes |
321
+ | string | 32 bytes |
322
+ | bytes | 32 bytes |
323
+ | bytes8 | 8 byte |
324
+ | bool | 1 byte |