@etherisc/gif-next 3.0.0-fbbe3fc-042 → 3.0.0-fbc2b82-347

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 (381) 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 +32 -36
  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 +42 -29
  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 +63 -63
  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/DamageLevel.sol/DamageLevelLib.json +2 -2
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +12 -12
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +2 -2
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +47 -52
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +2 -2
  46. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
  47. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +136 -65
  48. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
  49. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +2 -2
  50. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.dbg.json +4 -0
  51. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.json +801 -0
  52. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
  53. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +149 -30
  54. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
  55. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +20 -20
  56. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
  57. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +14 -14
  58. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
  59. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +2 -2
  60. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
  61. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +298 -506
  62. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
  63. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +20 -20
  64. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
  66. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
  67. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +2 -2
  68. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
  69. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +2 -2
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +15 -15
  72. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +2 -2
  74. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  75. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +12 -12
  76. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  77. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +16 -16
  78. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  79. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +2 -2
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  81. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +18 -18
  82. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +2 -2
  84. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +50 -0
  86. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  87. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  88. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +50 -0
  90. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  91. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +61 -0
  93. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  94. package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
  95. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  96. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +97 -97
  97. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  98. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
  99. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  100. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +69 -34
  101. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +102 -25
  103. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  104. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +29 -29
  105. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  106. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +82 -32
  107. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  108. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +68 -18
  109. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  110. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +2 -2
  111. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  112. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  113. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  114. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  115. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  116. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  117. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  118. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  119. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  120. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  121. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  122. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  123. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  124. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  125. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  126. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  127. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  128. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  129. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  130. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +2 -2
  131. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  132. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  133. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  134. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  135. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  136. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  137. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  138. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
  139. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +38 -38
  141. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  142. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  143. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  144. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  145. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +32 -20
  146. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +50 -50
  148. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  149. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +12 -0
  150. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  151. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  152. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +12 -0
  153. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  154. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  155. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +4 -9
  156. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  157. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -24
  158. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +51 -51
  160. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  161. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +2 -2
  162. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +32 -32
  164. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  165. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  166. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  167. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  168. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
  169. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +55 -55
  171. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  172. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  173. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  174. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +12 -0
  175. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  177. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  178. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  179. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +56 -44
  180. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  181. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +20 -12
  182. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +48 -48
  184. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  185. package/artifacts/contracts/product/PricingService.sol/PricingService.json +2 -2
  186. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  187. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +39 -39
  188. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  189. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  190. package/artifacts/contracts/product/RiskService.sol/RiskService.json +2 -2
  191. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  192. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +30 -30
  193. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  195. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +6 -0
  197. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  198. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  199. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  200. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/Registry.sol/Registry.json +47 -37
  202. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +69 -69
  204. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  205. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +2 -2
  206. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  207. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  208. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  209. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +25 -25
  210. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  211. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +85 -85
  212. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  213. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  214. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  215. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +103 -87
  216. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  217. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +19 -19
  218. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  219. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  220. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  222. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +73 -48
  223. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +49 -49
  225. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
  227. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  228. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  229. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +25 -0
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  235. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  241. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  242. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  243. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  244. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  245. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  246. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  247. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  249. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  250. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  251. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  252. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  253. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  254. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  255. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +23 -50
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +9 -36
  259. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  260. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +28 -28
  261. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  262. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +25 -0
  263. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  264. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +12 -0
  265. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  266. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  267. package/artifacts/contracts/staking/Staking.sol/Staking.json +73 -48
  268. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  269. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -7
  270. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  271. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +41 -41
  272. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  274. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -14
  276. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +28 -28
  278. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  280. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  281. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +2 -7
  282. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  283. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -7
  284. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  285. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  286. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -7
  288. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  290. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
  292. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  294. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  296. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -7
  298. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  300. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  301. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  302. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  304. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  305. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  306. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  308. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  310. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  312. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  314. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
  315. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +2 -2
  316. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  318. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  320. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  322. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  324. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  326. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  328. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  330. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  332. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -7
  334. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  336. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  338. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  339. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  340. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
  341. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  342. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  343. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  344. package/contracts/accounting/AccountingService.sol +17 -29
  345. package/contracts/accounting/IAccountingService.sol +7 -8
  346. package/contracts/authorization/AccessAdmin.sol +0 -21
  347. package/contracts/authorization/AccessManagerCloneable.sol +4 -0
  348. package/contracts/distribution/DistributionService.sol +5 -3
  349. package/contracts/distribution/IDistributionService.sol +4 -3
  350. package/contracts/examples/flight/FlightLib.sol +55 -18
  351. package/contracts/examples/flight/FlightNft.sol +234 -0
  352. package/contracts/examples/flight/FlightOracle.sol +64 -9
  353. package/contracts/examples/flight/FlightOracleAuthorization.sol +5 -1
  354. package/contracts/examples/flight/FlightPool.sol +1 -1
  355. package/contracts/examples/flight/FlightProduct.sol +182 -180
  356. package/contracts/examples/flight/FlightProductAuthorization.sol +3 -2
  357. package/contracts/examples/flight/FlightProductManager.sol +49 -0
  358. package/contracts/instance/BaseStore.sol +4 -0
  359. package/contracts/instance/IBaseStore.sol +8 -0
  360. package/contracts/instance/IInstanceService.sol +2 -0
  361. package/contracts/instance/InstanceReader.sol +13 -5
  362. package/contracts/instance/InstanceService.sol +4 -0
  363. package/contracts/oracle/BasicOracle.sol +1 -0
  364. package/contracts/oracle/Oracle.sol +2 -2
  365. package/contracts/pool/BundleService.sol +1 -1
  366. package/contracts/pool/IBundleService.sol +1 -1
  367. package/contracts/pool/IPoolService.sol +1 -1
  368. package/contracts/pool/PoolService.sol +1 -1
  369. package/contracts/product/IPolicyService.sol +1 -1
  370. package/contracts/product/PolicyService.sol +1 -1
  371. package/contracts/product/PolicyServiceLib.sol +5 -3
  372. package/contracts/registry/ChainNft.sol +1 -1
  373. package/contracts/registry/IRegistry.sol +1 -1
  374. package/contracts/registry/Registry.sol +5 -3
  375. package/contracts/shared/ComponentService.sol +5 -0
  376. package/contracts/shared/IComponentService.sol +1 -0
  377. package/contracts/staking/IStaking.sol +2 -0
  378. package/contracts/staking/IStakingService.sol +1 -1
  379. package/contracts/staking/Staking.sol +1 -0
  380. package/contracts/staking/StakingService.sol +1 -1
  381. package/package.json +3 -3
@@ -6,9 +6,11 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER
6
6
 
7
7
  import {IAuthorization} from "../../authorization/IAuthorization.sol";
8
8
  import {IComponents} from "../../instance/module/IComponents.sol";
9
+ import {IPolicy} from "../../instance/module/IPolicy.sol";
9
10
 
10
11
  import {Amount, AmountLib} from "../../type/Amount.sol";
11
12
  import {ClaimId} from "../../type/ClaimId.sol";
13
+ import {Component} from "../../shared/Component.sol";
12
14
  import {FeeLib} from "../../type/Fee.sol";
13
15
  import {FlightLib} from "./FlightLib.sol";
14
16
  import {FlightMessageVerifier} from "./FlightMessageVerifier.sol";
@@ -21,7 +23,7 @@ import {ReferralLib} from "../../type/Referral.sol";
21
23
  import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
22
24
  import {RequestId} from "../../type/RequestId.sol";
23
25
  import {Seconds, SecondsLib} from "../../type/Seconds.sol";
24
- import {Str} from "../../type/String.sol";
26
+ import {Str, StrLib} from "../../type/String.sol";
25
27
  import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
26
28
 
27
29
 
@@ -30,68 +32,45 @@ contract FlightProduct is
30
32
  Product
31
33
  {
32
34
 
33
- event LogRequestFlightRatings(uint256 requestId, bytes32 carrierFlightNumber, uint256 departureTime, uint256 arrivalTime, bytes32 riskId);
34
- event LogRequestFlightStatus(uint256 requestId, uint256 arrivalTime, bytes32 carrierFlightNumber, bytes32 departureYearMonthDay);
35
- event LogPayoutTransferred(bytes32 bpKey, uint256 claimId, uint256 payoutId, uint256 amount);
35
+ event LogFlightPolicyPurchased(NftId policyNftId, string flightData, Amount premiumAmount);
36
+ event LogFlightPolicyClosed(NftId policyNftId, Amount payoutAmount);
37
+
36
38
  event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
37
39
  event LogFlightPoliciesProcessed(RiskId riskId, uint8 payoutOption, uint256 policiesProcessed, uint256 policiesRemaining);
38
40
 
39
- // TODO convert error logs to custom errors
40
- // event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
41
- event LogPolicyExpired(bytes32 bpKey);
42
-
43
- event LogErrorRiskInvalid(RequestId requestId, RiskId riskId);
44
- event LogErrorUnprocessableStatus(RequestId requestId, RiskId riskId, bytes1 status);
45
- event LogErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
46
-
47
- error ErrorApplicationDataSignatureMismatch(address expectedSigner, address actualSigner);
48
- error ErrorFlightProductClusterRisk(Amount totalSumInsured, Amount maxTotalPayout);
49
- error ErrorFlightProductPremiumAmountTooSmall(Amount premiumAmount, Amount minPremium);
50
- error ErrorFlightProductPremiumAmountTooLarge(Amount premiumAmount, Amount maxPremium);
51
- error ErrorFlightProductArrivalBeforeDepartureTime(Timestamp departureTime, Timestamp arrivalTime);
52
- error ErrorFlightProductArrivalAfterMaxFlightDuration(Timestamp arrivalTime, Timestamp maxArrivalTime, Seconds maxDuration);
53
- error ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds minTimeBeforeDeparture);
54
- error ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds maxTimeBeforeDeparture);
55
- error ErrorFlightProductNotEnoughObservations(uint256 observations, uint256 minObservations);
56
-
57
41
  // solhint-disable
58
- // Minimum observations for valid prediction
59
- uint256 public immutable MIN_OBSERVATIONS = 10;
60
- // Minimum time before departure for applying
61
- Seconds public MIN_TIME_BEFORE_DEPARTURE = SecondsLib.fromDays(14);
62
- // Maximum time before departure for applying
63
- Seconds public MAX_TIME_BEFORE_DEPARTURE = SecondsLib.fromDays(90);
64
- // Maximum duration of flight
65
- Seconds public MAX_FLIGHT_DURATION = SecondsLib.fromDays(2);
66
- // Check for delay after .. minutes after scheduled arrival
67
- Seconds public CHECK_OFFSET = SecondsLib.fromHours(1);
68
- // Max time to process claims after departure
69
- Seconds public LIFETIME = SecondsLib.fromDays(30);
70
-
71
- // uint256 public constant MIN_PREMIUM = 15 * 10 ** 18; // production
72
- // All amounts in cent = multiplier is 10 ** 16!
73
42
  Amount public MIN_PREMIUM;
74
43
  Amount public MAX_PREMIUM;
75
44
  Amount public MAX_PAYOUT;
76
- Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight is 3x max payout.
77
-
78
- // Maximum cumulated weighted premium per risk
79
- uint256 public MARGIN_PERCENT = 30;
45
+ Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight/risk
80
46
 
81
- // Maximum number of policies to process in one callback
82
- uint8 public MAX_POLICIES_TO_PROCESS = 5;
47
+ // Minimum time before departure for applying
48
+ Seconds public MIN_TIME_BEFORE_DEPARTURE;
49
+ // Maximum time before departure for applying
50
+ Seconds public MAX_TIME_BEFORE_DEPARTURE;
51
+ // Maximum duration of flight
52
+ Seconds public MAX_FLIGHT_DURATION;
53
+ // Max time to process claims after departure
54
+ Seconds public LIFETIME;
83
55
 
84
56
  // ['observations','late15','late30','late45','cancelled','diverted']
85
57
  // no payouts for delays of 30' or less
86
- uint8[6] public WEIGHT_PATTERN = [0, 0, 0, 30, 50, 50];
87
- uint8 public constant MAX_WEIGHT = 50;
58
+ uint8[6] public WEIGHT_PATTERN;
59
+ // Minimum number of observations for valid prediction/premium calculation
60
+ uint256 public MIN_OBSERVATIONS;
61
+ // Maximum cumulated weighted premium per risk
62
+ uint256 public MARGIN_PERCENT;
63
+ // Maximum number of policies to process in one callback
64
+ uint8 public MAX_POLICIES_TO_PROCESS;
65
+ // solhint-enable
88
66
 
89
67
  bool internal _testMode;
90
68
 
69
+ mapping(RiskId riskId => RequestId requestId) internal _requests;
70
+
91
71
  // GIF V3 specifics
92
72
  NftId internal _defaultBundleNftId;
93
73
  NftId internal _oracleNftId;
94
- // solhint-enable
95
74
 
96
75
 
97
76
  struct FlightRisk {
@@ -103,16 +82,15 @@ contract FlightProduct is
103
82
  // this field contains static data required by the frontend and is not directly used by the product
104
83
  string arrivalTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
105
84
  Amount sumOfSumInsuredAmounts;
106
- // uint256 premiumMultiplier; // what is this? UFixed?
107
- // uint256 weight; // what is this? UFixed?
108
85
  bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
109
86
  int256 delayMinutes;
110
87
  uint8 payoutOption;
111
88
  Timestamp statusUpdatedAt;
112
89
  }
113
90
 
91
+
114
92
  struct ApplicationData {
115
- Str flightData;
93
+ string flightData;
116
94
  Timestamp departureTime;
117
95
  string departureTimeLocal;
118
96
  Timestamp arrivalTime;
@@ -135,7 +113,7 @@ contract FlightProduct is
135
113
 
136
114
  constructor(
137
115
  address registry,
138
- NftId instanceNftid,
116
+ NftId instanceNftId,
139
117
  string memory componentName,
140
118
  IAuthorization authorization
141
119
  )
@@ -144,12 +122,13 @@ contract FlightProduct is
144
122
 
145
123
  _initialize(
146
124
  registry,
147
- instanceNftid,
125
+ instanceNftId,
148
126
  componentName,
149
127
  authorization,
150
128
  initialOwner);
151
129
  }
152
130
 
131
+
153
132
  //--- external functions ------------------------------------------------//
154
133
  //--- unpermissioned functions ------------------------------------------//
155
134
 
@@ -160,6 +139,7 @@ contract FlightProduct is
160
139
  getNftId()).oracleNftId[0];
161
140
  }
162
141
 
142
+
163
143
  function calculatePayoutAmounts(
164
144
  FlightProduct flightProduct,
165
145
  Amount premium,
@@ -205,7 +185,7 @@ contract FlightProduct is
205
185
  policyNftId
206
186
  ) = _createPolicy(
207
187
  policyHolder,
208
- application.flightData,
188
+ StrLib.toStr(application.flightData),
209
189
  application.departureTime,
210
190
  application.departureTimeLocal,
211
191
  application.arrivalTime,
@@ -215,66 +195,6 @@ contract FlightProduct is
215
195
  }
216
196
 
217
197
 
218
- function _createPolicy(
219
- address policyHolder,
220
- Str flightData,
221
- Timestamp departureTime,
222
- string memory departureTimeLocal,
223
- Timestamp arrivalTime,
224
- string memory arrivalTimeLocal,
225
- Amount premiumAmount,
226
- uint256[6] memory statistics
227
- )
228
- internal
229
- virtual
230
- returns (
231
- RiskId riskId,
232
- NftId policyNftId
233
- )
234
- {
235
- // checks
236
- // disabled for now - using rbac for security
237
- FlightLib.checkApplicationData(
238
- this,
239
- flightData,
240
- departureTime,
241
- arrivalTime,
242
- premiumAmount);
243
-
244
- (riskId, policyNftId) = _prepareApplication(
245
- policyHolder,
246
- flightData,
247
- departureTime,
248
- departureTimeLocal,
249
- arrivalTime,
250
- arrivalTimeLocal,
251
- premiumAmount,
252
- statistics);
253
-
254
- _createPolicy(
255
- policyNftId,
256
- TimestampLib.zero(), // do not ativate yet
257
- premiumAmount); // max premium amount
258
-
259
- // interactions (token transfer + callback to token holder, if contract)
260
- _collectPremium(
261
- policyNftId,
262
- departureTime); // activate at scheduled departure time of flight
263
-
264
- // send oracle request for flight status (interacts with flight oracle contract)
265
- _sendRequest(
266
- _oracleNftId,
267
- abi.encode(
268
- FlightOracle.FlightStatusRequest(
269
- riskId,
270
- flightData,
271
- departureTime)),
272
- // allow up to 30 days to process the claim
273
- arrivalTime.addSeconds(SecondsLib.fromDays(30)),
274
- "flightStatusCallback");
275
- }
276
-
277
-
278
198
  /// @dev Callback for flight status oracle.
279
199
  /// Function may only be alled by oracle service.
280
200
  function flightStatusCallback(
@@ -292,31 +212,17 @@ contract FlightProduct is
292
212
  requestId,
293
213
  response.riskId,
294
214
  response.status,
295
- response.delayMinutes,
296
- MAX_POLICIES_TO_PROCESS);
215
+ response.delayMinutes);
297
216
  }
298
217
 
299
218
 
300
- /// @dev Manual fallback function for product owner.
301
- function processFlightStatus(
302
- RequestId requestId,
303
- RiskId riskId,
304
- bytes1 status,
305
- int256 delayMinutes,
306
- uint8 maxPoliciesToProcess
307
- )
219
+ function resendRequest(RequestId requestId)
308
220
  external
309
221
  virtual
310
222
  restricted()
311
- onlyOwner()
312
223
  {
313
- _processFlightStatus(
314
- requestId,
315
- riskId,
316
- status,
317
- delayMinutes,
318
- maxPoliciesToProcess);
319
- }
224
+ _resendRequest(requestId);
225
+ }
320
226
 
321
227
 
322
228
  /// @dev Manual fallback function for product owner.
@@ -339,22 +245,30 @@ contract FlightProduct is
339
245
 
340
246
  /// @dev Call after product registration with the instance
341
247
  /// when the product token/tokenhandler is available
342
- function completeSetup()
248
+ function setConstants(
249
+ Amount minPremium,
250
+ Amount maxPremium,
251
+ Amount maxPayout,
252
+ Amount maxTotalPayout,
253
+ Seconds minTimeBeforeDeparture,
254
+ Seconds maxTimeBeforeDeparture,
255
+ uint8 maxPoliciesToProcess
256
+ )
343
257
  external
344
258
  virtual
345
259
  restricted()
346
260
  onlyOwner()
347
261
  {
348
- IERC20Metadata token = IERC20Metadata(getToken());
349
- uint256 tokenMultiplier = 10 ** token.decimals();
350
-
351
- MIN_PREMIUM = AmountLib.toAmount(15 * tokenMultiplier);
352
- MAX_PREMIUM = AmountLib.toAmount(200 * tokenMultiplier);
353
- MAX_PAYOUT = AmountLib.toAmount(500 * tokenMultiplier);
354
- MAX_TOTAL_PAYOUT = AmountLib.toAmount(3 * MAX_PAYOUT.toInt());
262
+ MIN_PREMIUM = minPremium;
263
+ MAX_PREMIUM = maxPremium;
264
+ MAX_PAYOUT = maxPayout;
265
+ MAX_TOTAL_PAYOUT = maxTotalPayout;
266
+
267
+ MIN_TIME_BEFORE_DEPARTURE = minTimeBeforeDeparture;
268
+ MAX_TIME_BEFORE_DEPARTURE = maxTimeBeforeDeparture;
269
+ MAX_POLICIES_TO_PROCESS = maxPoliciesToProcess;
355
270
  }
356
271
 
357
-
358
272
  function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
359
273
  function setTestMode(bool testMode) external restricted() onlyOwner() { _testMode = testMode; }
360
274
 
@@ -382,6 +296,27 @@ contract FlightProduct is
382
296
 
383
297
  function getOracleNftId() public view returns (NftId oracleNftId) { return _oracleNftId; }
384
298
  function isTestMode() public view returns (bool) { return _testMode; }
299
+
300
+
301
+ function getFlightRisk(
302
+ RiskId riskId,
303
+ bool requireRiskExists
304
+ )
305
+ public
306
+ view
307
+ returns (
308
+ bool exists,
309
+ FlightRisk memory flightRisk
310
+ )
311
+ {
312
+ (exists, flightRisk) = FlightLib.getFlightRisk(
313
+ _getInstanceReader(),
314
+ getNftId(),
315
+ riskId,
316
+ requireRiskExists);
317
+ }
318
+
319
+ function getRequestForRisk(RiskId riskId) public view returns (RequestId requestId) { return _requests[riskId]; }
385
320
  function decodeFlightRiskData(bytes memory data) public pure returns (FlightRisk memory) { return abi.decode(data, (FlightRisk)); }
386
321
 
387
322
  //--- internal functions ------------------------------------------------//
@@ -408,6 +343,70 @@ contract FlightProduct is
408
343
  }
409
344
 
410
345
 
346
+ function _createPolicy(
347
+ address policyHolder,
348
+ Str flightData,
349
+ Timestamp departureTime,
350
+ string memory departureTimeLocal,
351
+ Timestamp arrivalTime,
352
+ string memory arrivalTimeLocal,
353
+ Amount premiumAmount,
354
+ uint256[6] memory statistics
355
+ )
356
+ internal
357
+ virtual
358
+ returns (
359
+ RiskId riskId,
360
+ NftId policyNftId
361
+ )
362
+ {
363
+ // checks
364
+ // disabled for now - using rbac for security
365
+ FlightLib.checkApplicationData(
366
+ this,
367
+ flightData,
368
+ departureTime,
369
+ arrivalTime,
370
+ premiumAmount);
371
+
372
+ (riskId, policyNftId) = _prepareApplication(
373
+ policyHolder,
374
+ flightData,
375
+ departureTime,
376
+ departureTimeLocal,
377
+ arrivalTime,
378
+ arrivalTimeLocal,
379
+ premiumAmount,
380
+ statistics);
381
+
382
+ _createPolicy(
383
+ policyNftId,
384
+ TimestampLib.zero(), // do not ativate yet
385
+ premiumAmount); // max premium amount
386
+
387
+ // interactions (token transfer + callback to token holder, if contract)
388
+ _collectPremium(
389
+ policyNftId,
390
+ departureTime); // activate at scheduled departure time of flight
391
+
392
+ // send oracle request for for new risk to obtain flight status (interacts with flight oracle contract)
393
+ if (_requests[riskId].eqz()) {
394
+ _requests[riskId] = _sendRequest(
395
+ _oracleNftId,
396
+ abi.encode(
397
+ FlightOracle.FlightStatusRequest(
398
+ riskId,
399
+ flightData,
400
+ departureTime)),
401
+ // allow up to 30 days to process the claim
402
+ arrivalTime.addSeconds(SecondsLib.fromDays(30)),
403
+ "flightStatusCallback");
404
+ }
405
+
406
+ emit LogFlightPolicyPurchased(policyNftId, flightData.toString(), premiumAmount);
407
+ }
408
+
409
+
411
410
  function _prepareApplication(
412
411
  address policyHolder,
413
412
  Str flightData,
@@ -524,10 +523,10 @@ contract FlightProduct is
524
523
  _createRisk(riskKey, abi.encode(flightRisk));
525
524
  }
526
525
 
527
- // check for cluster risk: additional sum insured amount must not exceed MAX_TOTAL_PAYOUT
528
- if (flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount > MAX_TOTAL_PAYOUT) {
529
- revert ErrorFlightProductClusterRisk(flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount, MAX_TOTAL_PAYOUT);
530
- }
526
+ FlightLib.checkClusterRisk(
527
+ flightRisk.sumOfSumInsuredAmounts,
528
+ sumInsuredAmount,
529
+ MAX_TOTAL_PAYOUT);
531
530
 
532
531
  // update existing risk with additional sum insured amount
533
532
  flightRisk.sumOfSumInsuredAmounts = flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount;
@@ -539,40 +538,28 @@ contract FlightProduct is
539
538
  RequestId requestId,
540
539
  RiskId riskId,
541
540
  bytes1 status,
542
- int256 delayMinutes,
543
- uint8 maxPoliciesToProcess
541
+ int256 delayMinutes
544
542
  )
545
543
  internal
546
544
  virtual
547
545
  {
548
546
  // check risk exists
549
- InstanceReader reader = _getInstanceReader();
550
- (
551
- bool exists,
552
- FlightRisk memory flightRisk
553
- ) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
547
+ (, FlightRisk memory flightRisk) = getFlightRisk(riskId, true);
554
548
 
555
- if (!exists) {
556
- // TODO decide to switch from log to error
557
- emit LogErrorRiskInvalid(requestId, riskId);
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?
549
+ // update status, if not yet set
550
+ if (flightRisk.statusUpdatedAt.eqz()) {
551
+ flightRisk.statusUpdatedAt = TimestampLib.current();
552
+ flightRisk.status = status;
553
+ flightRisk.delayMinutes = delayMinutes;
554
+ flightRisk.payoutOption = FlightLib.checkAndGetPayoutOption(
555
+ requestId, riskId, status, delayMinutes);
556
+
557
+ _updateRisk(riskId, abi.encode(flightRisk));
571
558
  }
572
559
 
573
560
  (,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
574
561
  riskId,
575
- maxPoliciesToProcess);
562
+ MAX_POLICIES_TO_PROCESS);
576
563
 
577
564
  // logging
578
565
  emit LogFlightStatusProcessed(requestId, riskId, status, delayMinutes, payoutOption);
@@ -603,25 +590,29 @@ contract FlightProduct is
603
590
  uint256 policiesToProcess = reader.policiesForRisk(riskId);
604
591
  uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
605
592
 
606
- // go trough policies
593
+ // assemble array with policies to process
594
+ NftId [] memory policies = new NftId[](policiesProcessed);
607
595
  for (uint256 i = 0; i < policiesProcessed; i++) {
608
- NftId policyNftId = reader.getPolicyForRisk(riskId, i);
596
+ policies[i] = reader.getPolicyForRisk(riskId, i);
597
+ }
609
598
 
610
- // create payout (if any)
611
- if (payoutOption < type(uint8).max) {
612
- bytes memory applicationData = reader.getPolicyInfo(
613
- policyNftId).applicationData;
599
+ // go through policies
600
+ for (uint256 i = 0; i < policiesProcessed; i++) {
601
+ NftId policyNftId = policies[i];
602
+ Amount payoutAmount = FlightLib.getPayoutAmount(
603
+ reader.getPolicyInfo(policyNftId).applicationData,
604
+ payoutOption);
614
605
 
615
- _resolvePayout(
616
- policyNftId,
617
- FlightLib.getPayoutAmount(
618
- applicationData,
619
- payoutOption));
620
- }
606
+ // create claim/payout (if applicable)
607
+ _resolvePayout(
608
+ policyNftId,
609
+ payoutAmount);
621
610
 
622
611
  // expire and close policy
623
612
  _expire(policyNftId, TimestampLib.current());
624
613
  _close(policyNftId);
614
+
615
+ emit LogFlightPolicyClosed(policyNftId, payoutAmount);
625
616
  }
626
617
 
627
618
  // logging
@@ -636,6 +627,11 @@ contract FlightProduct is
636
627
  internal
637
628
  virtual
638
629
  {
630
+ // no action if no payout
631
+ if (payoutAmount.eqz()) {
632
+ return;
633
+ }
634
+
639
635
  // create confirmed claim
640
636
  ClaimId claimId = _submitClaim(policyNftId, payoutAmount, "");
641
637
  _confirmClaim(policyNftId, claimId, payoutAmount, "");
@@ -654,7 +650,7 @@ contract FlightProduct is
654
650
  address initialOwner
655
651
  )
656
652
  internal
657
- initializer
653
+ initializer()
658
654
  {
659
655
  __Product_init(
660
656
  registry,
@@ -681,5 +677,11 @@ contract FlightProduct is
681
677
  }),
682
678
  authorization,
683
679
  initialOwner); // number of oracles
680
+
681
+ MAX_FLIGHT_DURATION = SecondsLib.fromDays(2);
682
+ LIFETIME = SecondsLib.fromDays(30);
683
+ WEIGHT_PATTERN = [0, 0, 0, 30, 50, 50];
684
+ MIN_OBSERVATIONS = 10;
685
+ MARGIN_PERCENT = 30;
684
686
  }
685
687
  }
@@ -57,9 +57,10 @@ contract FlightProductAuthorization
57
57
 
58
58
  // authorize public role (additional authz via onlyOwner)
59
59
  functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
60
- _authorize(functions, FlightProduct.processFlightStatus.selector, "processFlightStatus");
60
+ _authorize(functions, FlightProduct.resendRequest.selector, "resendRequest");
61
61
  _authorize(functions, FlightProduct.processPayoutsAndClosePolicies.selector, "processPayoutsAndClosePolicies");
62
- _authorize(functions, FlightProduct.completeSetup.selector, "completeSetup");
62
+ _authorize(functions, FlightProduct.setConstants.selector, "setConstants");
63
+ _authorize(functions, FlightProduct.setTestMode.selector, "setTestMode");
63
64
  _authorize(functions, FlightProduct.setDefaultBundle.selector, "setDefaultBundle");
64
65
  _authorize(functions, FlightProduct.approveTokenHandler.selector, "approveTokenHandler");
65
66
  _authorize(functions, FlightProduct.setLocked.selector, "setLocked");
@@ -0,0 +1,49 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
5
+ import {IVersionable} from "../../upgradeability/IVersionable.sol";
6
+
7
+ import {NftId} from "../../type/NftId.sol";
8
+ import {ProxyManager} from "../../upgradeability/ProxyManager.sol";
9
+ import {FlightProduct} from "./FlightProduct.sol";
10
+
11
+
12
+ contract FlightProductManager is ProxyManager {
13
+
14
+ FlightProduct private _flightProduct;
15
+ bytes32 private _salt = "0x1234";
16
+
17
+ /// @dev initializes proxy manager with flight product implementation
18
+ constructor(
19
+ address registry,
20
+ NftId instanceNftId,
21
+ string memory componentName,
22
+ IAuthorization authorization
23
+ )
24
+ {
25
+ // FlightProduct prd = new FlightProduct{salt: _salt}();
26
+ // bytes memory data = abi.encode(
27
+ // registry,
28
+ // instanceNftId,
29
+ // componentName,
30
+ // authorization);
31
+
32
+ // IVersionable versionable = initialize(
33
+ // registry,
34
+ // address(prd),
35
+ // data,
36
+ // _salt);
37
+
38
+ // _flightProduct = FlightProduct(address(versionable));
39
+ }
40
+
41
+ //--- view functions ----------------------------------------------------//
42
+ function getFlightProduct()
43
+ external
44
+ view
45
+ returns (FlightProduct flightProduct)
46
+ {
47
+ return _flightProduct;
48
+ }
49
+ }
@@ -42,6 +42,8 @@ abstract contract BaseStore is
42
42
  metadata.objectType = objectType;
43
43
  metadata.state = initialState;
44
44
  metadata.updatedIn = blocknumber;
45
+
46
+ emit LogBaseStoreMetadataCreated(key32, objectType, initialState);
45
47
  }
46
48
 
47
49
  function _updateState(
@@ -73,6 +75,8 @@ abstract contract BaseStore is
73
75
 
74
76
  // update metadata
75
77
  metadata.updatedIn = BlocknumberLib.current();
78
+
79
+ emit LogBaseStoreMetadataUpdated(key32, oldState, state);
76
80
  }
77
81
 
78
82
  function exists(Key32 key32) public view returns (bool) {
@@ -17,6 +17,14 @@ interface IBaseStore is ILifecycle {
17
17
  error ErrorBaseStoreStateZero(Key32 key);
18
18
  error ErrorBaseStoreNotExisting(Key32 key);
19
19
 
20
+ event LogBaseStoreMetadataCreated(
21
+ Key32 indexed key,
22
+ ObjectType indexed objectType,
23
+ StateId indexed state);
24
+ event LogBaseStoreMetadataUpdated(
25
+ Key32 indexed key,
26
+ StateId indexed oldState,
27
+ StateId indexed newState);
20
28
 
21
29
  struct Metadata {
22
30
  // slot 0
@@ -58,6 +58,8 @@ interface IInstanceService is IService {
58
58
 
59
59
  event LogInstanceServiceInstanceLocked(NftId instanceNftId, bool locked);
60
60
  event LogInstanceServiceInstanceCreated(NftId instanceNftId, address instance);
61
+ event LogInstanceServiceMasterInstanceRegistered(NftId masterInstanceNftId, address masterInstance, address masterInstanceAdmin, address masterAccessManager,
62
+ address masterInstanceReader, address masterInstanceBundleSet, address masterInstanceRiskSet, address masterInstanceStore, address masterProductStore);
61
63
  event LogInstanceServiceMasterInstanceReaderUpgraded(NftId instanceNfId, address newInstanceReader);
62
64
  event LogInstanceServiceInstanceReaderUpgraded(NftId instanceNfId, address newInstanceReader);
63
65