@etherisc/gif-next 0.0.2-708facd-459 → 0.0.2-70b1050-183

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 (434) hide show
  1. package/README.md +19 -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 +85 -248
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -222
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +228 -217
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -37
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
  31. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
  33. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  35. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1706 -0
  37. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +410 -0
  39. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  49. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  50. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  52. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +1 -1
  54. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
  56. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +97 -100
  58. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  60. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -123
  62. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +40 -147
  64. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
  66. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +215 -219
  68. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  70. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  73. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  75. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  77. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  83. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  84. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  85. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +59 -235
  87. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  89. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +30 -37
  92. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +27 -219
  95. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
  97. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
  99. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  100. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +55 -284
  101. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  102. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  103. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +396 -163
  105. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +137 -89
  107. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  109. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  110. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +45 -95
  111. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
  113. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  114. package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -280
  115. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +269 -248
  117. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +66 -82
  119. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  120. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
  121. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
  123. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  124. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +22 -225
  125. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  126. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  127. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  128. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +206 -175
  129. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +92 -100
  131. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  132. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  133. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  134. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
  135. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +266 -119
  137. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  139. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  140. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -37
  141. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  142. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  143. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  144. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +358 -318
  145. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +97 -101
  147. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
  149. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
  151. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  152. package/artifacts/contracts/product/Product.sol/Product.json +22 -225
  153. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  154. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  155. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  156. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  157. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  158. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  159. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  160. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +256 -8
  161. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  162. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  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 +474 -65
  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 +247 -161
  184. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  185. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +105 -95
  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/IComponentService.sol/IComponentService.json +153 -0
  194. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -37
  196. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  197. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  198. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +14 -46
  201. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  206. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  208. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -222
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  211. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  215. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -140
  217. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  219. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  221. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
  223. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  225. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  226. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  228. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  229. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  232. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  233. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +89 -84
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  249. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  251. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  253. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  255. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  257. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  259. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  261. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  263. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  265. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  267. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  269. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  271. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  273. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  275. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  277. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  279. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  283. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  286. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  288. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
  290. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  292. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  294. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  295. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  296. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  297. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  298. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  299. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  300. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  301. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  302. package/contracts/authorization/AccessAdmin.sol +25 -24
  303. package/contracts/authorization/Authorization.sol +0 -1
  304. package/contracts/authorization/IAccessAdmin.sol +0 -1
  305. package/contracts/distribution/BasicDistribution.sol +4 -15
  306. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  307. package/contracts/distribution/Distribution.sol +23 -11
  308. package/contracts/distribution/DistributionService.sol +75 -41
  309. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  310. package/contracts/distribution/IDistributionComponent.sol +8 -4
  311. package/contracts/distribution/IDistributionService.sol +18 -2
  312. package/contracts/examples/fire/FirePool.sol +76 -0
  313. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  314. package/contracts/examples/fire/FireProduct.sol +327 -0
  315. package/contracts/examples/fire/FireProductAuthorization.sol +31 -0
  316. package/contracts/examples/fire/FireUSD.sol +26 -0
  317. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  318. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  319. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  320. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  321. package/contracts/instance/IInstance.sol +7 -30
  322. package/contracts/instance/IInstanceService.sol +1 -1
  323. package/contracts/instance/Instance.sol +10 -35
  324. package/contracts/instance/InstanceAdmin.sol +23 -4
  325. package/contracts/instance/InstanceAuthorizationV3.sol +5 -3
  326. package/contracts/instance/InstanceReader.sol +32 -7
  327. package/contracts/instance/InstanceService.sol +63 -40
  328. package/contracts/instance/InstanceServiceManager.sol +8 -13
  329. package/contracts/instance/InstanceStore.sol +12 -1
  330. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  331. package/contracts/instance/module/IBundle.sol +1 -1
  332. package/contracts/instance/module/IComponents.sol +1 -7
  333. package/contracts/instance/module/IDistribution.sol +0 -1
  334. package/contracts/instance/module/IPolicy.sol +22 -22
  335. package/contracts/mock/Dip.sol +1 -1
  336. package/contracts/oracle/IOracleComponent.sol +2 -1
  337. package/contracts/oracle/Oracle.sol +17 -7
  338. package/contracts/oracle/OracleService.sol +9 -6
  339. package/contracts/oracle/OracleServiceManager.sol +8 -11
  340. package/contracts/pool/BasicPool.sol +7 -5
  341. package/contracts/pool/BasicPoolAuthorization.sol +11 -2
  342. package/contracts/pool/BundleService.sol +190 -48
  343. package/contracts/pool/BundleServiceManager.sol +8 -11
  344. package/contracts/pool/IBundleService.sol +33 -5
  345. package/contracts/pool/IPoolComponent.sol +6 -0
  346. package/contracts/pool/IPoolService.sol +36 -26
  347. package/contracts/pool/Pool.sol +40 -25
  348. package/contracts/pool/PoolService.sol +166 -109
  349. package/contracts/pool/PoolServiceManager.sol +6 -9
  350. package/contracts/product/ApplicationService.sol +55 -62
  351. package/contracts/product/ApplicationServiceManager.sol +6 -6
  352. package/contracts/product/BasicProduct.sol +3 -32
  353. package/contracts/product/BasicProductAuthorization.sol +3 -0
  354. package/contracts/product/ClaimService.sol +212 -108
  355. package/contracts/product/ClaimServiceManager.sol +6 -6
  356. package/contracts/product/IApplicationService.sol +1 -0
  357. package/contracts/product/IClaimService.sol +28 -5
  358. package/contracts/product/IPolicyService.sol +31 -32
  359. package/contracts/product/IPricingService.sol +7 -7
  360. package/contracts/product/IProductComponent.sol +1 -1
  361. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  362. package/contracts/product/PolicyService.sol +361 -190
  363. package/contracts/product/PolicyServiceManager.sol +6 -9
  364. package/contracts/product/PricingService.sol +46 -46
  365. package/contracts/product/PricingServiceManager.sol +5 -8
  366. package/contracts/product/Product.sol +68 -35
  367. package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
  368. package/contracts/product/RiskServiceManager.sol +39 -0
  369. package/contracts/registry/ChainNft.sol +65 -32
  370. package/contracts/registry/IRegistry.sol +62 -15
  371. package/contracts/registry/IRegistryService.sol +6 -6
  372. package/contracts/registry/Registry.sol +324 -200
  373. package/contracts/registry/RegistryAdmin.sol +150 -51
  374. package/contracts/registry/RegistryService.sol +6 -20
  375. package/contracts/registry/RegistryServiceManager.sol +4 -4
  376. package/contracts/registry/ReleaseRegistry.sol +12 -8
  377. package/contracts/registry/ServiceAuthorizationV3.sol +7 -8
  378. package/contracts/shared/Component.sol +30 -43
  379. package/contracts/shared/ComponentService.sol +88 -28
  380. package/contracts/shared/ComponentServiceManager.sol +10 -7
  381. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  382. package/contracts/shared/ContractLib.sol +38 -0
  383. package/contracts/shared/IComponent.sol +4 -4
  384. package/contracts/shared/IComponentService.sol +15 -9
  385. package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
  386. package/contracts/shared/IPolicyHolder.sol +12 -22
  387. package/contracts/shared/IService.sol +1 -1
  388. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  389. package/contracts/shared/InstanceLinkedComponent.sol +25 -4
  390. package/contracts/shared/NftOwnable.sol +7 -7
  391. package/contracts/shared/PolicyHolder.sol +14 -58
  392. package/contracts/shared/Registerable.sol +4 -4
  393. package/contracts/shared/RegistryLinked.sol +3 -2
  394. package/contracts/shared/Service.sol +19 -15
  395. package/contracts/shared/TokenHandler.sol +100 -19
  396. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  397. package/contracts/staking/IStaking.sol +3 -2
  398. package/contracts/staking/StakeManagerLib.sol +18 -25
  399. package/contracts/staking/Staking.sol +26 -39
  400. package/contracts/staking/StakingManager.sol +10 -11
  401. package/contracts/staking/StakingReader.sol +6 -9
  402. package/contracts/staking/StakingService.sol +10 -14
  403. package/contracts/staking/StakingServiceManager.sol +4 -4
  404. package/contracts/staking/StakingStore.sol +5 -15
  405. package/contracts/staking/TargetManagerLib.sol +7 -3
  406. package/contracts/type/Amount.sol +12 -5
  407. package/contracts/type/Blocknumber.sol +7 -1
  408. package/contracts/type/NftId.sol +1 -0
  409. package/contracts/type/ObjectType.sol +18 -18
  410. package/contracts/type/Referral.sol +1 -0
  411. package/contracts/type/RiskId.sol +15 -1
  412. package/contracts/type/Seconds.sol +21 -1
  413. package/contracts/type/StateId.sol +1 -0
  414. package/contracts/type/Timestamp.sol +11 -1
  415. package/contracts/type/UFixed.sol +29 -10
  416. package/contracts/type/Version.sol +3 -1
  417. package/contracts/{shared → upgradeability}/ProxyManager.sol +70 -38
  418. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  419. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  420. package/package.json +1 -1
  421. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  422. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  423. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  424. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  425. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  426. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  427. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  428. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  429. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  430. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  431. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  432. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  433. package/contracts/product/ProductServiceManager.sol +0 -42
  434. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -0,0 +1,76 @@
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
+ Amount netStakedAmount;
67
+ bundleNftId = _createBundle(
68
+ owner,
69
+ fee,
70
+ lifetime,
71
+ "" // filter
72
+ );
73
+ netStakedAmount = _stake(bundleNftId, initialAmount);
74
+ }
75
+
76
+ }
@@ -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
+
@@ -0,0 +1,327 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ACTIVE, PAUSED} from "../../type/StateId.sol";
5
+ import {Amount, AmountLib} from "../../type/Amount.sol";
6
+ import {BasicProduct} from "../../product/BasicProduct.sol";
7
+ import {ClaimId} from "../../type/ClaimId.sol";
8
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
9
+ import {IOracleService} from "../../oracle/IOracleService.sol";
10
+ import {ORACLE} from "../../type/ObjectType.sol";
11
+ import {NftId} from "../../type/NftId.sol";
12
+ import {PayoutId} from "../../type/PayoutId.sol";
13
+ import {ReferralId, ReferralLib} from "../../type/Referral.sol";
14
+ import {RequestId} from "../../type/RequestId.sol";
15
+ import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
16
+ import {Seconds} from "../../type/Seconds.sol";
17
+ import {StateId} from "../../type/StateId.sol";
18
+ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
19
+ import {UFixed, UFixedLib} from "../../type/UFixed.sol";
20
+
21
+ uint64 constant SPECIAL_ROLE_INT = 11111;
22
+
23
+ function HALF_YEAR() pure returns (Seconds) {
24
+ return Seconds.wrap(180 * 86400);
25
+ }
26
+
27
+ function ONE_YEAR() pure returns (Seconds) {
28
+ return Seconds.wrap(360 * 86400);
29
+ }
30
+
31
+ /// @dev This is the product component for the fire insurance example.
32
+ /// It show how to insure a house for a given suminsured in a city.
33
+ /// The risk is based on the city.
34
+ /// If a fire is reported in the city, the policy holder is able to submit a claim and get a payout.
35
+ contract FireProduct is
36
+ BasicProduct
37
+ {
38
+ string[] _cities;
39
+ // map from city name to the RiskId
40
+ mapping(string cityName => RiskId risk) private _riskMapping;
41
+
42
+ constructor(
43
+ address registry,
44
+ NftId instanceNftid,
45
+ string memory componentName,
46
+ address token,
47
+ address pool,
48
+ IAuthorization authorization
49
+ )
50
+ {
51
+ address initialOwner = msg.sender;
52
+ _initialize(
53
+ registry,
54
+ instanceNftid,
55
+ componentName,
56
+ token,
57
+ pool,
58
+ authorization,
59
+ initialOwner);
60
+ initializeCity("London");
61
+ }
62
+
63
+ function _initialize(
64
+ address registry,
65
+ NftId instanceNftid,
66
+ string memory componentName,
67
+ address token,
68
+ address pool,
69
+ IAuthorization authorization,
70
+ address initialOwner
71
+ )
72
+ internal
73
+ initializer
74
+ {
75
+ _initializeBasicProduct(
76
+ registry,
77
+ instanceNftid,
78
+ authorization,
79
+ initialOwner,
80
+ componentName,
81
+ token,
82
+ false,
83
+ pool,
84
+ address(0)); // no distribution
85
+ }
86
+
87
+ function cities() public view returns (uint256) {
88
+ return _cities.length;
89
+ }
90
+
91
+ function city(uint256 idx) public view returns (string memory) {
92
+ return _cities[idx];
93
+ }
94
+
95
+ function riskId(string memory cityName) public view returns (RiskId) {
96
+ return _riskMapping[cityName];
97
+ }
98
+
99
+ function pauseCity(
100
+ string memory cityName
101
+ )
102
+ public
103
+ restricted()
104
+ {
105
+ if (_riskMapping[cityName].eqz()) {
106
+ revert(); // TODO: custom error
107
+ }
108
+
109
+ _updateRiskState(
110
+ _riskMapping[cityName],
111
+ PAUSED()
112
+ );
113
+ }
114
+
115
+ function unpauseCity(
116
+ string memory cityName
117
+ )
118
+ public
119
+ restricted()
120
+ {
121
+ if (_riskMapping[cityName].eqz()) {
122
+ revert(); // TODO: custom error
123
+ }
124
+
125
+ _updateRiskState(
126
+ _riskMapping[cityName],
127
+ ACTIVE()
128
+ );
129
+ }
130
+
131
+ function calculatePremium(
132
+ string memory cityName,
133
+ Amount sumInsured,
134
+ Seconds lifetime,
135
+ NftId bundleNftId
136
+ )
137
+ public
138
+ view
139
+ returns (Amount premiumAmount)
140
+ {
141
+ RiskId riskId = _riskMapping[cityName];
142
+ if (riskId.eqz()) {
143
+ revert(); // TODO: custom error
144
+ }
145
+ premiumAmount = calculatePremium(
146
+ sumInsured,
147
+ riskId,
148
+ lifetime,
149
+ "",
150
+ bundleNftId,
151
+ ReferralLib.zero());
152
+ }
153
+
154
+ function calculateNetPremium(
155
+ Amount sumInsured,
156
+ RiskId,
157
+ Seconds lifetime,
158
+ bytes memory
159
+ )
160
+ external
161
+ view
162
+ virtual override
163
+ returns (Amount netPremiumAmount)
164
+ {
165
+ UFixed numDays = UFixedLib.toUFixed(lifetime.toInt() / 86400);
166
+ // to simplify time calculation we assume 360 days per year
167
+ UFixed pctOfYear = numDays / UFixedLib.toUFixed(360);
168
+ Amount premiumPerYear = AmountLib.toAmount(sumInsured.toInt() / 20);
169
+ return premiumPerYear.multiplyWith(pctOfYear);
170
+ }
171
+
172
+ function createApplication(
173
+ string memory cityName,
174
+ Amount sumInsured,
175
+ Seconds lifetime,
176
+ NftId bundleNftId
177
+ )
178
+ public
179
+ restricted()
180
+ returns (NftId policyNftId)
181
+ {
182
+ address applicationOwner = msg.sender;
183
+ RiskId riskId = initializeCity(cityName);
184
+
185
+ Amount premiumAmount = calculatePremium(
186
+ sumInsured,
187
+ riskId,
188
+ lifetime,
189
+ "",
190
+ bundleNftId,
191
+ ReferralLib.zero());
192
+
193
+ return _createApplication(
194
+ applicationOwner,
195
+ riskId,
196
+ sumInsured,
197
+ premiumAmount,
198
+ lifetime,
199
+ bundleNftId,
200
+ ReferralLib.zero(),
201
+ ""
202
+ );
203
+ }
204
+
205
+ function initializeCity(
206
+ string memory cityName
207
+ )
208
+ public
209
+ returns (RiskId riskId)
210
+ {
211
+ if (! _riskMapping[cityName].eqz()) {
212
+ return _riskMapping[cityName];
213
+ }
214
+ _cities.push(cityName);
215
+ riskId = RiskIdLib.toRiskId(cityName);
216
+ _createRisk(riskId, "");
217
+ _riskMapping[cityName] = riskId;
218
+ }
219
+
220
+ function createPolicy(
221
+ NftId applicationNftId,
222
+ bool requirePremiumPayment,
223
+ Timestamp activateAt
224
+ ) public {
225
+ // TODO: implement createPolicy
226
+
227
+ // _createPolicy(applicationNftId, activateAt);
228
+ // if (requirePremiumPayment == true) {
229
+ // _collectPremium(applicationNftId, activateAt);
230
+ // }
231
+ }
232
+
233
+ function decline(
234
+ NftId policyNftId
235
+ )
236
+ public
237
+ restricted()
238
+ {
239
+ // TODO: implement decline
240
+ // _decline(policyNftId);
241
+ }
242
+
243
+ function expire(
244
+ NftId policyNftId,
245
+ Timestamp expireAt
246
+ )
247
+ public
248
+ restricted()
249
+ returns (Timestamp)
250
+ {
251
+ // TODO: implement expire
252
+ // return _expire(policyNftId, expireAt);
253
+ }
254
+
255
+ function close(
256
+ NftId policyNftId
257
+ )
258
+ public
259
+ restricted()
260
+ {
261
+ // TODO: implement close
262
+ // _close(policyNftId);
263
+ }
264
+
265
+ function submitClaim(
266
+ NftId policyNftId,
267
+ Amount claimAmount,
268
+ bytes memory submissionData
269
+ )
270
+ public
271
+ restricted()
272
+ returns (ClaimId)
273
+ {
274
+ // TODO: implement submitClaim
275
+ // return _submitClaim(policyNftId, claimAmount, submissionData);
276
+
277
+ // TODO: check if fire was reported in the city
278
+ // TODO: if yes, process payout and close claimn
279
+ // TODO: if no, decline claim
280
+
281
+ }
282
+
283
+ // TODO: no longer needed? -> remove
284
+ // function confirmClaim(
285
+ // NftId policyNftId,
286
+ // ClaimId claimId,
287
+ // Amount confirmedAmount,
288
+ // bytes memory processData
289
+ // ) public {
290
+ // // TODO: implement confirmClaim
291
+ // // _confirmClaim(policyNftId, claimId, confirmedAmount, processData);
292
+ // }
293
+
294
+ // TODO: no longer needed? -> remove
295
+ // function declineClaim(
296
+ // NftId policyNftId,
297
+ // ClaimId claimId,
298
+ // bytes memory processData
299
+ // ) public {
300
+ // // TODO: implement declineClaim
301
+ // // _declineClaim(policyNftId, claimId, processData);
302
+ // }
303
+
304
+ // TODO: no longer needed? -> remove
305
+ // function createPayout(
306
+ // NftId policyNftId,
307
+ // ClaimId claimId,
308
+ // Amount amount,
309
+ // bytes memory data
310
+ // ) public returns (PayoutId) {
311
+ // return _createPayout(policyNftId, claimId, amount, data);
312
+ // }
313
+
314
+ // TODO: add method to report fire per city with a percentage of payout
315
+
316
+
317
+ // TODO: no longer needed? -> remove
318
+ // function processPayout(
319
+ // NftId policyNftId,
320
+ // PayoutId payoutId
321
+ // ) public {
322
+ // TODO: implement process all pending payouts for a risk - arguments cityname and payout percentage
323
+ // _processPayout(policyNftId, payoutId);
324
+ // }
325
+
326
+
327
+ }
@@ -0,0 +1,31 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {BasicProductAuthorization} from "../../product/BasicProductAuthorization.sol";
5
+ import {FireProduct} from "./FireProduct.sol";
6
+ import {IAccess} from "../../../contracts/authorization/IAccess.sol";
7
+ import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
8
+
9
+
10
+ contract FireProductAuthorization
11
+ is BasicProductAuthorization
12
+ {
13
+
14
+ constructor(string memory poolName)
15
+ BasicProductAuthorization(poolName)
16
+ {}
17
+
18
+ function _setupTargetAuthorizations()
19
+ internal
20
+ virtual override
21
+ {
22
+ super._setupTargetAuthorizations();
23
+ IAccess.FunctionInfo[] storage functions;
24
+
25
+ // authorize public role (open access to any account, only allows to lock target)
26
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
27
+ _authorize(functions, FireProduct.createApplication.selector, "createApplication");
28
+ }
29
+
30
+ }
31
+
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5
+
6
+ /// @dev FireUSD is a stablecoin with 6 decimals and an initial supply of 1 Billion tokens.
7
+ contract FireUSD is ERC20 {
8
+
9
+ string public constant NAME = "FireUSD";
10
+ string public constant SYMBOL = "HOT";
11
+ uint8 public constant DECIMALS = 6;
12
+ uint256 public constant INITIAL_SUPPLY = 10**12 * 10**DECIMALS; // 1'000'000'000'000
13
+
14
+ constructor()
15
+ ERC20(NAME, SYMBOL)
16
+ {
17
+ _mint(
18
+ _msgSender(),
19
+ INITIAL_SUPPLY
20
+ );
21
+ }
22
+
23
+ function decimals() public pure override returns(uint8) {
24
+ return DECIMALS;
25
+ }
26
+ }
@@ -0,0 +1,50 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {BasicDistribution} from "../../distribution/BasicDistribution.sol";
5
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
6
+ import {NftId} from "../../type/NftId.sol";
7
+
8
+
9
+ contract SimpleDistribution is
10
+ BasicDistribution
11
+ {
12
+
13
+ constructor(
14
+ address registry,
15
+ NftId instanceNftId,
16
+ IAuthorization authorization,
17
+ address initialOwner,
18
+ address token
19
+ )
20
+ {
21
+ initialize(
22
+ registry,
23
+ instanceNftId,
24
+ authorization,
25
+ initialOwner,
26
+ "SimpleDistribution",
27
+ token);
28
+ }
29
+
30
+ function initialize(
31
+ address registry,
32
+ NftId instanceNftId,
33
+ IAuthorization authorization,
34
+ address initialOwner,
35
+ string memory name,
36
+ address token
37
+ )
38
+ public
39
+ virtual
40
+ initializer()
41
+ {
42
+ _initializeBasicDistribution(
43
+ registry,
44
+ instanceNftId,
45
+ authorization,
46
+ initialOwner,
47
+ name,
48
+ token);
49
+ }
50
+ }
@@ -0,0 +1,137 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
5
+ import {NftId} from "../../type/NftId.sol";
6
+ import {BasicOracle} from "../../oracle/BasicOracle.sol";
7
+ import {RequestId} from "../../type/RequestId.sol";
8
+ import {Timestamp} from "../../type/Timestamp.sol";
9
+
10
+ contract SimpleOracle is
11
+ BasicOracle
12
+ {
13
+
14
+ string public constant ANSWER_SYNC = "oracle constant sync answer";
15
+
16
+ struct SimpleRequest {
17
+ bool synchronous;
18
+ string text;
19
+ }
20
+
21
+ struct SimpleResponse {
22
+ bool revertInCall;
23
+ Timestamp revertUntil;
24
+ string text;
25
+ }
26
+
27
+ event LogSimpleOracleRequestReceived(RequestId requestId, NftId requesterId, bool synchronous, string requestText);
28
+ event LogSimpleOracleCancellingReceived(RequestId requestId);
29
+
30
+ event LogSimpleOracleAsyncResponseSent(RequestId requestId, string responseText);
31
+ event LogSimpleOracleSyncResponseSent(RequestId requestId, string responseText);
32
+
33
+ constructor(
34
+ address registry,
35
+ NftId instanceNftId,
36
+ IAuthorization authorization,
37
+ address initialOwner,
38
+ address token
39
+ )
40
+ {
41
+ initialize(
42
+ registry,
43
+ instanceNftId,
44
+ authorization,
45
+ initialOwner,
46
+ "SimpleOracle",
47
+ token
48
+ );
49
+ }
50
+
51
+ function initialize(
52
+ address registry,
53
+ NftId instanceNftId,
54
+ IAuthorization authorization,
55
+ address initialOwner,
56
+ string memory name,
57
+ address token
58
+ )
59
+ public
60
+ virtual
61
+ initializer()
62
+ {
63
+ _initializeBasicOracle(
64
+ registry,
65
+ instanceNftId,
66
+ authorization,
67
+ initialOwner,
68
+ name,
69
+ token);
70
+ }
71
+
72
+ /// @dev use case specific handling of oracle requests
73
+ /// for now only log is emitted to verify that request has been received by oracle component
74
+ function _request(
75
+ RequestId requestId,
76
+ NftId requesterId,
77
+ bytes calldata requestData,
78
+ Timestamp expiryAt
79
+ )
80
+ internal
81
+ virtual override
82
+ {
83
+ SimpleRequest memory request = abi.decode(requestData, (SimpleRequest));
84
+
85
+ if (request.synchronous) {
86
+ _respondSync(requestId);
87
+ }
88
+
89
+ emit LogSimpleOracleRequestReceived(requestId, requesterId, request.synchronous, request.text);
90
+ }
91
+
92
+
93
+ /// @dev use case specific handling of oracle requests
94
+ /// for now only log is emitted to verify that cancelling has been received by oracle component
95
+ function _cancel(
96
+ RequestId requestId
97
+ )
98
+ internal
99
+ virtual override
100
+ {
101
+ emit LogSimpleOracleCancellingReceived(requestId);
102
+ }
103
+
104
+
105
+ function respondAsync(
106
+ RequestId requestId,
107
+ string memory responseText,
108
+ bool revertInCall,
109
+ Timestamp revertUntil
110
+ )
111
+ external
112
+ // permissionless, no restricted() for now
113
+ {
114
+ bytes memory responseData = abi.encode(
115
+ SimpleResponse(
116
+ revertInCall,
117
+ revertUntil,
118
+ responseText));
119
+
120
+ _respond(requestId, responseData);
121
+
122
+ emit LogSimpleOracleAsyncResponseSent(requestId, responseText);
123
+ }
124
+
125
+
126
+ function _respondSync(
127
+ RequestId requestId
128
+ )
129
+ internal
130
+ {
131
+ bytes memory responseData = abi.encode(ANSWER_SYNC);
132
+ _respond(requestId, responseData);
133
+
134
+ emit LogSimpleOracleSyncResponseSent(requestId, ANSWER_SYNC);
135
+ }
136
+
137
+ }