@etherisc/gif-next 3.0.0-1bd1936-188 → 3.0.0-1c2086e-623

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 +201 -96
  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 +132 -133
  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 +390 -748
  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 +92 -109
  403. package/contracts/examples/flight/FlightNft.sol +234 -0
  404. package/contracts/examples/flight/FlightOracle.sol +20 -62
  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 +263 -248
  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,85 +18,60 @@ 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 {
@@ -107,14 +83,15 @@ contract FlightProduct is
107
83
  // this field contains static data required by the frontend and is not directly used by the product
108
84
  string arrivalTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
109
85
  Amount sumOfSumInsuredAmounts;
110
- // uint256 premiumMultiplier; // what is this? UFixed?
111
- // uint256 weight; // what is this? UFixed?
112
86
  bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
113
87
  int256 delayMinutes;
88
+ uint8 payoutOption;
89
+ Timestamp statusUpdatedAt;
114
90
  }
115
91
 
92
+
116
93
  struct ApplicationData {
117
- Str flightData;
94
+ string flightData;
118
95
  Timestamp departureTime;
119
96
  string departureTimeLocal;
120
97
  Timestamp arrivalTime;
@@ -123,6 +100,7 @@ contract FlightProduct is
123
100
  uint256[6] statistics;
124
101
  }
125
102
 
103
+
126
104
  struct PermitData {
127
105
  address owner;
128
106
  address spender;
@@ -136,24 +114,22 @@ contract FlightProduct is
136
114
 
137
115
  constructor(
138
116
  address registry,
139
- NftId instanceNftid,
117
+ NftId instanceNftId,
140
118
  string memory componentName,
141
- IAuthorization authorization,
142
- FlightMessageVerifier messageVerifier
119
+ IAuthorization authorization
143
120
  )
144
121
  {
145
122
  address initialOwner = msg.sender;
146
123
 
147
124
  _initialize(
148
125
  registry,
149
- instanceNftid,
126
+ instanceNftId,
150
127
  componentName,
151
128
  authorization,
152
129
  initialOwner);
153
-
154
- _flightMessageVerifier = messageVerifier;
155
130
  }
156
131
 
132
+
157
133
  //--- external functions ------------------------------------------------//
158
134
  //--- unpermissioned functions ------------------------------------------//
159
135
 
@@ -164,6 +140,7 @@ contract FlightProduct is
164
140
  getNftId()).oracleNftId[0];
165
141
  }
166
142
 
143
+
167
144
  function calculatePayoutAmounts(
168
145
  FlightProduct flightProduct,
169
146
  Amount premium,
@@ -200,32 +177,156 @@ contract FlightProduct is
200
177
  )
201
178
  {
202
179
  // process permit data
203
- processPermit(permit);
180
+ _processPermit(permit);
204
181
 
205
182
  // create policy
206
183
  address policyHolder = permit.owner;
207
184
  (
208
185
  riskId,
209
186
  policyNftId
210
- ) = createPolicy(
187
+ ) = _createPolicy(
211
188
  policyHolder,
212
- application.flightData,
189
+ StrLib.toStr(application.flightData),
213
190
  application.departureTime,
214
191
  application.departureTimeLocal,
215
192
  application.arrivalTime,
216
193
  application.arrivalTimeLocal,
217
194
  application.premiumAmount,
218
195
  application.statistics);
219
- // application.v,
220
- // application.r,
221
- // application.s);
222
196
  }
223
197
 
224
198
 
225
- function processPermit(
226
- 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
227
305
  )
228
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
229
330
  virtual
230
331
  restricted()
231
332
  {
@@ -243,7 +344,7 @@ contract FlightProduct is
243
344
  }
244
345
 
245
346
 
246
- function createPolicy(
347
+ function _createPolicy(
247
348
  address policyHolder,
248
349
  Str flightData,
249
350
  Timestamp departureTime,
@@ -252,14 +353,9 @@ contract FlightProduct is
252
353
  string memory arrivalTimeLocal,
253
354
  Amount premiumAmount,
254
355
  uint256[6] memory statistics
255
- // signature fields
256
- // uint8 v,
257
- // bytes32 r,
258
- // bytes32 s
259
356
  )
260
- public
357
+ internal
261
358
  virtual
262
- restricted()
263
359
  returns (
264
360
  RiskId riskId,
265
361
  NftId policyNftId
@@ -267,14 +363,12 @@ contract FlightProduct is
267
363
  {
268
364
  // checks
269
365
  // disabled for now - using rbac for security
270
- FlightLib.checkApplicationDataAndSignature(
366
+ FlightLib.checkApplicationData(
271
367
  this,
272
368
  flightData,
273
369
  departureTime,
274
370
  arrivalTime,
275
- premiumAmount,
276
- statistics);
277
- // v, r, s);
371
+ premiumAmount);
278
372
 
279
373
  (riskId, policyNftId) = _prepareApplication(
280
374
  policyHolder,
@@ -296,17 +390,21 @@ contract FlightProduct is
296
390
  policyNftId,
297
391
  departureTime); // activate at scheduled departure time of flight
298
392
 
299
- // send oracle request for flight status (interacts with flight oracle contract)
300
- _sendRequest(
301
- _oracleNftId,
302
- abi.encode(
303
- FlightOracle.FlightStatusRequest(
304
- riskId,
305
- flightData,
306
- departureTime)),
307
- // allow up to 30 days to process the claim
308
- arrivalTime.addSeconds(SecondsLib.fromDays(30)),
309
- "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);
310
408
  }
311
409
 
312
410
 
@@ -357,116 +455,6 @@ contract FlightProduct is
357
455
  }
358
456
 
359
457
 
360
- /// @dev Callback for flight status oracle.
361
- /// Function may only be alled by oracle service.
362
- function flightStatusCallback(
363
- RequestId requestId,
364
- bytes memory responseData
365
- )
366
- external
367
- virtual
368
- restricted()
369
- {
370
- FlightOracle.FlightStatusResponse memory response = abi.decode(
371
- responseData, (FlightOracle.FlightStatusResponse));
372
-
373
- _processFlightStatus(
374
- requestId,
375
- response.riskId,
376
- response.status,
377
- response.delayMinutes,
378
- MAX_POLICIES_TO_PROCESS);
379
- }
380
-
381
-
382
- /// @dev Manual fallback function for product owner.
383
- function processFlightStatus(
384
- RequestId requestId,
385
- RiskId riskId,
386
- bytes1 status,
387
- int256 delayMinutes,
388
- uint8 maxPoliciesToProcess
389
- )
390
- external
391
- virtual
392
- restricted()
393
- onlyOwner()
394
- {
395
- _processFlightStatus(
396
- requestId,
397
- riskId,
398
- status,
399
- delayMinutes,
400
- maxPoliciesToProcess);
401
- }
402
-
403
- //--- owner functions ---------------------------------------------------//
404
-
405
- /// @dev Call after product registration with the instance, when the product token/tokenhandler is available
406
- function completeSetup()
407
- external
408
- virtual
409
- restricted()
410
- onlyOwner()
411
- {
412
- IERC20Metadata token = IERC20Metadata(getToken());
413
- uint256 tokenMultiplier = 10 ** token.decimals();
414
-
415
- MIN_PREMIUM = AmountLib.toAmount(15 * tokenMultiplier);
416
- MAX_PREMIUM = AmountLib.toAmount(200 * tokenMultiplier);
417
- MAX_PAYOUT = AmountLib.toAmount(500 * tokenMultiplier);
418
- MAX_TOTAL_PAYOUT = AmountLib.toAmount(3 * MAX_PAYOUT.toInt());
419
- }
420
-
421
-
422
- function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
423
- function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
424
- function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
425
- function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
426
-
427
-
428
- //--- view functions ----------------------------------------------------//
429
-
430
-
431
- function calculateNetPremium(
432
- Amount, // sumInsuredAmount: not used in this product
433
- RiskId, // riskId: not used in this product
434
- Seconds, // lifetime: not used in this product, a flight is a one time risk
435
- bytes memory applicationData // holds the premium amount the customer is willing to pay
436
- )
437
- external
438
- virtual override
439
- view
440
- returns (Amount netPremiumAmount)
441
- {
442
- (netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
443
- }
444
-
445
-
446
- function getFlightMessageVerifier()
447
- external
448
- view
449
- returns (FlightMessageVerifier)
450
- {
451
- return _flightMessageVerifier;
452
- }
453
-
454
-
455
- function getOracleNftId()
456
- public
457
- view
458
- returns (NftId oracleNftId)
459
- {
460
- return _oracleNftId;
461
- }
462
-
463
- function decodeFlightRiskData(bytes memory data) external pure returns (FlightRisk memory) {
464
- return abi.decode(data, (FlightRisk));
465
- }
466
-
467
- //--- internal functions ------------------------------------------------//
468
-
469
-
470
458
  function _createRiskAndPayoutAmounts(
471
459
  Str flightData,
472
460
  Timestamp departureTime,
@@ -520,26 +508,28 @@ contract FlightProduct is
520
508
  returns (RiskId riskId)
521
509
  {
522
510
  bool exists;
523
- FlightRisk memory flightRisk;
524
- (riskId, exists, flightRisk) = FlightLib.getFlightRisk(
525
- _getInstanceReader(),
526
- getNftId(),
511
+ FlightRisk memory flightRisk = FlightLib.getFlightRisk(
527
512
  flightData,
528
513
  departureTime,
529
514
  departureTimeLocal,
530
515
  arrivalTime,
531
516
  arrivalTimeLocal);
532
517
 
518
+ bytes32 riskKey = FlightLib.getRiskKey(flightData);
519
+ exists = _risks[riskKey].gtz();
520
+
533
521
  // create risk, if new
534
522
  if (!exists) {
535
- bytes32 riskKey = FlightLib.getRiskKey(flightData);
536
- _createRisk(riskKey, abi.encode(flightRisk));
523
+ riskId = _createRisk(abi.encode(flightRisk));
524
+ _risks[riskKey] = riskId;
525
+ } else {
526
+ riskId = _risks[riskKey];
537
527
  }
538
528
 
539
- // check for cluster risk: additional sum insured amount must not exceed MAX_TOTAL_PAYOUT
540
- if (flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount > MAX_TOTAL_PAYOUT) {
541
- revert ErrorFlightProductClusterRisk(flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount, MAX_TOTAL_PAYOUT);
542
- }
529
+ FlightLib.checkClusterRisk(
530
+ flightRisk.sumOfSumInsuredAmounts,
531
+ sumInsuredAmount,
532
+ MAX_TOTAL_PAYOUT);
543
533
 
544
534
  // update existing risk with additional sum insured amount
545
535
  flightRisk.sumOfSumInsuredAmounts = flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount;
@@ -551,71 +541,85 @@ contract FlightProduct is
551
541
  RequestId requestId,
552
542
  RiskId riskId,
553
543
  bytes1 status,
554
- int256 delayMinutes,
555
- uint8 maxPoliciesToProcess
544
+ int256 delayMinutes
556
545
  )
557
546
  internal
558
547
  virtual
559
548
  {
560
549
  // check risk exists
561
- InstanceReader reader = _getInstanceReader();
562
- (
563
- bool exists,
564
- FlightRisk memory flightRisk
565
- ) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
550
+ (, FlightRisk memory flightRisk) = getFlightRisk(riskId, true);
566
551
 
567
- if (!exists) {
568
- emit LogErrorRiskInvalid(requestId, riskId);
569
- return;
570
- }
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);
571
559
 
572
- uint8 payoutOption = FlightLib.checkAndGetPayoutOption(
573
- requestId, riskId, status, delayMinutes);
560
+ _updateRisk(riskId, abi.encode(flightRisk));
561
+ }
574
562
 
575
- _processPayoutsAndClosePolicies(
563
+ (,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
576
564
  riskId,
577
- payoutOption,
578
- maxPoliciesToProcess);
565
+ MAX_POLICIES_TO_PROCESS);
579
566
 
580
567
  // logging
581
568
  emit LogFlightStatusProcessed(requestId, riskId, status, delayMinutes, payoutOption);
582
569
  }
583
570
 
584
571
 
585
- // REMARK caller responsible to check that risk exists.
586
572
  function _processPayoutsAndClosePolicies(
587
573
  RiskId riskId,
588
- uint8 payoutOption,
589
574
  uint8 maxPoliciesToProcess
590
575
  )
591
576
  internal
592
577
  virtual
578
+ returns (
579
+ bool riskExists,
580
+ bool statusAvailable,
581
+ uint8 payoutOption
582
+ )
593
583
  {
594
584
  // determine numbers of policies to process
595
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
+
596
593
  uint256 policiesToProcess = reader.policiesForRisk(riskId);
597
- policiesToProcess = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
594
+ uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
598
595
 
599
- // go trough policies
600
- for (uint256 i = 0; i < policiesToProcess; i++) {
601
- 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
+ }
602
601
 
603
- // create payout (if any)
604
- if (payoutOption < type(uint8).max) {
605
- bytes memory applicationData = reader.getPolicyInfo(
606
- 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);
607
608
 
608
- _resolvePayout(
609
- policyNftId,
610
- FlightLib.getPayoutAmount(
611
- applicationData,
612
- payoutOption));
613
- }
609
+ // create claim/payout (if applicable)
610
+ _resolvePayout(
611
+ policyNftId,
612
+ payoutAmount);
614
613
 
615
614
  // expire and close policy
616
615
  _expire(policyNftId, TimestampLib.current());
617
616
  _close(policyNftId);
617
+
618
+ emit LogFlightPolicyClosed(policyNftId, payoutAmount);
618
619
  }
620
+
621
+ // logging
622
+ emit LogFlightPoliciesProcessed(riskId, payoutOption, policiesProcessed, policiesToProcess - policiesProcessed);
619
623
  }
620
624
 
621
625
 
@@ -626,6 +630,11 @@ contract FlightProduct is
626
630
  internal
627
631
  virtual
628
632
  {
633
+ // no action if no payout
634
+ if (payoutAmount.eqz()) {
635
+ return;
636
+ }
637
+
629
638
  // create confirmed claim
630
639
  ClaimId claimId = _submitClaim(policyNftId, payoutAmount, "");
631
640
  _confirmClaim(policyNftId, claimId, payoutAmount, "");
@@ -644,9 +653,9 @@ contract FlightProduct is
644
653
  address initialOwner
645
654
  )
646
655
  internal
647
- initializer
656
+ initializer()
648
657
  {
649
- _initializeBasicProduct(
658
+ __Product_init(
650
659
  registry,
651
660
  instanceNftId,
652
661
  componentName,
@@ -671,5 +680,11 @@ contract FlightProduct is
671
680
  }),
672
681
  authorization,
673
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;
674
689
  }
675
690
  }