@etherisc/gif-next 3.0.0-f90c901-018 → 3.0.0-fb87f3a-607

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/README.md +10 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +83 -164
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +115 -113
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +46 -91
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +70 -105
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +150 -126
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +84 -20
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +55 -31
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +10 -20
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +1 -1
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +42 -18
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +75 -126
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +65 -41
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -72
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +224 -198
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +150 -140
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +56 -84
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +117 -71
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +104 -166
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +65 -41
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +138 -200
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +65 -41
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  50. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +799 -0
  51. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +4 -0
  52. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +229 -0
  53. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.dbg.json +4 -0
  54. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.json +801 -0
  55. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1353 -0
  57. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  58. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +896 -0
  59. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  60. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  61. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
  63. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  64. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2289 -0
  65. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  66. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +891 -0
  67. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
  68. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
  69. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  70. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +586 -0
  71. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  72. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  74. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +102 -159
  75. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  76. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +65 -41
  77. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  78. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +106 -163
  79. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  80. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +120 -177
  81. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  82. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +65 -41
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  84. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +114 -171
  85. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  86. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +65 -41
  87. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +50 -0
  89. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +54 -49
  91. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  92. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +50 -0
  93. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  94. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +26 -78
  95. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -83
  97. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  98. package/artifacts/contracts/instance/Instance.sol/Instance.json +51 -145
  99. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  100. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +151 -185
  101. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  102. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +67 -43
  103. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  104. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -77
  105. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  106. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +136 -138
  107. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  108. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -104
  109. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  110. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +82 -32
  111. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  112. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +68 -18
  113. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  114. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +58 -53
  115. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  116. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  117. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  118. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +1 -1
  119. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  120. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  121. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  122. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  123. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  124. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +8 -3
  125. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  126. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  127. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  128. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  129. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  130. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  131. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  132. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  133. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  134. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +81 -132
  135. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  136. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +65 -41
  137. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  138. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  139. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +66 -94
  140. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  141. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +83 -80
  142. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  143. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -82
  144. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  145. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +148 -149
  146. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +129 -111
  148. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  149. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +73 -88
  150. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  151. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +65 -41
  152. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  153. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +129 -176
  154. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +139 -129
  156. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  157. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +44 -71
  158. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  159. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +72 -100
  160. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  161. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +98 -94
  162. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  163. package/artifacts/contracts/pool/Pool.sol/Pool.json +73 -88
  164. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  165. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +247 -24
  166. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  167. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +177 -233
  168. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +130 -140
  170. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  171. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +63 -138
  172. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +112 -110
  174. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  175. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +57 -72
  176. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  177. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +65 -41
  178. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  179. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +115 -182
  180. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  181. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +138 -132
  182. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  183. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +32 -71
  184. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  185. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +32 -71
  186. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  187. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +76 -82
  188. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  189. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -82
  190. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  191. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +56 -84
  192. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  193. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +36 -75
  194. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  195. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +139 -173
  196. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  197. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +20 -12
  198. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  199. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +128 -122
  200. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  201. package/artifacts/contracts/product/PricingService.sol/PricingService.json +94 -161
  202. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  203. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +122 -116
  204. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  205. package/artifacts/contracts/product/Product.sol/Product.json +57 -72
  206. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  207. package/artifacts/contracts/product/RiskService.sol/RiskService.json +63 -146
  208. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  209. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +107 -109
  210. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  211. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  212. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  213. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +62 -155
  214. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  215. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +216 -202
  216. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  217. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +15 -1
  218. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  219. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  220. package/artifacts/contracts/registry/Registry.sol/Registry.json +102 -314
  221. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  222. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +146 -179
  223. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  224. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +77 -57
  225. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  226. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +244 -285
  227. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  228. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +110 -115
  229. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  230. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +154 -175
  231. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  232. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  233. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  234. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +187 -135
  235. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  236. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +56 -32
  237. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  238. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +29 -13
  239. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  240. package/artifacts/contracts/shared/Component.sol/Component.json +39 -84
  241. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  242. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +345 -164
  243. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  244. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +141 -115
  245. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  246. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +169 -421
  247. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  248. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  249. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  250. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  251. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  252. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
  253. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +633 -0
  254. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  255. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -96
  256. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  257. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +251 -82
  258. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  259. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +56 -84
  260. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  261. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  262. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +28 -1
  263. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  264. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +12 -1
  265. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  266. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +25 -77
  267. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  268. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +12 -1
  269. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  270. package/artifacts/contracts/shared/IService.sol/IService.json +32 -71
  271. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  272. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  273. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -72
  274. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  275. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  276. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  277. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  278. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +34 -15
  279. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  280. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +14 -3
  281. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  282. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -76
  283. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  284. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +37 -3
  285. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  286. package/artifacts/contracts/shared/Service.sol/Service.json +31 -70
  287. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  288. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +29 -42
  289. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  290. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +17 -30
  291. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  292. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +34 -34
  293. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  294. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +81 -101
  295. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  296. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +48 -75
  297. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  298. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  299. package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -170
  300. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  301. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +31 -26
  302. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  303. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +124 -112
  304. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  305. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +22 -5
  306. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  307. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +77 -132
  308. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  309. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +111 -105
  310. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  311. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +204 -212
  312. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  313. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +19 -27
  314. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  315. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +16 -16
  316. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  317. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
  321. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  323. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  325. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  328. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  329. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  330. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  332. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  333. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  334. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +22 -25
  336. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  338. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  340. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  342. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
  343. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
  344. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  346. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +4 -4
  348. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +21 -2
  350. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  351. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  352. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  353. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  354. package/artifacts/contracts/type/String.sol/StrLib.json +21 -2
  355. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  356. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  357. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  358. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  359. package/artifacts/contracts/type/Version.sol/VersionLib.json +10 -10
  360. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  361. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +6 -19
  362. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  363. package/artifacts/contracts/upgradeability/{IUpgradeable.sol/IUpgradeable.json → IVersionable.sol/IVersionable.json} +4 -54
  364. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  365. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +86 -63
  366. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  367. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  368. package/artifacts/contracts/upgradeability/{Upgradeable.sol/Upgradeable.json → Versionable.sol/Versionable.json} +4 -54
  369. package/contracts/accounting/AccountingService.sol +22 -33
  370. package/contracts/accounting/AccountingServiceManager.sol +6 -4
  371. package/contracts/accounting/IAccountingService.sol +7 -8
  372. package/contracts/authorization/AccessAdmin.sol +24 -47
  373. package/contracts/authorization/AccessAdminLib.sol +29 -15
  374. package/contracts/authorization/AccessManagerCloneable.sol +51 -24
  375. package/contracts/authorization/Authorization.sol +2 -2
  376. package/contracts/authorization/IAccessAdmin.sol +3 -3
  377. package/contracts/authorization/IServiceAuthorization.sol +1 -1
  378. package/contracts/authorization/ServiceAuthorization.sol +4 -4
  379. package/contracts/distribution/BasicDistribution.sol +2 -0
  380. package/contracts/distribution/BasicDistributionAuthorization.sol +4 -5
  381. package/contracts/distribution/Distribution.sol +2 -0
  382. package/contracts/distribution/DistributionService.sol +25 -27
  383. package/contracts/distribution/DistributionServiceManager.sol +6 -4
  384. package/contracts/distribution/IDistributionService.sol +4 -3
  385. package/contracts/examples/fire/FirePool.sol +4 -0
  386. package/contracts/examples/fire/FireProduct.sol +4 -0
  387. package/contracts/examples/flight/FlightLib.sol +337 -0
  388. package/contracts/examples/flight/FlightMessageVerifier.sol +128 -0
  389. package/contracts/examples/flight/FlightNft.sol +234 -0
  390. package/contracts/examples/flight/FlightOracle.sol +226 -0
  391. package/contracts/examples/flight/FlightOracleAuthorization.sol +57 -0
  392. package/contracts/examples/flight/FlightPool.sol +89 -0
  393. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  394. package/contracts/examples/flight/FlightProduct.sol +687 -0
  395. package/contracts/examples/flight/FlightProductAuthorization.sol +70 -0
  396. package/contracts/examples/flight/FlightProductManager.sol +49 -0
  397. package/contracts/examples/flight/FlightUSD.sol +28 -0
  398. package/contracts/examples/flight/originalV1.sol +396 -0
  399. package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -0
  400. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -0
  401. package/contracts/examples/unpermissioned/SimplePool.sol +4 -0
  402. package/contracts/examples/unpermissioned/SimpleProduct.sol +4 -0
  403. package/contracts/instance/BaseStore.sol +4 -0
  404. package/contracts/instance/IBaseStore.sol +8 -0
  405. package/contracts/instance/IInstance.sol +1 -1
  406. package/contracts/instance/IInstanceService.sol +2 -0
  407. package/contracts/instance/Instance.sol +12 -8
  408. package/contracts/instance/InstanceAdmin.sol +17 -11
  409. package/contracts/instance/InstanceAuthorizationV3.sol +2 -4
  410. package/contracts/instance/InstanceReader.sol +56 -22
  411. package/contracts/instance/InstanceService.sol +24 -18
  412. package/contracts/instance/InstanceServiceManager.sol +6 -4
  413. package/contracts/instance/base/Cloneable.sol +10 -4
  414. package/contracts/instance/base/ObjectSet.sol +2 -2
  415. package/contracts/oracle/BasicOracle.sol +3 -0
  416. package/contracts/oracle/BasicOracleAuthorization.sol +1 -3
  417. package/contracts/oracle/IOracleService.sol +16 -12
  418. package/contracts/oracle/Oracle.sol +6 -5
  419. package/contracts/oracle/OracleService.sol +67 -37
  420. package/contracts/oracle/OracleServiceManager.sol +6 -4
  421. package/contracts/pool/BasicPool.sol +4 -2
  422. package/contracts/pool/BasicPoolAuthorization.sol +4 -5
  423. package/contracts/pool/BundleService.sol +20 -26
  424. package/contracts/pool/BundleServiceManager.sol +7 -5
  425. package/contracts/pool/IBundleService.sol +1 -1
  426. package/contracts/pool/IPoolService.sol +6 -5
  427. package/contracts/pool/Pool.sol +3 -1
  428. package/contracts/pool/PoolLib.sol +102 -5
  429. package/contracts/pool/PoolService.sol +101 -67
  430. package/contracts/pool/PoolServiceManager.sol +6 -4
  431. package/contracts/product/ApplicationService.sol +34 -13
  432. package/contracts/product/ApplicationServiceManager.sol +6 -4
  433. package/contracts/product/BasicProduct.sol +2 -0
  434. package/contracts/product/BasicProductAuthorization.sol +7 -7
  435. package/contracts/product/ClaimService.sol +34 -10
  436. package/contracts/product/ClaimServiceManager.sol +7 -5
  437. package/contracts/product/IPolicyService.sol +2 -1
  438. package/contracts/product/PolicyService.sol +58 -45
  439. package/contracts/product/PolicyServiceLib.sol +5 -3
  440. package/contracts/product/PolicyServiceManager.sol +6 -4
  441. package/contracts/product/PricingService.sol +8 -7
  442. package/contracts/product/PricingServiceManager.sol +6 -4
  443. package/contracts/product/Product.sol +2 -0
  444. package/contracts/product/RiskService.sol +40 -8
  445. package/contracts/product/RiskServiceManager.sol +6 -4
  446. package/contracts/registry/ChainNft.sol +1 -1
  447. package/contracts/registry/IRegistry.sol +14 -20
  448. package/contracts/registry/IRegistryService.sol +14 -10
  449. package/contracts/registry/IRelease.sol +3 -0
  450. package/contracts/registry/Registry.sol +78 -124
  451. package/contracts/registry/RegistryAdmin.sol +29 -12
  452. package/contracts/registry/RegistryAuthorization.sol +3 -4
  453. package/contracts/registry/RegistryService.sol +82 -99
  454. package/contracts/registry/RegistryServiceManager.sol +11 -4
  455. package/contracts/registry/ReleaseAdmin.sol +23 -9
  456. package/contracts/registry/ReleaseRegistry.sol +74 -64
  457. package/contracts/registry/ServiceAuthorizationV3.sol +3 -4
  458. package/contracts/registry/TokenRegistry.sol +15 -6
  459. package/contracts/shared/Component.sol +22 -27
  460. package/contracts/shared/ComponentService.sol +135 -45
  461. package/contracts/shared/ComponentServiceManager.sol +7 -5
  462. package/contracts/shared/ContractLib.sol +93 -359
  463. package/contracts/shared/EcdsaChecker.sol +5 -0
  464. package/contracts/shared/IAuthorizedComponent.sol +15 -0
  465. package/contracts/shared/IComponent.sol +3 -5
  466. package/contracts/shared/IComponentService.sol +15 -0
  467. package/contracts/shared/IInstanceLinkedComponent.sol +9 -9
  468. package/contracts/shared/INftOwnable.sol +2 -0
  469. package/contracts/shared/IRegisterable.sol +3 -14
  470. package/contracts/shared/IRegistryLinked.sol +3 -1
  471. package/contracts/shared/IService.sol +2 -2
  472. package/contracts/shared/InstanceLinkedComponent.sol +130 -39
  473. package/contracts/shared/NftOwnable.sol +22 -9
  474. package/contracts/shared/PolicyHolder.sol +4 -2
  475. package/contracts/shared/Registerable.sol +20 -37
  476. package/contracts/shared/RegistryLinked.sol +23 -4
  477. package/contracts/shared/Service.sol +9 -8
  478. package/contracts/shared/TokenHandler.sol +1 -4
  479. package/contracts/staking/IStaking.sol +4 -2
  480. package/contracts/staking/IStakingService.sol +1 -1
  481. package/contracts/staking/Staking.sol +34 -28
  482. package/contracts/staking/StakingLib.sol +1 -3
  483. package/contracts/staking/StakingManager.sol +6 -3
  484. package/contracts/staking/StakingReader.sol +17 -9
  485. package/contracts/staking/StakingService.sol +14 -17
  486. package/contracts/staking/StakingServiceManager.sol +8 -4
  487. package/contracts/staking/StakingStore.sol +8 -8
  488. package/contracts/staking/TargetHandler.sol +5 -4
  489. package/contracts/type/ObjectType.sol +2 -31
  490. package/contracts/type/Referral.sol +6 -0
  491. package/contracts/type/RequestIdSet.sol +62 -0
  492. package/contracts/type/Seconds.sol +4 -0
  493. package/contracts/type/String.sol +30 -0
  494. package/contracts/type/Timestamp.sol +10 -1
  495. package/contracts/type/Version.sol +16 -15
  496. package/contracts/upgradeability/{IUpgradeable.sol → IVersionable.sol} +19 -13
  497. package/contracts/upgradeability/ProxyManager.sol +54 -46
  498. package/contracts/upgradeability/{Upgradeable.sol → Versionable.sol} +14 -25
  499. package/package.json +2 -1
  500. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  501. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -74
  502. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  503. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -74
  504. package/artifacts/contracts/upgradeability/IUpgradeable.sol/IUpgradeable.dbg.json +0 -4
  505. package/artifacts/contracts/upgradeability/Upgradeable.sol/Upgradeable.dbg.json +0 -4
  506. package/contracts/shared/IVersionable.sol +0 -19
  507. package/contracts/shared/Versionable.sol +0 -47
@@ -0,0 +1,337 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IPolicy} from "../../instance/module/IPolicy.sol";
5
+ import {IPolicyService} from "../../product/IPolicyService.sol";
6
+
7
+ import {Amount, AmountLib} from "../../type/Amount.sol";
8
+ import {FlightMessageVerifier} from "./FlightMessageVerifier.sol";
9
+ import {FlightProduct} from "./FlightProduct.sol";
10
+ import {InstanceReader} from "../../instance/InstanceReader.sol";
11
+ import {NftId} from "../../type/NftId.sol";
12
+ import {RequestId} from "../../type/RequestId.sol";
13
+ import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
14
+ import {Seconds} from "../../type/Seconds.sol";
15
+ import {StateId} from "../../type/StateId.sol";
16
+ import {Str} from "../../type/String.sol";
17
+ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
18
+
19
+
20
+ library FlightLib {
21
+
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(
36
+ FlightProduct flightProduct,
37
+ Str flightData,
38
+ Timestamp departureTime,
39
+ Timestamp arrivalTime,
40
+ Amount premiumAmount
41
+ )
42
+ public
43
+ view
44
+ {
45
+ _checkApplicationData(flightProduct, premiumAmount, arrivalTime, departureTime);
46
+ }
47
+
48
+
49
+ function _checkApplicationData(
50
+ FlightProduct flightProduct,
51
+ Amount premiumAmount,
52
+ Timestamp arrivalTime,
53
+ Timestamp departureTime
54
+ )
55
+ internal
56
+ view
57
+ {
58
+ bool testMode = flightProduct.isTestMode();
59
+
60
+ // solhint-disable
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
+ // solhint-enable
82
+ }
83
+
84
+
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
+ }
97
+
98
+
99
+ /// @dev calculates payout option based on flight status and delay minutes.
100
+ /// Is not a view function as it emits log evens in case of unexpected status.
101
+ function checkAndGetPayoutOption(
102
+ RequestId requestId,
103
+ RiskId riskId,
104
+ bytes1 status,
105
+ int256 delayMinutes
106
+ )
107
+ public
108
+ returns (uint8 payoutOption)
109
+ {
110
+ // default: no payout
111
+ payoutOption = type(uint8).max;
112
+
113
+ // check status
114
+ if (status != "L" && status != "A" && status != "C" && status != "D") {
115
+ emit LogFlightProductErrorUnprocessableStatus(requestId, riskId, status);
116
+ return payoutOption;
117
+ }
118
+
119
+ if (status == "A") {
120
+ // todo: active, reschedule oracle call + 45 min
121
+ emit LogFlightProductErrorUnexpectedStatus(requestId, riskId, status, delayMinutes);
122
+ return payoutOption;
123
+ }
124
+
125
+ // trigger payout if applicable
126
+ if (status == "C") { payoutOption = 3; }
127
+ else if (status == "D") { payoutOption = 4; }
128
+ else if (delayMinutes >= 15 && delayMinutes < 30) { payoutOption = 0; }
129
+ else if (delayMinutes >= 30 && delayMinutes < 45) { payoutOption = 1; }
130
+ else if (delayMinutes >= 45) { payoutOption = 2; }
131
+ }
132
+
133
+
134
+ function calculateWeight(
135
+ FlightProduct flightProduct,
136
+ uint256[6] memory statistics
137
+ )
138
+ public
139
+ view
140
+ returns (uint256 weight)
141
+ {
142
+ // check we have enough observations
143
+ if (statistics[0] < flightProduct.MIN_OBSERVATIONS()) {
144
+ revert ErrorFlightProductNotEnoughObservations(statistics[0], flightProduct.MIN_OBSERVATIONS());
145
+ }
146
+
147
+ weight = 0;
148
+ for (uint256 i = 1; i < 6; i++) {
149
+ weight += flightProduct.WEIGHT_PATTERN(i) * statistics[i] * 10000 / statistics[0];
150
+ }
151
+
152
+ // To avoid div0 in the payout section, we have to make a minimal assumption on weight
153
+ if (weight == 0) {
154
+ weight = 100000 / statistics[0];
155
+ }
156
+
157
+ // TODO comment on intended effect
158
+ weight = (weight * (100 + flightProduct.MARGIN_PERCENT())) / 100;
159
+ }
160
+
161
+
162
+ // REMARK: each flight may get different payouts depending on the latest statics
163
+ function calculatePayoutAmounts(
164
+ FlightProduct flightProduct,
165
+ Amount premium,
166
+ uint256[6] memory statistics
167
+ )
168
+ public
169
+ view
170
+ returns (
171
+ uint256 weight,
172
+ Amount[5] memory payoutAmounts,
173
+ Amount sumInsuredAmount // simply the max of payoutAmounts
174
+ )
175
+ {
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
+ }
182
+
183
+ sumInsuredAmount = AmountLib.zero();
184
+ weight = calculateWeight(flightProduct, statistics);
185
+
186
+ for (uint256 i = 0; i < 5; i++) {
187
+ Amount payoutAmount = AmountLib.toAmount(
188
+ premium.toInt() * flightProduct.WEIGHT_PATTERN(i + 1) * 10000 / weight);
189
+
190
+ // cap payout and update sum insured if applicable
191
+ if (payoutAmount > flightProduct.MAX_PAYOUT()) { payoutAmount = flightProduct.MAX_PAYOUT(); }
192
+ if (payoutAmount > sumInsuredAmount) { sumInsuredAmount = payoutAmount; }
193
+
194
+ payoutAmounts[i] = payoutAmount;
195
+ }
196
+ }
197
+
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
+
224
+ function getPayoutAmount(
225
+ bytes memory applicationData,
226
+ uint8 payoutOption
227
+ )
228
+ public
229
+ pure
230
+ returns (Amount payoutAmount)
231
+ {
232
+ if (payoutOption == type(uint8).max) {
233
+ return AmountLib.zero();
234
+ }
235
+
236
+ // retrieve payout amounts from application data
237
+ (, Amount[5] memory payoutAmounts) = abi.decode(
238
+ applicationData, (Amount, Amount[5]));
239
+
240
+ // get payout amount for selected option
241
+ payoutAmount = payoutAmounts[payoutOption];
242
+ }
243
+
244
+
245
+ function getFlightRisk(
246
+ InstanceReader reader,
247
+ NftId productNftId,
248
+ Str flightData,
249
+ Timestamp departureTime,
250
+ string memory departureTimeLocal,
251
+ Timestamp arrivalTime,
252
+ string memory arrivalTimeLocal
253
+ )
254
+ public
255
+ view
256
+ returns (
257
+ RiskId riskId,
258
+ bool exists,
259
+ FlightProduct.FlightRisk memory flightRisk
260
+ )
261
+ {
262
+ riskId = getRiskId(productNftId, flightData);
263
+ (exists, flightRisk) = getFlightRisk(reader, productNftId, riskId, false);
264
+
265
+ // create new risk if not existing
266
+ if (!exists) {
267
+ flightRisk = FlightProduct.FlightRisk({
268
+ flightData: flightData,
269
+ departureTime: departureTime,
270
+ departureTimeLocal: departureTimeLocal,
271
+ arrivalTime: arrivalTime,
272
+ arrivalTimeLocal: arrivalTimeLocal,
273
+ sumOfSumInsuredAmounts: AmountLib.toAmount(0),
274
+ status: bytes1(0),
275
+ delayMinutes: 0,
276
+ payoutOption: uint8(0),
277
+ statusUpdatedAt: TimestampLib.zero()});
278
+ }
279
+ }
280
+
281
+
282
+ function getFlightRisk(
283
+ InstanceReader reader,
284
+ NftId productNftId,
285
+ RiskId riskId,
286
+ bool requireRiskExists
287
+ )
288
+ public
289
+ view
290
+ returns (
291
+ bool exists,
292
+ FlightProduct.FlightRisk memory flightRisk
293
+ )
294
+ {
295
+ // check if risk exists
296
+ exists = reader.isProductRisk(productNftId, riskId);
297
+
298
+ if (!exists && requireRiskExists) {
299
+ revert ErrorFlightProductRiskInvalid(riskId);
300
+ }
301
+
302
+ // get risk data if risk exists
303
+ if (exists) {
304
+ flightRisk = abi.decode(
305
+ reader.getRiskInfo(riskId).data, (FlightProduct.FlightRisk));
306
+ }
307
+ }
308
+
309
+
310
+ function getRiskId(
311
+ NftId productNftId,
312
+ Str flightData
313
+ )
314
+ public
315
+ view
316
+ returns (RiskId riskId)
317
+ {
318
+ bytes32 riskKey = getRiskKey(flightData);
319
+ riskId = getRiskId(productNftId, riskKey);
320
+ }
321
+
322
+
323
+ function getRiskKey(
324
+ Str flightData
325
+ )
326
+ internal
327
+ pure
328
+ returns (bytes32 riskKey)
329
+ {
330
+ return keccak256(abi.encode(flightData));
331
+ }
332
+
333
+
334
+ function getRiskId(NftId productNftId, bytes32 riskKey) internal view returns (RiskId riskId) {
335
+ return RiskIdLib.toRiskId(productNftId, riskKey);
336
+ }
337
+ }
@@ -0,0 +1,128 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
5
+ import {MessageHashUtils} from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol";
6
+ import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
7
+
8
+
9
+ import {Amount} from "../../type/Amount.sol";
10
+ import {Str} from "../../type/String.sol";
11
+ import {Timestamp} from "../../type/Timestamp.sol";
12
+
13
+ contract FlightMessageVerifier is
14
+ Ownable
15
+ {
16
+
17
+ error ErrorFlightMessageVerifierSignerZero();
18
+ error ErrorFlightMessageVerifierContractSignerNotSupported();
19
+
20
+ address private _expectedSigner;
21
+
22
+
23
+ constructor() Ownable(msg.sender) { }
24
+
25
+
26
+ function setExpectedSigner(address signer) external onlyOwner {
27
+ if (signer == address(0)) { revert ErrorFlightMessageVerifierSignerZero(); }
28
+ if (signer.code.length > 0) { revert ErrorFlightMessageVerifierContractSignerNotSupported(); }
29
+ _expectedSigner = signer;
30
+ }
31
+
32
+
33
+ function getExpectedSigner() external view returns(address) {
34
+ return _expectedSigner;
35
+ }
36
+
37
+ /// @dev creates digest hash based on application parameters
38
+ /// proposal:
39
+ /// use "LX 180 ZRH BKK 20241104" (23 chars, should be enough for all flights)
40
+ /// carriers, airports: https://www.iata.org/en/publications/directories/code-search/
41
+ /// flight numbers: https://en.wikipedia.org/wiki/Flight_number
42
+ /// instead of separate strings, coding/decoding done anyway off-chain
43
+ function getRatingsHash(
44
+ Str flightData,
45
+ Timestamp departureTime,
46
+ Timestamp arrivalTime,
47
+ Amount premiumAmount,
48
+ uint256[6] memory statistics
49
+ )
50
+ public
51
+ view
52
+ returns(bytes32)
53
+ {
54
+ return MessageHashUtils.toEthSignedMessageHash(
55
+ abi.encode(
56
+ flightData,
57
+ departureTime,
58
+ arrivalTime,
59
+ premiumAmount,
60
+ statistics));
61
+ }
62
+
63
+
64
+ function verifyRatingsHash(
65
+ Str flightData,
66
+ Timestamp departureTime,
67
+ Timestamp arrivalTime,
68
+ Amount premiumAmount,
69
+ uint256[6] memory statistics,
70
+ // bytes memory signature,
71
+ uint8 v,
72
+ bytes32 r,
73
+ bytes32 s
74
+ )
75
+ public
76
+ view
77
+ returns (
78
+ address actualSigner,
79
+ ECDSA.RecoverError errorStatus,
80
+ bool success
81
+ )
82
+ {
83
+ bytes32 messageHash = getRatingsHash(
84
+ flightData,
85
+ departureTime,
86
+ arrivalTime,
87
+ premiumAmount,
88
+ statistics);
89
+
90
+ (
91
+ actualSigner,
92
+ errorStatus,
93
+ ) = ECDSA.tryRecover(messageHash, v, r, s);
94
+
95
+ success = (
96
+ errorStatus == ECDSA.RecoverError.NoError
97
+ && actualSigner == _expectedSigner);
98
+ }
99
+
100
+
101
+ // TODO re-enable or cleanup
102
+ // function checkAndRegisterSignature (
103
+ // address policyHolder,
104
+ // address protectedWallet,
105
+ // uint256 protectedBalance,
106
+ // uint256 duration,
107
+ // uint256 bundleId,
108
+ // bytes32 signatureId,
109
+ // bytes calldata signature
110
+ // )
111
+ // external
112
+ // {
113
+ // bytes32 signatureHash = keccak256(abi.encode(signature));
114
+ // require(!_signatureIsUsed[signatureHash], "ERROR:DMH-001:SIGNATURE_USED");
115
+
116
+ // address signer = getSignerFromDigestAndSignature(
117
+ // protectedWallet,
118
+ // protectedBalance,
119
+ // duration,
120
+ // bundleId,
121
+ // signatureId,
122
+ // signature);
123
+
124
+ // require(policyHolder == signer, "ERROR:DMH-002:SIGNATURE_INVALID");
125
+
126
+ // _signatureIsUsed[signatureHash] = true;
127
+ // }
128
+ }
@@ -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
+ }