@etherisc/gif-next 0.0.2-c4ddbb7-673 → 0.0.2-c5049d4-401

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 (399) hide show
  1. package/README.md +8 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +33 -52
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +0 -19
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +42 -248
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -222
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +134 -286
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +84 -120
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -37
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -62
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1936 -0
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  41. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  51. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  54. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  56. package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
  57. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  58. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +97 -100
  59. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  61. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -118
  63. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +39 -146
  65. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
  67. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +215 -209
  69. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  71. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  74. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  76. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  78. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  84. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  85. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  86. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +32 -238
  88. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  90. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -37
  93. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -222
  96. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
  98. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
  100. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  101. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +12 -284
  102. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  104. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +268 -201
  106. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +113 -97
  108. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +125 -23
  110. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +2 -95
  112. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
  114. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  115. package/artifacts/contracts/pool/Pool.sol/Pool.json +2 -280
  116. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  117. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +269 -248
  118. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +66 -82
  120. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  121. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
  122. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
  124. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  125. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +3 -225
  126. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  127. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  128. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  129. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +206 -175
  130. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +92 -100
  132. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  134. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
  136. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +253 -119
  138. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  140. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  141. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -37
  142. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  143. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  144. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  145. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +358 -315
  146. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -100
  148. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  149. package/artifacts/contracts/product/PricingService.sol/PricingService.json +115 -267
  150. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  151. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
  152. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  153. package/artifacts/contracts/product/Product.sol/Product.json +3 -225
  154. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  155. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  156. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  158. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  159. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  160. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  161. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +221 -21
  162. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  164. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/Registry.sol/Registry.json +419 -82
  166. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  167. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +243 -131
  168. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  169. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -130
  170. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
  172. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  174. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
  176. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  178. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  180. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  181. package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
  182. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +89 -212
  184. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  185. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +96 -114
  186. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
  188. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  189. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  190. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  192. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -37
  195. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  197. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +14 -46
  200. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -222
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  211. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  215. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -140
  216. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  218. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  219. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  220. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
  222. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  223. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  224. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  225. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  229. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
  231. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  232. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
  233. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  235. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
  237. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  239. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
  241. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
  243. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +84 -84
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
  247. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  251. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  253. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  255. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  257. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  258. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  260. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  261. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  262. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  264. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  266. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  268. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  270. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  272. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  274. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  276. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  280. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  283. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  287. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  288. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  289. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +39 -70
  290. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  291. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  292. package/contracts/authorization/AccessAdmin.sol +25 -24
  293. package/contracts/authorization/Authorization.sol +0 -1
  294. package/contracts/authorization/IAccessAdmin.sol +0 -1
  295. package/contracts/distribution/Distribution.sol +1 -1
  296. package/contracts/distribution/DistributionService.sol +31 -32
  297. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  298. package/contracts/distribution/IDistributionService.sol +9 -5
  299. package/contracts/examples/fire/DamageLevel.sol +56 -0
  300. package/contracts/examples/fire/FirePool.sol +75 -0
  301. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  302. package/contracts/examples/fire/FireProduct.sol +390 -0
  303. package/contracts/examples/fire/FireProductAuthorization.sol +39 -0
  304. package/contracts/examples/fire/FireUSD.sol +26 -0
  305. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  306. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  307. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  308. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  309. package/contracts/instance/IInstance.sol +7 -30
  310. package/contracts/instance/Instance.sol +10 -35
  311. package/contracts/instance/InstanceAdmin.sol +23 -4
  312. package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
  313. package/contracts/instance/InstanceReader.sol +32 -7
  314. package/contracts/instance/InstanceService.sol +62 -39
  315. package/contracts/instance/InstanceServiceManager.sol +6 -7
  316. package/contracts/instance/InstanceStore.sol +11 -1
  317. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  318. package/contracts/instance/module/IBundle.sol +1 -1
  319. package/contracts/instance/module/IComponents.sol +1 -6
  320. package/contracts/instance/module/IPolicy.sol +22 -22
  321. package/contracts/mock/Dip.sol +1 -1
  322. package/contracts/oracle/Oracle.sol +2 -1
  323. package/contracts/oracle/OracleService.sol +9 -6
  324. package/contracts/oracle/OracleServiceManager.sol +6 -6
  325. package/contracts/pool/BasicPool.sol +7 -5
  326. package/contracts/pool/BasicPoolAuthorization.sol +5 -2
  327. package/contracts/pool/BundleService.sol +142 -45
  328. package/contracts/pool/BundleServiceManager.sol +6 -6
  329. package/contracts/pool/IBundleService.sol +22 -8
  330. package/contracts/pool/IPoolService.sol +36 -26
  331. package/contracts/pool/Pool.sol +22 -24
  332. package/contracts/pool/PoolService.sol +157 -83
  333. package/contracts/pool/PoolServiceManager.sol +4 -4
  334. package/contracts/product/ApplicationService.sol +43 -26
  335. package/contracts/product/ApplicationServiceManager.sol +4 -4
  336. package/contracts/product/BasicProduct.sol +1 -0
  337. package/contracts/product/ClaimService.sol +208 -79
  338. package/contracts/product/ClaimServiceManager.sol +4 -4
  339. package/contracts/product/IApplicationService.sol +1 -0
  340. package/contracts/product/IClaimService.sol +28 -5
  341. package/contracts/product/IPolicyService.sol +31 -34
  342. package/contracts/product/IPricingService.sol +7 -7
  343. package/contracts/product/IProductComponent.sol +0 -1
  344. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  345. package/contracts/product/PolicyService.sol +345 -193
  346. package/contracts/product/PolicyServiceManager.sol +4 -4
  347. package/contracts/product/PricingService.sol +46 -46
  348. package/contracts/product/PricingServiceManager.sol +3 -3
  349. package/contracts/product/Product.sol +58 -34
  350. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  351. package/contracts/product/RiskServiceManager.sol +39 -0
  352. package/contracts/registry/ChainNft.sol +65 -32
  353. package/contracts/registry/IRegistry.sol +49 -15
  354. package/contracts/registry/Registry.sol +321 -195
  355. package/contracts/registry/RegistryAdmin.sol +150 -51
  356. package/contracts/registry/RegistryService.sol +2 -2
  357. package/contracts/registry/RegistryServiceManager.sol +2 -2
  358. package/contracts/registry/ReleaseRegistry.sol +12 -6
  359. package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
  360. package/contracts/shared/Component.sol +17 -29
  361. package/contracts/shared/ComponentService.sol +20 -30
  362. package/contracts/shared/ComponentServiceManager.sol +8 -5
  363. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  364. package/contracts/shared/ContractLib.sol +38 -0
  365. package/contracts/shared/IComponent.sol +4 -4
  366. package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
  367. package/contracts/shared/IPolicyHolder.sol +12 -22
  368. package/contracts/shared/InitializableERC165.sol +2 -2
  369. package/contracts/shared/InstanceLinkedComponent.sol +4 -4
  370. package/contracts/shared/NftOwnable.sol +5 -5
  371. package/contracts/shared/PolicyHolder.sol +12 -53
  372. package/contracts/shared/Registerable.sol +4 -4
  373. package/contracts/shared/RegistryLinked.sol +3 -2
  374. package/contracts/shared/Service.sol +16 -11
  375. package/contracts/shared/TokenHandler.sol +100 -19
  376. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  377. package/contracts/staking/IStaking.sol +2 -1
  378. package/contracts/staking/StakeManagerLib.sol +18 -25
  379. package/contracts/staking/Staking.sol +11 -29
  380. package/contracts/staking/StakingManager.sol +8 -6
  381. package/contracts/staking/StakingService.sol +10 -14
  382. package/contracts/staking/StakingServiceManager.sol +2 -2
  383. package/contracts/staking/TargetManagerLib.sol +7 -3
  384. package/contracts/type/Blocknumber.sol +7 -1
  385. package/contracts/type/NftId.sol +1 -0
  386. package/contracts/type/ObjectType.sol +15 -11
  387. package/contracts/type/RiskId.sol +15 -1
  388. package/contracts/type/Seconds.sol +21 -1
  389. package/contracts/type/StateId.sol +1 -0
  390. package/contracts/type/Timestamp.sol +11 -1
  391. package/contracts/upgradeability/ProxyManager.sol +67 -34
  392. package/contracts/upgradeability/Versionable.sol +2 -2
  393. package/package.json +1 -1
  394. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  395. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  396. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  397. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  398. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  399. package/contracts/product/ProductServiceManager.sol +0 -39
@@ -1,8 +1,6 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
4
  import {IRegistry} from "../registry/IRegistry.sol";
7
5
  import {IInstance} from "../instance/IInstance.sol";
8
6
  import {IComponentService} from "../shared/IComponentService.sol";
@@ -14,12 +12,11 @@ import {IPolicy} from "../instance/module/IPolicy.sol";
14
12
 
15
13
  import {Amount, AmountLib} from "../type/Amount.sol";
16
14
  import {NftId, NftIdLib} from "../type/NftId.sol";
17
- import {Fee, FeeLib} from "../type/Fee.sol";
18
15
  import {KEEP_STATE} from "../type/StateId.sol";
19
16
  import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
20
17
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
21
18
  import {IDistributionService} from "./IDistributionService.sol";
22
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
+ import {UFixed} from "../type/UFixed.sol";
23
20
  import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
24
21
  import {ReferralId, ReferralLib} from "../type/Referral.sol";
25
22
  import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
@@ -40,21 +37,21 @@ contract DistributionService is
40
37
  bytes memory data
41
38
  )
42
39
  internal
43
- initializer
44
40
  virtual override
41
+ initializer()
45
42
  {
46
- address initialOwner;
47
- address registryAddress;
48
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
49
- // TODO while DistributionService is not deployed in DistributionServiceManager constructor
50
- // owner is DistributionServiceManager deployer
51
- initializeService(registryAddress, address(0), owner);
43
+ (
44
+ address registryAddress,
45
+ address authority
46
+ ) = abi.decode(data, (address, address));
47
+
48
+ _initializeService(registryAddress, authority, owner);
52
49
 
53
50
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
54
51
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
55
52
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
56
53
 
57
- registerInterface(type(IDistributionService).interfaceId);
54
+ _registerInterface(type(IDistributionService).interfaceId);
58
55
  }
59
56
 
60
57
 
@@ -209,11 +206,28 @@ contract DistributionService is
209
206
  return referralId;
210
207
  }
211
208
 
209
+ /// @inheritdoc IDistributionService
210
+ function processReferral(
211
+ NftId distributionNftId,
212
+ ReferralId referralId
213
+ )
214
+ external
215
+ virtual
216
+ restricted
217
+ {
218
+ if (referralIsValid(distributionNftId, referralId)) {
219
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
220
+ // update book keeping for referral info
221
+ IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
222
+ referralInfo.usedReferrals += 1;
223
+ instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
224
+ }
225
+ }
212
226
 
213
227
  function processSale(
214
228
  NftId distributionNftId, // assume always of distribution type
215
229
  ReferralId referralId,
216
- IPolicy.Premium memory premium
230
+ IPolicy.PremiumInfo memory premium
217
231
  )
218
232
  external
219
233
  virtual
@@ -224,19 +238,17 @@ contract DistributionService is
224
238
  InstanceStore store = instance.getInstanceStore();
225
239
 
226
240
  // get distribution owner fee amount
227
- Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
241
+ Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
228
242
 
229
243
  // update referral/distributor info if applicable
230
244
  if (referralIsValid(distributionNftId, referralId)) {
231
245
 
232
246
  // increase distribution balance by commission amount and distribution owner fee
233
- Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
247
+ Amount commissionAmount = premium.commissionAmount;
234
248
  _componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
235
249
 
236
250
  // update book keeping for referral info
237
251
  IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
238
- referralInfo.usedReferrals += 1;
239
- store.updateReferral(referralId, referralInfo, KEEP_STATE());
240
252
 
241
253
  _componentService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
242
254
 
@@ -275,17 +287,6 @@ contract DistributionService is
275
287
  }
276
288
  }
277
289
 
278
- if (withdrawnAmount.eqz()) {
279
- revert ErrorDistributionServiceCommissionWithdrawAmountIsZero();
280
- }
281
-
282
- // check allowance
283
- IERC20Metadata token = IERC20Metadata(distributionInfo.token);
284
- uint256 tokenAllowance = token.allowance(distributionWallet, address(distributionInfo.tokenHandler));
285
- if (tokenAllowance < withdrawnAmount.toInt()) {
286
- revert ErrorDistributionServiceWalletAllowanceTooSmall(distributionWallet, address(distributionInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
287
- }
288
-
289
290
  // decrease fee counters by withdrawnAmount and update distributor info
290
291
  {
291
292
  InstanceStore store = instance.getInstanceStore();
@@ -298,10 +299,8 @@ contract DistributionService is
298
299
  // transfer amount to distributor
299
300
  {
300
301
  address distributor = getRegistry().ownerOf(distributorNftId);
301
- // TODO: centralize token handling (issue #471)
302
- distributionInfo.tokenHandler.transfer(distributionWallet, distributor, withdrawnAmount);
303
-
304
- emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(token), withdrawnAmount);
302
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
303
+ distributionInfo.tokenHandler.distributeTokens(distributionWallet, distributor, withdrawnAmount);
305
304
  }
306
305
  }
307
306
 
@@ -12,15 +12,15 @@ contract DistributionServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with distribution service implementation and deploys instance
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
- DistributionService distSrv = new DistributionService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
23
- address(distSrv),
19
+ DistributionService svc = new DistributionService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
24
  data,
25
25
  salt);
26
26
 
@@ -3,7 +3,6 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
5
  import {NftId} from "../type/NftId.sol";
6
- import {Fee} from "../type/Fee.sol";
7
6
  import {IPolicy} from "../instance/module/IPolicy.sol";
8
7
  import {IService} from "../shared/IService.sol";
9
8
  import {UFixed} from "../type/UFixed.sol";
@@ -28,9 +27,7 @@ interface IDistributionService is IService {
28
27
  error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
29
28
 
30
29
  error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
31
- error ErrorDistributionServiceCommissionWithdrawAmountIsZero();
32
- error ErrorDistributionServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
33
-
30
+
34
31
  error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
35
32
  error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
36
33
 
@@ -77,11 +74,18 @@ interface IDistributionService is IService {
77
74
  external
78
75
  returns (ReferralId referralId);
79
76
 
77
+ /// @dev callback from product service when a referral is used.
78
+ /// Calling this will increment the referral usage counter.
79
+ function processReferral(
80
+ NftId distributionNftId,
81
+ ReferralId referralId
82
+ ) external;
83
+
80
84
  /// @dev callback from product service when selling a policy for a specific referralId
81
85
  function processSale(
82
86
  NftId distributionNftId,
83
87
  ReferralId referralId,
84
- IPolicy.Premium memory premium
88
+ IPolicy.PremiumInfo memory premium
85
89
  ) external;
86
90
 
87
91
  function referralIsValid(
@@ -0,0 +1,56 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ type DamageLevel is uint8;
5
+
6
+ // type bindings
7
+ using {
8
+ DamageLevelLib.eq,
9
+ DamageLevelLib.eqz,
10
+ DamageLevelLib.toInt
11
+ } for DamageLevel global;
12
+
13
+ function DAMAGE_SMALL() pure returns (DamageLevel) {
14
+ return DamageLevel.wrap(1);
15
+ }
16
+
17
+ function DAMAGE_MEDIUM() pure returns (DamageLevel) {
18
+ return DamageLevel.wrap(2);
19
+ }
20
+
21
+ function DAMAGE_HIGH() pure returns (DamageLevel) {
22
+ return DamageLevel.wrap(3);
23
+ }
24
+
25
+ library DamageLevelLib {
26
+
27
+ error ErrorDamageLeveLibInvalidDamageLevel(uint8 damageLevel);
28
+
29
+ function zero() internal pure returns (DamageLevel) {
30
+ return DamageLevel.wrap(0);
31
+ }
32
+
33
+ function toDamageLevel(uint8 damage) internal pure returns (DamageLevel) {
34
+ if (damage == 1) {
35
+ return DAMAGE_SMALL();
36
+ } else if (damage == 2) {
37
+ return DAMAGE_MEDIUM();
38
+ } else if (damage == 3) {
39
+ return DAMAGE_HIGH();
40
+ } else {
41
+ revert ErrorDamageLeveLibInvalidDamageLevel(damage);
42
+ }
43
+ }
44
+
45
+ function toInt(DamageLevel damageLevel) internal pure returns (uint8) {
46
+ return uint8(DamageLevel.unwrap(damageLevel));
47
+ }
48
+
49
+ function eq(DamageLevel a, DamageLevel b) internal pure returns (bool) {
50
+ return DamageLevel.unwrap(a) == DamageLevel.unwrap(b);
51
+ }
52
+
53
+ function eqz(DamageLevel a) internal pure returns (bool) {
54
+ return DamageLevel.unwrap(a) == 0;
55
+ }
56
+ }
@@ -0,0 +1,75 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount, AmountLib} from "../../type/Amount.sol";
5
+ import {BasicPool} from "../../pool/BasicPool.sol";
6
+ import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
7
+ import {Fee} from "../../type/Fee.sol";
8
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
9
+ import {NftId} from "../../type/NftId.sol";
10
+ import {Seconds} from "../../type/Timestamp.sol";
11
+ import {UFixed} from "../../type/UFixed.sol";
12
+
13
+ contract FirePool is
14
+ BasicPool
15
+ {
16
+
17
+ constructor(
18
+ address registry,
19
+ NftId instanceNftId,
20
+ string memory componentName,
21
+ address token,
22
+ IAuthorization authorization
23
+ )
24
+ {
25
+ address initialOwner = msg.sender;
26
+ _intialize(
27
+ registry,
28
+ instanceNftId,
29
+ componentName,
30
+ token,
31
+ authorization,
32
+ initialOwner);
33
+ }
34
+
35
+ function _intialize(
36
+ address registry,
37
+ NftId instanceNftId,
38
+ string memory componentName,
39
+ address token,
40
+ IAuthorization authorization,
41
+ address initialOwner
42
+ )
43
+ internal
44
+ initializer
45
+ {
46
+ _initializeBasicPool(
47
+ registry,
48
+ instanceNftId,
49
+ authorization,
50
+ token,
51
+ componentName,
52
+ initialOwner);
53
+ }
54
+
55
+ function createBundle(
56
+ Fee memory fee,
57
+ Amount initialAmount,
58
+ Seconds lifetime
59
+ )
60
+ external
61
+ virtual
62
+ restricted()
63
+ returns(NftId bundleNftId, Amount netStakedAmount)
64
+ {
65
+ address owner = msg.sender;
66
+ bundleNftId = _createBundle(
67
+ owner,
68
+ fee,
69
+ lifetime,
70
+ "" // filter
71
+ );
72
+ netStakedAmount = _stake(bundleNftId, initialAmount);
73
+ }
74
+
75
+ }
@@ -0,0 +1,34 @@
1
+
2
+
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ pragma solidity ^0.8.20;
5
+
6
+ import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
7
+ import {FirePool} from "./FirePool.sol";
8
+ import {IAccess} from "../../../contracts/authorization/IAccess.sol";
9
+ import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
10
+
11
+ contract FirePoolAuthorization
12
+ is BasicPoolAuthorization
13
+ {
14
+
15
+ constructor(string memory poolName)
16
+ BasicPoolAuthorization(poolName)
17
+ {}
18
+
19
+
20
+ function _setupTargetAuthorizations()
21
+ internal
22
+ virtual override
23
+ {
24
+ super._setupTargetAuthorizations();
25
+ IAccess.FunctionInfo[] storage functions;
26
+
27
+ // authorize public role (open access to any account, only allows to lock target)
28
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
29
+ // TODO: FirePool.createBundle must require a custom role (e.g. INVESTOR) instead of PUBLIC_ROLE
30
+ _authorize(functions, FirePool.createBundle.selector, "createBundle");
31
+ }
32
+
33
+ }
34
+