@etherisc/gif-next 3.0.0-c46a89a-335 → 3.0.0-cdd3800-286

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