@etherisc/gif-next 3.0.0-3513123-800 → 3.0.0-351a5c1-551

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 (451) 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 +44 -48
  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 +119 -119
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +145 -100
  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/IAccessAdmin.sol/IAccessAdmin.json +75 -63
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +20 -114
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +2 -96
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +187 -114
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -75
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +2 -96
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +113 -40
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +2 -2
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +21 -96
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +2 -2
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +49 -129
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +2 -2
  49. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
  50. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +372 -73
  51. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
  52. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +2 -2
  53. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.dbg.json +4 -0
  54. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.json +801 -0
  55. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
  56. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +167 -132
  57. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +82 -35
  59. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
  60. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +23 -98
  61. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +2 -2
  63. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
  64. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +422 -579
  65. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
  66. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +83 -36
  67. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
  68. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
  69. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
  70. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +2 -2
  71. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
  72. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +2 -2
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  74. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +28 -122
  75. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  76. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +2 -2
  77. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  78. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +91 -83
  79. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  80. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +29 -104
  81. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  82. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +2 -2
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  84. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +25 -100
  85. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  86. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +2 -2
  87. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +50 -0
  89. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +59 -72
  91. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  92. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +50 -0
  93. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  94. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +34 -21
  95. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +108 -9
  97. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  98. package/artifacts/contracts/instance/Instance.sol/Instance.json +51 -33
  99. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  100. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +197 -197
  101. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  102. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +21 -21
  103. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  104. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +160 -34
  105. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  106. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +151 -36
  107. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  108. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +41 -41
  109. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  110. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +171 -121
  111. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  112. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +141 -91
  113. package/artifacts/contracts/instance/RequestSet.sol/RequestSet.dbg.json +4 -0
  114. package/artifacts/contracts/instance/RequestSet.sol/RequestSet.json +466 -0
  115. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  116. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +66 -79
  117. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  118. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +9 -9
  119. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  120. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  121. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  122. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  123. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  124. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  125. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +3 -3
  126. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  127. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +38 -2
  128. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  129. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  130. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  131. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  132. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  133. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  134. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  135. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  136. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +85 -77
  137. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  138. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  139. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  140. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  141. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +67 -59
  142. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  143. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +19 -13
  144. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  145. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +71 -63
  146. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  147. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +57 -51
  148. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +50 -50
  150. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  151. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +4 -79
  152. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  153. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  154. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  155. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +90 -85
  156. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  157. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +62 -62
  158. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  159. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +32 -27
  160. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  161. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +4 -79
  162. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  163. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +55 -43
  164. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  165. package/artifacts/contracts/pool/Pool.sol/Pool.json +4 -79
  166. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  167. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +4 -9
  168. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  169. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +113 -101
  170. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -63
  172. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  173. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +37 -37
  174. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +44 -44
  176. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  177. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +2 -77
  178. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  179. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  180. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  181. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +86 -80
  182. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -67
  184. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  185. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +11 -11
  186. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  187. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +24 -18
  188. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  189. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +21 -9
  190. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  191. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +2 -2
  192. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  193. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +2 -77
  194. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  195. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +15 -28
  196. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  197. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +81 -69
  198. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  199. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +20 -12
  200. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +60 -60
  202. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  203. package/artifacts/contracts/product/PricingService.sol/PricingService.json +34 -34
  204. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  205. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +51 -51
  206. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  207. package/artifacts/contracts/product/Product.sol/Product.json +2 -77
  208. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  209. package/artifacts/contracts/product/RiskService.sol/RiskService.json +37 -50
  210. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  211. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +42 -42
  212. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  213. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +58 -8
  214. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  215. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +30 -24
  216. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  217. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +2 -2
  218. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  219. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  220. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  221. package/artifacts/contracts/registry/Registry.sol/Registry.json +132 -66
  222. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  223. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -188
  224. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  225. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +2 -27
  226. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  227. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +8 -8
  228. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  229. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -37
  230. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  231. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +205 -205
  232. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  233. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  234. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  235. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +122 -119
  236. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  237. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +19 -19
  238. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  239. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +20 -20
  240. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  241. package/artifacts/contracts/shared/Component.sol/Component.json +2 -77
  242. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  243. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +329 -113
  244. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  245. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +61 -61
  246. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  247. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
  248. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  249. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  250. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
  252. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +558 -0
  253. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  254. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +2 -77
  255. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  256. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +271 -55
  257. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  258. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +2 -77
  259. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  260. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +2 -2
  262. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  263. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  264. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +2 -2
  265. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  266. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  267. package/artifacts/contracts/shared/IService.sol/IService.json +2 -2
  268. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  269. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  270. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  271. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +2 -77
  272. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  273. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  274. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  275. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  276. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +4 -4
  277. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  278. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  279. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  280. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  281. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  282. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  283. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  284. package/artifacts/contracts/shared/Service.sol/Service.json +2 -2
  285. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  286. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +39 -66
  287. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  288. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +22 -49
  289. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  290. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +28 -28
  291. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  292. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +91 -147
  293. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  294. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +15 -221
  295. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  296. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  297. package/artifacts/contracts/staking/Staking.sol/Staking.json +139 -195
  298. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  299. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -7
  300. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  301. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +53 -53
  302. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  303. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  304. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  305. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +35 -241
  306. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  307. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +40 -40
  308. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  309. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +220 -220
  310. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  311. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +9 -14
  312. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  313. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -7
  314. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  315. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  316. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -7
  318. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  320. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
  322. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  324. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  326. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -7
  328. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  330. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  331. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  332. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  334. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  335. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  336. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  338. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  340. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  342. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +23 -4
  344. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
  345. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +2 -2
  346. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  348. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  350. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  351. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  352. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  353. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  354. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  355. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  356. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  357. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  358. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  359. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  360. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  361. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  362. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  363. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -7
  364. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  365. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  366. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  367. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  368. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  369. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  370. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +22 -22
  371. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  372. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  373. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  374. package/contracts/accounting/AccountingService.sol +17 -29
  375. package/contracts/accounting/IAccountingService.sol +7 -8
  376. package/contracts/authorization/AccessAdmin.sol +16 -33
  377. package/contracts/authorization/AccessAdminLib.sol +20 -3
  378. package/contracts/authorization/AccessManagerCloneable.sol +4 -0
  379. package/contracts/authorization/IAccessAdmin.sol +9 -8
  380. package/contracts/distribution/DistributionService.sol +24 -19
  381. package/contracts/distribution/IDistributionComponent.sol +0 -2
  382. package/contracts/distribution/IDistributionService.sol +8 -7
  383. package/contracts/examples/flight/FlightLib.sol +106 -80
  384. package/contracts/examples/flight/FlightNft.sol +234 -0
  385. package/contracts/examples/flight/FlightOracle.sol +22 -60
  386. package/contracts/examples/flight/FlightOracleAuthorization.sol +27 -5
  387. package/contracts/examples/flight/FlightPool.sol +1 -1
  388. package/contracts/examples/flight/FlightProduct.sol +283 -240
  389. package/contracts/examples/flight/FlightProductAuthorization.sol +36 -10
  390. package/contracts/examples/flight/FlightProductManager.sol +49 -0
  391. package/contracts/instance/BaseStore.sol +4 -0
  392. package/contracts/instance/BundleSet.sol +7 -8
  393. package/contracts/instance/IBaseStore.sol +8 -0
  394. package/contracts/instance/IInstance.sol +10 -7
  395. package/contracts/instance/IInstanceService.sol +11 -4
  396. package/contracts/instance/Instance.sol +8 -0
  397. package/contracts/instance/InstanceAdmin.sol +2 -2
  398. package/contracts/instance/InstanceAuthorizationV3.sol +15 -1
  399. package/contracts/instance/InstanceReader.sol +34 -5
  400. package/contracts/instance/InstanceService.sol +68 -36
  401. package/contracts/instance/InstanceStore.sol +14 -14
  402. package/contracts/instance/ProductStore.sol +14 -14
  403. package/contracts/instance/RequestSet.sol +63 -0
  404. package/contracts/instance/RiskSet.sol +6 -7
  405. package/contracts/instance/TargetNames.sol +1 -0
  406. package/contracts/instance/base/BalanceStore.sol +7 -7
  407. package/contracts/instance/base/ObjectSet.sol +9 -1
  408. package/contracts/instance/base/ObjectSetHelperLib.sol +5 -1
  409. package/contracts/oracle/BasicOracle.sol +1 -0
  410. package/contracts/oracle/IOracleComponent.sol +10 -0
  411. package/contracts/oracle/IOracleService.sol +5 -5
  412. package/contracts/oracle/Oracle.sol +50 -26
  413. package/contracts/oracle/OracleService.sol +26 -23
  414. package/contracts/pool/BundleService.sol +3 -3
  415. package/contracts/pool/IBundleService.sol +9 -10
  416. package/contracts/pool/IPoolComponent.sol +1 -1
  417. package/contracts/pool/IPoolService.sol +14 -14
  418. package/contracts/pool/PoolService.sol +2 -2
  419. package/contracts/product/ClaimService.sol +1 -1
  420. package/contracts/product/IApplicationService.sol +8 -8
  421. package/contracts/product/IClaimService.sol +9 -9
  422. package/contracts/product/IPolicyService.sol +7 -7
  423. package/contracts/product/IRiskService.sol +4 -5
  424. package/contracts/product/PolicyService.sol +1 -1
  425. package/contracts/product/PolicyServiceLib.sol +5 -3
  426. package/contracts/product/RiskService.sol +2 -2
  427. package/contracts/registry/ChainNft.sol +10 -9
  428. package/contracts/registry/IRegistry.sol +11 -10
  429. package/contracts/registry/Registry.sol +16 -13
  430. package/contracts/registry/RegistryAdmin.sol +7 -1
  431. package/contracts/registry/RegistryAuthorization.sol +0 -2
  432. package/contracts/registry/ReleaseAdmin.sol +12 -5
  433. package/contracts/registry/ReleaseRegistry.sol +7 -8
  434. package/contracts/registry/TokenRegistry.sol +3 -3
  435. package/contracts/shared/ComponentService.sol +38 -4
  436. package/contracts/shared/IAuthorizedComponent.sol +15 -0
  437. package/contracts/shared/IComponent.sol +0 -4
  438. package/contracts/shared/IComponentService.sol +31 -9
  439. package/contracts/shared/IInstanceLinkedComponent.sol +2 -5
  440. package/contracts/shared/INftOwnable.sol +1 -1
  441. package/contracts/shared/InstanceLinkedComponent.sol +3 -2
  442. package/contracts/shared/TokenHandler.sol +5 -5
  443. package/contracts/staking/IStaking.sol +33 -31
  444. package/contracts/staking/IStakingService.sol +7 -16
  445. package/contracts/staking/Staking.sol +5 -4
  446. package/contracts/staking/StakingService.sol +2 -3
  447. package/contracts/staking/StakingStore.sol +3 -3
  448. package/contracts/staking/TargetHandler.sol +2 -2
  449. package/contracts/type/RequestId.sol +6 -0
  450. package/contracts/upgradeability/ProxyManager.sol +2 -2
  451. package/package.json +3 -3
@@ -279,10 +279,11 @@ contract AccessAdmin is
279
279
  {
280
280
  Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
281
281
  func = _functionInfo[target][selector];
282
- roleId = RoleIdLib.toRoleId(
283
- _authority.getTargetFunctionRole(
284
- target,
285
- selector.toBytes4()));
282
+ roleId = AccessAdminLib.getFunctionRoleId(_authority, target, selector);
283
+ // roleId = RoleIdLib.toRoleId(
284
+ // _authority.getTargetFunctionRole(
285
+ // target,
286
+ // selector.toBytes4()));
286
287
  }
287
288
 
288
289
 
@@ -318,7 +319,7 @@ contract AccessAdmin is
318
319
  (RoleId roleId, bool exists) = getRoleForName(roleInfo.name.toString());
319
320
 
320
321
  if (!exists) {
321
- if (!AccessAdminLib.isDynamicRoleId(authzRoleId)) {
322
+ if (!AccessAdminLib.isDynamicRoleId(authzRoleId) || roleInfo.targetType == TargetType.Custom) {
322
323
  roleId = authzRoleId;
323
324
  }
324
325
 
@@ -366,7 +367,7 @@ contract AccessAdmin is
366
367
  // add role to list of roles
367
368
  _roleIds.push(roleId);
368
369
 
369
- emit LogAccessAdminRoleCreated(_adminName, roleId, info.targetType, info.adminRoleId, info.name.toString());
370
+ emit LogAccessAdminRoleCreated(roleId, info.adminRoleId, info.targetType, info.name.toString(), _adminName);
370
371
  }
371
372
 
372
373
 
@@ -386,7 +387,7 @@ contract AccessAdmin is
386
387
  Blocknumber lastUpdateIn = _roleInfo[roleId].lastUpdateIn;
387
388
  _roleInfo[roleId].lastUpdateIn = BlocknumberLib.current();
388
389
 
389
- emit LogAccessAdminRoleActivatedSet(_adminName, roleId, active, lastUpdateIn);
390
+ emit LogAccessAdminRoleActivatedSet(roleId, active, _adminName, lastUpdateIn);
390
391
  }
391
392
 
392
393
 
@@ -417,9 +418,9 @@ contract AccessAdmin is
417
418
  0);
418
419
 
419
420
  emit LogAccessAdminRoleGranted(
420
- _adminName,
421
421
  account,
422
- AccessAdminLib.getRoleName(this, roleId));
422
+ AccessAdminLib.getRoleName(this, roleId),
423
+ _adminName);
423
424
  }
424
425
 
425
426
 
@@ -440,7 +441,7 @@ contract AccessAdmin is
440
441
  RoleId.unwrap(roleId),
441
442
  account);
442
443
 
443
- emit LogAccessAdminRoleRevoked(_adminName, account, _roleInfo[roleId].name.toString());
444
+ emit LogAccessAdminRoleRevoked(account, _roleInfo[roleId].name.toString(), _adminName);
444
445
  }
445
446
 
446
447
 
@@ -556,7 +557,7 @@ contract AccessAdmin is
556
557
  // grant contract role to target
557
558
  _grantRoleToAccount(targetRoleId, target);
558
559
 
559
- emit LogAccessAdminTargetCreated(_adminName, targetName, managed, target, targetRoleId);
560
+ emit LogAccessAdminTargetCreated(target, targetRoleId, managed, targetName, _adminName);
560
561
  }
561
562
 
562
563
 
@@ -570,7 +571,7 @@ contract AccessAdmin is
570
571
  Blocknumber lastUpdateIn = _targetInfo[target].lastUpdateIn;
571
572
  _targetInfo[target].lastUpdateIn = BlocknumberLib.current();
572
573
 
573
- emit LogAccessAdminTargetLockedSet(_adminName, target, locked, lastUpdateIn);
574
+ emit LogAccessAdminTargetLockedSet(target, locked, _adminName, lastUpdateIn);
574
575
  }
575
576
 
576
577
 
@@ -651,29 +652,11 @@ contract AccessAdmin is
651
652
 
652
653
  // logging
653
654
  emit LogAccessAdminFunctionGranted(
654
- _adminName,
655
655
  target,
656
+ selector,
657
+ roleId,
656
658
  AccessAdminLib.toFunctionGrantingString(this, func.name, roleId),
659
+ _adminName,
657
660
  lastUpdateIn);
658
661
  }
659
-
660
-
661
- function _checkAuthorization(
662
- address authorization,
663
- ObjectType expectedDomain,
664
- VersionPart expectedRelease,
665
- bool expectServiceAuthorization,
666
- bool checkAlreadyInitialized
667
- )
668
- internal
669
- view
670
- {
671
- AccessAdminLib.checkAuthorization(
672
- address(_authorization),
673
- authorization,
674
- expectedDomain,
675
- expectedRelease,
676
- expectServiceAuthorization,
677
- checkAlreadyInitialized);
678
- }
679
662
  }
@@ -7,16 +7,17 @@ import {IAccess} from "./IAccess.sol";
7
7
  import {IAccessAdmin} from "./IAccessAdmin.sol";
8
8
  import {IAuthorization} from "./IAuthorization.sol";
9
9
  import {IComponent} from "../shared/IComponent.sol";
10
- import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
10
+ import {IAuthorizedComponent} from "../shared/IAuthorizedComponent.sol";
11
11
  import {IRegistry} from "../registry/IRegistry.sol";
12
12
  import {IService} from "../shared/IService.sol";
13
13
  import {IServiceAuthorization} from "./IServiceAuthorization.sol";
14
14
 
15
+ import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
15
16
  import {BlocknumberLib} from "../type/Blocknumber.sol";
16
17
  import {ContractLib} from "../shared/ContractLib.sol";
17
18
  import {ObjectType} from "../type/ObjectType.sol";
18
19
  import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
19
- import {SelectorLib} from "../type/Selector.sol";
20
+ import {Selector, SelectorLib} from "../type/Selector.sol";
20
21
  import {Str, StrLib} from "../type/String.sol";
21
22
  import {TimestampLib} from "../type/Timestamp.sol";
22
23
  import {VersionPart, VersionPartLib} from "../type/Version.sol";
@@ -338,7 +339,7 @@ library AccessAdminLib { // ACCESS_ADMIN_LIB
338
339
  checkIsRegistered(address(accessAdmin.getRegistry()), componentAddress, expectedType);
339
340
 
340
341
  VersionPart expecteRelease = accessAdmin.getRelease();
341
- IInstanceLinkedComponent component = IInstanceLinkedComponent(componentAddress);
342
+ IAuthorizedComponent component = IAuthorizedComponent(componentAddress);
342
343
  componentAuthorization = component.getAuthorization();
343
344
 
344
345
  checkAuthorization(
@@ -481,6 +482,22 @@ library AccessAdminLib { // ACCESS_ADMIN_LIB
481
482
  }
482
483
 
483
484
 
485
+ function getFunctionRoleId(
486
+ AccessManagerCloneable authority,
487
+ address target,
488
+ Selector selector
489
+ )
490
+ public
491
+ view
492
+ returns (RoleId functionRoleId)
493
+ {
494
+ return RoleIdLib.toRoleId(
495
+ authority.getTargetFunctionRole(
496
+ target,
497
+ selector.toBytes4()));
498
+ }
499
+
500
+
484
501
  function getServiceRoleId(
485
502
  address serviceAddress,
486
503
  IAccess.TargetType serviceTargetType
@@ -24,6 +24,8 @@ contract AccessManagerCloneable is
24
24
  error ErrorAccessManagerTargetAdminLocked(address target);
25
25
  error ErrorAccessManagerCallerAdminLocked(address caller);
26
26
 
27
+ event LogAccessManagerLocked(address indexed accessManager, bool indexed locked);
28
+
27
29
  VersionPart private _release;
28
30
  bool private _isLocked;
29
31
 
@@ -39,6 +41,7 @@ contract AccessManagerCloneable is
39
41
 
40
42
  function initialize(address admin)
41
43
  public
44
+ override
42
45
  initializer()
43
46
  {
44
47
  __ERC165_init();
@@ -94,6 +97,7 @@ contract AccessManagerCloneable is
94
97
  onlyAdminRole()
95
98
  {
96
99
  _isLocked = locked;
100
+ emit LogAccessManagerLocked(address(this), locked);
97
101
  }
98
102
 
99
103
 
@@ -12,6 +12,7 @@ import {Blocknumber} from "../type/Blocknumber.sol";
12
12
  import {NftId} from "../type/NftId.sol";
13
13
  import {ObjectType} from "../type/ObjectType.sol";
14
14
  import {RoleId} from "../type/RoleId.sol";
15
+ import {Selector} from "../type/Selector.sol";
15
16
  import {Str} from "../type/String.sol";
16
17
  import {VersionPart} from "../type/Version.sol";
17
18
 
@@ -24,14 +25,14 @@ interface IAccessAdmin is
24
25
  {
25
26
 
26
27
  // roles, targets and functions
27
- event LogAccessAdminRoleCreated(string admin, RoleId roleId, TargetType targetType, RoleId roleAdminId, string name);
28
- event LogAccessAdminTargetCreated(string admin, string name, bool managed, address target, RoleId roleId);
29
-
30
- event LogAccessAdminRoleActivatedSet(string admin, RoleId roleId, bool active, Blocknumber lastUpdateIn);
31
- event LogAccessAdminRoleGranted(string admin, address account, string roleName);
32
- event LogAccessAdminRoleRevoked(string admin, address account, string roleName);
33
- event LogAccessAdminTargetLockedSet(string admin, address target, bool locked, Blocknumber lastUpdateIn);
34
- event LogAccessAdminFunctionGranted(string admin, address target, string func, Blocknumber lastUpdateIn);
28
+ event LogAccessAdminRoleCreated(RoleId indexed roleId, RoleId indexed roleAdminId, TargetType indexed targetType, string name, string admin);
29
+ event LogAccessAdminTargetCreated(address indexed target, RoleId indexed roleId, bool indexed managed, string name, string admin);
30
+
31
+ event LogAccessAdminRoleActivatedSet(RoleId indexed roleId, bool indexed active, string admin, Blocknumber indexed lastUpdateIn);
32
+ event LogAccessAdminRoleGranted(address indexed account, string roleName, string admin);
33
+ event LogAccessAdminRoleRevoked(address indexed account, string roleName, string admin);
34
+ event LogAccessAdminTargetLockedSet(address indexed target, bool indexed locked, string admin, Blocknumber indexed lastUpdateIn);
35
+ event LogAccessAdminFunctionGranted(address indexed target, Selector indexed selector, RoleId indexed roleId, string func, string admin, Blocknumber lastUpdateIn);
35
36
 
36
37
  // only deployer modifier
37
38
  error ErrorAccessAdminNotDeployer();
@@ -98,21 +98,24 @@ contract DistributionService is
98
98
  }
99
99
 
100
100
  distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
101
- IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo({
102
- name: name,
103
- distributionNftId: distributionNftId,
104
- minDiscountPercentage: minDiscountPercentage,
105
- maxDiscountPercentage: maxDiscountPercentage,
106
- commissionPercentage: commissionPercentage,
107
- maxReferralCount: maxReferralCount,
108
- maxReferralLifetime: maxReferralLifetime,
109
- allowSelfReferrals: allowSelfReferrals,
110
- allowRenewals: allowRenewals,
111
- data: data});
112
-
113
- instance.getInstanceStore().createDistributorType(distributorType, info);
101
+
102
+ {
103
+ IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo({
104
+ name: name,
105
+ distributionNftId: distributionNftId,
106
+ minDiscountPercentage: minDiscountPercentage,
107
+ maxDiscountPercentage: maxDiscountPercentage,
108
+ commissionPercentage: commissionPercentage,
109
+ maxReferralCount: maxReferralCount,
110
+ maxReferralLifetime: maxReferralLifetime,
111
+ allowSelfReferrals: allowSelfReferrals,
112
+ allowRenewals: allowRenewals,
113
+ data: data});
114
+
115
+ instance.getInstanceStore().createDistributorType(distributorType, info);
116
+ }
114
117
 
115
- emit LogDistributionServiceDistributorTypeCreated(distributionNftId, name);
118
+ emit LogDistributionServiceDistributorTypeCreated(distributionNftId, distributorType, name, commissionPercentage);
116
119
  }
117
120
 
118
121
 
@@ -148,7 +151,7 @@ contract DistributionService is
148
151
 
149
152
  instance.getInstanceStore().createDistributor(distributorNftId, info);
150
153
 
151
- emit LogDistributionServiceDistributorCreated(distributionNftId, distributorNftId, distributorType, distributor);
154
+ emit LogDistributionServiceDistributorCreated(distributionNftId, distributorNftId, distributor, distributorType);
152
155
  }
153
156
 
154
157
  function changeDistributorType(
@@ -236,7 +239,7 @@ contract DistributionService is
236
239
 
237
240
  instance.getInstanceStore().createReferral(referralId, info);
238
241
 
239
- emit LogDistributionServiceReferralCreated(distributionNftId, distributorNftId, referralId, code);
242
+ emit LogDistributionServiceReferralCreated(distributorNftId, referralId, code, discountPercentage, maxReferrals, expiryAt);
240
243
  }
241
244
  }
242
245
 
@@ -258,7 +261,7 @@ contract DistributionService is
258
261
  referralInfo.usedReferrals += 1;
259
262
  instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
260
263
 
261
- emit LogDistributionServiceReferralProcessed(distributionNftId, referralInfo.distributorNftId, referralId, referralInfo.usedReferrals);
264
+ emit LogDistributionServiceReferralProcessed(referralInfo.distributorNftId, referralId, referralInfo.usedReferrals);
262
265
  }
263
266
  }
264
267
 
@@ -295,12 +298,14 @@ contract DistributionService is
295
298
  IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
296
299
  distributorInfo.numPoliciesSold += 1;
297
300
  store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
301
+ emit LogDistributionServiceSaleProcessedWithReferral(distributionNftId, referralInfo.distributorNftId, referralId, distributorInfo.numPoliciesSold, premium.premiumAmount, distributionOwnerFee, commissionAmount);
298
302
  } else {
299
303
  // increase distribution balance by distribution owner fee
300
304
  _accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
305
+ emit LogDistributionServiceSaleProcessed(distributionNftId, premium.premiumAmount, distributionOwnerFee);
301
306
  }
302
307
 
303
- emit LogDistributionServiceSaleProcessed(distributionNftId, referralId);
308
+
304
309
  }
305
310
 
306
311
  /// @inheritdoc IDistributionService
@@ -341,7 +346,7 @@ contract DistributionService is
341
346
  // transfer amount to distributor
342
347
  {
343
348
  address distributor = getRegistry().ownerOf(distributorNftId);
344
- emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.tokenHandler.TOKEN()), withdrawnAmount);
349
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, withdrawnAmount, address(distributionInfo.tokenHandler.TOKEN()));
345
350
  distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
346
351
  }
347
352
  }
@@ -11,8 +11,6 @@ import {UFixed} from "../type/UFixed.sol";
11
11
 
12
12
  interface IDistributionComponent is IInstanceLinkedComponent {
13
13
 
14
- event LogDistributorUpdated(address to, address operator);
15
-
16
14
  function getDiscountPercentage(
17
15
  string memory referralCode
18
16
  ) external view returns (UFixed discountPercentage, ReferralStatus status);
@@ -39,13 +39,14 @@ interface IDistributionService is IService {
39
39
  error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
40
40
  error ErrorDistributionServiceReferralDistributionMismatch(ReferralId referralId, NftId referralDistributionNft, NftId distributionNftId);
41
41
 
42
- event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
43
- event LogDistributionServiceDistributorTypeCreated(NftId distributionNftId, string name);
44
- event LogDistributionServiceDistributorCreated(NftId distributionNftId, NftId distributorNftId, DistributorType distributorType, address distributor);
45
- event LogDistributionServiceDistributorTypeChanged(NftId distributorNftId, DistributorType oldDistributorType, DistributorType newDistributorType);
46
- event LogDistributionServiceReferralCreated(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, string code);
47
- event LogDistributionServiceReferralProcessed(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, uint32 usedReferrals);
48
- event LogDistributionServiceSaleProcessed(NftId distributionNftId, ReferralId referralId);
42
+ event LogDistributionServiceCommissionWithdrawn(NftId indexed distributorNftId, address indexed recipient, Amount amount, address indexed tokenAddress);
43
+ event LogDistributionServiceDistributorTypeCreated(NftId indexed distributionNftId, DistributorType indexed distributorType, string name, UFixed commissionPercentage);
44
+ event LogDistributionServiceDistributorCreated(NftId indexed distributionNftId, NftId indexed distributorNftId, address indexed distributor, DistributorType distributorType);
45
+ event LogDistributionServiceDistributorTypeChanged(NftId indexed distributorNftId, DistributorType indexed oldDistributorType, DistributorType indexed newDistributorType);
46
+ event LogDistributionServiceReferralCreated(NftId indexed distributorNftId, ReferralId indexed referralId, string code, UFixed discountPercentage, uint32 maxReferrals, Timestamp expiryAt);
47
+ event LogDistributionServiceReferralProcessed(NftId indexed distributorNftId, ReferralId indexed referralId, uint32 usedReferrals);
48
+ event LogDistributionServiceSaleProcessed(NftId indexed distributionNftId, Amount premium, Amount distributionOwnerFee);
49
+ event LogDistributionServiceSaleProcessedWithReferral(NftId indexed distributionNftId, NftId indexed distributorNftId, ReferralId indexed referralId, uint32 numPoliciesSold, Amount premium, Amount distributionOwnerFee, Amount commissionAmount);
49
50
 
50
51
  function createDistributorType(
51
52
  string memory name,
@@ -11,6 +11,7 @@ import {InstanceReader} from "../../instance/InstanceReader.sol";
11
11
  import {NftId} from "../../type/NftId.sol";
12
12
  import {RequestId} from "../../type/RequestId.sol";
13
13
  import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
14
+ import {Seconds} from "../../type/Seconds.sol";
14
15
  import {StateId} from "../../type/StateId.sol";
15
16
  import {Str} from "../../type/String.sol";
16
17
  import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
@@ -18,39 +19,30 @@ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
18
19
 
19
20
  library FlightLib {
20
21
 
21
- function checkApplicationDataAndSignature(
22
+ event LogFlightProductErrorUnprocessableStatus(RequestId requestId, RiskId riskId, bytes1 status);
23
+ event LogFlightProductErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
24
+
25
+ error ErrorFlightProductRiskInvalid(RiskId riskId);
26
+ error ErrorFlightProductPremiumAmountTooSmall(Amount premiumAmount, Amount minPremium);
27
+ error ErrorFlightProductPremiumAmountTooLarge(Amount premiumAmount, Amount maxPremium);
28
+ error ErrorFlightProductArrivalBeforeDepartureTime(Timestamp departureTime, Timestamp arrivalTime);
29
+ error ErrorFlightProductArrivalAfterMaxFlightDuration(Timestamp arrivalTime, Timestamp maxArrivalTime, Seconds maxDuration);
30
+ error ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds minTimeBeforeDeparture);
31
+ error ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds maxTimeBeforeDeparture);
32
+ error ErrorFlightProductNotEnoughObservations(uint256 observations, uint256 minObservations);
33
+ error ErrorFlightProductClusterRisk(Amount totalSumInsured, Amount maxTotalPayout);
34
+
35
+ function checkApplicationData(
22
36
  FlightProduct flightProduct,
23
37
  Str flightData,
24
38
  Timestamp departureTime,
25
39
  Timestamp arrivalTime,
26
- Amount premiumAmount,
27
- uint256[6] memory statistics,
28
- // signature fields
29
- uint8 v,
30
- bytes32 r,
31
- bytes32 s
40
+ Amount premiumAmount
32
41
  )
33
42
  public
34
43
  view
35
44
  {
36
45
  _checkApplicationData(flightProduct, premiumAmount, arrivalTime, departureTime);
37
-
38
- (
39
- address actualSigner,,
40
- bool success
41
- ) = flightProduct.getFlightMessageVerifier().verifyRatingsHash(
42
- flightData,
43
- departureTime,
44
- arrivalTime,
45
- premiumAmount,
46
- statistics,
47
- v, r, s);
48
-
49
- if (!success) {
50
- revert FlightProduct.ErrorApplicationDataSignatureMismatch(
51
- flightProduct.getFlightMessageVerifier().getExpectedSigner(),
52
- actualSigner);
53
- }
54
46
  }
55
47
 
56
48
 
@@ -63,62 +55,49 @@ library FlightLib {
63
55
  internal
64
56
  view
65
57
  {
58
+ bool testMode = flightProduct.isTestMode();
59
+
66
60
  // solhint-disable
67
- require(premiumAmount >= flightProduct.MIN_PREMIUM(), "ERROR:FDD-001:INVALID_PREMIUM");
68
- require(premiumAmount <= flightProduct.MAX_PREMIUM(), "ERROR:FDD-002:INVALID_PREMIUM");
69
- require(arrivalTime > departureTime, "ERROR:FDD-003:ARRIVAL_BEFORE_DEPARTURE_TIME");
70
-
71
- // TODO decide how to handle demo mode
72
- require(
73
- arrivalTime <= departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION()),
74
- "ERROR:FDD-004:INVALID_ARRIVAL/DEPARTURE_TIME");
75
- require(
76
- TimestampLib.current() >= departureTime.subtractSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE()),
77
- "ERROR:FDD-005:INVALID_ARRIVAL/DEPARTURE_TIME");
78
- require(
79
- TimestampLib.current() <= departureTime.subtractSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE()),
80
- "ERROR:FDD-012:INVALID_ARRIVAL/DEPARTURE_TIME");
61
+ if (premiumAmount < flightProduct.MIN_PREMIUM()) {
62
+ revert ErrorFlightProductPremiumAmountTooSmall(premiumAmount, flightProduct.MIN_PREMIUM());
63
+ }
64
+ if (premiumAmount > flightProduct.MAX_PREMIUM()) {
65
+ revert ErrorFlightProductPremiumAmountTooLarge(premiumAmount, flightProduct.MAX_PREMIUM());
66
+ }
67
+ if (arrivalTime <= departureTime) {
68
+ revert ErrorFlightProductArrivalBeforeDepartureTime(departureTime, arrivalTime);
69
+ }
70
+ if (arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) {
71
+ revert ErrorFlightProductArrivalAfterMaxFlightDuration(arrivalTime, departureTime, flightProduct.MAX_FLIGHT_DURATION());
72
+ }
73
+
74
+ // test mode allows the creation for policies that are outside restricted policy creation times
75
+ if (!testMode && departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) {
76
+ revert ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MIN_TIME_BEFORE_DEPARTURE());
77
+ }
78
+ if (!testMode && departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) {
79
+ revert ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MAX_TIME_BEFORE_DEPARTURE());
80
+ }
81
81
  // solhint-enable
82
82
  }
83
83
 
84
84
 
85
- // TODO fix or cleanup
86
- // function checkApplication(
87
- // FlightProduct flightProduct,
88
- // Str carrierFlightNumber,
89
- // Timestamp departureTime,
90
- // Timestamp arrivalTime,
91
- // Amount premium
92
- // )
93
- // external
94
- // view
95
- // returns (uint256 errors)
96
- // {
97
- // // Validate input parameters
98
- // if (premium < flightProduct.MIN_PREMIUM()) { errors = errors | (uint256(1) << 0); }
99
- // if (premium > flightProduct.MAX_PREMIUM()) { errors = errors | (uint256(1) << 1); }
100
- // if (arrivalTime < departureTime) { errors = errors | (uint256(1) << 2); }
101
- // if (arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) { errors = errors | (uint256(1) << 3); }
102
- // if (departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) { errors = errors | (uint256(1) << 4); }
103
- // if (departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) { errors = errors | (uint256(1) << 5); }
104
-
105
- // (, bool exists, FlightProduct.FlightRisk memory flightRisk) = getFlightRisk(
106
- // flightProduct.getInstanceReader(), flightProduct.getNftId(), carrierFlightNumber, departureTime, arrivalTime);
107
-
108
- // if (exists) {
109
- // Amount sumInsured = AmountLib.toAmount(premium.toInt() * flightRisk.premiumMultiplier);
110
- // if (flightRisk.sumOfSumInsuredAmounts + sumInsured > flightProduct.MAX_TOTAL_PAYOUT()) {
111
- // errors = errors | (uint256(1) << 6);
112
- // }
113
- // }
114
-
115
- // return errors;
116
- // }
85
+ function checkClusterRisk(
86
+ Amount sumOfSumInsuredAmounts,
87
+ Amount sumInsuredAmount,
88
+ Amount maxTotalPayout
89
+ )
90
+ public
91
+ pure
92
+ {
93
+ if (sumOfSumInsuredAmounts + sumInsuredAmount > maxTotalPayout) {
94
+ revert ErrorFlightProductClusterRisk(sumOfSumInsuredAmounts + sumInsuredAmount, maxTotalPayout);
95
+ }
96
+ }
117
97
 
118
98
 
119
99
  /// @dev calculates payout option based on flight status and delay minutes.
120
100
  /// Is not a view function as it emits log evens in case of unexpected status.
121
- // TODO decide if reverts instead of log events could work too (and convert the function into a view function)
122
101
  function checkAndGetPayoutOption(
123
102
  RequestId requestId,
124
103
  RiskId riskId,
@@ -133,13 +112,13 @@ library FlightLib {
133
112
 
134
113
  // check status
135
114
  if (status != "L" && status != "A" && status != "C" && status != "D") {
136
- emit FlightProduct.LogErrorUnprocessableStatus(requestId, riskId, status);
115
+ emit LogFlightProductErrorUnprocessableStatus(requestId, riskId, status);
137
116
  return payoutOption;
138
117
  }
139
118
 
140
119
  if (status == "A") {
141
120
  // todo: active, reschedule oracle call + 45 min
142
- emit FlightProduct.LogErrorUnexpectedStatus(requestId, riskId, status, delayMinutes);
121
+ emit LogFlightProductErrorUnexpectedStatus(requestId, riskId, status, delayMinutes);
143
122
  return payoutOption;
144
123
  }
145
124
 
@@ -161,7 +140,9 @@ library FlightLib {
161
140
  returns (uint256 weight)
162
141
  {
163
142
  // check we have enough observations
164
- require(statistics[0] >= flightProduct.MIN_OBSERVATIONS(), "ERROR:FDD-011:LOW_OBSERVATIONS");
143
+ if (statistics[0] < flightProduct.MIN_OBSERVATIONS()) {
144
+ revert ErrorFlightProductNotEnoughObservations(statistics[0], flightProduct.MIN_OBSERVATIONS());
145
+ }
165
146
 
166
147
  weight = 0;
167
148
  for (uint256 i = 1; i < 6; i++) {
@@ -192,8 +173,12 @@ library FlightLib {
192
173
  Amount sumInsuredAmount // simply the max of payoutAmounts
193
174
  )
194
175
  {
195
- require(premium >= flightProduct.MIN_PREMIUM(), "ERROR:FDD-009:INVALID_PREMIUM");
196
- require(premium <= flightProduct.MAX_PREMIUM(), "ERROR:FDD-010:INVALID_PREMIUM");
176
+ if (premium < flightProduct.MIN_PREMIUM()) {
177
+ revert ErrorFlightProductPremiumAmountTooSmall(premium, flightProduct.MIN_PREMIUM());
178
+ }
179
+ if (premium > flightProduct.MAX_PREMIUM()) {
180
+ revert ErrorFlightProductPremiumAmountTooLarge(premium, flightProduct.MAX_PREMIUM());
181
+ }
197
182
 
198
183
  sumInsuredAmount = AmountLib.zero();
199
184
  weight = calculateWeight(flightProduct, statistics);
@@ -211,13 +196,43 @@ library FlightLib {
211
196
  }
212
197
 
213
198
 
199
+ function getPayoutOption(
200
+ InstanceReader reader,
201
+ NftId productNftId,
202
+ RiskId riskId
203
+ )
204
+ public
205
+ view
206
+ returns (
207
+ bool exists,
208
+ bool statusAvailable,
209
+ uint8 payoutOption
210
+ )
211
+ {
212
+ FlightProduct.FlightRisk memory flightRisk;
213
+ (exists, flightRisk) = getFlightRisk(
214
+ reader,
215
+ productNftId,
216
+ riskId,
217
+ false);
218
+
219
+ statusAvailable = flightRisk.statusUpdatedAt.gtz();
220
+ payoutOption = flightRisk.payoutOption;
221
+ }
222
+
223
+
214
224
  function getPayoutAmount(
215
225
  bytes memory applicationData,
216
226
  uint8 payoutOption
217
227
  )
218
228
  public
229
+ pure
219
230
  returns (Amount payoutAmount)
220
231
  {
232
+ if (payoutOption == type(uint8).max) {
233
+ return AmountLib.zero();
234
+ }
235
+
221
236
  // retrieve payout amounts from application data
222
237
  (, Amount[5] memory payoutAmounts) = abi.decode(
223
238
  applicationData, (Amount, Amount[5]));
@@ -232,7 +247,9 @@ library FlightLib {
232
247
  NftId productNftId,
233
248
  Str flightData,
234
249
  Timestamp departureTime,
235
- Timestamp arrivalTime
250
+ string memory departureTimeLocal,
251
+ Timestamp arrivalTime,
252
+ string memory arrivalTimeLocal
236
253
  )
237
254
  public
238
255
  view
@@ -243,17 +260,21 @@ library FlightLib {
243
260
  )
244
261
  {
245
262
  riskId = getRiskId(productNftId, flightData);
246
- (exists, flightRisk) = getFlightRisk(reader, productNftId, riskId);
263
+ (exists, flightRisk) = getFlightRisk(reader, productNftId, riskId, false);
247
264
 
248
265
  // create new risk if not existing
249
266
  if (!exists) {
250
267
  flightRisk = FlightProduct.FlightRisk({
251
268
  flightData: flightData,
252
269
  departureTime: departureTime,
270
+ departureTimeLocal: departureTimeLocal,
253
271
  arrivalTime: arrivalTime,
272
+ arrivalTimeLocal: arrivalTimeLocal,
254
273
  sumOfSumInsuredAmounts: AmountLib.toAmount(0),
255
274
  status: bytes1(0),
256
- delayMinutes: 0});
275
+ delayMinutes: 0,
276
+ payoutOption: uint8(0),
277
+ statusUpdatedAt: TimestampLib.zero()});
257
278
  }
258
279
  }
259
280
 
@@ -261,7 +282,8 @@ library FlightLib {
261
282
  function getFlightRisk(
262
283
  InstanceReader reader,
263
284
  NftId productNftId,
264
- RiskId riskId
285
+ RiskId riskId,
286
+ bool requireRiskExists
265
287
  )
266
288
  public
267
289
  view
@@ -273,6 +295,10 @@ library FlightLib {
273
295
  // check if risk exists
274
296
  exists = reader.isProductRisk(productNftId, riskId);
275
297
 
298
+ if (!exists && requireRiskExists) {
299
+ revert ErrorFlightProductRiskInvalid(riskId);
300
+ }
301
+
276
302
  // get risk data if risk exists
277
303
  if (exists) {
278
304
  flightRisk = abi.decode(