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

Sign up to get free protection for your applications and to get access to all the features.
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,