@etherisc/gif-next 3.0.0-f9be4a0-294 → 3.0.0-fc7e513-722

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 (331) hide show
  1. package/README.md +9 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +42 -56
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +15 -19
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +14 -20
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +44 -56
  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 +25 -6
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +2 -2
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +157 -72
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +37 -37
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +85 -0
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +2 -2
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +2 -2
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2 -2
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  44. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
  45. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +372 -73
  46. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
  47. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.dbg.json +4 -0
  48. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.json +801 -0
  49. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
  50. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +183 -28
  51. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +82 -35
  53. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
  54. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +2 -2
  55. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
  56. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +2 -2
  57. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
  58. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +545 -445
  59. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
  60. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +83 -36
  61. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
  62. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
  63. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
  64. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +212 -2
  65. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
  66. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  67. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +2 -2
  68. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  69. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +2 -2
  70. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  71. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +2 -2
  72. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  73. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +2 -2
  74. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  75. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +2 -2
  76. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  77. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2 -2
  78. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  79. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +2 -2
  80. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  81. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +50 -0
  82. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  83. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  84. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +50 -0
  86. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  87. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +61 -0
  89. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  90. package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
  91. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  92. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +102 -114
  93. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  94. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
  95. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  96. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +93 -34
  97. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  98. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +81 -20
  99. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  100. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +11 -11
  101. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  102. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +82 -32
  103. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  104. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +68 -18
  105. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  106. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +2 -2
  107. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  108. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  109. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  110. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  111. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  112. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  113. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  114. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  115. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  116. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  117. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  118. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  119. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  121. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +2 -2
  122. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  123. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  124. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  125. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  126. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  127. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  128. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  129. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +38 -38
  130. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +20 -20
  132. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  133. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  134. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  135. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +2 -2
  137. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +2 -2
  139. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  140. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  143. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +2 -2
  145. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  146. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +2 -2
  147. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +2 -2
  149. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  150. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +2 -2
  151. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +2 -2
  153. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  154. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  155. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  156. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  157. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
  158. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +2 -2
  160. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  165. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  167. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +2 -2
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  169. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +20 -12
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +2 -2
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  173. package/artifacts/contracts/product/PricingService.sol/PricingService.json +2 -2
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
  176. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  177. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.json +2 -2
  179. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +2 -2
  181. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  183. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  185. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  187. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  189. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +101 -113
  191. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +2 -2
  193. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  195. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  196. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  197. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +110 -122
  199. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +56 -62
  202. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +2 -2
  204. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  205. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  206. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  207. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +51 -26
  209. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +14 -14
  211. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  213. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  215. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
  216. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +633 -0
  217. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  219. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +25 -0
  220. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  222. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  227. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  228. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  230. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  231. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  234. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  235. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  236. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  237. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  238. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  240. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +25 -0
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  242. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +12 -0
  243. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  244. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  245. package/artifacts/contracts/staking/Staking.sol/Staking.json +73 -48
  246. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  247. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -2
  248. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +25 -25
  250. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  252. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -14
  254. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +8 -8
  256. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  258. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  259. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +2 -2
  260. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  261. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  262. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  271. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  273. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  289. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  290. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  291. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  292. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  293. package/contracts/accounting/AccountingService.sol +17 -29
  294. package/contracts/accounting/IAccountingService.sol +7 -8
  295. package/contracts/authorization/AccessAdmin.sol +6 -25
  296. package/contracts/authorization/AccessAdminLib.sol +20 -3
  297. package/contracts/authorization/AccessManagerCloneable.sol +3 -0
  298. package/contracts/distribution/DistributionService.sol +5 -3
  299. package/contracts/distribution/IDistributionService.sol +4 -3
  300. package/contracts/examples/flight/FlightLib.sol +106 -80
  301. package/contracts/examples/flight/FlightNft.sol +234 -0
  302. package/contracts/examples/flight/FlightOracle.sol +68 -9
  303. package/contracts/examples/flight/FlightOracleAuthorization.sol +28 -5
  304. package/contracts/examples/flight/FlightPool.sol +1 -1
  305. package/contracts/examples/flight/FlightProduct.sol +357 -215
  306. package/contracts/examples/flight/FlightProductAuthorization.sol +36 -10
  307. package/contracts/examples/flight/FlightProductManager.sol +49 -0
  308. package/contracts/examples/flight/FlightUSD.sol +3 -1
  309. package/contracts/instance/BaseStore.sol +4 -0
  310. package/contracts/instance/IBaseStore.sol +8 -0
  311. package/contracts/instance/IInstanceService.sol +2 -0
  312. package/contracts/instance/InstanceAdmin.sol +0 -1
  313. package/contracts/instance/InstanceReader.sol +16 -4
  314. package/contracts/instance/InstanceService.sol +4 -0
  315. package/contracts/oracle/BasicOracle.sol +1 -0
  316. package/contracts/oracle/Oracle.sol +2 -2
  317. package/contracts/oracle/OracleService.sol +1 -1
  318. package/contracts/product/PolicyServiceLib.sol +5 -3
  319. package/contracts/registry/ChainNft.sol +1 -1
  320. package/contracts/registry/RegistryAdmin.sol +7 -1
  321. package/contracts/registry/ReleaseAdmin.sol +8 -1
  322. package/contracts/shared/ComponentService.sol +5 -0
  323. package/contracts/shared/IAuthorizedComponent.sol +15 -0
  324. package/contracts/shared/IComponentService.sol +1 -0
  325. package/contracts/shared/IInstanceLinkedComponent.sol +2 -5
  326. package/contracts/shared/InstanceLinkedComponent.sol +2 -1
  327. package/contracts/staking/IStaking.sol +2 -0
  328. package/contracts/staking/IStakingService.sol +1 -1
  329. package/contracts/staking/Staking.sol +1 -0
  330. package/contracts/staking/StakingService.sol +1 -1
  331. package/package.json +1 -1
@@ -6,20 +6,19 @@ import {Amount} from "../type/Amount.sol";
6
6
  import {InstanceStore} from "../instance/InstanceStore.sol";
7
7
  import {IService} from "../shared/IService.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
- import {UFixed} from "../type/UFixed.sol";
9
+ import {ObjectType} from "../type/ObjectType.sol";
10
10
 
11
11
  /// @dev component base class
12
12
  /// component examples are staking, product, distribution, pool and oracle
13
13
  interface IAccountingService is
14
14
  IService
15
15
  {
16
- event LogComponentServiceUpdateFee(
17
- NftId nftId,
18
- string feeName,
19
- UFixed previousFractionalFee,
20
- Amount previousFixedFee,
21
- UFixed newFractionalFee,
22
- Amount newFixedFee
16
+ event LogAccountingServiceBalanceChanged(
17
+ NftId indexed nftId,
18
+ Amount indexed amount,
19
+ Amount indexed feeAmount,
20
+ bool increase,
21
+ ObjectType objectType
23
22
  );
24
23
 
25
24
  function decreaseComponentFees(InstanceStore instanceStore, NftId componentNftId, Amount feeAmount) external;
@@ -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
 
@@ -656,24 +657,4 @@ contract AccessAdmin is
656
657
  AccessAdminLib.toFunctionGrantingString(this, func.name, roleId),
657
658
  lastUpdateIn);
658
659
  }
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
660
  }
@@ -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
 
@@ -94,6 +96,7 @@ contract AccessManagerCloneable is
94
96
  onlyAdminRole()
95
97
  {
96
98
  _isLocked = locked;
99
+ emit LogAccessManagerLocked(address(this), locked);
97
100
  }
98
101
 
99
102
 
@@ -112,7 +112,7 @@ contract DistributionService is
112
112
 
113
113
  instance.getInstanceStore().createDistributorType(distributorType, info);
114
114
 
115
- emit LogDistributionServiceDistributorTypeCreated(distributionNftId, name);
115
+ emit LogDistributionServiceDistributorTypeCreated(distributionNftId, name, commissionPercentage);
116
116
  }
117
117
 
118
118
 
@@ -236,7 +236,7 @@ contract DistributionService is
236
236
 
237
237
  instance.getInstanceStore().createReferral(referralId, info);
238
238
 
239
- emit LogDistributionServiceReferralCreated(distributionNftId, distributorNftId, referralId, code);
239
+ emit LogDistributionServiceReferralCreated(distributionNftId, distributorNftId, referralId, code, discountPercentage, maxReferrals, expiryAt);
240
240
  }
241
241
  }
242
242
 
@@ -295,12 +295,14 @@ contract DistributionService is
295
295
  IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
296
296
  distributorInfo.numPoliciesSold += 1;
297
297
  store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
298
+ emit LogDistributionServiceSaleProcessedWithReferral(distributionNftId, referralInfo.distributorNftId, referralId, distributorInfo.numPoliciesSold, premium.premiumAmount, distributionOwnerFee, commissionAmount);
298
299
  } else {
299
300
  // increase distribution balance by distribution owner fee
300
301
  _accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
302
+ emit LogDistributionServiceSaleProcessed(distributionNftId, referralId, premium.premiumAmount, distributionOwnerFee);
301
303
  }
302
304
 
303
- emit LogDistributionServiceSaleProcessed(distributionNftId, referralId);
305
+
304
306
  }
305
307
 
306
308
  /// @inheritdoc IDistributionService
@@ -40,12 +40,13 @@ interface IDistributionService is IService {
40
40
  error ErrorDistributionServiceReferralDistributionMismatch(ReferralId referralId, NftId referralDistributionNft, NftId distributionNftId);
41
41
 
42
42
  event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
43
- event LogDistributionServiceDistributorTypeCreated(NftId distributionNftId, string name);
43
+ event LogDistributionServiceDistributorTypeCreated(NftId distributionNftId, string name, UFixed commissionPercentage);
44
44
  event LogDistributionServiceDistributorCreated(NftId distributionNftId, NftId distributorNftId, DistributorType distributorType, address distributor);
45
45
  event LogDistributionServiceDistributorTypeChanged(NftId distributorNftId, DistributorType oldDistributorType, DistributorType newDistributorType);
46
- event LogDistributionServiceReferralCreated(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, string code);
46
+ event LogDistributionServiceReferralCreated(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, string code, UFixed discountPercentage, uint32 maxReferrals, Timestamp expiryAt);
47
47
  event LogDistributionServiceReferralProcessed(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, uint32 usedReferrals);
48
- event LogDistributionServiceSaleProcessed(NftId distributionNftId, ReferralId referralId);
48
+ event LogDistributionServiceSaleProcessed(NftId distributionNftId, ReferralId referralId, Amount premium, Amount distributionOwnerFee);
49
+ event LogDistributionServiceSaleProcessedWithReferral(NftId distributionNftId, NftId distributorNftId, ReferralId 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(