@etherisc/gif-next 3.0.0-15742bc-193 → 3.0.0-1998581-354

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