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

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 (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
  }