@etherisc/gif-next 3.0.0-61b9ecf-774 → 3.0.0-65fa82c-553

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 (286) hide show
  1. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +2 -2
  3. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +2 -2
  5. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +44 -56
  8. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +145 -100
  10. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  13. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  19. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +2 -2
  21. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  23. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +2 -2
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +2 -2
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  31. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  32. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +2 -2
  33. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  34. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +2 -2
  35. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  36. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2 -2
  37. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
  39. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  40. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
  41. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +130 -36
  42. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
  43. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
  44. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +2 -2
  45. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
  46. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +82 -35
  47. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
  48. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +2 -2
  49. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
  50. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +2 -2
  51. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
  52. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +165 -256
  53. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
  54. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +83 -36
  55. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
  56. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
  57. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +2 -2
  59. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +2 -2
  61. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +2 -2
  63. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  64. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +2 -2
  65. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  66. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +2 -2
  67. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  68. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2 -2
  69. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  70. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +2 -2
  71. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  73. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  74. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  75. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  76. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  78. package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
  79. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +102 -114
  81. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
  83. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +58 -34
  85. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  86. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +2 -2
  87. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  88. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +2 -2
  89. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  90. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2 -2
  91. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  92. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2 -2
  93. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  94. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +2 -2
  95. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  96. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  98. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +2 -2
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +2 -2
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +2 -2
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  131. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  132. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +2 -2
  133. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  134. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +2 -2
  135. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +2 -2
  137. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  138. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +2 -2
  139. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +2 -2
  141. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  142. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  144. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +2 -2
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  149. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  150. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  153. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  154. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  155. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +2 -2
  156. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  157. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +2 -2
  158. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +2 -2
  160. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  161. package/artifacts/contracts/product/PricingService.sol/PricingService.json +2 -2
  162. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
  164. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  165. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  166. package/artifacts/contracts/product/RiskService.sol/RiskService.json +2 -2
  167. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +2 -2
  169. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  170. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  172. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  174. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  176. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  177. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +101 -113
  178. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  179. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +2 -2
  180. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  181. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  184. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  185. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +110 -122
  186. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  187. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +56 -62
  189. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  190. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +2 -2
  191. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  192. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  193. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  194. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  195. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +2 -2
  196. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  197. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +2 -2
  198. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  199. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  200. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  201. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  207. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  212. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  214. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  216. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  220. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  221. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  222. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  223. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  224. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  225. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  226. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  227. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  228. package/artifacts/contracts/staking/Staking.sol/Staking.json +2 -2
  229. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  230. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -2
  231. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +2 -2
  233. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  235. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  236. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +2 -2
  237. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +2 -2
  239. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  241. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  242. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +2 -2
  243. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  245. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  246. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  254. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  256. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
  261. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  272. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  273. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  274. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  275. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  276. package/contracts/authorization/AccessAdmin.sol +25 -23
  277. package/contracts/authorization/AccessAdminLib.sol +18 -1
  278. package/contracts/examples/flight/FlightLib.sol +36 -62
  279. package/contracts/examples/flight/FlightOracleAuthorization.sol +24 -5
  280. package/contracts/examples/flight/FlightProduct.sol +137 -127
  281. package/contracts/examples/flight/FlightProductAuthorization.sol +32 -8
  282. package/contracts/instance/InstanceAdmin.sol +0 -1
  283. package/contracts/instance/InstanceReader.sol +6 -0
  284. package/contracts/registry/RegistryAdmin.sol +7 -1
  285. package/contracts/registry/ReleaseAdmin.sol +8 -1
  286. package/package.json +1 -1
@@ -18,39 +18,17 @@ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
18
18
 
19
19
  library FlightLib {
20
20
 
21
- function checkApplicationDataAndSignature(
21
+ function checkApplicationData(
22
22
  FlightProduct flightProduct,
23
23
  Str flightData,
24
24
  Timestamp departureTime,
25
25
  Timestamp arrivalTime,
26
- Amount premiumAmount,
27
- uint256[6] memory statistics
28
- // signature fields
29
- // uint8 v,
30
- // bytes32 r,
31
- // bytes32 s
26
+ Amount premiumAmount
32
27
  )
33
28
  public
34
29
  view
35
30
  {
36
31
  _checkApplicationData(flightProduct, premiumAmount, arrivalTime, departureTime);
37
-
38
- // (
39
- // address actualSigner,,
40
- // bool success
41
- // ) = flightProduct.getFlightMessageVerifier().verifyRatingsHash(
42
- // flightData,
43
- // departureTime,
44
- // arrivalTime,
45
- // premiumAmount,
46
- // statistics,
47
- // v, r, s);
48
-
49
- // if (!success) {
50
- // revert FlightProduct.ErrorApplicationDataSignatureMismatch(
51
- // flightProduct.getFlightMessageVerifier().getExpectedSigner(),
52
- // actualSigner);
53
- // }
54
32
  }
55
33
 
56
34
 
@@ -63,6 +41,8 @@ library FlightLib {
63
41
  internal
64
42
  view
65
43
  {
44
+ bool testMode = flightProduct.isTestMode();
45
+
66
46
  // solhint-disable
67
47
  if (premiumAmount < flightProduct.MIN_PREMIUM()) {
68
48
  revert FlightProduct.ErrorFlightProductPremiumAmountTooSmall(premiumAmount, flightProduct.MIN_PREMIUM());
@@ -74,53 +54,20 @@ library FlightLib {
74
54
  revert FlightProduct.ErrorFlightProductArrivalBeforeDepartureTime(departureTime, arrivalTime);
75
55
  }
76
56
 
77
- if (arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) {
57
+ // test mode allows the creation for policies that ore not time constrained
58
+ if (!testMode && arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) {
78
59
  revert FlightProduct.ErrorFlightProductArrivalAfterMaxFlightDuration(arrivalTime, departureTime, flightProduct.MAX_FLIGHT_DURATION());
79
60
  }
80
- if (departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) {
61
+ if (!testMode && departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) {
81
62
  revert FlightProduct.ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MIN_TIME_BEFORE_DEPARTURE());
82
63
  }
83
- if (departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) {
64
+ if (!testMode && departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) {
84
65
  revert FlightProduct.ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MAX_TIME_BEFORE_DEPARTURE());
85
66
  }
86
67
  // solhint-enable
87
68
  }
88
69
 
89
70
 
90
- // TODO fix or cleanup
91
- // function checkApplication(
92
- // FlightProduct flightProduct,
93
- // Str carrierFlightNumber,
94
- // Timestamp departureTime,
95
- // Timestamp arrivalTime,
96
- // Amount premium
97
- // )
98
- // external
99
- // view
100
- // returns (uint256 errors)
101
- // {
102
- // // Validate input parameters
103
- // if (premium < flightProduct.MIN_PREMIUM()) { errors = errors | (uint256(1) << 0); }
104
- // if (premium > flightProduct.MAX_PREMIUM()) { errors = errors | (uint256(1) << 1); }
105
- // if (arrivalTime < departureTime) { errors = errors | (uint256(1) << 2); }
106
- // if (arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) { errors = errors | (uint256(1) << 3); }
107
- // if (departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) { errors = errors | (uint256(1) << 4); }
108
- // if (departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) { errors = errors | (uint256(1) << 5); }
109
-
110
- // (, bool exists, FlightProduct.FlightRisk memory flightRisk) = getFlightRisk(
111
- // flightProduct.getInstanceReader(), flightProduct.getNftId(), carrierFlightNumber, departureTime, arrivalTime);
112
-
113
- // if (exists) {
114
- // Amount sumInsured = AmountLib.toAmount(premium.toInt() * flightRisk.premiumMultiplier);
115
- // if (flightRisk.sumOfSumInsuredAmounts + sumInsured > flightProduct.MAX_TOTAL_PAYOUT()) {
116
- // errors = errors | (uint256(1) << 6);
117
- // }
118
- // }
119
-
120
- // return errors;
121
- // }
122
-
123
-
124
71
  /// @dev calculates payout option based on flight status and delay minutes.
125
72
  /// Is not a view function as it emits log evens in case of unexpected status.
126
73
  // TODO decide if reverts instead of log events could work too (and convert the function into a view function)
@@ -222,11 +169,36 @@ library FlightLib {
222
169
  }
223
170
 
224
171
 
172
+ function getPayoutOption(
173
+ InstanceReader reader,
174
+ NftId productNftId,
175
+ RiskId riskId
176
+ )
177
+ public
178
+ view
179
+ returns (
180
+ bool exists,
181
+ bool statusAvailable,
182
+ uint8 payoutOption
183
+ )
184
+ {
185
+ FlightProduct.FlightRisk memory flightRisk;
186
+ (exists, flightRisk) = getFlightRisk(
187
+ reader,
188
+ productNftId,
189
+ riskId);
190
+
191
+ statusAvailable = flightRisk.statusUpdatedAt.gtz();
192
+ payoutOption = flightRisk.payoutOption;
193
+ }
194
+
195
+
225
196
  function getPayoutAmount(
226
197
  bytes memory applicationData,
227
198
  uint8 payoutOption
228
199
  )
229
200
  public
201
+ pure
230
202
  returns (Amount payoutAmount)
231
203
  {
232
204
  // retrieve payout amounts from application data
@@ -268,7 +240,9 @@ library FlightLib {
268
240
  arrivalTimeLocal: arrivalTimeLocal,
269
241
  sumOfSumInsuredAmounts: AmountLib.toAmount(0),
270
242
  status: bytes1(0),
271
- delayMinutes: 0});
243
+ delayMinutes: 0,
244
+ payoutOption: uint8(0),
245
+ statusUpdatedAt: TimestampLib.zero()});
272
246
  }
273
247
  }
274
248
 
@@ -5,17 +5,38 @@ pragma solidity ^0.8.20;
5
5
 
6
6
  import {IAccess} from "../../../contracts/authorization/IAccess.sol";
7
7
 
8
+ import {AccessAdminLib} from "../../authorization/AccessAdminLib.sol";
8
9
  import {BasicOracleAuthorization} from "../../oracle/BasicOracleAuthorization.sol";
9
10
  import {FlightOracle} from "./FlightOracle.sol";
10
- import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
11
+ import {RoleId, ADMIN_ROLE} from "../../../contracts/type/RoleId.sol";
11
12
 
12
13
  contract FlightOracleAuthorization
13
14
  is BasicOracleAuthorization
14
15
  {
15
16
 
17
+ uint64 public constant STATUS_PROVIDER_ROLE_IDX = 2; // 2nd custom role for flight oracle
18
+ string public constant STATUS_PROVIDER_ROLE_NAME = "StatusProviderRole";
19
+ RoleId public STATUS_PROVIDER_ROLE;
20
+
16
21
  constructor(string memory oracleName, string memory commitHash)
17
22
  BasicOracleAuthorization(oracleName, commitHash)
18
- {}
23
+ { }
24
+
25
+
26
+ function _setupRoles()
27
+ internal
28
+ override
29
+ {
30
+ STATUS_PROVIDER_ROLE = AccessAdminLib.getCustomRoleId(STATUS_PROVIDER_ROLE_IDX);
31
+
32
+ _addRole(
33
+ STATUS_PROVIDER_ROLE,
34
+ AccessAdminLib.roleInfo(
35
+ ADMIN_ROLE(),
36
+ TargetType.Custom,
37
+ 1, // max member count special case: instance nft owner is sole role owner
38
+ STATUS_PROVIDER_ROLE_NAME));
39
+ }
19
40
 
20
41
 
21
42
  function _setupTargetAuthorizations()
@@ -25,9 +46,7 @@ contract FlightOracleAuthorization
25
46
  super._setupTargetAuthorizations();
26
47
  IAccess.FunctionInfo[] storage functions;
27
48
 
28
- // TODO IMPORTANT must not be public role for prod!!!
29
- // authorize public role (also protected by onlyOwner)
30
- functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
49
+ functions = _authorizeForTarget(getMainTargetName(), STATUS_PROVIDER_ROLE);
31
50
  _authorize(functions, FlightOracle.respondWithFlightStatus.selector, "respondWithFlightStatus");
32
51
  }
33
52
  }
@@ -8,7 +8,6 @@ import {IAuthorization} from "../../authorization/IAuthorization.sol";
8
8
  import {IComponents} from "../../instance/module/IComponents.sol";
9
9
 
10
10
  import {Amount, AmountLib} from "../../type/Amount.sol";
11
- import {BasicProduct} from "../../product/BasicProduct.sol";
12
11
  import {ClaimId} from "../../type/ClaimId.sol";
13
12
  import {FeeLib} from "../../type/Fee.sol";
14
13
  import {FlightLib} from "./FlightLib.sol";
@@ -17,6 +16,7 @@ import {FlightOracle} from "./FlightOracle.sol";
17
16
  import {InstanceReader} from "../../instance/InstanceReader.sol";
18
17
  import {NftId, NftIdLib} from "../../type/NftId.sol";
19
18
  import {PayoutId} from "../../type/PayoutId.sol";
19
+ import {Product} from "../../product/Product.sol";
20
20
  import {ReferralLib} from "../../type/Referral.sol";
21
21
  import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
22
22
  import {RequestId} from "../../type/RequestId.sol";
@@ -27,16 +27,17 @@ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
27
27
 
28
28
  /// @dev FlightProduct implements the flight delay product.
29
29
  contract FlightProduct is
30
- BasicProduct
30
+ Product
31
31
  {
32
32
 
33
33
  event LogRequestFlightRatings(uint256 requestId, bytes32 carrierFlightNumber, uint256 departureTime, uint256 arrivalTime, bytes32 riskId);
34
34
  event LogRequestFlightStatus(uint256 requestId, uint256 arrivalTime, bytes32 carrierFlightNumber, bytes32 departureYearMonthDay);
35
35
  event LogPayoutTransferred(bytes32 bpKey, uint256 claimId, uint256 payoutId, uint256 amount);
36
36
  event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
37
+ event LogFlightPoliciesProcessed(RiskId riskId, uint8 payoutOption, uint256 policiesProcessed, uint256 policiesRemaining);
37
38
 
38
39
  // TODO convert error logs to custom errors
39
- event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
40
+ // event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
40
41
  event LogPolicyExpired(bytes32 bpKey);
41
42
 
42
43
  event LogErrorRiskInvalid(RequestId requestId, RiskId riskId);
@@ -85,18 +86,13 @@ contract FlightProduct is
85
86
  uint8[6] public WEIGHT_PATTERN = [0, 0, 0, 30, 50, 50];
86
87
  uint8 public constant MAX_WEIGHT = 50;
87
88
 
89
+ bool internal _testMode;
90
+
88
91
  // GIF V3 specifics
89
92
  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)
93
+ NftId internal _oracleNftId;
96
94
  // solhint-enable
97
95
 
98
- FlightMessageVerifier internal _flightMessageVerifier;
99
-
100
96
 
101
97
  struct FlightRisk {
102
98
  Str flightData; // example: "LX 180 ZRH BKK 20241104"
@@ -111,6 +107,8 @@ contract FlightProduct is
111
107
  // uint256 weight; // what is this? UFixed?
112
108
  bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
113
109
  int256 delayMinutes;
110
+ uint8 payoutOption;
111
+ Timestamp statusUpdatedAt;
114
112
  }
115
113
 
116
114
  struct ApplicationData {
@@ -123,6 +121,7 @@ contract FlightProduct is
123
121
  uint256[6] statistics;
124
122
  }
125
123
 
124
+
126
125
  struct PermitData {
127
126
  address owner;
128
127
  address spender;
@@ -138,8 +137,7 @@ contract FlightProduct is
138
137
  address registry,
139
138
  NftId instanceNftid,
140
139
  string memory componentName,
141
- IAuthorization authorization,
142
- FlightMessageVerifier messageVerifier
140
+ IAuthorization authorization
143
141
  )
144
142
  {
145
143
  address initialOwner = msg.sender;
@@ -150,8 +148,6 @@ contract FlightProduct is
150
148
  componentName,
151
149
  authorization,
152
150
  initialOwner);
153
-
154
- _flightMessageVerifier = messageVerifier;
155
151
  }
156
152
 
157
153
  //--- external functions ------------------------------------------------//
@@ -200,14 +196,14 @@ contract FlightProduct is
200
196
  )
201
197
  {
202
198
  // process permit data
203
- processPermit(permit);
199
+ _processPermit(permit);
204
200
 
205
201
  // create policy
206
202
  address policyHolder = permit.owner;
207
203
  (
208
204
  riskId,
209
205
  policyNftId
210
- ) = createPolicy(
206
+ ) = _createPolicy(
211
207
  policyHolder,
212
208
  application.flightData,
213
209
  application.departureTime,
@@ -216,34 +212,10 @@ contract FlightProduct is
216
212
  application.arrivalTimeLocal,
217
213
  application.premiumAmount,
218
214
  application.statistics);
219
- // application.v,
220
- // application.r,
221
- // application.s);
222
- }
223
-
224
-
225
- function processPermit(
226
- PermitData memory permit
227
- )
228
- public
229
- virtual
230
- restricted()
231
- {
232
- address tokenAddress = address(getToken());
233
-
234
- // process permit data
235
- ERC20Permit(tokenAddress).permit(
236
- permit.owner,
237
- permit.spender,
238
- permit.value,
239
- permit.deadline,
240
- permit.v,
241
- permit.r,
242
- permit.s);
243
215
  }
244
216
 
245
217
 
246
- function createPolicy(
218
+ function _createPolicy(
247
219
  address policyHolder,
248
220
  Str flightData,
249
221
  Timestamp departureTime,
@@ -252,14 +224,9 @@ contract FlightProduct is
252
224
  string memory arrivalTimeLocal,
253
225
  Amount premiumAmount,
254
226
  uint256[6] memory statistics
255
- // signature fields
256
- // uint8 v,
257
- // bytes32 r,
258
- // bytes32 s
259
227
  )
260
- public
228
+ internal
261
229
  virtual
262
- restricted()
263
230
  returns (
264
231
  RiskId riskId,
265
232
  NftId policyNftId
@@ -267,14 +234,12 @@ contract FlightProduct is
267
234
  {
268
235
  // checks
269
236
  // disabled for now - using rbac for security
270
- FlightLib.checkApplicationDataAndSignature(
237
+ FlightLib.checkApplicationData(
271
238
  this,
272
239
  flightData,
273
240
  departureTime,
274
241
  arrivalTime,
275
- premiumAmount,
276
- statistics);
277
- // v, r, s);
242
+ premiumAmount);
278
243
 
279
244
  (riskId, policyNftId) = _prepareApplication(
280
245
  policyHolder,
@@ -310,53 +275,6 @@ contract FlightProduct is
310
275
  }
311
276
 
312
277
 
313
- function _prepareApplication(
314
- address policyHolder,
315
- Str flightData,
316
- Timestamp departureTime,
317
- string memory departureTimeLocal,
318
- Timestamp arrivalTime,
319
- string memory arrivalTimeLocal,
320
- Amount premiumAmount,
321
- uint256[6] memory statistics
322
- )
323
- internal
324
- virtual
325
- returns (
326
- RiskId riskId,
327
- NftId policyNftId
328
- )
329
- {
330
- Amount[5] memory payoutAmounts;
331
- Amount sumInsuredAmount;
332
-
333
- (
334
- riskId,
335
- payoutAmounts,
336
- sumInsuredAmount
337
- ) = _createRiskAndPayoutAmounts(
338
- flightData,
339
- departureTime,
340
- departureTimeLocal,
341
- arrivalTime,
342
- arrivalTimeLocal,
343
- premiumAmount,
344
- statistics);
345
-
346
- policyNftId = _createApplication(
347
- policyHolder,
348
- riskId,
349
- sumInsuredAmount,
350
- premiumAmount,
351
- LIFETIME,
352
- _defaultBundleNftId,
353
- ReferralLib.zero(),
354
- abi.encode(
355
- premiumAmount,
356
- payoutAmounts)); // application data
357
- }
358
-
359
-
360
278
  /// @dev Callback for flight status oracle.
361
279
  /// Function may only be alled by oracle service.
362
280
  function flightStatusCallback(
@@ -400,9 +318,27 @@ contract FlightProduct is
400
318
  maxPoliciesToProcess);
401
319
  }
402
320
 
321
+
322
+ /// @dev Manual fallback function for product owner.
323
+ function processPayoutsAndClosePolicies(
324
+ RiskId riskId,
325
+ uint8 maxPoliciesToProcess
326
+ )
327
+ external
328
+ virtual
329
+ restricted()
330
+ onlyOwner()
331
+ {
332
+ _processPayoutsAndClosePolicies(
333
+ riskId,
334
+ maxPoliciesToProcess);
335
+ }
336
+
337
+
403
338
  //--- owner functions ---------------------------------------------------//
404
339
 
405
- /// @dev Call after product registration with the instance, when the product token/tokenhandler is available
340
+ /// @dev Call after product registration with the instance
341
+ /// when the product token/tokenhandler is available
406
342
  function completeSetup()
407
343
  external
408
344
  virtual
@@ -420,6 +356,8 @@ contract FlightProduct is
420
356
 
421
357
 
422
358
  function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
359
+ function setTestMode(bool testMode) external restricted() onlyOwner() { _testMode = testMode; }
360
+
423
361
  function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
424
362
  function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
425
363
  function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
@@ -427,7 +365,6 @@ contract FlightProduct is
427
365
 
428
366
  //--- view functions ----------------------------------------------------//
429
367
 
430
-
431
368
  function calculateNetPremium(
432
369
  Amount, // sumInsuredAmount: not used in this product
433
370
  RiskId, // riskId: not used in this product
@@ -443,28 +380,79 @@ contract FlightProduct is
443
380
  }
444
381
 
445
382
 
446
- function getFlightMessageVerifier()
447
- external
448
- view
449
- returns (FlightMessageVerifier)
383
+ function getOracleNftId() public view returns (NftId oracleNftId) { return _oracleNftId; }
384
+ function isTestMode() public view returns (bool) { return _testMode; }
385
+ function decodeFlightRiskData(bytes memory data) public pure returns (FlightRisk memory) { return abi.decode(data, (FlightRisk)); }
386
+
387
+ //--- internal functions ------------------------------------------------//
388
+
389
+
390
+ function _processPermit(
391
+ PermitData memory permit
392
+ )
393
+ internal
394
+ virtual
395
+ restricted()
450
396
  {
451
- return _flightMessageVerifier;
397
+ address tokenAddress = address(getToken());
398
+
399
+ // process permit data
400
+ ERC20Permit(tokenAddress).permit(
401
+ permit.owner,
402
+ permit.spender,
403
+ permit.value,
404
+ permit.deadline,
405
+ permit.v,
406
+ permit.r,
407
+ permit.s);
452
408
  }
453
409
 
454
410
 
455
- function getOracleNftId()
456
- public
457
- view
458
- returns (NftId oracleNftId)
459
- {
460
- return _oracleNftId;
461
- }
411
+ function _prepareApplication(
412
+ address policyHolder,
413
+ Str flightData,
414
+ Timestamp departureTime,
415
+ string memory departureTimeLocal,
416
+ Timestamp arrivalTime,
417
+ string memory arrivalTimeLocal,
418
+ Amount premiumAmount,
419
+ uint256[6] memory statistics
420
+ )
421
+ internal
422
+ virtual
423
+ returns (
424
+ RiskId riskId,
425
+ NftId policyNftId
426
+ )
427
+ {
428
+ Amount[5] memory payoutAmounts;
429
+ Amount sumInsuredAmount;
462
430
 
463
- function decodeFlightRiskData(bytes memory data) external pure returns (FlightRisk memory) {
464
- return abi.decode(data, (FlightRisk));
465
- }
431
+ (
432
+ riskId,
433
+ payoutAmounts,
434
+ sumInsuredAmount
435
+ ) = _createRiskAndPayoutAmounts(
436
+ flightData,
437
+ departureTime,
438
+ departureTimeLocal,
439
+ arrivalTime,
440
+ arrivalTimeLocal,
441
+ premiumAmount,
442
+ statistics);
466
443
 
467
- //--- internal functions ------------------------------------------------//
444
+ policyNftId = _createApplication(
445
+ policyHolder,
446
+ riskId,
447
+ sumInsuredAmount,
448
+ premiumAmount,
449
+ LIFETIME,
450
+ _defaultBundleNftId,
451
+ ReferralLib.zero(),
452
+ abi.encode(
453
+ premiumAmount,
454
+ payoutAmounts)); // application data
455
+ }
468
456
 
469
457
 
470
458
  function _createRiskAndPayoutAmounts(
@@ -565,16 +553,25 @@ contract FlightProduct is
565
553
  ) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
566
554
 
567
555
  if (!exists) {
556
+ // TODO decide to switch from log to error
568
557
  emit LogErrorRiskInvalid(requestId, riskId);
569
558
  return;
559
+ } else {
560
+ // update status, if not yet set
561
+ if (flightRisk.statusUpdatedAt.eqz()) {
562
+ flightRisk.status = status;
563
+ flightRisk.delayMinutes = delayMinutes;
564
+ flightRisk.payoutOption = FlightLib.checkAndGetPayoutOption(
565
+ requestId, riskId, status, delayMinutes);
566
+ flightRisk.statusUpdatedAt = TimestampLib.current();
567
+
568
+ _updateRisk(riskId, abi.encode(flightRisk));
569
+ }
570
+ // TODO revert in else case?
570
571
  }
571
572
 
572
- uint8 payoutOption = FlightLib.checkAndGetPayoutOption(
573
- requestId, riskId, status, delayMinutes);
574
-
575
- _processPayoutsAndClosePolicies(
573
+ (,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
576
574
  riskId,
577
- payoutOption,
578
575
  maxPoliciesToProcess);
579
576
 
580
577
  // logging
@@ -582,22 +579,32 @@ contract FlightProduct is
582
579
  }
583
580
 
584
581
 
585
- // REMARK caller responsible to check that risk exists.
586
582
  function _processPayoutsAndClosePolicies(
587
583
  RiskId riskId,
588
- uint8 payoutOption,
589
584
  uint8 maxPoliciesToProcess
590
585
  )
591
586
  internal
592
587
  virtual
588
+ returns (
589
+ bool riskExists,
590
+ bool statusAvailable,
591
+ uint8 payoutOption
592
+ )
593
593
  {
594
594
  // determine numbers of policies to process
595
595
  InstanceReader reader = _getInstanceReader();
596
+ (riskExists, statusAvailable, payoutOption) = FlightLib.getPayoutOption(reader, getNftId(), riskId);
597
+
598
+ // return with default values if risk does not exist or status is not yet available
599
+ if (!riskExists || !statusAvailable) {
600
+ return (riskExists, statusAvailable, payoutOption);
601
+ }
602
+
596
603
  uint256 policiesToProcess = reader.policiesForRisk(riskId);
597
- policiesToProcess = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
604
+ uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
598
605
 
599
606
  // go trough policies
600
- for (uint256 i = 0; i < policiesToProcess; i++) {
607
+ for (uint256 i = 0; i < policiesProcessed; i++) {
601
608
  NftId policyNftId = reader.getPolicyForRisk(riskId, i);
602
609
 
603
610
  // create payout (if any)
@@ -616,6 +623,9 @@ contract FlightProduct is
616
623
  _expire(policyNftId, TimestampLib.current());
617
624
  _close(policyNftId);
618
625
  }
626
+
627
+ // logging
628
+ emit LogFlightPoliciesProcessed(riskId, payoutOption, policiesProcessed, policiesToProcess - policiesProcessed);
619
629
  }
620
630
 
621
631
 
@@ -646,7 +656,7 @@ contract FlightProduct is
646
656
  internal
647
657
  initializer
648
658
  {
649
- _initializeBasicProduct(
659
+ __Product_init(
650
660
  registry,
651
661
  instanceNftId,
652
662
  componentName,