@etherisc/gif-next 3.0.0-65fa82c-553 → 3.0.0-6cfca6b-349

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 (341) hide show
  1. package/README.md +9 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +42 -56
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +15 -19
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +14 -20
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2 -2
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +25 -6
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +2 -2
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +157 -72
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +37 -37
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +85 -0
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +2 -2
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +2 -2
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2 -2
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  44. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
  45. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +136 -65
  46. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
  47. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.dbg.json +4 -0
  48. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.json +801 -0
  49. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
  50. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +147 -28
  51. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +20 -20
  53. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
  54. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +2 -2
  55. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
  56. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +2 -2
  57. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
  58. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +300 -508
  59. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
  60. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +20 -20
  61. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
  62. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
  63. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
  64. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
  65. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  66. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +2 -2
  67. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  68. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +2 -2
  69. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  70. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +2 -2
  71. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  72. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +2 -2
  73. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  74. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +2 -2
  75. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  76. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2 -2
  77. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  78. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +2 -2
  79. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  80. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +50 -0
  81. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  82. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  83. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +50 -0
  85. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  86. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +61 -0
  88. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  89. package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
  90. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  91. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2 -2
  92. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  93. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
  94. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  95. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +69 -34
  96. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +81 -20
  98. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +11 -11
  100. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  101. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +82 -32
  102. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  103. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +68 -18
  104. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  105. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +2 -2
  106. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  107. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  108. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  109. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  110. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  111. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  112. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  113. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  114. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  115. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  116. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  117. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  118. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  119. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  121. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +2 -2
  122. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  123. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  124. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  125. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  126. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  127. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  128. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  129. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
  130. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
  132. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  133. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  134. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  135. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +32 -20
  137. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +11 -11
  139. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  140. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +12 -0
  141. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  142. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  143. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +12 -0
  144. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  146. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +2 -2
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  148. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -24
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +13 -13
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +2 -2
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +2 -2
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  156. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  158. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
  160. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +2 -2
  162. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  163. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  165. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +12 -0
  166. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +56 -44
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +20 -12
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +23 -23
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +2 -2
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.json +2 -2
  182. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +2 -2
  184. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +6 -0
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  191. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.json +34 -28
  193. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +4 -4
  195. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +2 -2
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  201. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2 -2
  203. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +2 -2
  206. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +2 -2
  208. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  209. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  210. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +51 -26
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +14 -14
  215. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
  217. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +25 -0
  224. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  225. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  226. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  231. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  232. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  234. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  235. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  236. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  237. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  238. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  239. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  241. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  242. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  243. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  244. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  245. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  246. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
  247. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  248. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  249. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  250. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +25 -0
  251. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  252. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +12 -0
  253. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  254. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  255. package/artifacts/contracts/staking/Staking.sol/Staking.json +73 -48
  256. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -2
  258. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  259. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +25 -25
  260. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  261. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  262. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  263. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -14
  264. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  265. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +8 -8
  266. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  267. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  268. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  269. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +2 -2
  270. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  271. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  272. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  273. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  281. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  283. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
  288. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  303. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  304. package/contracts/accounting/AccountingService.sol +17 -29
  305. package/contracts/accounting/IAccountingService.sol +7 -8
  306. package/contracts/authorization/AccessAdmin.sol +0 -21
  307. package/contracts/authorization/AccessManagerCloneable.sol +3 -0
  308. package/contracts/distribution/DistributionService.sol +5 -3
  309. package/contracts/distribution/IDistributionService.sol +4 -3
  310. package/contracts/examples/flight/FlightLib.sol +55 -18
  311. package/contracts/examples/flight/FlightNft.sol +234 -0
  312. package/contracts/examples/flight/FlightOracle.sol +64 -9
  313. package/contracts/examples/flight/FlightOracleAuthorization.sol +5 -1
  314. package/contracts/examples/flight/FlightPool.sol +1 -1
  315. package/contracts/examples/flight/FlightProduct.sol +182 -180
  316. package/contracts/examples/flight/FlightProductAuthorization.sol +3 -2
  317. package/contracts/examples/flight/FlightProductManager.sol +49 -0
  318. package/contracts/instance/BaseStore.sol +4 -0
  319. package/contracts/instance/IBaseStore.sol +8 -0
  320. package/contracts/instance/IInstanceService.sol +2 -0
  321. package/contracts/instance/InstanceReader.sol +10 -4
  322. package/contracts/instance/InstanceService.sol +4 -0
  323. package/contracts/oracle/BasicOracle.sol +1 -0
  324. package/contracts/oracle/Oracle.sol +2 -2
  325. package/contracts/pool/BundleService.sol +1 -1
  326. package/contracts/pool/IBundleService.sol +1 -1
  327. package/contracts/pool/IPoolService.sol +1 -1
  328. package/contracts/pool/PoolService.sol +1 -1
  329. package/contracts/product/IPolicyService.sol +1 -1
  330. package/contracts/product/PolicyService.sol +1 -1
  331. package/contracts/product/PolicyServiceLib.sol +5 -3
  332. package/contracts/registry/ChainNft.sol +1 -1
  333. package/contracts/registry/IRegistry.sol +1 -1
  334. package/contracts/registry/Registry.sol +1 -1
  335. package/contracts/shared/ComponentService.sol +5 -0
  336. package/contracts/shared/IComponentService.sol +1 -0
  337. package/contracts/staking/IStaking.sol +2 -0
  338. package/contracts/staking/IStakingService.sol +1 -1
  339. package/contracts/staking/Staking.sol +1 -0
  340. package/contracts/staking/StakingService.sol +1 -1
  341. package/package.json +1 -1
@@ -11,6 +11,7 @@ import {InstanceReader} from "../../instance/InstanceReader.sol";
11
11
  import {NftId} from "../../type/NftId.sol";
12
12
  import {RequestId} from "../../type/RequestId.sol";
13
13
  import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
14
+ import {Seconds} from "../../type/Seconds.sol";
14
15
  import {StateId} from "../../type/StateId.sol";
15
16
  import {Str} from "../../type/String.sol";
16
17
  import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
@@ -18,6 +19,19 @@ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
18
19
 
19
20
  library FlightLib {
20
21
 
22
+ event LogFlightProductErrorUnprocessableStatus(RequestId requestId, RiskId riskId, bytes1 status);
23
+ event LogFlightProductErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
24
+
25
+ error ErrorFlightProductRiskInvalid(RiskId riskId);
26
+ error ErrorFlightProductPremiumAmountTooSmall(Amount premiumAmount, Amount minPremium);
27
+ error ErrorFlightProductPremiumAmountTooLarge(Amount premiumAmount, Amount maxPremium);
28
+ error ErrorFlightProductArrivalBeforeDepartureTime(Timestamp departureTime, Timestamp arrivalTime);
29
+ error ErrorFlightProductArrivalAfterMaxFlightDuration(Timestamp arrivalTime, Timestamp maxArrivalTime, Seconds maxDuration);
30
+ error ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds minTimeBeforeDeparture);
31
+ error ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds maxTimeBeforeDeparture);
32
+ error ErrorFlightProductNotEnoughObservations(uint256 observations, uint256 minObservations);
33
+ error ErrorFlightProductClusterRisk(Amount totalSumInsured, Amount maxTotalPayout);
34
+
21
35
  function checkApplicationData(
22
36
  FlightProduct flightProduct,
23
37
  Str flightData,
@@ -45,32 +59,45 @@ library FlightLib {
45
59
 
46
60
  // solhint-disable
47
61
  if (premiumAmount < flightProduct.MIN_PREMIUM()) {
48
- revert FlightProduct.ErrorFlightProductPremiumAmountTooSmall(premiumAmount, flightProduct.MIN_PREMIUM());
62
+ revert ErrorFlightProductPremiumAmountTooSmall(premiumAmount, flightProduct.MIN_PREMIUM());
49
63
  }
50
64
  if (premiumAmount > flightProduct.MAX_PREMIUM()) {
51
- revert FlightProduct.ErrorFlightProductPremiumAmountTooLarge(premiumAmount, flightProduct.MAX_PREMIUM());
65
+ revert ErrorFlightProductPremiumAmountTooLarge(premiumAmount, flightProduct.MAX_PREMIUM());
52
66
  }
53
67
  if (arrivalTime <= departureTime) {
54
- revert FlightProduct.ErrorFlightProductArrivalBeforeDepartureTime(departureTime, arrivalTime);
68
+ revert ErrorFlightProductArrivalBeforeDepartureTime(departureTime, arrivalTime);
55
69
  }
56
-
57
- // test mode allows the creation for policies that ore not time constrained
58
- if (!testMode && arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) {
59
- revert FlightProduct.ErrorFlightProductArrivalAfterMaxFlightDuration(arrivalTime, departureTime, flightProduct.MAX_FLIGHT_DURATION());
70
+ if (arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) {
71
+ revert ErrorFlightProductArrivalAfterMaxFlightDuration(arrivalTime, departureTime, flightProduct.MAX_FLIGHT_DURATION());
60
72
  }
73
+
74
+ // test mode allows the creation for policies that are outside restricted policy creation times
61
75
  if (!testMode && departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) {
62
- revert FlightProduct.ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MIN_TIME_BEFORE_DEPARTURE());
76
+ revert ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MIN_TIME_BEFORE_DEPARTURE());
63
77
  }
64
78
  if (!testMode && departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) {
65
- revert FlightProduct.ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MAX_TIME_BEFORE_DEPARTURE());
79
+ revert ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MAX_TIME_BEFORE_DEPARTURE());
66
80
  }
67
81
  // solhint-enable
68
82
  }
69
83
 
70
84
 
85
+ function checkClusterRisk(
86
+ Amount sumOfSumInsuredAmounts,
87
+ Amount sumInsuredAmount,
88
+ Amount maxTotalPayout
89
+ )
90
+ public
91
+ pure
92
+ {
93
+ if (sumOfSumInsuredAmounts + sumInsuredAmount > maxTotalPayout) {
94
+ revert ErrorFlightProductClusterRisk(sumOfSumInsuredAmounts + sumInsuredAmount, maxTotalPayout);
95
+ }
96
+ }
97
+
98
+
71
99
  /// @dev calculates payout option based on flight status and delay minutes.
72
100
  /// Is not a view function as it emits log evens in case of unexpected status.
73
- // TODO decide if reverts instead of log events could work too (and convert the function into a view function)
74
101
  function checkAndGetPayoutOption(
75
102
  RequestId requestId,
76
103
  RiskId riskId,
@@ -85,13 +112,13 @@ library FlightLib {
85
112
 
86
113
  // check status
87
114
  if (status != "L" && status != "A" && status != "C" && status != "D") {
88
- emit FlightProduct.LogErrorUnprocessableStatus(requestId, riskId, status);
115
+ emit LogFlightProductErrorUnprocessableStatus(requestId, riskId, status);
89
116
  return payoutOption;
90
117
  }
91
118
 
92
119
  if (status == "A") {
93
120
  // todo: active, reschedule oracle call + 45 min
94
- emit FlightProduct.LogErrorUnexpectedStatus(requestId, riskId, status, delayMinutes);
121
+ emit LogFlightProductErrorUnexpectedStatus(requestId, riskId, status, delayMinutes);
95
122
  return payoutOption;
96
123
  }
97
124
 
@@ -114,7 +141,7 @@ library FlightLib {
114
141
  {
115
142
  // check we have enough observations
116
143
  if (statistics[0] < flightProduct.MIN_OBSERVATIONS()) {
117
- revert FlightProduct.ErrorFlightProductNotEnoughObservations(statistics[0], flightProduct.MIN_OBSERVATIONS());
144
+ revert ErrorFlightProductNotEnoughObservations(statistics[0], flightProduct.MIN_OBSERVATIONS());
118
145
  }
119
146
 
120
147
  weight = 0;
@@ -147,10 +174,10 @@ library FlightLib {
147
174
  )
148
175
  {
149
176
  if (premium < flightProduct.MIN_PREMIUM()) {
150
- revert FlightProduct.ErrorFlightProductPremiumAmountTooSmall(premium, flightProduct.MIN_PREMIUM());
177
+ revert ErrorFlightProductPremiumAmountTooSmall(premium, flightProduct.MIN_PREMIUM());
151
178
  }
152
179
  if (premium > flightProduct.MAX_PREMIUM()) {
153
- revert FlightProduct.ErrorFlightProductPremiumAmountTooLarge(premium, flightProduct.MAX_PREMIUM());
180
+ revert ErrorFlightProductPremiumAmountTooLarge(premium, flightProduct.MAX_PREMIUM());
154
181
  }
155
182
 
156
183
  sumInsuredAmount = AmountLib.zero();
@@ -186,7 +213,8 @@ library FlightLib {
186
213
  (exists, flightRisk) = getFlightRisk(
187
214
  reader,
188
215
  productNftId,
189
- riskId);
216
+ riskId,
217
+ false);
190
218
 
191
219
  statusAvailable = flightRisk.statusUpdatedAt.gtz();
192
220
  payoutOption = flightRisk.payoutOption;
@@ -201,6 +229,10 @@ library FlightLib {
201
229
  pure
202
230
  returns (Amount payoutAmount)
203
231
  {
232
+ if (payoutOption == type(uint8).max) {
233
+ return AmountLib.zero();
234
+ }
235
+
204
236
  // retrieve payout amounts from application data
205
237
  (, Amount[5] memory payoutAmounts) = abi.decode(
206
238
  applicationData, (Amount, Amount[5]));
@@ -228,7 +260,7 @@ library FlightLib {
228
260
  )
229
261
  {
230
262
  riskId = getRiskId(productNftId, flightData);
231
- (exists, flightRisk) = getFlightRisk(reader, productNftId, riskId);
263
+ (exists, flightRisk) = getFlightRisk(reader, productNftId, riskId, false);
232
264
 
233
265
  // create new risk if not existing
234
266
  if (!exists) {
@@ -250,7 +282,8 @@ library FlightLib {
250
282
  function getFlightRisk(
251
283
  InstanceReader reader,
252
284
  NftId productNftId,
253
- RiskId riskId
285
+ RiskId riskId,
286
+ bool requireRiskExists
254
287
  )
255
288
  public
256
289
  view
@@ -262,6 +295,10 @@ library FlightLib {
262
295
  // check if risk exists
263
296
  exists = reader.isProductRisk(productNftId, riskId);
264
297
 
298
+ if (!exists && requireRiskExists) {
299
+ revert ErrorFlightProductRiskInvalid(riskId);
300
+ }
301
+
265
302
  // get risk data if risk exists
266
303
  if (exists) {
267
304
  flightRisk = abi.decode(
@@ -0,0 +1,234 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
5
+ import {IERC721Metadata} from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";
6
+ import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
7
+
8
+ import {IPolicy} from "../../instance/module/IPolicy.sol";
9
+ import {IRegistry} from "../../registry/IRegistry.sol";
10
+
11
+ import {Amount} from "../../type/Amount.sol";
12
+ import {ChainNft} from "../../registry/ChainNft.sol";
13
+ import {FlightProduct} from "./FlightProduct.sol";
14
+ import {InstanceReader} from "../../instance/InstanceReader.sol";
15
+ import {NftId, NftIdLib} from "../../type/NftId.sol";
16
+ import {RiskId} from "../../type/RiskId.sol";
17
+
18
+
19
+ /**
20
+ * @title FlightNft
21
+ * @dev FlightNft provides NFT data for flight delay policies.
22
+ */
23
+ // contract FlightNft is IERC721Metadata {
24
+ contract FlightNft is
25
+ ERC721,
26
+ Ownable
27
+ {
28
+
29
+ error ErrorFlightNftNotMinter();
30
+ error ErrorFlightNftAlreadyMinted(uint256 tokenId);
31
+ error ErrorFlightNftNotAvailable(uint256 tokenId);
32
+ error ErrorFlightNftNotFlightPolicy(uint256 tokenId);
33
+
34
+ ChainNft public immutable chainNft;
35
+ FlightProduct public immutable flightProduct;
36
+ InstanceReader public immutable instanceReader;
37
+ IRegistry public registry;
38
+
39
+ address public minter;
40
+ string private _baseUri;
41
+
42
+
43
+ modifier onlyMinter() {
44
+ if(msg.sender != minter) {
45
+ revert ErrorFlightNftNotMinter();
46
+ }
47
+ _;
48
+ }
49
+
50
+
51
+ constructor(
52
+ address flightProductAddress,
53
+ string memory nftName,
54
+ string memory nftSymbol,
55
+ string memory baseUri
56
+ )
57
+ ERC721(nftName, nftSymbol)
58
+ Ownable(msg.sender)
59
+ {
60
+ flightProduct = FlightProduct(flightProductAddress);
61
+ registry = flightProduct.getRegistry();
62
+ chainNft = ChainNft(registry.getChainNftAddress());
63
+ instanceReader = flightProduct.getInstance().getInstanceReader();
64
+
65
+ minter = msg.sender;
66
+ _baseUri = baseUri;
67
+ }
68
+
69
+
70
+ /**
71
+ * Set the base URI to the specified value.
72
+ * Once set, this results in tokenURI() to return <baseUri><tokenId>.
73
+ */
74
+ function setBaseURI(string memory baseUri)
75
+ public
76
+ onlyOwner()
77
+ {
78
+ _baseUri = baseUri;
79
+ }
80
+
81
+
82
+ /**
83
+ * Set the minter address.
84
+ */
85
+ function setMinter(address minterAddress)
86
+ public
87
+ onlyOwner()
88
+ {
89
+ minter = minterAddress;
90
+ }
91
+
92
+
93
+ /**
94
+ * Mints a metadata NFT for the specified chainNft NFT.
95
+ * Only the minter can mint such NFTs.
96
+ */
97
+ function mint(uint256 tokenId)
98
+ external
99
+ onlyMinter()
100
+ {
101
+ // verify nft does not yet exist
102
+ if (_ownerOf(tokenId) != address(0)) {
103
+ revert ErrorFlightNftAlreadyMinted(tokenId);
104
+ }
105
+
106
+ // verify nft on chainNft exists
107
+ // also checks if nft exists (ERC721NonexistentToken)
108
+ address nftOwner = chainNft.ownerOf(tokenId);
109
+
110
+ // verify nft is flight delay policy
111
+ if (registry.getParentNftId(NftIdLib.toNftId(tokenId)) != registry.getNftIdForAddress(address(flightProduct))) {
112
+ revert ErrorFlightNftNotFlightPolicy(tokenId);
113
+ }
114
+
115
+ _mint(nftOwner, tokenId);
116
+ }
117
+
118
+
119
+ /**
120
+ * @dev Return the NFT token URI for the specified token.
121
+ * No check is performed to ensure the token exists.
122
+ */
123
+ function tokenURI(uint256 tokenId) public view override returns (string memory) {
124
+ string memory baseURI = _baseURI();
125
+ return bytes(baseURI).length > 0 ? string.concat(baseURI, toString(tokenId)) : "";
126
+ }
127
+
128
+
129
+ /**
130
+ * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
131
+ * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
132
+ * by default, can be overridden in child contracts.
133
+ */
134
+ function _baseURI() internal override view returns (string memory) {
135
+ return _baseUri;
136
+ }
137
+
138
+
139
+ function approve(address to, uint256 tokenId) public override { _revert(); }
140
+ function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public override { _revert(); }
141
+ function setApprovalForAll(address operator, bool approved) public override { _revert(); }
142
+ function transferFrom(address from, address to, uint256 tokenId) public override { _revert(); }
143
+
144
+ function balanceOf(address owner) public override view returns (uint256 balance) {
145
+ return chainNft.balanceOf(owner);
146
+ }
147
+
148
+ function getApproved(uint256 tokenId) public override view returns (address operator) {
149
+ return chainNft.getApproved(tokenId);
150
+ }
151
+
152
+ function isApprovedForAll(address owner, address operator) public override view returns (bool) {
153
+ return chainNft.isApprovedForAll(owner, operator);
154
+ }
155
+
156
+ function ownerOf(uint256 tokenId) public override view returns (address owner) {
157
+ return chainNft.ownerOf(tokenId);
158
+ }
159
+
160
+ function supportsInterface(bytes4 interfaceId) public override view returns (bool) {
161
+ return chainNft.supportsInterface(interfaceId);
162
+ }
163
+
164
+
165
+ function getPolicyData(NftId policyNftId)
166
+ public
167
+ view
168
+ returns (
169
+ RiskId riskId,
170
+ string memory flightData,
171
+ string memory departureTimeLocal,
172
+ string memory arrivalTimeLocal,
173
+ Amount premiumAmount,
174
+ Amount[5] memory payoutAmounts,
175
+ bytes1 status,
176
+ int256 delayMinutes
177
+ )
178
+ {
179
+ IPolicy.PolicyInfo memory info = instanceReader.getPolicyInfo(policyNftId);
180
+
181
+ // get financial data
182
+ premiumAmount = info.premiumAmount;
183
+
184
+ if (info.applicationData.length > 0) {
185
+ (, payoutAmounts) = abi.decode(info.applicationData, (Amount, Amount[5]));
186
+ }
187
+
188
+ // get risk data
189
+ riskId = info.riskId;
190
+ bytes memory data = instanceReader.getRiskInfo(riskId).data;
191
+
192
+ if (data.length > 0) {
193
+ FlightProduct.FlightRisk memory flightRisk = flightProduct.decodeFlightRiskData(data);
194
+ flightData = flightRisk.flightData.toString();
195
+ departureTimeLocal = flightRisk.departureTimeLocal;
196
+ arrivalTimeLocal = flightRisk.arrivalTimeLocal;
197
+ status = flightRisk.status;
198
+ delayMinutes = flightRisk.delayMinutes;
199
+ }
200
+ }
201
+
202
+
203
+ function toString(uint256 value) public pure returns (string memory) {
204
+ if (value == 0) {
205
+ return "0";
206
+ }
207
+
208
+ uint256 temp = value;
209
+ uint256 digits = 0;
210
+ while (temp != 0) {
211
+ digits++;
212
+ temp /= 10;
213
+ }
214
+
215
+ bytes memory buffer = new bytes(digits);
216
+ uint index = digits - 1;
217
+
218
+ temp = value;
219
+ while (temp != 0) {
220
+ buffer[index] = bytes1(uint8(48 + temp % 10));
221
+ temp /= 10;
222
+
223
+ if (index > 0) {
224
+ index--;
225
+ }
226
+ }
227
+
228
+ return string(buffer);
229
+ }
230
+
231
+ function _revert() private pure {
232
+ revert("FlightNft: Use GIF Chain NFT contract to interact with NFTs. See function getChainNft()");
233
+ }
234
+ }
@@ -3,14 +3,15 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IAuthorization} from "../../authorization/IAuthorization.sol";
5
5
 
6
- import {FULFILLED} from "../../type/StateId.sol";
6
+ import {ACTIVE, FULFILLED, FAILED} from "../../type/StateId.sol";
7
7
  import {NftId} from "../../type/NftId.sol";
8
8
  import {BasicOracle} from "../../oracle/BasicOracle.sol";
9
9
  import {RequestId} from "../../type/RequestId.sol";
10
10
  import {LibRequestIdSet} from "../../type/RequestIdSet.sol";
11
11
  import {RiskId} from "../../type/RiskId.sol";
12
+ import {StateId} from "../../type/StateId.sol";
12
13
  import {Str} from "../../type/String.sol";
13
- import {Timestamp} from "../../type/Timestamp.sol";
14
+ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
14
15
 
15
16
  contract FlightOracle is
16
17
  BasicOracle
@@ -100,14 +101,17 @@ contract FlightOracle is
100
101
  _respond(requestId, responseData);
101
102
 
102
103
  // TODO decide if the code below should be moved to GIF
103
- // check callback result
104
- bool requestFulfilled = _getInstanceReader().getRequestState(
105
- requestId) == FULFILLED();
104
+ _updateRequestState(requestId);
105
+ }
106
106
 
107
- // remove from active requests when successful
108
- if (requestFulfilled) {
109
- LibRequestIdSet.remove(_activeRequests, requestId);
110
- }
107
+
108
+ function updateRequestState(
109
+ RequestId requestId
110
+ )
111
+ external
112
+ restricted()
113
+ {
114
+ _updateRequestState(requestId);
111
115
  }
112
116
 
113
117
  //--- view functions ----------------------------------------------------//
@@ -131,12 +135,63 @@ contract FlightOracle is
131
135
  return LibRequestIdSet.getElementAt(_activeRequests, idx);
132
136
  }
133
137
 
138
+
139
+ function isActiveRequest(RequestId requestId)
140
+ external
141
+ view
142
+ returns(bool isActive)
143
+ {
144
+ return LibRequestIdSet.contains(_activeRequests, requestId);
145
+ }
146
+
147
+
148
+ function getRequestState(RequestId requestId)
149
+ external
150
+ view
151
+ returns (
152
+ RiskId riskId,
153
+ string memory flightData,
154
+ StateId requestState,
155
+ bool readyForResponse,
156
+ bool waitingForResend
157
+ )
158
+ {
159
+ bytes memory requestData = _getInstanceReader().getRequestInfo(requestId).requestData;
160
+ Str fltData;
161
+ Timestamp departureTime;
162
+ (riskId, fltData, departureTime) = abi.decode(requestData, (RiskId, Str, Timestamp));
163
+
164
+ flightData = fltData.toString();
165
+ requestState = _getInstanceReader().getRequestState(requestId);
166
+ readyForResponse = requestState == ACTIVE() && TimestampLib.current() >= departureTime;
167
+ waitingForResend = requestState == FAILED();
168
+ }
169
+
170
+
134
171
  function decodeFlightStatusRequestData(bytes memory data) external pure returns (FlightStatusRequest memory) {
135
172
  return abi.decode(data, (FlightStatusRequest));
136
173
  }
137
174
 
138
175
  //--- internal functions ------------------------------------------------//
139
176
 
177
+
178
+ // TODO decide if the code below should be moved to GIF
179
+ // check callback result
180
+ function _updateRequestState(
181
+ RequestId requestId
182
+ )
183
+ internal
184
+ {
185
+ bool requestFulfilled = _getInstanceReader().getRequestState(
186
+ requestId) == FULFILLED();
187
+
188
+ // remove from active requests when successful
189
+ if (requestFulfilled && LibRequestIdSet.contains(_activeRequests, requestId)) {
190
+ LibRequestIdSet.remove(_activeRequests, requestId);
191
+ }
192
+ }
193
+
194
+
140
195
  /// @dev use case specific handling of oracle requests
141
196
  /// for now only log is emitted to verify that request has been received by oracle component
142
197
  function _request(
@@ -8,7 +8,7 @@ import {IAccess} from "../../../contracts/authorization/IAccess.sol";
8
8
  import {AccessAdminLib} from "../../authorization/AccessAdminLib.sol";
9
9
  import {BasicOracleAuthorization} from "../../oracle/BasicOracleAuthorization.sol";
10
10
  import {FlightOracle} from "./FlightOracle.sol";
11
- import {RoleId, ADMIN_ROLE} from "../../../contracts/type/RoleId.sol";
11
+ import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
12
12
 
13
13
  contract FlightOracleAuthorization
14
14
  is BasicOracleAuthorization
@@ -48,6 +48,10 @@ contract FlightOracleAuthorization
48
48
 
49
49
  functions = _authorizeForTarget(getMainTargetName(), STATUS_PROVIDER_ROLE);
50
50
  _authorize(functions, FlightOracle.respondWithFlightStatus.selector, "respondWithFlightStatus");
51
+
52
+ // authorize public role (additional authz via onlyOwner)
53
+ functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
54
+ _authorize(functions, FlightOracle.updateRequestState.selector, "updateRequestState");
51
55
  }
52
56
  }
53
57
 
@@ -35,7 +35,7 @@ contract FlightPool is
35
35
  maxBalanceAmount: AmountLib.max(),
36
36
  isInterceptingBundleTransfers: false,
37
37
  isProcessingConfirmedClaims: false,
38
- isExternallyManaged: false,
38
+ isExternallyManaged: true,
39
39
  isVerifyingApplications: false,
40
40
  collateralizationLevel: UFixedLib.one(),
41
41
  retentionLevel: UFixedLib.one()