@etherisc/gif-next 3.0.0-61b9ecf-774 → 3.0.0-63cc7ab-129

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