@etherisc/gif-next 3.0.0-a511887-523 → 3.0.0-ab0fcb2-112

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