@etherisc/gif-next 3.0.0-52e15cf-819 → 3.0.0-5438ecb-315

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 (472) hide show
  1. package/README.md +9 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +42 -56
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +44 -48
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +14 -20
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +119 -119
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +145 -100
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +42 -29
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +75 -63
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +20 -114
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +2 -96
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +187 -114
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -75
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +2 -96
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +113 -40
  37. package/artifacts/contracts/examples/crop/AccountingToken.sol/AccountingToken.dbg.json +4 -0
  38. package/artifacts/contracts/examples/crop/AccountingToken.sol/AccountingToken.json +376 -0
  39. package/artifacts/contracts/examples/crop/CropPool.sol/CropPool.dbg.json +4 -0
  40. package/artifacts/contracts/examples/crop/CropPool.sol/CropPool.json +1391 -0
  41. package/artifacts/contracts/examples/crop/CropPoolAuthorization.sol/CropPoolAuthorization.dbg.json +4 -0
  42. package/artifacts/contracts/examples/crop/CropPoolAuthorization.sol/CropPoolAuthorization.json +844 -0
  43. package/artifacts/contracts/examples/crop/CropProduct.sol/CropProduct.dbg.json +4 -0
  44. package/artifacts/contracts/examples/crop/CropProduct.sol/CropProduct.json +2433 -0
  45. package/artifacts/contracts/examples/crop/CropProductAuthorization.sol/CropProductAuthorization.dbg.json +4 -0
  46. package/artifacts/contracts/examples/crop/CropProductAuthorization.sol/CropProductAuthorization.json +891 -0
  47. package/artifacts/contracts/examples/crop/Location.sol/LocationLib.dbg.json +4 -0
  48. package/artifacts/contracts/examples/crop/Location.sol/LocationLib.json +199 -0
  49. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  50. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +2 -2
  51. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  52. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +21 -96
  53. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  54. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +2 -2
  55. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  56. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +79 -159
  57. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
  59. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  60. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +2 -2
  61. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
  62. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +221 -86
  63. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
  64. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +2 -2
  65. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.dbg.json +4 -0
  66. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.json +801 -0
  67. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
  68. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +167 -132
  69. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
  70. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +82 -35
  71. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
  72. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +23 -98
  73. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
  74. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +2 -2
  75. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
  76. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +453 -745
  77. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
  78. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +83 -36
  79. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
  80. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
  81. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
  82. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +2 -2
  83. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
  84. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +2 -2
  85. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  86. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +28 -122
  87. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  88. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +2 -2
  89. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  90. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +91 -83
  91. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  92. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +29 -104
  93. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  94. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +2 -2
  95. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  96. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +42 -122
  97. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  98. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +2 -2
  99. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  100. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +50 -0
  101. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  102. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +59 -72
  103. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  104. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +50 -0
  105. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  106. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +34 -21
  107. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  108. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +108 -9
  109. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  110. package/artifacts/contracts/instance/Instance.sol/Instance.json +51 -33
  111. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  112. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +197 -197
  113. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  114. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +21 -21
  115. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  116. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +184 -42
  117. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  118. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +151 -36
  119. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  120. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +41 -41
  121. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  122. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +171 -121
  123. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  124. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +166 -107
  125. package/artifacts/contracts/instance/RequestSet.sol/RequestSet.dbg.json +4 -0
  126. package/artifacts/contracts/instance/RequestSet.sol/RequestSet.json +466 -0
  127. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  128. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +92 -105
  129. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  130. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +9 -9
  131. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  132. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  133. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  134. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  135. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  136. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  137. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +3 -3
  138. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  139. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +40 -4
  140. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  141. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  142. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  143. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  144. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  145. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  146. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  147. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  148. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +85 -77
  149. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  150. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  151. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  152. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  153. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +67 -59
  154. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  155. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +19 -13
  156. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  157. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +71 -63
  158. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  159. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +57 -51
  160. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  161. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +50 -50
  162. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  163. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +4 -79
  164. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  165. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  166. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  167. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +90 -85
  168. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +62 -62
  170. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  171. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +32 -27
  172. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  173. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +4 -79
  174. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  175. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +56 -44
  176. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  177. package/artifacts/contracts/pool/Pool.sol/Pool.json +4 -79
  178. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  179. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +4 -9
  180. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  181. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +124 -112
  182. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -63
  184. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  185. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +44 -44
  186. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  187. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +44 -44
  188. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  189. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +4 -79
  190. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  191. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  192. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  193. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +86 -80
  194. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  195. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -67
  196. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  197. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +18 -18
  198. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  199. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +24 -18
  200. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  201. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +21 -9
  202. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  203. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +4 -4
  204. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  205. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +4 -79
  206. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  207. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -45
  208. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  209. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +81 -69
  210. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  211. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +25 -17
  212. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  213. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +60 -60
  214. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  215. package/artifacts/contracts/product/PricingService.sol/PricingService.json +42 -42
  216. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +51 -51
  218. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  219. package/artifacts/contracts/product/Product.sol/Product.json +4 -79
  220. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  221. package/artifacts/contracts/product/RiskService.sol/RiskService.json +53 -87
  222. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  223. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +41 -49
  224. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  225. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +58 -8
  226. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  227. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +30 -24
  228. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  229. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +2 -2
  230. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  231. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  232. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  233. package/artifacts/contracts/registry/Registry.sol/Registry.json +132 -66
  234. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  235. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -188
  236. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  237. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +2 -27
  238. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  239. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +8 -8
  240. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  241. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -37
  242. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  243. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +205 -205
  244. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  245. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  246. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  247. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +122 -119
  248. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  249. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +19 -19
  250. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  251. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +20 -20
  252. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  253. package/artifacts/contracts/shared/Component.sol/Component.json +2 -77
  254. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  255. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +329 -113
  256. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  257. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +61 -61
  258. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  259. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
  260. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  261. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  262. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  263. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +1 -1
  264. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +2 -77
  265. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  266. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +2 -77
  267. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  268. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +271 -55
  269. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  270. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +2 -77
  271. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  272. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  273. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +2 -2
  274. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  275. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  276. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +2 -2
  277. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  278. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  279. package/artifacts/contracts/shared/IService.sol/IService.json +2 -2
  280. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  281. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  282. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  283. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +2 -77
  284. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  285. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  286. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  287. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  288. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +4 -4
  289. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  290. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  291. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  292. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  293. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  294. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  295. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  296. package/artifacts/contracts/shared/Service.sol/Service.json +2 -2
  297. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  298. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +39 -66
  299. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  300. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +22 -49
  301. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  302. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +28 -28
  303. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  304. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +91 -147
  305. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  306. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +15 -221
  307. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  308. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  309. package/artifacts/contracts/staking/Staking.sol/Staking.json +139 -195
  310. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  311. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -7
  312. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  313. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +53 -53
  314. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  315. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  316. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  317. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +35 -241
  318. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  319. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +40 -40
  320. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  321. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +220 -220
  322. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  323. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +9 -14
  324. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  325. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -7
  326. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  327. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  328. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -7
  330. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  332. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
  334. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  336. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  338. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -7
  340. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  341. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  342. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  343. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  344. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  346. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  347. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  348. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  350. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  351. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  352. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  353. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  354. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  355. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +23 -4
  356. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
  357. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +2 -2
  358. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  359. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +17 -22
  360. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  361. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  362. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  363. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  364. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  365. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  366. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  367. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  368. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  369. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  370. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  371. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  372. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  373. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  374. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  375. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -7
  376. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  377. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  378. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  379. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  380. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  381. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  382. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +22 -22
  383. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  384. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  385. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  386. package/contracts/accounting/AccountingService.sol +17 -29
  387. package/contracts/accounting/IAccountingService.sol +7 -8
  388. package/contracts/authorization/AccessAdmin.sol +16 -33
  389. package/contracts/authorization/AccessAdminLib.sol +18 -1
  390. package/contracts/authorization/AccessManagerCloneable.sol +4 -0
  391. package/contracts/authorization/IAccessAdmin.sol +9 -8
  392. package/contracts/distribution/DistributionService.sol +24 -19
  393. package/contracts/distribution/IDistributionComponent.sol +0 -2
  394. package/contracts/distribution/IDistributionService.sol +8 -7
  395. package/contracts/examples/crop/AccountingToken.sol +26 -0
  396. package/contracts/examples/crop/CropPool.sol +89 -0
  397. package/contracts/examples/crop/CropPoolAuthorization.sol +37 -0
  398. package/contracts/examples/crop/CropProduct.sol +512 -0
  399. package/contracts/examples/crop/CropProductAuthorization.sol +69 -0
  400. package/contracts/examples/crop/Location.sol +50 -0
  401. package/contracts/examples/fire/FireProduct.sol +1 -1
  402. package/contracts/examples/flight/FlightLib.sol +95 -108
  403. package/contracts/examples/flight/FlightNft.sol +234 -0
  404. package/contracts/examples/flight/FlightOracle.sol +22 -60
  405. package/contracts/examples/flight/FlightOracleAuthorization.sol +27 -5
  406. package/contracts/examples/flight/FlightPool.sol +1 -1
  407. package/contracts/examples/flight/FlightProduct.sol +288 -249
  408. package/contracts/examples/flight/FlightProductAuthorization.sol +35 -10
  409. package/contracts/examples/flight/FlightProductManager.sol +49 -0
  410. package/contracts/examples/unpermissioned/SimpleProduct.sol +1 -5
  411. package/contracts/instance/BaseStore.sol +4 -0
  412. package/contracts/instance/BundleSet.sol +7 -8
  413. package/contracts/instance/IBaseStore.sol +8 -0
  414. package/contracts/instance/IInstance.sol +10 -7
  415. package/contracts/instance/IInstanceService.sol +11 -4
  416. package/contracts/instance/Instance.sol +8 -0
  417. package/contracts/instance/InstanceAdmin.sol +2 -2
  418. package/contracts/instance/InstanceAuthorizationV3.sol +15 -1
  419. package/contracts/instance/InstanceReader.sol +55 -8
  420. package/contracts/instance/InstanceService.sol +68 -36
  421. package/contracts/instance/InstanceStore.sol +14 -14
  422. package/contracts/instance/ProductStore.sol +16 -15
  423. package/contracts/instance/RequestSet.sol +63 -0
  424. package/contracts/instance/RiskSet.sol +6 -7
  425. package/contracts/instance/TargetNames.sol +1 -0
  426. package/contracts/instance/base/BalanceStore.sol +7 -7
  427. package/contracts/instance/base/ObjectCounter.sol +7 -5
  428. package/contracts/instance/base/ObjectSet.sol +9 -1
  429. package/contracts/instance/base/ObjectSetHelperLib.sol +5 -1
  430. package/contracts/oracle/BasicOracle.sol +1 -0
  431. package/contracts/oracle/IOracleComponent.sol +10 -0
  432. package/contracts/oracle/IOracleService.sol +5 -5
  433. package/contracts/oracle/Oracle.sol +50 -26
  434. package/contracts/oracle/OracleService.sol +26 -23
  435. package/contracts/pool/BundleService.sol +3 -3
  436. package/contracts/pool/IBundleService.sol +9 -10
  437. package/contracts/pool/IPoolComponent.sol +1 -1
  438. package/contracts/pool/IPoolService.sol +14 -14
  439. package/contracts/pool/PoolService.sol +2 -2
  440. package/contracts/product/ClaimService.sol +1 -1
  441. package/contracts/product/IApplicationService.sol +8 -8
  442. package/contracts/product/IClaimService.sol +9 -9
  443. package/contracts/product/IPolicyService.sol +7 -7
  444. package/contracts/product/IRiskService.sol +4 -6
  445. package/contracts/product/PolicyService.sol +1 -1
  446. package/contracts/product/PolicyServiceLib.sol +5 -3
  447. package/contracts/product/Product.sol +1 -5
  448. package/contracts/product/RiskService.sol +3 -8
  449. package/contracts/registry/ChainNft.sol +10 -9
  450. package/contracts/registry/IRegistry.sol +11 -10
  451. package/contracts/registry/Registry.sol +16 -13
  452. package/contracts/registry/RegistryAdmin.sol +7 -1
  453. package/contracts/registry/RegistryAuthorization.sol +0 -2
  454. package/contracts/registry/ReleaseAdmin.sol +12 -5
  455. package/contracts/registry/ReleaseRegistry.sol +7 -8
  456. package/contracts/registry/TokenRegistry.sol +3 -3
  457. package/contracts/shared/ComponentService.sol +38 -4
  458. package/contracts/shared/IComponent.sol +0 -4
  459. package/contracts/shared/IComponentService.sol +31 -9
  460. package/contracts/shared/INftOwnable.sol +1 -1
  461. package/contracts/shared/InstanceLinkedComponent.sol +1 -1
  462. package/contracts/shared/TokenHandler.sol +5 -5
  463. package/contracts/staking/IStaking.sol +33 -31
  464. package/contracts/staking/IStakingService.sol +7 -16
  465. package/contracts/staking/Staking.sol +5 -4
  466. package/contracts/staking/StakingService.sol +2 -3
  467. package/contracts/staking/StakingStore.sol +3 -3
  468. package/contracts/staking/TargetHandler.sol +2 -2
  469. package/contracts/type/RequestId.sol +6 -0
  470. package/contracts/type/RiskId.sol +8 -8
  471. package/contracts/upgradeability/ProxyManager.sol +2 -2
  472. package/package.json +3 -3
@@ -6,10 +6,11 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER
6
6
 
7
7
  import {IAuthorization} from "../../authorization/IAuthorization.sol";
8
8
  import {IComponents} from "../../instance/module/IComponents.sol";
9
+ import {IPolicy} from "../../instance/module/IPolicy.sol";
9
10
 
10
11
  import {Amount, AmountLib} from "../../type/Amount.sol";
11
- import {BasicProduct} from "../../product/BasicProduct.sol";
12
12
  import {ClaimId} from "../../type/ClaimId.sol";
13
+ import {Component} from "../../shared/Component.sol";
13
14
  import {FeeLib} from "../../type/Fee.sol";
14
15
  import {FlightLib} from "./FlightLib.sol";
15
16
  import {FlightMessageVerifier} from "./FlightMessageVerifier.sol";
@@ -17,109 +18,89 @@ import {FlightOracle} from "./FlightOracle.sol";
17
18
  import {InstanceReader} from "../../instance/InstanceReader.sol";
18
19
  import {NftId, NftIdLib} from "../../type/NftId.sol";
19
20
  import {PayoutId} from "../../type/PayoutId.sol";
21
+ import {Product} from "../../product/Product.sol";
20
22
  import {ReferralLib} from "../../type/Referral.sol";
21
23
  import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
22
24
  import {RequestId} from "../../type/RequestId.sol";
23
25
  import {Seconds, SecondsLib} from "../../type/Seconds.sol";
24
- import {Str} from "../../type/String.sol";
26
+ import {Str, StrLib} from "../../type/String.sol";
25
27
  import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
26
28
 
27
29
 
28
30
  /// @dev FlightProduct implements the flight delay product.
29
31
  contract FlightProduct is
30
- BasicProduct
32
+ Product
31
33
  {
32
34
 
33
- event LogRequestFlightRatings(uint256 requestId, bytes32 carrierFlightNumber, uint256 departureTime, uint256 arrivalTime, bytes32 riskId);
34
- event LogRequestFlightStatus(uint256 requestId, uint256 arrivalTime, bytes32 carrierFlightNumber, bytes32 departureYearMonthDay);
35
- event LogPayoutTransferred(bytes32 bpKey, uint256 claimId, uint256 payoutId, uint256 amount);
36
- event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
37
-
38
- // TODO convert error logs to custom errors
39
- event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
40
- event LogPolicyExpired(bytes32 bpKey);
35
+ event LogFlightPolicyPurchased(NftId policyNftId, string flightData, Amount premiumAmount);
36
+ event LogFlightPolicyClosed(NftId policyNftId, Amount payoutAmount);
41
37
 
42
- event LogErrorRiskInvalid(RequestId requestId, RiskId riskId);
43
- event LogErrorUnprocessableStatus(RequestId requestId, RiskId riskId, bytes1 status);
44
- event LogErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
45
-
46
- error ErrorApplicationDataSignatureMismatch(address expectedSigner, address actualSigner);
47
- error ErrorFlightProductClusterRisk(Amount totalSumInsured, Amount maxTotalPayout);
48
- error ErrorFlightProductPremiumAmountTooSmall(Amount premiumAmount, Amount minPremium);
49
- error ErrorFlightProductPremiumAmountTooLarge(Amount premiumAmount, Amount maxPremium);
50
- error ErrorFlightProductArrivalBeforeDepartureTime(Timestamp departureTime, Timestamp arrivalTime);
51
- error ErrorFlightProductArrivalAfterMaxFlightDuration(Timestamp arrivalTime, Timestamp maxArrivalTime, Seconds maxDuration);
52
- error ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds minTimeBeforeDeparture);
53
- error ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds maxTimeBeforeDeparture);
54
- error ErrorFlightProductNotEnoughObservations(uint256 observations, uint256 minObservations);
38
+ event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
39
+ event LogFlightPoliciesProcessed(RiskId riskId, uint8 payoutOption, uint256 policiesProcessed, uint256 policiesRemaining);
55
40
 
56
41
  // solhint-disable
57
- // Minimum observations for valid prediction
58
- uint256 public immutable MIN_OBSERVATIONS = 10;
42
+ Amount public MIN_PREMIUM;
43
+ Amount public MAX_PREMIUM;
44
+ Amount public MAX_PAYOUT;
45
+ Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight/risk
46
+
59
47
  // Minimum time before departure for applying
60
- Seconds public MIN_TIME_BEFORE_DEPARTURE = SecondsLib.fromDays(14);
48
+ Seconds public MIN_TIME_BEFORE_DEPARTURE;
61
49
  // Maximum time before departure for applying
62
- Seconds public MAX_TIME_BEFORE_DEPARTURE = SecondsLib.fromDays(90);
50
+ Seconds public MAX_TIME_BEFORE_DEPARTURE;
63
51
  // Maximum duration of flight
64
- Seconds public MAX_FLIGHT_DURATION = SecondsLib.fromDays(2);
65
- // Check for delay after .. minutes after scheduled arrival
66
- Seconds public CHECK_OFFSET = SecondsLib.fromHours(1);
52
+ Seconds public MAX_FLIGHT_DURATION;
67
53
  // Max time to process claims after departure
68
- Seconds public LIFETIME = SecondsLib.fromDays(30);
69
-
70
- // uint256 public constant MIN_PREMIUM = 15 * 10 ** 18; // production
71
- // All amounts in cent = multiplier is 10 ** 16!
72
- Amount public MIN_PREMIUM;
73
- Amount public MAX_PREMIUM;
74
- Amount public MAX_PAYOUT;
75
- Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight is 3x max payout.
54
+ Seconds public LIFETIME;
76
55
 
56
+ // ['observations','late15','late30','late45','cancelled','diverted']
57
+ // no payouts for delays of 30' or less
58
+ uint8[6] public WEIGHT_PATTERN;
59
+ // Minimum number of observations for valid prediction/premium calculation
60
+ uint256 public MIN_OBSERVATIONS;
77
61
  // Maximum cumulated weighted premium per risk
78
- uint256 public MARGIN_PERCENT = 30;
79
-
62
+ uint256 public MARGIN_PERCENT;
80
63
  // Maximum number of policies to process in one callback
81
- uint8 public MAX_POLICIES_TO_PROCESS = 5;
64
+ uint8 public MAX_POLICIES_TO_PROCESS;
65
+ // solhint-enable
82
66
 
83
- // ['observations','late15','late30','late45','cancelled','diverted']
84
- // no payouts for delays of 30' or less
85
- uint8[6] public WEIGHT_PATTERN = [0, 0, 0, 30, 50, 50];
86
- uint8 public constant MAX_WEIGHT = 50;
67
+ bool internal _testMode;
68
+
69
+ mapping(RiskId riskId => RequestId requestId) internal _requests;
70
+ mapping(bytes32 encodedRisk => RiskId) internal _risks;
87
71
 
88
72
  // GIF V3 specifics
89
73
  NftId internal _defaultBundleNftId;
90
-
91
- // TODO add product (base contract) functions
92
- // - getOracleNftId(idx)
93
- // - getDistributionNftId()
94
- // - getPoolNftId()
95
- NftId internal _oracleNftId; // TODO refactor to getOracleNftId(0)
96
- // solhint-enable
97
-
98
- FlightMessageVerifier internal _flightMessageVerifier;
74
+ NftId internal _oracleNftId;
99
75
 
100
76
 
101
77
  struct FlightRisk {
102
78
  Str flightData; // example: "LX 180 ZRH BKK 20241104"
103
79
  Timestamp departureTime;
80
+ // this field contains static data required by the frontend and is not directly used by the product
81
+ string departureTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
104
82
  Timestamp arrivalTime;
83
+ // this field contains static data required by the frontend and is not directly used by the product
84
+ string arrivalTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
105
85
  Amount sumOfSumInsuredAmounts;
106
- // uint256 premiumMultiplier; // what is this? UFixed?
107
- // uint256 weight; // what is this? UFixed?
108
86
  bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
109
87
  int256 delayMinutes;
88
+ uint8 payoutOption;
89
+ Timestamp statusUpdatedAt;
110
90
  }
111
91
 
92
+
112
93
  struct ApplicationData {
113
- Str flightData;
94
+ string flightData;
114
95
  Timestamp departureTime;
96
+ string departureTimeLocal;
115
97
  Timestamp arrivalTime;
98
+ string arrivalTimeLocal;
116
99
  Amount premiumAmount;
117
100
  uint256[6] statistics;
118
- uint8 v;
119
- bytes32 r;
120
- bytes32 s;
121
101
  }
122
102
 
103
+
123
104
  struct PermitData {
124
105
  address owner;
125
106
  address spender;
@@ -133,24 +114,22 @@ contract FlightProduct is
133
114
 
134
115
  constructor(
135
116
  address registry,
136
- NftId instanceNftid,
117
+ NftId instanceNftId,
137
118
  string memory componentName,
138
- IAuthorization authorization,
139
- FlightMessageVerifier messageVerifier
119
+ IAuthorization authorization
140
120
  )
141
121
  {
142
122
  address initialOwner = msg.sender;
143
123
 
144
124
  _initialize(
145
125
  registry,
146
- instanceNftid,
126
+ instanceNftId,
147
127
  componentName,
148
128
  authorization,
149
129
  initialOwner);
150
-
151
- _flightMessageVerifier = messageVerifier;
152
130
  }
153
131
 
132
+
154
133
  //--- external functions ------------------------------------------------//
155
134
  //--- unpermissioned functions ------------------------------------------//
156
135
 
@@ -161,6 +140,7 @@ contract FlightProduct is
161
140
  getNftId()).oracleNftId[0];
162
141
  }
163
142
 
143
+
164
144
  function calculatePayoutAmounts(
165
145
  FlightProduct flightProduct,
166
146
  Amount premium,
@@ -197,30 +177,156 @@ contract FlightProduct is
197
177
  )
198
178
  {
199
179
  // process permit data
200
- processPermit(permit);
180
+ _processPermit(permit);
201
181
 
202
182
  // create policy
203
183
  address policyHolder = permit.owner;
204
184
  (
205
185
  riskId,
206
186
  policyNftId
207
- ) = createPolicy(
187
+ ) = _createPolicy(
208
188
  policyHolder,
209
- application.flightData,
189
+ StrLib.toStr(application.flightData),
210
190
  application.departureTime,
191
+ application.departureTimeLocal,
211
192
  application.arrivalTime,
193
+ application.arrivalTimeLocal,
212
194
  application.premiumAmount,
213
195
  application.statistics);
214
- // application.v,
215
- // application.r,
216
- // application.s);
217
196
  }
218
197
 
219
198
 
220
- function processPermit(
221
- PermitData memory permit
199
+ /// @dev Callback for flight status oracle.
200
+ /// Function may only be alled by oracle service.
201
+ function flightStatusCallback(
202
+ RequestId requestId,
203
+ bytes memory responseData
204
+ )
205
+ external
206
+ virtual
207
+ restricted()
208
+ {
209
+ FlightOracle.FlightStatusResponse memory response = abi.decode(
210
+ responseData, (FlightOracle.FlightStatusResponse));
211
+
212
+ _processFlightStatus(
213
+ requestId,
214
+ response.riskId,
215
+ response.status,
216
+ response.delayMinutes);
217
+ }
218
+
219
+
220
+ function resendResponse(RequestId requestId)
221
+ external
222
+ virtual
223
+ restricted()
224
+ {
225
+ _resendResponse(requestId);
226
+ }
227
+
228
+
229
+ /// @dev Manual fallback function for product owner.
230
+ function processPayoutsAndClosePolicies(
231
+ RiskId riskId,
232
+ uint8 maxPoliciesToProcess
233
+ )
234
+ external
235
+ virtual
236
+ restricted()
237
+ onlyOwner()
238
+ {
239
+ _processPayoutsAndClosePolicies(
240
+ riskId,
241
+ maxPoliciesToProcess);
242
+ }
243
+
244
+
245
+ //--- owner functions ---------------------------------------------------//
246
+
247
+ /// @dev Call after product registration with the instance
248
+ /// when the product token/tokenhandler is available
249
+ function setConstants(
250
+ Amount minPremium,
251
+ Amount maxPremium,
252
+ Amount maxPayout,
253
+ Amount maxTotalPayout,
254
+ Seconds minTimeBeforeDeparture,
255
+ Seconds maxTimeBeforeDeparture,
256
+ uint8 maxPoliciesToProcess
257
+ )
258
+ external
259
+ virtual
260
+ restricted()
261
+ onlyOwner()
262
+ {
263
+ MIN_PREMIUM = minPremium;
264
+ MAX_PREMIUM = maxPremium;
265
+ MAX_PAYOUT = maxPayout;
266
+ MAX_TOTAL_PAYOUT = maxTotalPayout;
267
+
268
+ MIN_TIME_BEFORE_DEPARTURE = minTimeBeforeDeparture;
269
+ MAX_TIME_BEFORE_DEPARTURE = maxTimeBeforeDeparture;
270
+ MAX_POLICIES_TO_PROCESS = maxPoliciesToProcess;
271
+ }
272
+
273
+ function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
274
+ function setTestMode(bool testMode) external restricted() onlyOwner() { _testMode = testMode; }
275
+
276
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
277
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
278
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
279
+
280
+
281
+ //--- view functions ----------------------------------------------------//
282
+
283
+ function calculateNetPremium(
284
+ Amount, // sumInsuredAmount: not used in this product
285
+ RiskId, // riskId: not used in this product
286
+ Seconds, // lifetime: not used in this product, a flight is a one time risk
287
+ bytes memory applicationData // holds the premium amount the customer is willing to pay
288
+ )
289
+ external
290
+ virtual override
291
+ view
292
+ returns (Amount netPremiumAmount)
293
+ {
294
+ (netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
295
+ }
296
+
297
+
298
+ function getOracleNftId() public view returns (NftId oracleNftId) { return _oracleNftId; }
299
+ function isTestMode() public view returns (bool) { return _testMode; }
300
+
301
+
302
+ function getFlightRisk(
303
+ RiskId riskId,
304
+ bool requireRiskExists
222
305
  )
223
306
  public
307
+ view
308
+ returns (
309
+ bool exists,
310
+ FlightRisk memory flightRisk
311
+ )
312
+ {
313
+ (exists, flightRisk) = FlightLib.getFlightRisk(
314
+ _getInstanceReader(),
315
+ getNftId(),
316
+ riskId,
317
+ requireRiskExists);
318
+ }
319
+
320
+ function getRequestForRisk(RiskId riskId) public view returns (RequestId requestId) { return _requests[riskId]; }
321
+ function decodeFlightRiskData(bytes memory data) public pure returns (FlightRisk memory) { return abi.decode(data, (FlightRisk)); }
322
+
323
+ //--- internal functions ------------------------------------------------//
324
+
325
+
326
+ function _processPermit(
327
+ PermitData memory permit
328
+ )
329
+ internal
224
330
  virtual
225
331
  restricted()
226
332
  {
@@ -238,21 +344,18 @@ contract FlightProduct is
238
344
  }
239
345
 
240
346
 
241
- function createPolicy(
347
+ function _createPolicy(
242
348
  address policyHolder,
243
349
  Str flightData,
244
350
  Timestamp departureTime,
351
+ string memory departureTimeLocal,
245
352
  Timestamp arrivalTime,
353
+ string memory arrivalTimeLocal,
246
354
  Amount premiumAmount,
247
355
  uint256[6] memory statistics
248
- // signature fields
249
- // uint8 v,
250
- // bytes32 r,
251
- // bytes32 s
252
356
  )
253
- public
357
+ internal
254
358
  virtual
255
- restricted()
256
359
  returns (
257
360
  RiskId riskId,
258
361
  NftId policyNftId
@@ -260,20 +363,20 @@ contract FlightProduct is
260
363
  {
261
364
  // checks
262
365
  // disabled for now - using rbac for security
263
- FlightLib.checkApplicationDataAndSignature(
366
+ FlightLib.checkApplicationData(
264
367
  this,
265
368
  flightData,
266
369
  departureTime,
267
370
  arrivalTime,
268
- premiumAmount,
269
- statistics);
270
- // v, r, s);
371
+ premiumAmount);
271
372
 
272
373
  (riskId, policyNftId) = _prepareApplication(
273
374
  policyHolder,
274
375
  flightData,
275
376
  departureTime,
377
+ departureTimeLocal,
276
378
  arrivalTime,
379
+ arrivalTimeLocal,
277
380
  premiumAmount,
278
381
  statistics);
279
382
 
@@ -287,17 +390,21 @@ contract FlightProduct is
287
390
  policyNftId,
288
391
  departureTime); // activate at scheduled departure time of flight
289
392
 
290
- // send oracle request for flight status (interacts with flight oracle contract)
291
- _sendRequest(
292
- _oracleNftId,
293
- abi.encode(
294
- FlightOracle.FlightStatusRequest(
295
- riskId,
296
- flightData,
297
- departureTime)),
298
- // allow up to 30 days to process the claim
299
- arrivalTime.addSeconds(SecondsLib.fromDays(30)),
300
- "flightStatusCallback");
393
+ // send oracle request for for new risk to obtain flight status (interacts with flight oracle contract)
394
+ if (_requests[riskId].eqz()) {
395
+ _requests[riskId] = _sendRequest(
396
+ _oracleNftId,
397
+ abi.encode(
398
+ FlightOracle.FlightStatusRequest(
399
+ riskId,
400
+ flightData,
401
+ departureTime)),
402
+ // allow up to 30 days to process the claim
403
+ arrivalTime.addSeconds(SecondsLib.fromDays(30)),
404
+ "flightStatusCallback");
405
+ }
406
+
407
+ emit LogFlightPolicyPurchased(policyNftId, flightData.toString(), premiumAmount);
301
408
  }
302
409
 
303
410
 
@@ -305,7 +412,9 @@ contract FlightProduct is
305
412
  address policyHolder,
306
413
  Str flightData,
307
414
  Timestamp departureTime,
415
+ string memory departureTimeLocal,
308
416
  Timestamp arrivalTime,
417
+ string memory arrivalTimeLocal,
309
418
  Amount premiumAmount,
310
419
  uint256[6] memory statistics
311
420
  )
@@ -326,7 +435,9 @@ contract FlightProduct is
326
435
  ) = _createRiskAndPayoutAmounts(
327
436
  flightData,
328
437
  departureTime,
438
+ departureTimeLocal,
329
439
  arrivalTime,
440
+ arrivalTimeLocal,
330
441
  premiumAmount,
331
442
  statistics);
332
443
 
@@ -344,117 +455,12 @@ contract FlightProduct is
344
455
  }
345
456
 
346
457
 
347
- /// @dev Callback for flight status oracle.
348
- /// Function may only be alled by oracle service.
349
- function flightStatusCallback(
350
- RequestId requestId,
351
- bytes memory responseData
352
- )
353
- external
354
- virtual
355
- restricted()
356
- {
357
- FlightOracle.FlightStatusResponse memory response = abi.decode(
358
- responseData, (FlightOracle.FlightStatusResponse));
359
-
360
- _processFlightStatus(
361
- requestId,
362
- response.riskId,
363
- response.status,
364
- response.delayMinutes,
365
- MAX_POLICIES_TO_PROCESS);
366
- }
367
-
368
-
369
- /// @dev Manual fallback function for product owner.
370
- function processFlightStatus(
371
- RequestId requestId,
372
- RiskId riskId,
373
- bytes1 status,
374
- int256 delayMinutes,
375
- uint8 maxPoliciesToProcess
376
- )
377
- external
378
- virtual
379
- restricted()
380
- onlyOwner()
381
- {
382
- _processFlightStatus(
383
- requestId,
384
- riskId,
385
- status,
386
- delayMinutes,
387
- maxPoliciesToProcess);
388
- }
389
-
390
- //--- owner functions ---------------------------------------------------//
391
-
392
- /// @dev Call after product registration with the instance, when the product token/tokenhandler is available
393
- function completeSetup()
394
- external
395
- virtual
396
- restricted()
397
- onlyOwner()
398
- {
399
- IERC20Metadata token = IERC20Metadata(getToken());
400
- uint256 tokenMultiplier = 10 ** token.decimals();
401
-
402
- MIN_PREMIUM = AmountLib.toAmount(15 * tokenMultiplier);
403
- MAX_PREMIUM = AmountLib.toAmount(200 * tokenMultiplier);
404
- MAX_PAYOUT = AmountLib.toAmount(500 * tokenMultiplier);
405
- MAX_TOTAL_PAYOUT = AmountLib.toAmount(3 * MAX_PAYOUT.toInt());
406
- }
407
-
408
-
409
- function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
410
- function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
411
- function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
412
- function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
413
-
414
-
415
- //--- view functions ----------------------------------------------------//
416
-
417
-
418
- function calculateNetPremium(
419
- Amount, // sumInsuredAmount: not used in this product
420
- RiskId, // riskId: not used in this product
421
- Seconds, // lifetime: not used in this product, a flight is a one time risk
422
- bytes memory applicationData // holds the premium amount the customer is willing to pay
423
- )
424
- external
425
- virtual override
426
- view
427
- returns (Amount netPremiumAmount)
428
- {
429
- (netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
430
- }
431
-
432
-
433
- function getFlightMessageVerifier()
434
- external
435
- view
436
- returns (FlightMessageVerifier)
437
- {
438
- return _flightMessageVerifier;
439
- }
440
-
441
-
442
- function getOracleNftId()
443
- public
444
- view
445
- returns (NftId oracleNftId)
446
- {
447
- return _oracleNftId;
448
- }
449
-
450
-
451
- //--- internal functions ------------------------------------------------//
452
-
453
-
454
458
  function _createRiskAndPayoutAmounts(
455
459
  Str flightData,
456
460
  Timestamp departureTime,
461
+ string memory departureTimeLocal,
457
462
  Timestamp arrivalTime,
463
+ string memory arrivalTimeLocal,
458
464
  Amount premiumAmount,
459
465
  uint256[6] memory statistics
460
466
  )
@@ -480,7 +486,9 @@ contract FlightProduct is
480
486
  riskId = _checkAndUpdateFlightRisk(
481
487
  flightData,
482
488
  departureTime,
489
+ departureTimeLocal,
483
490
  arrivalTime,
491
+ arrivalTimeLocal,
484
492
  sumInsuredAmount,
485
493
  weight);
486
494
  }
@@ -489,7 +497,9 @@ contract FlightProduct is
489
497
  function _checkAndUpdateFlightRisk(
490
498
  Str flightData,
491
499
  Timestamp departureTime,
500
+ string memory departureTimeLocal,
492
501
  Timestamp arrivalTime,
502
+ string memory arrivalTimeLocal,
493
503
  Amount sumInsuredAmount,
494
504
  uint256 weight
495
505
  )
@@ -498,24 +508,28 @@ contract FlightProduct is
498
508
  returns (RiskId riskId)
499
509
  {
500
510
  bool exists;
501
- FlightRisk memory flightRisk;
502
- (riskId, exists, flightRisk) = FlightLib.getFlightRisk(
503
- _getInstanceReader(),
504
- getNftId(),
511
+ FlightRisk memory flightRisk = FlightLib.getFlightRisk(
505
512
  flightData,
506
513
  departureTime,
507
- arrivalTime);
514
+ departureTimeLocal,
515
+ arrivalTime,
516
+ arrivalTimeLocal);
517
+
518
+ bytes32 riskKey = FlightLib.getRiskKey(flightData);
519
+ exists = _risks[riskKey].gtz();
508
520
 
509
521
  // create risk, if new
510
522
  if (!exists) {
511
- bytes32 riskKey = FlightLib.getRiskKey(flightData);
512
- _createRisk(riskKey, abi.encode(flightRisk));
523
+ riskId = _createRisk(abi.encode(flightRisk));
524
+ _risks[riskKey] = riskId;
525
+ } else {
526
+ riskId = _risks[riskKey];
513
527
  }
514
528
 
515
- // check for cluster risk: additional sum insured amount must not exceed MAX_TOTAL_PAYOUT
516
- if (flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount > MAX_TOTAL_PAYOUT) {
517
- revert ErrorFlightProductClusterRisk(flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount, MAX_TOTAL_PAYOUT);
518
- }
529
+ FlightLib.checkClusterRisk(
530
+ flightRisk.sumOfSumInsuredAmounts,
531
+ sumInsuredAmount,
532
+ MAX_TOTAL_PAYOUT);
519
533
 
520
534
  // update existing risk with additional sum insured amount
521
535
  flightRisk.sumOfSumInsuredAmounts = flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount;
@@ -527,71 +541,85 @@ contract FlightProduct is
527
541
  RequestId requestId,
528
542
  RiskId riskId,
529
543
  bytes1 status,
530
- int256 delayMinutes,
531
- uint8 maxPoliciesToProcess
544
+ int256 delayMinutes
532
545
  )
533
546
  internal
534
547
  virtual
535
548
  {
536
549
  // check risk exists
537
- InstanceReader reader = _getInstanceReader();
538
- (
539
- bool exists,
540
- FlightRisk memory flightRisk
541
- ) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
550
+ (, FlightRisk memory flightRisk) = getFlightRisk(riskId, true);
542
551
 
543
- if (!exists) {
544
- emit LogErrorRiskInvalid(requestId, riskId);
545
- return;
546
- }
552
+ // update status, if not yet set
553
+ if (flightRisk.statusUpdatedAt.eqz()) {
554
+ flightRisk.statusUpdatedAt = TimestampLib.current();
555
+ flightRisk.status = status;
556
+ flightRisk.delayMinutes = delayMinutes;
557
+ flightRisk.payoutOption = FlightLib.checkAndGetPayoutOption(
558
+ requestId, riskId, status, delayMinutes);
547
559
 
548
- uint8 payoutOption = FlightLib.checkAndGetPayoutOption(
549
- requestId, riskId, status, delayMinutes);
560
+ _updateRisk(riskId, abi.encode(flightRisk));
561
+ }
550
562
 
551
- _processPayoutsAndClosePolicies(
563
+ (,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
552
564
  riskId,
553
- payoutOption,
554
- maxPoliciesToProcess);
565
+ MAX_POLICIES_TO_PROCESS);
555
566
 
556
567
  // logging
557
568
  emit LogFlightStatusProcessed(requestId, riskId, status, delayMinutes, payoutOption);
558
569
  }
559
570
 
560
571
 
561
- // REMARK caller responsible to check that risk exists.
562
572
  function _processPayoutsAndClosePolicies(
563
573
  RiskId riskId,
564
- uint8 payoutOption,
565
574
  uint8 maxPoliciesToProcess
566
575
  )
567
576
  internal
568
577
  virtual
578
+ returns (
579
+ bool riskExists,
580
+ bool statusAvailable,
581
+ uint8 payoutOption
582
+ )
569
583
  {
570
584
  // determine numbers of policies to process
571
585
  InstanceReader reader = _getInstanceReader();
586
+ (riskExists, statusAvailable, payoutOption) = FlightLib.getPayoutOption(reader, getNftId(), riskId);
587
+
588
+ // return with default values if risk does not exist or status is not yet available
589
+ if (!riskExists || !statusAvailable) {
590
+ return (riskExists, statusAvailable, payoutOption);
591
+ }
592
+
572
593
  uint256 policiesToProcess = reader.policiesForRisk(riskId);
573
- policiesToProcess = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
594
+ uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
574
595
 
575
- // go trough policies
576
- for (uint256 i = 0; i < policiesToProcess; i++) {
577
- NftId policyNftId = reader.getPolicyForRisk(riskId, i);
596
+ // assemble array with policies to process
597
+ NftId [] memory policies = new NftId[](policiesProcessed);
598
+ for (uint256 i = 0; i < policiesProcessed; i++) {
599
+ policies[i] = reader.getPolicyForRisk(riskId, i);
600
+ }
578
601
 
579
- // create payout (if any)
580
- if (payoutOption < type(uint8).max) {
581
- bytes memory applicationData = reader.getPolicyInfo(
582
- policyNftId).applicationData;
602
+ // go through policies
603
+ for (uint256 i = 0; i < policiesProcessed; i++) {
604
+ NftId policyNftId = policies[i];
605
+ Amount payoutAmount = FlightLib.getPayoutAmount(
606
+ reader.getPolicyInfo(policyNftId).applicationData,
607
+ payoutOption);
583
608
 
584
- _resolvePayout(
585
- policyNftId,
586
- FlightLib.getPayoutAmount(
587
- applicationData,
588
- payoutOption));
589
- }
609
+ // create claim/payout (if applicable)
610
+ _resolvePayout(
611
+ policyNftId,
612
+ payoutAmount);
590
613
 
591
614
  // expire and close policy
592
615
  _expire(policyNftId, TimestampLib.current());
593
616
  _close(policyNftId);
617
+
618
+ emit LogFlightPolicyClosed(policyNftId, payoutAmount);
594
619
  }
620
+
621
+ // logging
622
+ emit LogFlightPoliciesProcessed(riskId, payoutOption, policiesProcessed, policiesToProcess - policiesProcessed);
595
623
  }
596
624
 
597
625
 
@@ -602,6 +630,11 @@ contract FlightProduct is
602
630
  internal
603
631
  virtual
604
632
  {
633
+ // no action if no payout
634
+ if (payoutAmount.eqz()) {
635
+ return;
636
+ }
637
+
605
638
  // create confirmed claim
606
639
  ClaimId claimId = _submitClaim(policyNftId, payoutAmount, "");
607
640
  _confirmClaim(policyNftId, claimId, payoutAmount, "");
@@ -620,9 +653,9 @@ contract FlightProduct is
620
653
  address initialOwner
621
654
  )
622
655
  internal
623
- initializer
656
+ initializer()
624
657
  {
625
- _initializeBasicProduct(
658
+ __Product_init(
626
659
  registry,
627
660
  instanceNftId,
628
661
  componentName,
@@ -647,5 +680,11 @@ contract FlightProduct is
647
680
  }),
648
681
  authorization,
649
682
  initialOwner); // number of oracles
683
+
684
+ MAX_FLIGHT_DURATION = SecondsLib.fromDays(2);
685
+ LIFETIME = SecondsLib.fromDays(30);
686
+ WEIGHT_PATTERN = [0, 0, 0, 30, 50, 50];
687
+ MIN_OBSERVATIONS = 10;
688
+ MARGIN_PERCENT = 30;
650
689
  }
651
690
  }