@etherisc/gif-next 3.0.0-d6cf78d-199 → 3.0.0-f9be4a0-294

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