@etherisc/gif-next 3.0.0-b45deea-213 → 3.0.0-bd6db59-832

Sign up to get free protection for your applications and to get access to all the features.
Files changed (292) hide show
  1. package/README.md +1 -0
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +2 -2
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +2 -2
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +44 -56
  9. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +145 -100
  11. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  14. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +2 -2
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +2 -2
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +2 -2
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  32. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +2 -2
  34. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +2 -2
  36. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2 -2
  38. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
  40. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  41. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
  42. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +160 -67
  43. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
  44. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
  45. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +64 -28
  46. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +82 -35
  48. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
  49. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +2 -2
  50. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
  51. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +2 -2
  52. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
  53. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +242 -259
  54. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
  55. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +83 -36
  56. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
  57. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  59. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +2 -2
  60. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  61. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +2 -2
  62. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  63. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +2 -2
  64. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  65. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +2 -2
  66. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  67. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +2 -2
  68. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  69. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2 -2
  70. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  71. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +2 -2
  72. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  74. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  75. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  76. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  77. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  79. package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
  80. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +102 -114
  82. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
  84. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +58 -34
  86. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +2 -2
  88. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +2 -2
  90. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  91. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2 -2
  92. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  93. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2 -2
  94. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  95. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +2 -2
  96. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  98. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  99. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  100. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  102. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  103. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  108. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +2 -2
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  113. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
  119. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
  121. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +2 -2
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +2 -2
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  131. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  132. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +2 -2
  134. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +2 -2
  136. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +2 -2
  138. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +2 -2
  140. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +2 -2
  142. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  145. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +2 -2
  149. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  154. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  155. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +2 -2
  157. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  158. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +2 -2
  159. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  160. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +2 -2
  161. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  162. package/artifacts/contracts/product/PricingService.sol/PricingService.json +2 -2
  163. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  164. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
  165. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  166. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  167. package/artifacts/contracts/product/RiskService.sol/RiskService.json +2 -2
  168. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +2 -2
  170. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  171. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  174. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  175. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  177. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  178. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +101 -113
  179. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  180. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +2 -2
  181. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  182. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  183. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  185. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +110 -122
  187. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  188. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +56 -62
  190. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +2 -2
  192. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  194. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  195. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +2 -2
  197. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  198. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +2 -2
  199. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  200. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  201. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  202. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
  204. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +633 -0
  205. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  207. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  209. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  215. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  217. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  218. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  220. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  227. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  228. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  229. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  230. package/artifacts/contracts/staking/Staking.sol/Staking.json +2 -2
  231. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -2
  233. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +2 -2
  235. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  237. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +2 -2
  239. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +2 -2
  241. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  243. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  244. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +2 -2
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  247. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  255. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  256. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  258. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
  263. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  274. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  275. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  276. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  277. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  278. package/contracts/authorization/AccessAdmin.sol +25 -23
  279. package/contracts/authorization/AccessAdminLib.sol +20 -3
  280. package/contracts/examples/flight/FlightLib.sol +41 -63
  281. package/contracts/examples/flight/FlightOracle.sol +4 -0
  282. package/contracts/examples/flight/FlightOracleAuthorization.sol +24 -5
  283. package/contracts/examples/flight/FlightProduct.sol +162 -128
  284. package/contracts/examples/flight/FlightProductAuthorization.sol +32 -8
  285. package/contracts/instance/InstanceAdmin.sol +0 -1
  286. package/contracts/instance/InstanceReader.sol +6 -0
  287. package/contracts/registry/RegistryAdmin.sol +7 -1
  288. package/contracts/registry/ReleaseAdmin.sol +8 -1
  289. package/contracts/shared/IAuthorizedComponent.sol +15 -0
  290. package/contracts/shared/IInstanceLinkedComponent.sol +2 -5
  291. package/contracts/shared/InstanceLinkedComponent.sol +2 -1
  292. package/package.json +1 -1
@@ -8,7 +8,6 @@ import {IAuthorization} from "../../authorization/IAuthorization.sol";
8
8
  import {IComponents} from "../../instance/module/IComponents.sol";
9
9
 
10
10
  import {Amount, AmountLib} from "../../type/Amount.sol";
11
- import {BasicProduct} from "../../product/BasicProduct.sol";
12
11
  import {ClaimId} from "../../type/ClaimId.sol";
13
12
  import {FeeLib} from "../../type/Fee.sol";
14
13
  import {FlightLib} from "./FlightLib.sol";
@@ -17,6 +16,7 @@ import {FlightOracle} from "./FlightOracle.sol";
17
16
  import {InstanceReader} from "../../instance/InstanceReader.sol";
18
17
  import {NftId, NftIdLib} from "../../type/NftId.sol";
19
18
  import {PayoutId} from "../../type/PayoutId.sol";
19
+ import {Product} from "../../product/Product.sol";
20
20
  import {ReferralLib} from "../../type/Referral.sol";
21
21
  import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
22
22
  import {RequestId} from "../../type/RequestId.sol";
@@ -27,16 +27,17 @@ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
27
27
 
28
28
  /// @dev FlightProduct implements the flight delay product.
29
29
  contract FlightProduct is
30
- BasicProduct
30
+ Product
31
31
  {
32
32
 
33
33
  event LogRequestFlightRatings(uint256 requestId, bytes32 carrierFlightNumber, uint256 departureTime, uint256 arrivalTime, bytes32 riskId);
34
34
  event LogRequestFlightStatus(uint256 requestId, uint256 arrivalTime, bytes32 carrierFlightNumber, bytes32 departureYearMonthDay);
35
35
  event LogPayoutTransferred(bytes32 bpKey, uint256 claimId, uint256 payoutId, uint256 amount);
36
36
  event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
37
+ event LogFlightPoliciesProcessed(RiskId riskId, uint8 payoutOption, uint256 policiesProcessed, uint256 policiesRemaining);
37
38
 
38
39
  // TODO convert error logs to custom errors
39
- event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
40
+ // event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
40
41
  event LogPolicyExpired(bytes32 bpKey);
41
42
 
42
43
  event LogErrorRiskInvalid(RequestId requestId, RiskId riskId);
@@ -85,41 +86,42 @@ contract FlightProduct is
85
86
  uint8[6] public WEIGHT_PATTERN = [0, 0, 0, 30, 50, 50];
86
87
  uint8 public constant MAX_WEIGHT = 50;
87
88
 
89
+ bool internal _testMode;
90
+
88
91
  // GIF V3 specifics
89
92
  NftId internal _defaultBundleNftId;
90
-
91
- // TODO add product (base contract) functions
92
- // - getOracleNftId(idx)
93
- // - getDistributionNftId()
94
- // - getPoolNftId()
95
- NftId internal _oracleNftId; // TODO refactor to getOracleNftId(0)
93
+ NftId internal _oracleNftId;
96
94
  // solhint-enable
97
95
 
98
- FlightMessageVerifier internal _flightMessageVerifier;
99
-
100
96
 
101
97
  struct FlightRisk {
102
98
  Str flightData; // example: "LX 180 ZRH BKK 20241104"
103
99
  Timestamp departureTime;
100
+ // this field contains static data required by the frontend and is not directly used by the product
101
+ string departureTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
104
102
  Timestamp arrivalTime;
103
+ // this field contains static data required by the frontend and is not directly used by the product
104
+ string arrivalTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
105
105
  Amount sumOfSumInsuredAmounts;
106
106
  // uint256 premiumMultiplier; // what is this? UFixed?
107
107
  // uint256 weight; // what is this? UFixed?
108
108
  bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
109
109
  int256 delayMinutes;
110
+ uint8 payoutOption;
111
+ Timestamp statusUpdatedAt;
110
112
  }
111
113
 
112
114
  struct ApplicationData {
113
115
  Str flightData;
114
116
  Timestamp departureTime;
117
+ string departureTimeLocal;
115
118
  Timestamp arrivalTime;
119
+ string arrivalTimeLocal;
116
120
  Amount premiumAmount;
117
121
  uint256[6] statistics;
118
- uint8 v;
119
- bytes32 r;
120
- bytes32 s;
121
122
  }
122
123
 
124
+
123
125
  struct PermitData {
124
126
  address owner;
125
127
  address spender;
@@ -135,8 +137,7 @@ contract FlightProduct is
135
137
  address registry,
136
138
  NftId instanceNftid,
137
139
  string memory componentName,
138
- IAuthorization authorization,
139
- FlightMessageVerifier messageVerifier
140
+ IAuthorization authorization
140
141
  )
141
142
  {
142
143
  address initialOwner = msg.sender;
@@ -147,8 +148,6 @@ contract FlightProduct is
147
148
  componentName,
148
149
  authorization,
149
150
  initialOwner);
150
-
151
- _flightMessageVerifier = messageVerifier;
152
151
  }
153
152
 
154
153
  //--- external functions ------------------------------------------------//
@@ -197,62 +196,37 @@ contract FlightProduct is
197
196
  )
198
197
  {
199
198
  // process permit data
200
- processPermit(permit);
199
+ _processPermit(permit);
201
200
 
202
201
  // create policy
203
202
  address policyHolder = permit.owner;
204
203
  (
205
204
  riskId,
206
205
  policyNftId
207
- ) = createPolicy(
206
+ ) = _createPolicy(
208
207
  policyHolder,
209
208
  application.flightData,
210
209
  application.departureTime,
210
+ application.departureTimeLocal,
211
211
  application.arrivalTime,
212
+ application.arrivalTimeLocal,
212
213
  application.premiumAmount,
213
214
  application.statistics);
214
- // application.v,
215
- // application.r,
216
- // application.s);
217
215
  }
218
216
 
219
217
 
220
- function processPermit(
221
- PermitData memory permit
222
- )
223
- public
224
- virtual
225
- restricted()
226
- {
227
- address tokenAddress = address(getToken());
228
-
229
- // process permit data
230
- ERC20Permit(tokenAddress).permit(
231
- permit.owner,
232
- permit.spender,
233
- permit.value,
234
- permit.deadline,
235
- permit.v,
236
- permit.r,
237
- permit.s);
238
- }
239
-
240
-
241
- function createPolicy(
218
+ function _createPolicy(
242
219
  address policyHolder,
243
220
  Str flightData,
244
221
  Timestamp departureTime,
222
+ string memory departureTimeLocal,
245
223
  Timestamp arrivalTime,
224
+ string memory arrivalTimeLocal,
246
225
  Amount premiumAmount,
247
226
  uint256[6] memory statistics
248
- // signature fields
249
- // uint8 v,
250
- // bytes32 r,
251
- // bytes32 s
252
227
  )
253
- public
228
+ internal
254
229
  virtual
255
- restricted()
256
230
  returns (
257
231
  RiskId riskId,
258
232
  NftId policyNftId
@@ -260,20 +234,20 @@ contract FlightProduct is
260
234
  {
261
235
  // checks
262
236
  // disabled for now - using rbac for security
263
- // FlightLib.checkApplicationDataAndSignature(
264
- // this,
265
- // flightData,
266
- // departureTime,
267
- // arrivalTime,
268
- // premiumAmount,
269
- // statistics,
270
- // v, r, s);
237
+ FlightLib.checkApplicationData(
238
+ this,
239
+ flightData,
240
+ departureTime,
241
+ arrivalTime,
242
+ premiumAmount);
271
243
 
272
244
  (riskId, policyNftId) = _prepareApplication(
273
245
  policyHolder,
274
246
  flightData,
275
247
  departureTime,
248
+ departureTimeLocal,
276
249
  arrivalTime,
250
+ arrivalTimeLocal,
277
251
  premiumAmount,
278
252
  statistics);
279
253
 
@@ -301,49 +275,6 @@ contract FlightProduct is
301
275
  }
302
276
 
303
277
 
304
- function _prepareApplication(
305
- address policyHolder,
306
- Str flightData,
307
- Timestamp departureTime,
308
- Timestamp arrivalTime,
309
- Amount premiumAmount,
310
- uint256[6] memory statistics
311
- )
312
- internal
313
- virtual
314
- returns (
315
- RiskId riskId,
316
- NftId policyNftId
317
- )
318
- {
319
- Amount[5] memory payoutAmounts;
320
- Amount sumInsuredAmount;
321
-
322
- (
323
- riskId,
324
- payoutAmounts,
325
- sumInsuredAmount
326
- ) = _createRiskAndPayoutAmounts(
327
- flightData,
328
- departureTime,
329
- arrivalTime,
330
- premiumAmount,
331
- statistics);
332
-
333
- policyNftId = _createApplication(
334
- policyHolder,
335
- riskId,
336
- sumInsuredAmount,
337
- premiumAmount,
338
- LIFETIME,
339
- _defaultBundleNftId,
340
- ReferralLib.zero(),
341
- abi.encode(
342
- premiumAmount,
343
- payoutAmounts)); // application data
344
- }
345
-
346
-
347
278
  /// @dev Callback for flight status oracle.
348
279
  /// Function may only be alled by oracle service.
349
280
  function flightStatusCallback(
@@ -387,9 +318,27 @@ contract FlightProduct is
387
318
  maxPoliciesToProcess);
388
319
  }
389
320
 
321
+
322
+ /// @dev Manual fallback function for product owner.
323
+ function processPayoutsAndClosePolicies(
324
+ RiskId riskId,
325
+ uint8 maxPoliciesToProcess
326
+ )
327
+ external
328
+ virtual
329
+ restricted()
330
+ onlyOwner()
331
+ {
332
+ _processPayoutsAndClosePolicies(
333
+ riskId,
334
+ maxPoliciesToProcess);
335
+ }
336
+
337
+
390
338
  //--- owner functions ---------------------------------------------------//
391
339
 
392
- /// @dev Call after product registration with the instance, when the product token/tokenhandler is available
340
+ /// @dev Call after product registration with the instance
341
+ /// when the product token/tokenhandler is available
393
342
  function completeSetup()
394
343
  external
395
344
  virtual
@@ -407,6 +356,8 @@ contract FlightProduct is
407
356
 
408
357
 
409
358
  function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
359
+ function setTestMode(bool testMode) external restricted() onlyOwner() { _testMode = testMode; }
360
+
410
361
  function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
411
362
  function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
412
363
  function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
@@ -414,7 +365,6 @@ contract FlightProduct is
414
365
 
415
366
  //--- view functions ----------------------------------------------------//
416
367
 
417
-
418
368
  function calculateNetPremium(
419
369
  Amount, // sumInsuredAmount: not used in this product
420
370
  RiskId, // riskId: not used in this product
@@ -430,31 +380,87 @@ contract FlightProduct is
430
380
  }
431
381
 
432
382
 
433
- function getFlightMessageVerifier()
434
- external
435
- view
436
- returns (FlightMessageVerifier)
383
+ function getOracleNftId() public view returns (NftId oracleNftId) { return _oracleNftId; }
384
+ function isTestMode() public view returns (bool) { return _testMode; }
385
+ function decodeFlightRiskData(bytes memory data) public pure returns (FlightRisk memory) { return abi.decode(data, (FlightRisk)); }
386
+
387
+ //--- internal functions ------------------------------------------------//
388
+
389
+
390
+ function _processPermit(
391
+ PermitData memory permit
392
+ )
393
+ internal
394
+ virtual
395
+ restricted()
437
396
  {
438
- return _flightMessageVerifier;
397
+ address tokenAddress = address(getToken());
398
+
399
+ // process permit data
400
+ ERC20Permit(tokenAddress).permit(
401
+ permit.owner,
402
+ permit.spender,
403
+ permit.value,
404
+ permit.deadline,
405
+ permit.v,
406
+ permit.r,
407
+ permit.s);
439
408
  }
440
409
 
441
410
 
442
- function getOracleNftId()
443
- public
444
- view
445
- returns (NftId oracleNftId)
446
- {
447
- return _oracleNftId;
448
- }
411
+ function _prepareApplication(
412
+ address policyHolder,
413
+ Str flightData,
414
+ Timestamp departureTime,
415
+ string memory departureTimeLocal,
416
+ Timestamp arrivalTime,
417
+ string memory arrivalTimeLocal,
418
+ Amount premiumAmount,
419
+ uint256[6] memory statistics
420
+ )
421
+ internal
422
+ virtual
423
+ returns (
424
+ RiskId riskId,
425
+ NftId policyNftId
426
+ )
427
+ {
428
+ Amount[5] memory payoutAmounts;
429
+ Amount sumInsuredAmount;
449
430
 
431
+ (
432
+ riskId,
433
+ payoutAmounts,
434
+ sumInsuredAmount
435
+ ) = _createRiskAndPayoutAmounts(
436
+ flightData,
437
+ departureTime,
438
+ departureTimeLocal,
439
+ arrivalTime,
440
+ arrivalTimeLocal,
441
+ premiumAmount,
442
+ statistics);
450
443
 
451
- //--- internal functions ------------------------------------------------//
444
+ policyNftId = _createApplication(
445
+ policyHolder,
446
+ riskId,
447
+ sumInsuredAmount,
448
+ premiumAmount,
449
+ LIFETIME,
450
+ _defaultBundleNftId,
451
+ ReferralLib.zero(),
452
+ abi.encode(
453
+ premiumAmount,
454
+ payoutAmounts)); // application data
455
+ }
452
456
 
453
457
 
454
458
  function _createRiskAndPayoutAmounts(
455
459
  Str flightData,
456
460
  Timestamp departureTime,
461
+ string memory departureTimeLocal,
457
462
  Timestamp arrivalTime,
463
+ string memory arrivalTimeLocal,
458
464
  Amount premiumAmount,
459
465
  uint256[6] memory statistics
460
466
  )
@@ -480,7 +486,9 @@ contract FlightProduct is
480
486
  riskId = _checkAndUpdateFlightRisk(
481
487
  flightData,
482
488
  departureTime,
489
+ departureTimeLocal,
483
490
  arrivalTime,
491
+ arrivalTimeLocal,
484
492
  sumInsuredAmount,
485
493
  weight);
486
494
  }
@@ -489,7 +497,9 @@ contract FlightProduct is
489
497
  function _checkAndUpdateFlightRisk(
490
498
  Str flightData,
491
499
  Timestamp departureTime,
500
+ string memory departureTimeLocal,
492
501
  Timestamp arrivalTime,
502
+ string memory arrivalTimeLocal,
493
503
  Amount sumInsuredAmount,
494
504
  uint256 weight
495
505
  )
@@ -504,7 +514,9 @@ contract FlightProduct is
504
514
  getNftId(),
505
515
  flightData,
506
516
  departureTime,
507
- arrivalTime);
517
+ departureTimeLocal,
518
+ arrivalTime,
519
+ arrivalTimeLocal);
508
520
 
509
521
  // create risk, if new
510
522
  if (!exists) {
@@ -541,16 +553,25 @@ contract FlightProduct is
541
553
  ) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
542
554
 
543
555
  if (!exists) {
556
+ // TODO decide to switch from log to error
544
557
  emit LogErrorRiskInvalid(requestId, riskId);
545
558
  return;
559
+ } else {
560
+ // update status, if not yet set
561
+ if (flightRisk.statusUpdatedAt.eqz()) {
562
+ flightRisk.status = status;
563
+ flightRisk.delayMinutes = delayMinutes;
564
+ flightRisk.payoutOption = FlightLib.checkAndGetPayoutOption(
565
+ requestId, riskId, status, delayMinutes);
566
+ flightRisk.statusUpdatedAt = TimestampLib.current();
567
+
568
+ _updateRisk(riskId, abi.encode(flightRisk));
569
+ }
570
+ // TODO revert in else case?
546
571
  }
547
572
 
548
- uint8 payoutOption = FlightLib.checkAndGetPayoutOption(
549
- requestId, riskId, status, delayMinutes);
550
-
551
- _processPayoutsAndClosePolicies(
573
+ (,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
552
574
  riskId,
553
- payoutOption,
554
575
  maxPoliciesToProcess);
555
576
 
556
577
  // logging
@@ -558,22 +579,32 @@ contract FlightProduct is
558
579
  }
559
580
 
560
581
 
561
- // REMARK caller responsible to check that risk exists.
562
582
  function _processPayoutsAndClosePolicies(
563
583
  RiskId riskId,
564
- uint8 payoutOption,
565
584
  uint8 maxPoliciesToProcess
566
585
  )
567
586
  internal
568
587
  virtual
588
+ returns (
589
+ bool riskExists,
590
+ bool statusAvailable,
591
+ uint8 payoutOption
592
+ )
569
593
  {
570
594
  // determine numbers of policies to process
571
595
  InstanceReader reader = _getInstanceReader();
596
+ (riskExists, statusAvailable, payoutOption) = FlightLib.getPayoutOption(reader, getNftId(), riskId);
597
+
598
+ // return with default values if risk does not exist or status is not yet available
599
+ if (!riskExists || !statusAvailable) {
600
+ return (riskExists, statusAvailable, payoutOption);
601
+ }
602
+
572
603
  uint256 policiesToProcess = reader.policiesForRisk(riskId);
573
- policiesToProcess = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
604
+ uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
574
605
 
575
606
  // go trough policies
576
- for (uint256 i = 0; i < policiesToProcess; i++) {
607
+ for (uint256 i = 0; i < policiesProcessed; i++) {
577
608
  NftId policyNftId = reader.getPolicyForRisk(riskId, i);
578
609
 
579
610
  // create payout (if any)
@@ -592,6 +623,9 @@ contract FlightProduct is
592
623
  _expire(policyNftId, TimestampLib.current());
593
624
  _close(policyNftId);
594
625
  }
626
+
627
+ // logging
628
+ emit LogFlightPoliciesProcessed(riskId, payoutOption, policiesProcessed, policiesToProcess - policiesProcessed);
595
629
  }
596
630
 
597
631
 
@@ -622,7 +656,7 @@ contract FlightProduct is
622
656
  internal
623
657
  initializer
624
658
  {
625
- _initializeBasicProduct(
659
+ __Product_init(
626
660
  registry,
627
661
  instanceNftId,
628
662
  componentName,
@@ -3,19 +3,42 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IAccess} from "../../../contracts/authorization/IAccess.sol";
5
5
 
6
+ import {AccessAdminLib} from "../../authorization/AccessAdminLib.sol";
6
7
  import {BasicProductAuthorization} from "../../product/BasicProductAuthorization.sol";
7
8
  import {FlightProduct} from "./FlightProduct.sol";
8
9
  import {ORACLE} from "../../../contracts/type/ObjectType.sol";
9
- import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
10
+ import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
10
11
 
11
12
 
12
13
  contract FlightProductAuthorization
13
14
  is BasicProductAuthorization
14
15
  {
15
16
 
16
- constructor(string memory poolName)
17
- BasicProductAuthorization(poolName)
18
- {}
17
+ uint64 public constant STATISTICS_PROVIDER_ROLE_IDX = 1; // 1st custom role for flight product
18
+ string public constant STATISTICS_PROVIDER_ROLE_NAME = "StatisticsProviderRole";
19
+ RoleId public STATISTICS_PROVIDER_ROLE;
20
+
21
+
22
+ constructor(string memory productName)
23
+ BasicProductAuthorization(productName)
24
+ { }
25
+
26
+
27
+ function _setupRoles()
28
+ internal
29
+ override
30
+ {
31
+ STATISTICS_PROVIDER_ROLE = AccessAdminLib.getCustomRoleId(STATISTICS_PROVIDER_ROLE_IDX);
32
+
33
+ _addRole(
34
+ STATISTICS_PROVIDER_ROLE,
35
+ AccessAdminLib.roleInfo(
36
+ ADMIN_ROLE(),
37
+ TargetType.Custom,
38
+ 1, // max member count special case: instance nft owner is sole role owner
39
+ STATISTICS_PROVIDER_ROLE_NAME));
40
+ }
41
+
19
42
 
20
43
  function _setupTargetAuthorizations()
21
44
  internal
@@ -28,13 +51,14 @@ contract FlightProductAuthorization
28
51
  functions = _authorizeForTarget(getMainTargetName(), getServiceRole(ORACLE()));
29
52
  _authorize(functions, FlightProduct.flightStatusCallback.selector, "flightStatusCallback");
30
53
 
31
- // authorize public role (open access to any account, only allows to lock target)
32
- functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
33
- _authorize(functions, FlightProduct.createPolicy.selector, "createPolicy");
54
+ // authorize statistics provider role
55
+ functions = _authorizeForTarget(getMainTargetName(), STATISTICS_PROVIDER_ROLE);
34
56
  _authorize(functions, FlightProduct.createPolicyWithPermit.selector, "createPolicyWithPermit");
35
57
 
36
- // TODO: only owner
58
+ // authorize public role (additional authz via onlyOwner)
59
+ functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
37
60
  _authorize(functions, FlightProduct.processFlightStatus.selector, "processFlightStatus");
61
+ _authorize(functions, FlightProduct.processPayoutsAndClosePolicies.selector, "processPayoutsAndClosePolicies");
38
62
  _authorize(functions, FlightProduct.completeSetup.selector, "completeSetup");
39
63
  _authorize(functions, FlightProduct.setDefaultBundle.selector, "setDefaultBundle");
40
64
  _authorize(functions, FlightProduct.approveTokenHandler.selector, "approveTokenHandler");
@@ -130,7 +130,6 @@ contract InstanceAdmin is
130
130
  _createTarget(target, name, TargetType.Instance, true);
131
131
  }
132
132
 
133
-
134
133
  /// @dev Initializes the authorization for the specified component.
135
134
  /// Important: The component MUST be registered.
136
135
  function initializeComponentAuthorization(
@@ -466,6 +466,12 @@ contract InstanceReader {
466
466
  }
467
467
 
468
468
 
469
+ /// @dev Returns the role ID for the given index.
470
+ function getRoleForName(string memory name) public view returns (RoleId roleId, bool exists) {
471
+ return _instanceAdmin.getRoleForName(name);
472
+ }
473
+
474
+
469
475
  /// @dev Returns the role ID for the instance owner role.
470
476
  /// This role may be used as a "root" admin role for other custom roles defined for this instance.
471
477
  function getInstanceOwnerRole() public pure returns (RoleId roleId) {
@@ -85,7 +85,13 @@ contract RegistryAdmin is
85
85
  registry,
86
86
  release);
87
87
 
88
- _checkAuthorization(authorization, REGISTRY(), release, false, true);
88
+ AccessAdminLib.checkAuthorization(
89
+ address(_authorization),
90
+ authorization,
91
+ REGISTRY(),
92
+ release,
93
+ false, // expectServiceAuthorization
94
+ false); // checkAlreadyInitialized);
89
95
 
90
96
  _registry = registry;
91
97
  _authorization = IAuthorization(authorization);
@@ -72,7 +72,14 @@ contract ReleaseAdmin is
72
72
  release);
73
73
 
74
74
  IServiceAuthorization serviceAuthorization = IServiceAuthorization(authorization);
75
- _checkAuthorization(address(serviceAuthorization), RELEASE(), release, true, true);
75
+ AccessAdminLib.checkAuthorization(
76
+ address(_authorization),
77
+ address(serviceAuthorization),
78
+ RELEASE(),
79
+ release,
80
+ true, // expectServiceAuthorization
81
+ true); // checkAlreadyInitialized);
82
+
76
83
  _serviceAuthorization = serviceAuthorization;
77
84
 
78
85
  // link nft ownability to registry
@@ -0,0 +1,15 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IComponent} from "../shared/IComponent.sol";
5
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
6
+
7
+ /// @dev component base class
8
+ /// component examples are product, distribution, pool and oracle
9
+ interface IAuthorizedComponent is
10
+ IComponent
11
+ {
12
+ /// @dev returns the initial component authorization specification.
13
+ function getAuthorization() external view returns (IAuthorization authorization);
14
+
15
+ }
@@ -2,7 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
- import {IComponent} from "../shared/IComponent.sol";
5
+ import {IAuthorizedComponent} from "../shared/IAuthorizedComponent.sol";
6
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
7
7
  import {IInstance} from "../instance/IInstance.sol";
8
8
  import {NftId} from "../type/NftId.sol";
@@ -11,7 +11,7 @@ import {ObjectType} from "../type/ObjectType.sol";
11
11
  /// @dev component base class
12
12
  /// component examples are product, distribution, pool and oracle
13
13
  interface IInstanceLinkedComponent is
14
- IComponent
14
+ IAuthorizedComponent
15
15
  {
16
16
  error ErrorInstanceLinkedComponentTypeMismatch(ObjectType requiredType, ObjectType objectType);
17
17
  error ErrorInstanceLinkedComponentNotProduct(NftId nftId, ObjectType objectType);
@@ -24,7 +24,4 @@ interface IInstanceLinkedComponent is
24
24
  /// @dev defines the instance to which this component is linked to
25
25
  function getInstance() external view returns (IInstance instance);
26
26
 
27
- /// @dev returns the initial component authorization specification.
28
- function getAuthorization() external view returns (IAuthorization authorization);
29
-
30
27
  }