@etherisc/gif-next 3.0.0-30b2f63-023 → 3.0.0-351a5c1-551

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