@etherisc/gif-next 3.0.0-dd00d66-173 → 3.0.0-ea6b5c8-234

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 (507) 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 +83 -164
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +115 -113
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +46 -91
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +70 -105
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +150 -126
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +101 -43
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +55 -31
  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/IAccessAdmin.sol/IAccessAdmin.json +10 -20
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +1 -1
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +42 -18
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +75 -126
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +65 -41
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -72
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +224 -198
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +150 -140
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +56 -84
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +117 -71
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +2 -2
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +104 -166
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +65 -41
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +135 -202
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +65 -41
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +2 -2
  51. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
  52. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +251 -56
  53. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
  54. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +2 -2
  55. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.dbg.json +4 -0
  56. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.json +801 -0
  57. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
  58. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +260 -162
  59. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
  60. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +112 -41
  61. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
  62. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +108 -170
  63. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
  64. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +65 -41
  65. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
  66. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +447 -793
  67. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
  68. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +113 -42
  69. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
  70. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
  71. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
  72. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +2 -2
  73. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
  74. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +2 -2
  75. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  76. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +102 -159
  77. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  78. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +65 -41
  79. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  80. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +106 -163
  81. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  82. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +120 -177
  83. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  84. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +65 -41
  85. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  86. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +114 -171
  87. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  88. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +65 -41
  89. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  90. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +50 -0
  91. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  92. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +54 -49
  93. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  94. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +50 -0
  95. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  96. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +25 -77
  97. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  98. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -83
  99. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  100. package/artifacts/contracts/instance/Instance.sol/Instance.json +50 -144
  101. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  102. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +151 -185
  103. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  104. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +67 -43
  105. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  106. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +95 -36
  107. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  108. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +154 -140
  109. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -104
  111. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  112. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +82 -32
  113. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  114. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +68 -18
  115. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  116. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +58 -53
  117. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  118. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  119. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  120. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +1 -1
  121. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  122. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  123. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  124. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  125. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  126. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +8 -3
  127. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  128. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  129. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  130. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  131. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  132. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  133. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  134. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  135. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  136. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  137. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +81 -132
  138. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  139. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +65 -41
  140. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  141. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  142. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +66 -94
  143. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  144. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +83 -80
  145. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  146. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -82
  147. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  148. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +148 -149
  149. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +129 -111
  151. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  152. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +73 -88
  153. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  154. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +65 -41
  155. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  156. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +129 -176
  157. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  158. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +139 -129
  159. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  160. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +44 -71
  161. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  162. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +72 -100
  163. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  164. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +98 -94
  165. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  166. package/artifacts/contracts/pool/Pool.sol/Pool.json +73 -88
  167. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  168. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +244 -26
  169. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  170. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +177 -233
  171. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +130 -140
  173. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  174. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +63 -138
  175. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +112 -110
  177. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  178. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +57 -72
  179. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  180. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +65 -41
  181. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  182. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +115 -182
  183. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +138 -132
  185. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  186. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +32 -71
  187. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  188. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +32 -71
  189. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  190. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +76 -82
  191. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  192. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -82
  193. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  194. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +56 -84
  195. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  196. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +36 -75
  197. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  198. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +139 -173
  199. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  200. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +20 -12
  201. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  202. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +128 -122
  203. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  204. package/artifacts/contracts/product/PricingService.sol/PricingService.json +94 -161
  205. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +122 -116
  207. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  208. package/artifacts/contracts/product/Product.sol/Product.json +57 -72
  209. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  210. package/artifacts/contracts/product/RiskService.sol/RiskService.json +63 -146
  211. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  212. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +107 -109
  213. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  214. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  215. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  216. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +62 -155
  217. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  218. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +216 -202
  219. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  220. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +15 -1
  221. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  222. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  223. package/artifacts/contracts/registry/Registry.sol/Registry.json +102 -314
  224. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  225. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +146 -179
  226. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  227. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +77 -57
  228. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  229. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +244 -285
  230. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  231. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +110 -115
  232. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  233. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +154 -175
  234. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  235. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  236. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  237. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +208 -140
  238. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  239. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +56 -32
  240. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  241. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +29 -13
  242. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  243. package/artifacts/contracts/shared/Component.sol/Component.json +39 -84
  244. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  245. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +345 -164
  246. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  247. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +140 -114
  248. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  249. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +169 -421
  250. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  251. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  252. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  253. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  254. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  255. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +1 -1
  256. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +38 -96
  257. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  258. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -96
  259. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  260. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +251 -82
  261. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  262. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +56 -84
  263. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  264. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +28 -1
  266. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  267. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +12 -1
  268. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  269. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +25 -77
  270. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  271. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +12 -1
  272. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  273. package/artifacts/contracts/shared/IService.sol/IService.json +32 -71
  274. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  275. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  276. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  277. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -72
  278. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  279. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  280. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  281. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  282. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +34 -15
  283. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  284. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +14 -3
  285. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  286. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -76
  287. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  288. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +37 -3
  289. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  290. package/artifacts/contracts/shared/Service.sol/Service.json +31 -70
  291. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  292. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +29 -69
  293. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  294. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +17 -57
  295. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  296. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +34 -34
  297. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  298. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +81 -101
  299. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  300. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +48 -75
  301. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  302. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  303. package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -170
  304. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  305. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +31 -31
  306. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  307. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +124 -112
  308. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  309. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +22 -5
  310. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  311. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +77 -132
  312. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  313. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +111 -105
  314. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  315. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +204 -212
  316. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  317. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +19 -32
  318. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  319. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +16 -21
  320. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  321. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  322. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -7
  324. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  326. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
  328. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  330. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  332. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -7
  334. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  336. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  337. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  338. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  340. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  341. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  342. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +6 -6
  344. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  346. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  348. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  350. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
  351. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +2 -2
  352. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  353. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  354. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  355. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +4 -4
  356. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  357. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  358. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  359. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  360. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  361. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  362. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  363. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  364. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  365. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  366. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  367. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  368. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  369. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -7
  370. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  371. package/artifacts/contracts/type/Version.sol/VersionLib.json +10 -10
  372. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  373. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +6 -19
  374. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  375. package/artifacts/contracts/upgradeability/{IUpgradeable.sol/IUpgradeable.json → IVersionable.sol/IVersionable.json} +4 -54
  376. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  377. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +86 -63
  378. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  379. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  380. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  381. package/artifacts/contracts/upgradeability/{Upgradeable.sol/Upgradeable.json → Versionable.sol/Versionable.json} +4 -54
  382. package/contracts/accounting/AccountingService.sol +22 -33
  383. package/contracts/accounting/AccountingServiceManager.sol +6 -4
  384. package/contracts/accounting/IAccountingService.sol +7 -8
  385. package/contracts/authorization/AccessAdmin.sol +25 -47
  386. package/contracts/authorization/AccessAdminLib.sol +27 -13
  387. package/contracts/authorization/AccessManagerCloneable.sol +52 -24
  388. package/contracts/authorization/Authorization.sol +2 -2
  389. package/contracts/authorization/IAccessAdmin.sol +3 -3
  390. package/contracts/authorization/IServiceAuthorization.sol +1 -1
  391. package/contracts/authorization/ServiceAuthorization.sol +4 -4
  392. package/contracts/distribution/BasicDistribution.sol +2 -0
  393. package/contracts/distribution/BasicDistributionAuthorization.sol +4 -5
  394. package/contracts/distribution/Distribution.sol +2 -0
  395. package/contracts/distribution/DistributionService.sol +25 -27
  396. package/contracts/distribution/DistributionServiceManager.sol +6 -4
  397. package/contracts/distribution/IDistributionService.sol +4 -3
  398. package/contracts/examples/fire/FirePool.sol +4 -0
  399. package/contracts/examples/fire/FireProduct.sol +4 -0
  400. package/contracts/examples/flight/FlightLib.sol +90 -75
  401. package/contracts/examples/flight/FlightNft.sol +234 -0
  402. package/contracts/examples/flight/FlightOracle.sol +72 -9
  403. package/contracts/examples/flight/FlightOracleAuthorization.sol +28 -5
  404. package/contracts/examples/flight/FlightPool.sol +5 -1
  405. package/contracts/examples/flight/FlightProduct.sol +283 -246
  406. package/contracts/examples/flight/FlightProductAuthorization.sol +35 -10
  407. package/contracts/examples/flight/FlightProductManager.sol +49 -0
  408. package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -0
  409. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -0
  410. package/contracts/examples/unpermissioned/SimplePool.sol +4 -0
  411. package/contracts/examples/unpermissioned/SimpleProduct.sol +4 -0
  412. package/contracts/instance/BaseStore.sol +4 -0
  413. package/contracts/instance/IBaseStore.sol +8 -0
  414. package/contracts/instance/IInstanceService.sol +2 -0
  415. package/contracts/instance/Instance.sol +11 -7
  416. package/contracts/instance/InstanceAdmin.sol +17 -11
  417. package/contracts/instance/InstanceAuthorizationV3.sol +2 -4
  418. package/contracts/instance/InstanceReader.sol +31 -19
  419. package/contracts/instance/InstanceService.sol +24 -18
  420. package/contracts/instance/InstanceServiceManager.sol +6 -4
  421. package/contracts/instance/base/Cloneable.sol +10 -4
  422. package/contracts/instance/base/ObjectSet.sol +2 -2
  423. package/contracts/oracle/BasicOracle.sol +3 -0
  424. package/contracts/oracle/BasicOracleAuthorization.sol +1 -3
  425. package/contracts/oracle/IOracleService.sol +4 -0
  426. package/contracts/oracle/Oracle.sol +6 -5
  427. package/contracts/oracle/OracleService.sol +67 -37
  428. package/contracts/oracle/OracleServiceManager.sol +6 -4
  429. package/contracts/pool/BasicPool.sol +4 -2
  430. package/contracts/pool/BasicPoolAuthorization.sol +4 -5
  431. package/contracts/pool/BundleService.sol +20 -26
  432. package/contracts/pool/BundleServiceManager.sol +7 -5
  433. package/contracts/pool/IBundleService.sol +1 -1
  434. package/contracts/pool/IPoolService.sol +6 -5
  435. package/contracts/pool/Pool.sol +3 -1
  436. package/contracts/pool/PoolLib.sol +102 -5
  437. package/contracts/pool/PoolService.sol +101 -67
  438. package/contracts/pool/PoolServiceManager.sol +6 -4
  439. package/contracts/product/ApplicationService.sol +34 -13
  440. package/contracts/product/ApplicationServiceManager.sol +6 -4
  441. package/contracts/product/BasicProduct.sol +2 -0
  442. package/contracts/product/BasicProductAuthorization.sol +4 -5
  443. package/contracts/product/ClaimService.sol +34 -10
  444. package/contracts/product/ClaimServiceManager.sol +7 -5
  445. package/contracts/product/IPolicyService.sol +2 -1
  446. package/contracts/product/PolicyService.sol +58 -45
  447. package/contracts/product/PolicyServiceLib.sol +5 -3
  448. package/contracts/product/PolicyServiceManager.sol +6 -4
  449. package/contracts/product/PricingService.sol +8 -7
  450. package/contracts/product/PricingServiceManager.sol +6 -4
  451. package/contracts/product/Product.sol +2 -0
  452. package/contracts/product/RiskService.sol +40 -8
  453. package/contracts/product/RiskServiceManager.sol +6 -4
  454. package/contracts/registry/ChainNft.sol +1 -1
  455. package/contracts/registry/IRegistry.sol +14 -20
  456. package/contracts/registry/IRegistryService.sol +14 -10
  457. package/contracts/registry/IRelease.sol +3 -0
  458. package/contracts/registry/Registry.sol +78 -124
  459. package/contracts/registry/RegistryAdmin.sol +29 -12
  460. package/contracts/registry/RegistryAuthorization.sol +3 -4
  461. package/contracts/registry/RegistryService.sol +82 -99
  462. package/contracts/registry/RegistryServiceManager.sol +11 -4
  463. package/contracts/registry/ReleaseAdmin.sol +23 -9
  464. package/contracts/registry/ReleaseRegistry.sol +74 -64
  465. package/contracts/registry/ServiceAuthorizationV3.sol +3 -4
  466. package/contracts/registry/TokenRegistry.sol +15 -6
  467. package/contracts/shared/Component.sol +22 -27
  468. package/contracts/shared/ComponentService.sol +135 -45
  469. package/contracts/shared/ComponentServiceManager.sol +7 -5
  470. package/contracts/shared/ContractLib.sol +93 -359
  471. package/contracts/shared/IComponent.sol +3 -5
  472. package/contracts/shared/IComponentService.sol +15 -0
  473. package/contracts/shared/IInstanceLinkedComponent.sol +7 -3
  474. package/contracts/shared/INftOwnable.sol +2 -0
  475. package/contracts/shared/IRegisterable.sol +3 -14
  476. package/contracts/shared/IRegistryLinked.sol +3 -1
  477. package/contracts/shared/IService.sol +2 -2
  478. package/contracts/shared/InstanceLinkedComponent.sol +64 -29
  479. package/contracts/shared/NftOwnable.sol +22 -9
  480. package/contracts/shared/PolicyHolder.sol +4 -2
  481. package/contracts/shared/Registerable.sol +20 -37
  482. package/contracts/shared/RegistryLinked.sol +23 -4
  483. package/contracts/shared/Service.sol +9 -8
  484. package/contracts/shared/TokenHandler.sol +1 -4
  485. package/contracts/staking/IStaking.sol +4 -2
  486. package/contracts/staking/IStakingService.sol +1 -1
  487. package/contracts/staking/Staking.sol +34 -28
  488. package/contracts/staking/StakingLib.sol +1 -3
  489. package/contracts/staking/StakingManager.sol +6 -3
  490. package/contracts/staking/StakingReader.sol +17 -9
  491. package/contracts/staking/StakingService.sol +14 -17
  492. package/contracts/staking/StakingServiceManager.sol +8 -4
  493. package/contracts/staking/StakingStore.sol +8 -8
  494. package/contracts/staking/TargetHandler.sol +5 -4
  495. package/contracts/type/Version.sol +16 -15
  496. package/contracts/upgradeability/{IUpgradeable.sol → IVersionable.sol} +19 -13
  497. package/contracts/upgradeability/ProxyManager.sol +54 -46
  498. package/contracts/upgradeability/{Upgradeable.sol → Versionable.sol} +14 -25
  499. package/package.json +3 -3
  500. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  501. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -74
  502. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  503. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -74
  504. package/artifacts/contracts/upgradeability/IUpgradeable.sol/IUpgradeable.dbg.json +0 -4
  505. package/artifacts/contracts/upgradeability/Upgradeable.sol/Upgradeable.dbg.json +0 -4
  506. package/contracts/shared/IVersionable.sol +0 -19
  507. package/contracts/shared/Versionable.sol +0 -47
@@ -6,10 +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
- import {BasicProduct} from "../../product/BasicProduct.sol";
12
12
  import {ClaimId} from "../../type/ClaimId.sol";
13
+ import {Component} from "../../shared/Component.sol";
13
14
  import {FeeLib} from "../../type/Fee.sol";
14
15
  import {FlightLib} from "./FlightLib.sol";
15
16
  import {FlightMessageVerifier} from "./FlightMessageVerifier.sol";
@@ -17,109 +18,88 @@ import {FlightOracle} from "./FlightOracle.sol";
17
18
  import {InstanceReader} from "../../instance/InstanceReader.sol";
18
19
  import {NftId, NftIdLib} from "../../type/NftId.sol";
19
20
  import {PayoutId} from "../../type/PayoutId.sol";
21
+ import {Product} from "../../product/Product.sol";
20
22
  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
 
28
30
  /// @dev FlightProduct implements the flight delay product.
29
31
  contract FlightProduct is
30
- BasicProduct
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);
36
- event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
37
-
38
- // TODO convert error logs to custom errors
39
- event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
40
- event LogPolicyExpired(bytes32 bpKey);
35
+ event LogFlightPolicyPurchased(NftId policyNftId, string flightData, Amount premiumAmount);
36
+ event LogFlightPolicyClosed(NftId policyNftId, Amount payoutAmount);
41
37
 
42
- event LogErrorRiskInvalid(RequestId requestId, RiskId riskId);
43
- event LogErrorUnprocessableStatus(RequestId requestId, RiskId riskId, bytes1 status);
44
- event LogErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
45
-
46
- error ErrorApplicationDataSignatureMismatch(address expectedSigner, address actualSigner);
47
- error ErrorFlightProductClusterRisk(Amount totalSumInsured, Amount maxTotalPayout);
48
- error ErrorFlightProductPremiumAmountTooSmall(Amount premiumAmount, Amount minPremium);
49
- error ErrorFlightProductPremiumAmountTooLarge(Amount premiumAmount, Amount maxPremium);
50
- error ErrorFlightProductArrivalBeforeDepartureTime(Timestamp departureTime, Timestamp arrivalTime);
51
- error ErrorFlightProductArrivalAfterMaxFlightDuration(Timestamp arrivalTime, Timestamp maxArrivalTime, Seconds maxDuration);
52
- error ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds minTimeBeforeDeparture);
53
- error ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds maxTimeBeforeDeparture);
54
- error ErrorFlightProductNotEnoughObservations(uint256 observations, uint256 minObservations);
38
+ event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
39
+ event LogFlightPoliciesProcessed(RiskId riskId, uint8 payoutOption, uint256 policiesProcessed, uint256 policiesRemaining);
55
40
 
56
41
  // solhint-disable
57
- // Minimum observations for valid prediction
58
- uint256 public immutable MIN_OBSERVATIONS = 10;
42
+ Amount public MIN_PREMIUM;
43
+ Amount public MAX_PREMIUM;
44
+ Amount public MAX_PAYOUT;
45
+ Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight/risk
46
+
59
47
  // Minimum time before departure for applying
60
- Seconds public MIN_TIME_BEFORE_DEPARTURE = SecondsLib.fromDays(14);
48
+ Seconds public MIN_TIME_BEFORE_DEPARTURE;
61
49
  // Maximum time before departure for applying
62
- Seconds public MAX_TIME_BEFORE_DEPARTURE = SecondsLib.fromDays(90);
50
+ Seconds public MAX_TIME_BEFORE_DEPARTURE;
63
51
  // Maximum duration of flight
64
- Seconds public MAX_FLIGHT_DURATION = SecondsLib.fromDays(2);
65
- // Check for delay after .. minutes after scheduled arrival
66
- Seconds public CHECK_OFFSET = SecondsLib.fromHours(1);
52
+ Seconds public MAX_FLIGHT_DURATION;
67
53
  // Max time to process claims after departure
68
- Seconds public LIFETIME = SecondsLib.fromDays(30);
69
-
70
- // uint256 public constant MIN_PREMIUM = 15 * 10 ** 18; // production
71
- // All amounts in cent = multiplier is 10 ** 16!
72
- Amount public MIN_PREMIUM;
73
- Amount public MAX_PREMIUM;
74
- Amount public MAX_PAYOUT;
75
- Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight is 3x max payout.
54
+ Seconds public LIFETIME;
76
55
 
56
+ // ['observations','late15','late30','late45','cancelled','diverted']
57
+ // no payouts for delays of 30' or less
58
+ uint8[6] public WEIGHT_PATTERN;
59
+ // Minimum number of observations for valid prediction/premium calculation
60
+ uint256 public MIN_OBSERVATIONS;
77
61
  // Maximum cumulated weighted premium per risk
78
- uint256 public MARGIN_PERCENT = 30;
79
-
62
+ uint256 public MARGIN_PERCENT;
80
63
  // Maximum number of policies to process in one callback
81
- uint8 public MAX_POLICIES_TO_PROCESS = 5;
64
+ uint8 public MAX_POLICIES_TO_PROCESS;
65
+ // solhint-enable
82
66
 
83
- // ['observations','late15','late30','late45','cancelled','diverted']
84
- // no payouts for delays of 30' or less
85
- uint8[6] public WEIGHT_PATTERN = [0, 0, 0, 30, 50, 50];
86
- uint8 public constant MAX_WEIGHT = 50;
67
+ bool internal _testMode;
68
+
69
+ mapping(RiskId riskId => RequestId requestId) internal _requests;
87
70
 
88
71
  // GIF V3 specifics
89
72
  NftId internal _defaultBundleNftId;
90
-
91
- // TODO add product (base contract) functions
92
- // - getOracleNftId(idx)
93
- // - getDistributionNftId()
94
- // - getPoolNftId()
95
- NftId internal _oracleNftId; // TODO refactor to getOracleNftId(0)
96
- // solhint-enable
97
-
98
- FlightMessageVerifier internal _flightMessageVerifier;
73
+ NftId internal _oracleNftId;
99
74
 
100
75
 
101
76
  struct FlightRisk {
102
77
  Str flightData; // example: "LX 180 ZRH BKK 20241104"
103
78
  Timestamp departureTime;
79
+ // this field contains static data required by the frontend and is not directly used by the product
80
+ string departureTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
104
81
  Timestamp arrivalTime;
82
+ // this field contains static data required by the frontend and is not directly used by the product
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;
87
+ uint8 payoutOption;
88
+ Timestamp statusUpdatedAt;
110
89
  }
111
90
 
91
+
112
92
  struct ApplicationData {
113
- Str flightData;
93
+ string flightData;
114
94
  Timestamp departureTime;
95
+ string departureTimeLocal;
115
96
  Timestamp arrivalTime;
97
+ string arrivalTimeLocal;
116
98
  Amount premiumAmount;
117
99
  uint256[6] statistics;
118
- uint8 v;
119
- bytes32 r;
120
- bytes32 s;
121
100
  }
122
101
 
102
+
123
103
  struct PermitData {
124
104
  address owner;
125
105
  address spender;
@@ -132,23 +112,23 @@ contract FlightProduct is
132
112
 
133
113
 
134
114
  constructor(
135
- NftId instanceNftid,
115
+ address registry,
116
+ NftId instanceNftId,
136
117
  string memory componentName,
137
- IAuthorization authorization,
138
- FlightMessageVerifier messageVerifier
118
+ IAuthorization authorization
139
119
  )
140
120
  {
141
121
  address initialOwner = msg.sender;
142
122
 
143
123
  _initialize(
144
- instanceNftid,
124
+ registry,
125
+ instanceNftId,
145
126
  componentName,
146
127
  authorization,
147
128
  initialOwner);
148
-
149
- _flightMessageVerifier = messageVerifier;
150
129
  }
151
130
 
131
+
152
132
  //--- external functions ------------------------------------------------//
153
133
  //--- unpermissioned functions ------------------------------------------//
154
134
 
@@ -159,6 +139,7 @@ contract FlightProduct is
159
139
  getNftId()).oracleNftId[0];
160
140
  }
161
141
 
142
+
162
143
  function calculatePayoutAmounts(
163
144
  FlightProduct flightProduct,
164
145
  Amount premium,
@@ -195,30 +176,156 @@ contract FlightProduct is
195
176
  )
196
177
  {
197
178
  // process permit data
198
- processPermit(permit);
179
+ _processPermit(permit);
199
180
 
200
181
  // create policy
201
182
  address policyHolder = permit.owner;
202
183
  (
203
184
  riskId,
204
185
  policyNftId
205
- ) = createPolicy(
186
+ ) = _createPolicy(
206
187
  policyHolder,
207
- application.flightData,
188
+ StrLib.toStr(application.flightData),
208
189
  application.departureTime,
190
+ application.departureTimeLocal,
209
191
  application.arrivalTime,
192
+ application.arrivalTimeLocal,
210
193
  application.premiumAmount,
211
194
  application.statistics);
212
- // application.v,
213
- // application.r,
214
- // application.s);
215
195
  }
216
196
 
217
197
 
218
- function processPermit(
219
- PermitData memory permit
198
+ /// @dev Callback for flight status oracle.
199
+ /// Function may only be alled by oracle service.
200
+ function flightStatusCallback(
201
+ RequestId requestId,
202
+ bytes memory responseData
203
+ )
204
+ external
205
+ virtual
206
+ restricted()
207
+ {
208
+ FlightOracle.FlightStatusResponse memory response = abi.decode(
209
+ responseData, (FlightOracle.FlightStatusResponse));
210
+
211
+ _processFlightStatus(
212
+ requestId,
213
+ response.riskId,
214
+ response.status,
215
+ response.delayMinutes);
216
+ }
217
+
218
+
219
+ function resendRequest(RequestId requestId)
220
+ external
221
+ virtual
222
+ restricted()
223
+ {
224
+ _resendRequest(requestId);
225
+ }
226
+
227
+
228
+ /// @dev Manual fallback function for product owner.
229
+ function processPayoutsAndClosePolicies(
230
+ RiskId riskId,
231
+ uint8 maxPoliciesToProcess
232
+ )
233
+ external
234
+ virtual
235
+ restricted()
236
+ onlyOwner()
237
+ {
238
+ _processPayoutsAndClosePolicies(
239
+ riskId,
240
+ maxPoliciesToProcess);
241
+ }
242
+
243
+
244
+ //--- owner functions ---------------------------------------------------//
245
+
246
+ /// @dev Call after product registration with the instance
247
+ /// when the product token/tokenhandler is available
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
+ )
257
+ external
258
+ virtual
259
+ restricted()
260
+ onlyOwner()
261
+ {
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;
270
+ }
271
+
272
+ function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
273
+ function setTestMode(bool testMode) external restricted() onlyOwner() { _testMode = testMode; }
274
+
275
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
276
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
277
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
278
+
279
+
280
+ //--- view functions ----------------------------------------------------//
281
+
282
+ function calculateNetPremium(
283
+ Amount, // sumInsuredAmount: not used in this product
284
+ RiskId, // riskId: not used in this product
285
+ Seconds, // lifetime: not used in this product, a flight is a one time risk
286
+ bytes memory applicationData // holds the premium amount the customer is willing to pay
287
+ )
288
+ external
289
+ virtual override
290
+ view
291
+ returns (Amount netPremiumAmount)
292
+ {
293
+ (netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
294
+ }
295
+
296
+
297
+ function getOracleNftId() public view returns (NftId oracleNftId) { return _oracleNftId; }
298
+ function isTestMode() public view returns (bool) { return _testMode; }
299
+
300
+
301
+ function getFlightRisk(
302
+ RiskId riskId,
303
+ bool requireRiskExists
220
304
  )
221
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]; }
320
+ function decodeFlightRiskData(bytes memory data) public pure returns (FlightRisk memory) { return abi.decode(data, (FlightRisk)); }
321
+
322
+ //--- internal functions ------------------------------------------------//
323
+
324
+
325
+ function _processPermit(
326
+ PermitData memory permit
327
+ )
328
+ internal
222
329
  virtual
223
330
  restricted()
224
331
  {
@@ -236,21 +343,18 @@ contract FlightProduct is
236
343
  }
237
344
 
238
345
 
239
- function createPolicy(
346
+ function _createPolicy(
240
347
  address policyHolder,
241
348
  Str flightData,
242
349
  Timestamp departureTime,
350
+ string memory departureTimeLocal,
243
351
  Timestamp arrivalTime,
352
+ string memory arrivalTimeLocal,
244
353
  Amount premiumAmount,
245
354
  uint256[6] memory statistics
246
- // signature fields
247
- // uint8 v,
248
- // bytes32 r,
249
- // bytes32 s
250
355
  )
251
- public
356
+ internal
252
357
  virtual
253
- restricted()
254
358
  returns (
255
359
  RiskId riskId,
256
360
  NftId policyNftId
@@ -258,20 +362,20 @@ contract FlightProduct is
258
362
  {
259
363
  // checks
260
364
  // disabled for now - using rbac for security
261
- FlightLib.checkApplicationDataAndSignature(
365
+ FlightLib.checkApplicationData(
262
366
  this,
263
367
  flightData,
264
368
  departureTime,
265
369
  arrivalTime,
266
- premiumAmount,
267
- statistics);
268
- // v, r, s);
370
+ premiumAmount);
269
371
 
270
372
  (riskId, policyNftId) = _prepareApplication(
271
373
  policyHolder,
272
374
  flightData,
273
375
  departureTime,
376
+ departureTimeLocal,
274
377
  arrivalTime,
378
+ arrivalTimeLocal,
275
379
  premiumAmount,
276
380
  statistics);
277
381
 
@@ -285,17 +389,21 @@ contract FlightProduct is
285
389
  policyNftId,
286
390
  departureTime); // activate at scheduled departure time of flight
287
391
 
288
- // send oracle request for flight status (interacts with flight oracle contract)
289
- _sendRequest(
290
- _oracleNftId,
291
- abi.encode(
292
- FlightOracle.FlightStatusRequest(
293
- riskId,
294
- flightData,
295
- departureTime)),
296
- // allow up to 30 days to process the claim
297
- arrivalTime.addSeconds(SecondsLib.fromDays(30)),
298
- "flightStatusCallback");
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);
299
407
  }
300
408
 
301
409
 
@@ -303,7 +411,9 @@ contract FlightProduct is
303
411
  address policyHolder,
304
412
  Str flightData,
305
413
  Timestamp departureTime,
414
+ string memory departureTimeLocal,
306
415
  Timestamp arrivalTime,
416
+ string memory arrivalTimeLocal,
307
417
  Amount premiumAmount,
308
418
  uint256[6] memory statistics
309
419
  )
@@ -324,7 +434,9 @@ contract FlightProduct is
324
434
  ) = _createRiskAndPayoutAmounts(
325
435
  flightData,
326
436
  departureTime,
437
+ departureTimeLocal,
327
438
  arrivalTime,
439
+ arrivalTimeLocal,
328
440
  premiumAmount,
329
441
  statistics);
330
442
 
@@ -342,120 +454,12 @@ contract FlightProduct is
342
454
  }
343
455
 
344
456
 
345
- /// @dev Callback for flight status oracle.
346
- /// Function may only be alled by oracle service.
347
- function flightStatusCallback(
348
- RequestId requestId,
349
- bytes memory responseData
350
- )
351
- external
352
- virtual
353
- restricted()
354
- {
355
- FlightOracle.FlightStatusResponse memory response = abi.decode(
356
- responseData, (FlightOracle.FlightStatusResponse));
357
-
358
- _processFlightStatus(
359
- requestId,
360
- response.riskId,
361
- response.status,
362
- response.delayMinutes,
363
- MAX_POLICIES_TO_PROCESS);
364
- }
365
-
366
-
367
- /// @dev Manual fallback function for product owner.
368
- function processFlightStatus(
369
- RequestId requestId,
370
- RiskId riskId,
371
- bytes1 status,
372
- int256 delayMinutes,
373
- uint8 maxPoliciesToProcess
374
- )
375
- external
376
- virtual
377
- restricted()
378
- onlyOwner()
379
- {
380
- _processFlightStatus(
381
- requestId,
382
- riskId,
383
- status,
384
- delayMinutes,
385
- maxPoliciesToProcess);
386
- }
387
-
388
- //--- owner functions ---------------------------------------------------//
389
-
390
- /// @dev Call after product registration with the instance, when the product token/tokenhandler is available
391
- function completeSetup()
392
- external
393
- virtual
394
- restricted()
395
- onlyOwner()
396
- {
397
- IERC20Metadata token = IERC20Metadata(getToken());
398
- uint256 tokenMultiplier = 10 ** token.decimals();
399
-
400
- MIN_PREMIUM = AmountLib.toAmount(15 * tokenMultiplier);
401
- MAX_PREMIUM = AmountLib.toAmount(200 * tokenMultiplier);
402
- MAX_PAYOUT = AmountLib.toAmount(500 * tokenMultiplier);
403
- MAX_TOTAL_PAYOUT = AmountLib.toAmount(3 * MAX_PAYOUT.toInt());
404
- }
405
-
406
-
407
- function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
408
- function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
409
- function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
410
- function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
411
-
412
-
413
- //--- view functions ----------------------------------------------------//
414
-
415
-
416
- function calculateNetPremium(
417
- Amount, // sumInsuredAmount: not used in this product
418
- RiskId, // riskId: not used in this product
419
- Seconds, // lifetime: not used in this product, a flight is a one time risk
420
- bytes memory applicationData // holds the premium amount the customer is willing to pay
421
- )
422
- external
423
- virtual override
424
- view
425
- returns (Amount netPremiumAmount)
426
- {
427
- (netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
428
- }
429
-
430
-
431
- function getFlightMessageVerifier()
432
- external
433
- view
434
- returns (FlightMessageVerifier)
435
- {
436
- return _flightMessageVerifier;
437
- }
438
-
439
-
440
- function getOracleNftId()
441
- public
442
- view
443
- returns (NftId oracleNftId)
444
- {
445
- return _oracleNftId;
446
- }
447
-
448
- function decodeFlightRiskData(bytes memory data) external pure returns (FlightRisk memory) {
449
- return abi.decode(data, (FlightRisk));
450
- }
451
-
452
- //--- internal functions ------------------------------------------------//
453
-
454
-
455
457
  function _createRiskAndPayoutAmounts(
456
458
  Str flightData,
457
459
  Timestamp departureTime,
460
+ string memory departureTimeLocal,
458
461
  Timestamp arrivalTime,
462
+ string memory arrivalTimeLocal,
459
463
  Amount premiumAmount,
460
464
  uint256[6] memory statistics
461
465
  )
@@ -481,7 +485,9 @@ contract FlightProduct is
481
485
  riskId = _checkAndUpdateFlightRisk(
482
486
  flightData,
483
487
  departureTime,
488
+ departureTimeLocal,
484
489
  arrivalTime,
490
+ arrivalTimeLocal,
485
491
  sumInsuredAmount,
486
492
  weight);
487
493
  }
@@ -490,7 +496,9 @@ contract FlightProduct is
490
496
  function _checkAndUpdateFlightRisk(
491
497
  Str flightData,
492
498
  Timestamp departureTime,
499
+ string memory departureTimeLocal,
493
500
  Timestamp arrivalTime,
501
+ string memory arrivalTimeLocal,
494
502
  Amount sumInsuredAmount,
495
503
  uint256 weight
496
504
  )
@@ -505,7 +513,9 @@ contract FlightProduct is
505
513
  getNftId(),
506
514
  flightData,
507
515
  departureTime,
508
- arrivalTime);
516
+ departureTimeLocal,
517
+ arrivalTime,
518
+ arrivalTimeLocal);
509
519
 
510
520
  // create risk, if new
511
521
  if (!exists) {
@@ -513,10 +523,10 @@ contract FlightProduct is
513
523
  _createRisk(riskKey, abi.encode(flightRisk));
514
524
  }
515
525
 
516
- // check for cluster risk: additional sum insured amount must not exceed MAX_TOTAL_PAYOUT
517
- if (flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount > MAX_TOTAL_PAYOUT) {
518
- revert ErrorFlightProductClusterRisk(flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount, MAX_TOTAL_PAYOUT);
519
- }
526
+ FlightLib.checkClusterRisk(
527
+ flightRisk.sumOfSumInsuredAmounts,
528
+ sumInsuredAmount,
529
+ MAX_TOTAL_PAYOUT);
520
530
 
521
531
  // update existing risk with additional sum insured amount
522
532
  flightRisk.sumOfSumInsuredAmounts = flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount;
@@ -528,71 +538,85 @@ contract FlightProduct is
528
538
  RequestId requestId,
529
539
  RiskId riskId,
530
540
  bytes1 status,
531
- int256 delayMinutes,
532
- uint8 maxPoliciesToProcess
541
+ int256 delayMinutes
533
542
  )
534
543
  internal
535
544
  virtual
536
545
  {
537
546
  // check risk exists
538
- InstanceReader reader = _getInstanceReader();
539
- (
540
- bool exists,
541
- FlightRisk memory flightRisk
542
- ) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
547
+ (, FlightRisk memory flightRisk) = getFlightRisk(riskId, true);
543
548
 
544
- if (!exists) {
545
- emit LogErrorRiskInvalid(requestId, riskId);
546
- return;
547
- }
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);
548
556
 
549
- uint8 payoutOption = FlightLib.checkAndGetPayoutOption(
550
- requestId, riskId, status, delayMinutes);
557
+ _updateRisk(riskId, abi.encode(flightRisk));
558
+ }
551
559
 
552
- _processPayoutsAndClosePolicies(
560
+ (,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
553
561
  riskId,
554
- payoutOption,
555
- maxPoliciesToProcess);
562
+ MAX_POLICIES_TO_PROCESS);
556
563
 
557
564
  // logging
558
565
  emit LogFlightStatusProcessed(requestId, riskId, status, delayMinutes, payoutOption);
559
566
  }
560
567
 
561
568
 
562
- // REMARK caller responsible to check that risk exists.
563
569
  function _processPayoutsAndClosePolicies(
564
570
  RiskId riskId,
565
- uint8 payoutOption,
566
571
  uint8 maxPoliciesToProcess
567
572
  )
568
573
  internal
569
574
  virtual
575
+ returns (
576
+ bool riskExists,
577
+ bool statusAvailable,
578
+ uint8 payoutOption
579
+ )
570
580
  {
571
581
  // determine numbers of policies to process
572
582
  InstanceReader reader = _getInstanceReader();
583
+ (riskExists, statusAvailable, payoutOption) = FlightLib.getPayoutOption(reader, getNftId(), riskId);
584
+
585
+ // return with default values if risk does not exist or status is not yet available
586
+ if (!riskExists || !statusAvailable) {
587
+ return (riskExists, statusAvailable, payoutOption);
588
+ }
589
+
573
590
  uint256 policiesToProcess = reader.policiesForRisk(riskId);
574
- policiesToProcess = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
591
+ uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
575
592
 
576
- // go trough policies
577
- for (uint256 i = 0; i < policiesToProcess; i++) {
578
- NftId policyNftId = reader.getPolicyForRisk(riskId, i);
593
+ // assemble array with policies to process
594
+ NftId [] memory policies = new NftId[](policiesProcessed);
595
+ for (uint256 i = 0; i < policiesProcessed; i++) {
596
+ policies[i] = reader.getPolicyForRisk(riskId, i);
597
+ }
579
598
 
580
- // create payout (if any)
581
- if (payoutOption < type(uint8).max) {
582
- bytes memory applicationData = reader.getPolicyInfo(
583
- 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);
584
605
 
585
- _resolvePayout(
586
- policyNftId,
587
- FlightLib.getPayoutAmount(
588
- applicationData,
589
- payoutOption));
590
- }
606
+ // create claim/payout (if applicable)
607
+ _resolvePayout(
608
+ policyNftId,
609
+ payoutAmount);
591
610
 
592
611
  // expire and close policy
593
612
  _expire(policyNftId, TimestampLib.current());
594
613
  _close(policyNftId);
614
+
615
+ emit LogFlightPolicyClosed(policyNftId, payoutAmount);
595
616
  }
617
+
618
+ // logging
619
+ emit LogFlightPoliciesProcessed(riskId, payoutOption, policiesProcessed, policiesToProcess - policiesProcessed);
596
620
  }
597
621
 
598
622
 
@@ -603,6 +627,11 @@ contract FlightProduct is
603
627
  internal
604
628
  virtual
605
629
  {
630
+ // no action if no payout
631
+ if (payoutAmount.eqz()) {
632
+ return;
633
+ }
634
+
606
635
  // create confirmed claim
607
636
  ClaimId claimId = _submitClaim(policyNftId, payoutAmount, "");
608
637
  _confirmClaim(policyNftId, claimId, payoutAmount, "");
@@ -614,15 +643,17 @@ contract FlightProduct is
614
643
 
615
644
 
616
645
  function _initialize(
646
+ address registry,
617
647
  NftId instanceNftId,
618
648
  string memory componentName,
619
649
  IAuthorization authorization,
620
650
  address initialOwner
621
651
  )
622
652
  internal
623
- initializer
653
+ initializer()
624
654
  {
625
- _initializeBasicProduct(
655
+ __Product_init(
656
+ registry,
626
657
  instanceNftId,
627
658
  componentName,
628
659
  IComponents.ProductInfo({
@@ -646,5 +677,11 @@ contract FlightProduct is
646
677
  }),
647
678
  authorization,
648
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;
649
686
  }
650
687
  }