@etherisc/gif-next 0.0.2-f13c010-035 → 0.0.2-f13d67f-541

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 (560) hide show
  1. package/README.md +90 -317
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +810 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +729 -287
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +438 -35
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +560 -220
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +191 -21
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +132 -300
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +427 -53
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +64 -173
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +585 -231
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +190 -78
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -135
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +401 -78
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +160 -224
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +426 -52
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +308 -337
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +426 -52
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  50. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +408 -0
  51. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  52. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  53. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +849 -0
  55. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  56. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  57. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  58. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
  59. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  60. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2185 -0
  61. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +844 -0
  63. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  64. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  65. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  66. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  68. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +215 -257
  69. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
  71. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  72. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -165
  73. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  74. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +278 -233
  75. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  78. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +946 -466
  79. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
  81. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  82. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
  83. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  84. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  85. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  86. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  87. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  88. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +551 -50
  89. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +417 -17
  91. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  92. package/artifacts/contracts/instance/Instance.sol/Instance.json +615 -105
  93. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  94. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1121 -374
  95. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  96. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +379 -68
  97. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  98. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1127 -557
  99. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +434 -81
  101. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +119 -49
  103. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  104. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1286 -1925
  105. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  106. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  107. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  108. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  109. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  110. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  111. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  112. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  113. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  114. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  115. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  116. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  117. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  118. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  120. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  121. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  122. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  123. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  124. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  125. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  126. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  127. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +83 -175
  128. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  129. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +425 -54
  130. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  131. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  132. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +48 -74
  133. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  134. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +56 -3
  135. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  136. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -111
  137. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  138. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +157 -81
  139. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +154 -46
  141. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  142. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +106 -173
  143. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  144. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +426 -52
  145. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  146. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +317 -344
  147. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -92
  149. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  150. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +219 -146
  151. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  152. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +63 -128
  153. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  154. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +380 -214
  155. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  156. package/artifacts/contracts/pool/Pool.sol/Pool.json +76 -159
  157. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  158. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  159. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  160. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +621 -413
  161. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +186 -66
  163. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  164. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +327 -62
  165. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  166. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +143 -43
  167. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  168. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +199 -223
  169. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  170. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +426 -52
  171. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  172. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +294 -189
  173. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +151 -83
  175. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  176. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +268 -10
  177. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  178. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +181 -19
  179. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  180. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +167 -56
  181. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  182. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +77 -3
  183. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  184. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +175 -181
  185. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  186. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +258 -22
  187. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  188. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +296 -194
  189. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  190. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  191. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  192. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +169 -77
  193. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  194. package/artifacts/contracts/product/PricingService.sol/PricingService.json +139 -114
  195. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  196. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +131 -59
  197. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  198. package/artifacts/contracts/product/Product.sol/Product.json +193 -217
  199. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  200. package/artifacts/contracts/product/RiskService.sol/RiskService.json +338 -87
  201. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  202. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +141 -41
  203. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  205. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +78 -19
  207. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  208. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +56 -3
  209. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  210. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  211. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  212. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  213. package/artifacts/contracts/registry/Registry.sol/Registry.json +116 -57
  214. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  215. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +848 -479
  216. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  217. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  218. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  219. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +89 -37
  220. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  221. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +119 -39
  222. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  223. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -0
  224. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  225. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  226. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  227. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +398 -64
  228. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  229. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
  230. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  231. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  232. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Component.sol/Component.json +66 -96
  234. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  235. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +308 -542
  236. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  237. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +155 -83
  238. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  239. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +544 -4
  240. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  241. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  242. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  243. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  244. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  245. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  246. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +48 -60
  248. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +171 -356
  250. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +48 -74
  252. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  253. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  254. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  255. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  256. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  257. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +139 -1
  258. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  259. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  260. package/artifacts/contracts/shared/IService.sol/IService.json +56 -3
  261. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  262. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  263. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  264. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +66 -110
  265. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  266. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  267. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  268. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  269. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  270. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  271. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  272. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  273. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -62
  274. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  275. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  276. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  277. package/artifacts/contracts/shared/Service.sol/Service.json +51 -11
  278. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  279. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +289 -112
  280. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  281. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  282. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  283. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +70 -30
  284. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  285. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1446 -164
  286. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  287. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +214 -110
  288. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  289. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  290. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  291. package/artifacts/contracts/staking/Staking.sol/Staking.json +1583 -296
  292. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  294. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  295. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +160 -69
  296. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  297. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
  298. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  299. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +257 -162
  300. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  301. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +122 -46
  302. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  303. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1632 -818
  304. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  305. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  306. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  307. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +160 -88
  308. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  309. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
  311. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
  313. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  314. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  315. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  317. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  319. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  321. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  323. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  324. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  325. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  327. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  328. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  329. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +49 -50
  331. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  333. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  335. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  337. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
  338. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
  339. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  341. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  343. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +64 -2
  345. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  346. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  347. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  348. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  349. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  350. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  351. package/artifacts/contracts/type/String.sol/StrLib.json +69 -2
  352. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  353. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
  354. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  355. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
  356. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  357. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  358. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  359. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  360. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  361. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  362. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  363. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +95 -25
  364. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  365. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  366. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  367. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  368. package/contracts/accounting/AccountingService.sol +274 -0
  369. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  370. package/contracts/accounting/IAccountingService.sol +47 -0
  371. package/contracts/authorization/AccessAdmin.sol +389 -306
  372. package/contracts/authorization/AccessAdminLib.sol +678 -0
  373. package/contracts/authorization/AccessManagerCloneable.sol +128 -4
  374. package/contracts/authorization/Authorization.sol +161 -260
  375. package/contracts/authorization/IAccess.sol +29 -12
  376. package/contracts/authorization/IAccessAdmin.sol +89 -84
  377. package/contracts/authorization/IAuthorization.sol +9 -43
  378. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  379. package/contracts/authorization/ServiceAuthorization.sol +228 -34
  380. package/contracts/distribution/BasicDistribution.sol +19 -18
  381. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  382. package/contracts/distribution/Distribution.sol +45 -85
  383. package/contracts/distribution/DistributionService.sol +192 -99
  384. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  385. package/contracts/distribution/IDistributionComponent.sol +3 -10
  386. package/contracts/distribution/IDistributionService.sol +38 -24
  387. package/contracts/examples/fire/FirePool.sol +21 -8
  388. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  389. package/contracts/examples/fire/FireProduct.sol +38 -20
  390. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  391. package/contracts/examples/flight/FlightLib.sol +279 -0
  392. package/contracts/examples/flight/FlightOracle.sol +168 -0
  393. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  394. package/contracts/examples/flight/FlightPool.sol +89 -0
  395. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  396. package/contracts/examples/flight/FlightProduct.sol +470 -0
  397. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  398. package/contracts/examples/flight/FlightUSD.sol +26 -0
  399. package/contracts/examples/flight/originalV1.sol +396 -0
  400. package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
  401. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  402. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  403. package/contracts/examples/unpermissioned/SimplePool.sol +32 -6
  404. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  405. package/contracts/examples/unpermissioned/SimpleProduct.sol +132 -46
  406. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  407. package/contracts/instance/BaseStore.sol +93 -0
  408. package/contracts/instance/BundleSet.sol +42 -38
  409. package/contracts/instance/IBaseStore.sol +37 -0
  410. package/contracts/instance/IInstance.sol +109 -19
  411. package/contracts/instance/IInstanceService.sol +61 -14
  412. package/contracts/instance/Instance.sol +184 -65
  413. package/contracts/instance/InstanceAdmin.sol +221 -193
  414. package/contracts/instance/InstanceAuthorizationV3.sol +153 -72
  415. package/contracts/instance/InstanceReader.sol +447 -314
  416. package/contracts/instance/InstanceService.sol +315 -214
  417. package/contracts/instance/InstanceServiceManager.sol +1 -1
  418. package/contracts/instance/InstanceStore.sol +152 -116
  419. package/contracts/instance/ProductStore.sol +290 -0
  420. package/contracts/instance/RiskSet.sol +126 -0
  421. package/contracts/instance/TargetNames.sol +10 -0
  422. package/contracts/instance/base/BalanceStore.sol +4 -6
  423. package/contracts/instance/base/ObjectCounter.sol +1 -2
  424. package/contracts/instance/base/ObjectLifecycle.sol +6 -8
  425. package/contracts/instance/base/ObjectSet.sol +31 -33
  426. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  427. package/contracts/instance/module/IBundle.sol +6 -5
  428. package/contracts/instance/module/IComponents.sol +19 -10
  429. package/contracts/instance/module/IDistribution.sol +21 -8
  430. package/contracts/instance/module/IPolicy.sol +28 -7
  431. package/contracts/instance/module/IRisk.sol +5 -0
  432. package/contracts/oracle/BasicOracle.sol +3 -6
  433. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  434. package/contracts/oracle/IOracle.sol +9 -4
  435. package/contracts/oracle/IOracleService.sol +12 -12
  436. package/contracts/oracle/Oracle.sol +5 -9
  437. package/contracts/oracle/OracleService.sol +98 -79
  438. package/contracts/oracle/OracleServiceManager.sol +1 -1
  439. package/contracts/pool/BasicPool.sol +26 -19
  440. package/contracts/pool/BasicPoolAuthorization.sol +34 -10
  441. package/contracts/pool/BundleService.sol +75 -182
  442. package/contracts/pool/BundleServiceManager.sol +1 -1
  443. package/contracts/pool/IBundleService.sol +28 -55
  444. package/contracts/pool/IPoolComponent.sol +1 -7
  445. package/contracts/pool/IPoolService.sol +65 -62
  446. package/contracts/pool/Pool.sol +111 -115
  447. package/contracts/pool/PoolLib.sol +341 -0
  448. package/contracts/pool/PoolService.sol +299 -229
  449. package/contracts/pool/PoolServiceManager.sol +1 -1
  450. package/contracts/product/ApplicationService.sol +93 -25
  451. package/contracts/product/ApplicationServiceManager.sol +1 -1
  452. package/contracts/product/BasicProduct.sol +10 -15
  453. package/contracts/product/BasicProductAuthorization.sol +33 -11
  454. package/contracts/product/ClaimService.sol +221 -207
  455. package/contracts/product/ClaimServiceManager.sol +1 -1
  456. package/contracts/product/IApplicationService.sol +28 -3
  457. package/contracts/product/IClaimService.sol +18 -5
  458. package/contracts/product/IPolicyService.sol +34 -12
  459. package/contracts/product/IPricingService.sol +1 -0
  460. package/contracts/product/IProductComponent.sol +4 -1
  461. package/contracts/product/IRiskService.sol +25 -10
  462. package/contracts/product/PolicyService.sol +260 -306
  463. package/contracts/product/PolicyServiceLib.sol +139 -0
  464. package/contracts/product/PolicyServiceManager.sol +1 -1
  465. package/contracts/product/PricingService.sol +52 -46
  466. package/contracts/product/PricingServiceManager.sol +3 -3
  467. package/contracts/product/Product.sol +106 -70
  468. package/contracts/product/RiskService.sol +130 -37
  469. package/contracts/product/RiskServiceManager.sol +1 -1
  470. package/contracts/registry/ChainNft.sol +4 -2
  471. package/contracts/registry/IRegistry.sol +25 -24
  472. package/contracts/registry/IRelease.sol +29 -0
  473. package/contracts/registry/Registry.sol +31 -12
  474. package/contracts/registry/RegistryAdmin.sol +94 -369
  475. package/contracts/registry/RegistryAuthorization.sol +337 -0
  476. package/contracts/registry/RegistryService.sol +4 -4
  477. package/contracts/registry/RegistryServiceManager.sol +1 -1
  478. package/contracts/registry/ReleaseAdmin.sol +199 -0
  479. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  480. package/contracts/registry/ReleaseRegistry.sol +158 -134
  481. package/contracts/registry/ServiceAuthorizationV3.sol +200 -52
  482. package/contracts/registry/TokenRegistry.sol +61 -59
  483. package/contracts/shared/Component.sol +58 -119
  484. package/contracts/shared/ComponentService.sol +400 -395
  485. package/contracts/shared/ComponentServiceManager.sol +1 -1
  486. package/contracts/shared/ContractLib.sol +277 -3
  487. package/contracts/shared/IComponent.sol +2 -18
  488. package/contracts/shared/IComponentService.sol +28 -38
  489. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  490. package/contracts/shared/INftOwnable.sol +2 -0
  491. package/contracts/shared/IRegisterable.sol +15 -5
  492. package/contracts/shared/IService.sol +3 -5
  493. package/contracts/shared/InitializableERC165.sol +9 -1
  494. package/contracts/shared/InstanceLinkedComponent.sol +63 -44
  495. package/contracts/shared/NftOwnable.sol +8 -6
  496. package/contracts/shared/PolicyHolder.sol +4 -3
  497. package/contracts/shared/Registerable.sol +41 -20
  498. package/contracts/shared/RegistryLinked.sol +7 -13
  499. package/contracts/shared/Service.sol +13 -30
  500. package/contracts/shared/TokenHandler.sol +264 -105
  501. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  502. package/contracts/staking/IStaking.sol +270 -72
  503. package/contracts/staking/IStakingService.sol +45 -75
  504. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  505. package/contracts/staking/Staking.sol +522 -222
  506. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
  507. package/contracts/staking/StakingManager.sol +4 -3
  508. package/contracts/staking/StakingReader.sol +58 -77
  509. package/contracts/staking/StakingService.sol +62 -148
  510. package/contracts/staking/StakingServiceManager.sol +6 -4
  511. package/contracts/staking/StakingStore.sol +1093 -330
  512. package/contracts/staking/TargetHandler.sol +132 -0
  513. package/contracts/staking/TargetManagerLib.sol +69 -46
  514. package/contracts/type/Amount.sol +4 -0
  515. package/contracts/type/Blocknumber.sol +17 -22
  516. package/contracts/type/ChainId.sol +101 -0
  517. package/contracts/type/Fee.sol +8 -8
  518. package/contracts/type/Key32.sol +2 -2
  519. package/contracts/type/Key32Set.sol +62 -0
  520. package/contracts/type/NftId.sol +6 -0
  521. package/contracts/type/ObjectType.sol +70 -68
  522. package/contracts/type/Referral.sol +6 -0
  523. package/contracts/type/RequestIdSet.sol +62 -0
  524. package/contracts/type/RiskId.sol +26 -8
  525. package/contracts/type/RoleId.sol +63 -45
  526. package/contracts/type/Seconds.sol +23 -0
  527. package/contracts/type/Selector.sol +5 -0
  528. package/contracts/type/String.sol +42 -0
  529. package/contracts/type/Timestamp.sol +14 -8
  530. package/contracts/type/UFixed.sol +35 -127
  531. package/contracts/type/Version.sol +54 -5
  532. package/contracts/upgradeability/IVersionable.sol +3 -0
  533. package/contracts/upgradeability/ProxyManager.sol +27 -13
  534. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  535. package/contracts/upgradeability/Versionable.sol +6 -3
  536. package/package.json +4 -4
  537. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  538. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  539. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  540. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  541. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
  542. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
  543. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  544. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
  545. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  546. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  547. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
  548. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  549. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  550. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  551. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  552. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  553. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  554. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  555. package/contracts/instance/module/IAccess.sol +0 -46
  556. package/contracts/shared/ComponentServiceHelperLib.sol +0 -118
  557. package/contracts/shared/ComponentVerifyingService.sol +0 -126
  558. package/contracts/shared/IKeyValueStore.sol +0 -54
  559. package/contracts/shared/KeyValueStore.sol +0 -131
  560. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -1,22 +1,24 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount} from "../../type/Amount.sol";
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount, AmountLib} from "../../type/Amount.sol";
5
7
  import {BasicPool} from "../../pool/BasicPool.sol";
6
8
  import {Fee} from "../../type/Fee.sol";
7
9
  import {IAuthorization} from "../../authorization/IAuthorization.sol";
10
+ import {IComponents} from "../../instance/module/IComponents.sol";
8
11
  import {NftId} from "../../type/NftId.sol";
9
12
  import {Seconds} from "../../type/Timestamp.sol";
13
+ import {UFixed, UFixedLib} from "../../type/UFixed.sol";
10
14
 
11
15
  contract FirePool is
12
16
  BasicPool
13
- {
14
-
17
+ {
15
18
  constructor(
16
19
  address registry,
17
20
  NftId fireProductNftId,
18
21
  string memory componentName,
19
- address token,
20
22
  IAuthorization authorization
21
23
  )
22
24
  {
@@ -25,7 +27,15 @@ contract FirePool is
25
27
  registry,
26
28
  fireProductNftId,
27
29
  componentName,
28
- token,
30
+ IComponents.PoolInfo({
31
+ maxBalanceAmount: AmountLib.max(),
32
+ isInterceptingBundleTransfers: false,
33
+ isProcessingConfirmedClaims: false,
34
+ isExternallyManaged: false,
35
+ isVerifyingApplications: false,
36
+ collateralizationLevel: UFixedLib.one(),
37
+ retentionLevel: UFixedLib.one()
38
+ }),
29
39
  authorization,
30
40
  initialOwner);
31
41
  }
@@ -34,7 +44,7 @@ contract FirePool is
34
44
  address registry,
35
45
  NftId fireProductNftId,
36
46
  string memory componentName,
37
- address token,
47
+ IComponents.PoolInfo memory poolInfo,
38
48
  IAuthorization authorization,
39
49
  address initialOwner
40
50
  )
@@ -44,9 +54,9 @@ contract FirePool is
44
54
  _initializeBasicPool(
45
55
  registry,
46
56
  fireProductNftId,
47
- authorization,
48
- token,
49
57
  componentName,
58
+ poolInfo,
59
+ authorization,
50
60
  initialOwner);
51
61
  }
52
62
 
@@ -70,4 +80,7 @@ contract FirePool is
70
80
  netStakedAmount = _stake(bundleNftId, initialAmount);
71
81
  }
72
82
 
83
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
84
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
85
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
73
86
  }
@@ -25,8 +25,9 @@ contract FirePoolAuthorization
25
25
  IAccess.FunctionInfo[] storage functions;
26
26
 
27
27
  // authorize public role (open access to any account, only allows to lock target)
28
- functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
28
+ functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
29
29
  // TODO: FirePool.createBundle must require a custom role (e.g. INVESTOR) instead of PUBLIC_ROLE
30
+ _authorize(functions, FirePool.approveTokenHandler.selector, "approveTokenHandler");
30
31
  _authorize(functions, FirePool.createBundle.selector, "createBundle");
31
32
  }
32
33
 
@@ -1,14 +1,18 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
4
6
  import {ACTIVE, PAUSED} from "../../type/StateId.sol";
5
7
  import {Amount, AmountLib} from "../../type/Amount.sol";
6
8
  import {BasicProduct} from "../../product/BasicProduct.sol";
7
9
  import {ClaimId} from "../../type/ClaimId.sol";
8
10
  import {DamageLevel, DAMAGE_SMALL, DAMAGE_MEDIUM, DAMAGE_LARGE} from "./DamageLevel.sol";
11
+ import {FeeLib} from "../../type/Fee.sol";
9
12
  import {IAuthorization} from "../../authorization/IAuthorization.sol";
13
+ import {IComponents} from "../../instance/module/IComponents.sol";
10
14
  import {IPolicy} from "../../instance/module/IPolicy.sol";
11
- import {NftId} from "../../type/NftId.sol";
15
+ import {NftId, NftIdLib} from "../../type/NftId.sol";
12
16
  import {PayoutId} from "../../type/PayoutId.sol";
13
17
  import {POLICY, BUNDLE} from "../../type/ObjectType.sol";
14
18
  import {ReferralLib} from "../../type/Referral.sol";
@@ -64,7 +68,6 @@ contract FireProduct is
64
68
  address registry,
65
69
  NftId instanceNftid,
66
70
  string memory componentName,
67
- address token,
68
71
  IAuthorization authorization
69
72
  )
70
73
  {
@@ -74,16 +77,14 @@ contract FireProduct is
74
77
  registry,
75
78
  instanceNftid,
76
79
  componentName,
77
- token,
78
80
  authorization,
79
81
  initialOwner);
80
82
  }
81
83
 
82
84
  function _initialize(
83
85
  address registry,
84
- NftId instanceNftid,
86
+ NftId instanceNftId,
85
87
  string memory componentName,
86
- address token,
87
88
  IAuthorization authorization,
88
89
  address initialOwner
89
90
  )
@@ -92,14 +93,29 @@ contract FireProduct is
92
93
  {
93
94
  _initializeBasicProduct(
94
95
  registry,
95
- instanceNftid,
96
- authorization,
97
- initialOwner,
96
+ instanceNftId,
98
97
  componentName,
99
- token,
100
- false, // is interceptor
101
- false, // has distribution
102
- 0); // number of oracles
98
+ IComponents.ProductInfo({
99
+ isProcessingFundedClaims: false,
100
+ isInterceptingPolicyTransfers: false,
101
+ hasDistribution: false,
102
+ expectedNumberOfOracles: 0,
103
+ numberOfOracles: 0,
104
+ poolNftId: NftIdLib.zero(),
105
+ distributionNftId: NftIdLib.zero(),
106
+ oracleNftId: new NftId[](0)
107
+ }),
108
+ IComponents.FeeInfo({
109
+ productFee: FeeLib.zero(),
110
+ processingFee: FeeLib.zero(),
111
+ distributionFee: FeeLib.zero(),
112
+ minDistributionOwnerFee: FeeLib.zero(),
113
+ poolFee: FeeLib.zero(),
114
+ stakingFee: FeeLib.zero(),
115
+ performanceFee: FeeLib.zero()
116
+ }),
117
+ authorization,
118
+ initialOwner); // number of oracles
103
119
  }
104
120
 
105
121
  function cities() public view returns (uint256) {
@@ -124,9 +140,9 @@ contract FireProduct is
124
140
  revert ErrorFireProductCityUnknown(cityName);
125
141
  }
126
142
 
127
- _updateRiskState(
143
+ _setRiskLocked(
128
144
  _riskMapping[cityName],
129
- PAUSED()
145
+ true
130
146
  );
131
147
  }
132
148
 
@@ -140,9 +156,9 @@ contract FireProduct is
140
156
  revert ErrorFireProductCityUnknown(cityName);
141
157
  }
142
158
 
143
- _updateRiskState(
159
+ _setRiskLocked(
144
160
  _riskMapping[cityName],
145
- ACTIVE()
161
+ false
146
162
  );
147
163
  }
148
164
 
@@ -232,8 +248,7 @@ contract FireProduct is
232
248
  return _riskMapping[cityName];
233
249
  }
234
250
  _cities.push(cityName);
235
- risk = RiskIdLib.toRiskId(cityName);
236
- _createRisk(risk, "");
251
+ risk = _createRisk(bytes32(abi.encodePacked(cityName)), "");
237
252
  _riskMapping[cityName] = risk;
238
253
  }
239
254
 
@@ -248,7 +263,7 @@ contract FireProduct is
248
263
  onlyOwner()
249
264
  onlyNftOfType(policyNftId, POLICY())
250
265
  {
251
- _createPolicy(policyNftId, activateAt);
266
+ _createPolicy(policyNftId, activateAt, AmountLib.max());
252
267
  _collectPremium(policyNftId, activateAt);
253
268
  }
254
269
 
@@ -301,7 +316,7 @@ contract FireProduct is
301
316
  revert ErrorFireProductCityUnknown(cityName);
302
317
  }
303
318
 
304
- if (reportedAt > TimestampLib.blockTimestamp()) {
319
+ if (reportedAt > TimestampLib.current()) {
305
320
  revert ErrorFireProductTimestampInFuture();
306
321
  }
307
322
 
@@ -412,4 +427,7 @@ contract FireProduct is
412
427
  }
413
428
  }
414
429
 
430
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
431
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
432
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
415
433
  }
@@ -23,8 +23,9 @@ contract FireProductAuthorization
23
23
  IAccess.FunctionInfo[] storage functions;
24
24
 
25
25
  // authorize public role (open access to any account, only allows to lock target)
26
- functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
26
+ functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
27
27
  // fully public functions
28
+ _authorize(functions, FireProduct.approveTokenHandler.selector, "approveTokenHandler");
28
29
  _authorize(functions, FireProduct.createApplication.selector, "createApplication");
29
30
 
30
31
  // only owner
@@ -0,0 +1,279 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IPolicy} from "../../instance/module/IPolicy.sol";
5
+ import {IPolicyService} from "../../product/IPolicyService.sol";
6
+
7
+ import {Amount, AmountLib} from "../../type/Amount.sol";
8
+ import {FlightProduct} from "./FlightProduct.sol";
9
+ import {InstanceReader} from "../../instance/InstanceReader.sol";
10
+ import {NftId} from "../../type/NftId.sol";
11
+ import {RequestId} from "../../type/RequestId.sol";
12
+ import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
13
+ import {StateId} from "../../type/StateId.sol";
14
+ import {Str} from "../../type/String.sol";
15
+ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
16
+
17
+ library FlightLib {
18
+
19
+ function checkParameters(
20
+ FlightProduct flightProduct,
21
+ Timestamp departureTime,
22
+ Timestamp arrivalTime,
23
+ Amount premium
24
+ )
25
+ internal
26
+ view
27
+ {
28
+ // solhint-disable
29
+ require(premium >= flightProduct.MIN_PREMIUM(), "ERROR:FDD-001:INVALID_PREMIUM");
30
+ require(premium <= flightProduct.MAX_PREMIUM(), "ERROR:FDD-002:INVALID_PREMIUM");
31
+ require(arrivalTime > departureTime, "ERROR:FDD-003:ARRIVAL_BEFORE_DEPARTURE_TIME");
32
+
33
+ // TODO decide how to handle demo mode
34
+ require(
35
+ arrivalTime <= departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION()),
36
+ "ERROR:FDD-004:INVALID_ARRIVAL/DEPARTURE_TIME");
37
+ require(
38
+ TimestampLib.current() >= departureTime.subtractSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE()),
39
+ "ERROR:FDD-005:INVALID_ARRIVAL/DEPARTURE_TIME");
40
+ require(
41
+ TimestampLib.current() <= departureTime.subtractSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE()),
42
+ "ERROR:FDD-012:INVALID_ARRIVAL/DEPARTURE_TIME");
43
+ // solhint-enable
44
+ }
45
+
46
+
47
+ // TODO fix or cleanup
48
+ // function checkApplication(
49
+ // FlightProduct flightProduct,
50
+ // Str carrierFlightNumber,
51
+ // Timestamp departureTime,
52
+ // Timestamp arrivalTime,
53
+ // Amount premium
54
+ // )
55
+ // external
56
+ // view
57
+ // returns (uint256 errors)
58
+ // {
59
+ // // Validate input parameters
60
+ // if (premium < flightProduct.MIN_PREMIUM()) { errors = errors | (uint256(1) << 0); }
61
+ // if (premium > flightProduct.MAX_PREMIUM()) { errors = errors | (uint256(1) << 1); }
62
+ // if (arrivalTime < departureTime) { errors = errors | (uint256(1) << 2); }
63
+ // if (arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) { errors = errors | (uint256(1) << 3); }
64
+ // if (departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) { errors = errors | (uint256(1) << 4); }
65
+ // if (departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) { errors = errors | (uint256(1) << 5); }
66
+
67
+ // (, bool exists, FlightProduct.FlightRisk memory flightRisk) = getFlightRisk(
68
+ // flightProduct.getInstanceReader(), flightProduct.getNftId(), carrierFlightNumber, departureTime, arrivalTime);
69
+
70
+ // if (exists) {
71
+ // Amount sumInsured = AmountLib.toAmount(premium.toInt() * flightRisk.premiumMultiplier);
72
+ // if (flightRisk.sumOfSumInsuredAmounts + sumInsured > flightProduct.MAX_TOTAL_PAYOUT()) {
73
+ // errors = errors | (uint256(1) << 6);
74
+ // }
75
+ // }
76
+
77
+ // return errors;
78
+ // }
79
+
80
+
81
+ /// @dev calculates payout option based on flight status and delay minutes.
82
+ /// Is not a view function as it emits log evens in case of unexpected status.
83
+ // TODO decide if reverts instead of log events could work too (and convert the function into a view function)
84
+ function checkAndGetPayoutOption(
85
+ RequestId requestId,
86
+ RiskId riskId,
87
+ bytes1 status,
88
+ int256 delayMinutes
89
+ )
90
+ public
91
+ returns (uint8 payoutOption)
92
+ {
93
+ // default: no payout
94
+ payoutOption = type(uint8).max;
95
+
96
+ // check status
97
+ if (status != "L" && status != "A" && status != "C" && status != "D") {
98
+ emit FlightProduct.LogErrorUnprocessableStatus(requestId, riskId, status);
99
+ return payoutOption;
100
+ }
101
+
102
+ if (status == "A") {
103
+ // todo: active, reschedule oracle call + 45 min
104
+ emit FlightProduct.LogErrorUnexpectedStatus(requestId, riskId, status, delayMinutes);
105
+ return payoutOption;
106
+ }
107
+
108
+ // trigger payout if applicable
109
+ if (status == "C") { payoutOption = 3; }
110
+ else if (status == "D") { payoutOption = 4; }
111
+ else if (delayMinutes >= 15 && delayMinutes < 30) { payoutOption = 0; }
112
+ else if (delayMinutes >= 30 && delayMinutes < 45) { payoutOption = 1; }
113
+ else if (delayMinutes >= 45) { payoutOption = 2; }
114
+ }
115
+
116
+
117
+ function calculateWeight(
118
+ FlightProduct flightProduct,
119
+ uint256[6] memory statistics
120
+ )
121
+ public
122
+ view
123
+ returns (uint256 weight)
124
+ {
125
+ // check we have enough observations
126
+ require(statistics[0] >= flightProduct.MIN_OBSERVATIONS(), "ERROR:FDD-011:LOW_OBSERVATIONS");
127
+
128
+ weight = 0;
129
+ for (uint256 i = 1; i < 6; i++) {
130
+ weight += flightProduct.WEIGHT_PATTERN(i) * statistics[i] * 10000 / statistics[0];
131
+ }
132
+
133
+ // To avoid div0 in the payout section, we have to make a minimal assumption on weight
134
+ if (weight == 0) {
135
+ weight = 100000 / statistics[0];
136
+ }
137
+
138
+ // TODO comment on intended effect
139
+ weight = (weight * (100 + flightProduct.MARGIN_PERCENT())) / 100;
140
+ }
141
+
142
+
143
+ // REMARK: each flight may get different payouts depending on the latest statics
144
+ function calculatePayoutAmounts(
145
+ FlightProduct flightProduct,
146
+ Amount premium,
147
+ uint256[6] memory statistics
148
+ )
149
+ public
150
+ view
151
+ returns (
152
+ uint256 weight,
153
+ Amount[5] memory payoutAmounts,
154
+ Amount sumInsuredAmount // simply the max of payoutAmounts
155
+ )
156
+ {
157
+ require(premium >= flightProduct.MIN_PREMIUM(), "ERROR:FDD-009:INVALID_PREMIUM");
158
+ require(premium <= flightProduct.MAX_PREMIUM(), "ERROR:FDD-010:INVALID_PREMIUM");
159
+
160
+ sumInsuredAmount = AmountLib.zero();
161
+ weight = calculateWeight(flightProduct, statistics);
162
+
163
+ for (uint256 i = 0; i < 5; i++) {
164
+ Amount payoutAmount = AmountLib.toAmount(
165
+ premium.toInt() * flightProduct.WEIGHT_PATTERN(i + 1) * 10000 / weight);
166
+
167
+ // cap payout and update sum insured if applicable
168
+ if (payoutAmount > flightProduct.MAX_PAYOUT()) { payoutAmount = flightProduct.MAX_PAYOUT(); }
169
+ if (payoutAmount > sumInsuredAmount) { sumInsuredAmount = payoutAmount; }
170
+
171
+ payoutAmounts[i] = payoutAmount;
172
+ }
173
+ }
174
+
175
+
176
+ function getPayoutAmount(
177
+ bytes memory applicationData,
178
+ uint8 payoutOption
179
+ )
180
+ public
181
+ returns (Amount payoutAmount)
182
+ {
183
+ // retrieve payout amounts from application data
184
+ (, Amount[5] memory payoutAmounts) = abi.decode(
185
+ applicationData, (Amount, Amount[5]));
186
+
187
+ // get payout amount for selected option
188
+ payoutAmount = payoutAmounts[payoutOption];
189
+ }
190
+
191
+
192
+ function getFlightRisk(
193
+ InstanceReader reader,
194
+ NftId productNftId,
195
+ Str carrierFlightNumber,
196
+ Str departureYearMonthDay,
197
+ Timestamp departureTime,
198
+ Timestamp arrivalTime
199
+ )
200
+ public
201
+ view
202
+ returns (
203
+ RiskId riskId,
204
+ bool exists,
205
+ FlightProduct.FlightRisk memory flightRisk
206
+ )
207
+ {
208
+ riskId = getRiskId(productNftId, carrierFlightNumber, departureTime, arrivalTime);
209
+ (exists, flightRisk) = getFlightRisk(reader, productNftId, riskId);
210
+
211
+ if (!exists) {
212
+ // create new risk
213
+ flightRisk = FlightProduct.FlightRisk({
214
+ carrierFlightNumber: carrierFlightNumber,
215
+ departureYearMonthDay: departureYearMonthDay,
216
+ departureTime: departureTime,
217
+ arrivalTime: arrivalTime,
218
+ sumOfSumInsuredAmounts: AmountLib.toAmount(0),
219
+ status: bytes1(0),
220
+ delayMinutes: 0});
221
+ }
222
+ }
223
+
224
+
225
+ function getFlightRisk(
226
+ InstanceReader reader,
227
+ NftId productNftId,
228
+ RiskId riskId
229
+ )
230
+ public
231
+ view
232
+ returns (
233
+ bool exists,
234
+ FlightProduct.FlightRisk memory flightRisk
235
+ )
236
+ {
237
+ // check if risk exists
238
+ exists = reader.isProductRisk(productNftId, riskId);
239
+
240
+ // get risk data if risk exists
241
+ if (exists) {
242
+ flightRisk = abi.decode(
243
+ reader.getRiskInfo(riskId).data, (FlightProduct.FlightRisk));
244
+ }
245
+ }
246
+
247
+
248
+ function getRiskId(
249
+ NftId productNftId,
250
+ Str carrierFlightNumber,
251
+ Timestamp departureTime,
252
+ Timestamp arrivalTime
253
+ )
254
+ public
255
+ view
256
+ returns (RiskId riskId)
257
+ {
258
+ bytes32 riskKey = getRiskKey(carrierFlightNumber, departureTime, arrivalTime);
259
+ riskId = getRiskId(productNftId, riskKey);
260
+ }
261
+
262
+
263
+ function getRiskKey(
264
+ Str carrierFlightNumber,
265
+ Timestamp departureTime,
266
+ Timestamp arrivalTime
267
+ )
268
+ internal
269
+ pure
270
+ returns (bytes32 riskKey)
271
+ {
272
+ return keccak256(abi.encode(carrierFlightNumber, departureTime, arrivalTime));
273
+ }
274
+
275
+
276
+ function getRiskId(NftId productNftId, bytes32 riskKey) internal view returns (RiskId riskId) {
277
+ return RiskIdLib.toRiskId(productNftId, riskKey);
278
+ }
279
+ }
@@ -0,0 +1,168 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
5
+
6
+ import {FULFILLED} from "../../type/StateId.sol";
7
+ import {NftId} from "../../type/NftId.sol";
8
+ import {BasicOracle} from "../../oracle/BasicOracle.sol";
9
+ import {RequestId} from "../../type/RequestId.sol";
10
+ import {LibRequestIdSet} from "../../type/RequestIdSet.sol";
11
+ import {RiskId} from "../../type/RiskId.sol";
12
+ import {Str} from "../../type/String.sol";
13
+ import {Timestamp} from "../../type/Timestamp.sol";
14
+
15
+ contract FlightOracle is
16
+ BasicOracle
17
+ {
18
+
19
+ struct FlightStatusRequest {
20
+ RiskId riskId;
21
+ Str carrierFlightNumber;
22
+ Str departureYearMonthDay;
23
+ Timestamp departureTime; // is this needed or is flight number and date unique aready?
24
+ }
25
+
26
+ struct FlightStatusResponse {
27
+ RiskId riskId;
28
+ bytes1 status;
29
+ int256 delayMinutes;
30
+ }
31
+
32
+ event LogFlightOracleRequestReceived(RequestId requestId, NftId requesterId);
33
+ event LogFlightOracleResponseSent(RequestId requestId, bytes1 status, int256 delay);
34
+ event LogFlightOracleRequestCancelled(RequestId requestId);
35
+
36
+ // TODO decide if this variable should be moved to instance store
37
+ // if so it need to manage active requests by requestor nft id
38
+ LibRequestIdSet.Set internal _activeRequests;
39
+
40
+
41
+ constructor(
42
+ address registry,
43
+ NftId productNftId,
44
+ string memory componentName,
45
+ IAuthorization authorization
46
+ )
47
+ {
48
+ address initialOwner = msg.sender;
49
+ initialize(
50
+ registry,
51
+ productNftId,
52
+ authorization,
53
+ initialOwner,
54
+ componentName
55
+ );
56
+ }
57
+
58
+
59
+ function initialize(
60
+ address registry,
61
+ NftId productNftId,
62
+ IAuthorization authorization,
63
+ address initialOwner,
64
+ string memory name
65
+ )
66
+ public
67
+ virtual
68
+ initializer()
69
+ {
70
+ _initializeBasicOracle(
71
+ registry,
72
+ productNftId,
73
+ authorization,
74
+ initialOwner,
75
+ name);
76
+ }
77
+
78
+
79
+ function respondWithFlightStatus(
80
+ RequestId requestId,
81
+ bytes1 status,
82
+ int256 delayMinutes
83
+ )
84
+ external
85
+ restricted()
86
+ {
87
+ // obtain riskId for request
88
+ bytes memory requestData = _getInstanceReader().getRequestInfo(requestId).requestData;
89
+ (RiskId riskId,,,) = abi.decode(requestData, (RiskId, Str, Str, Timestamp));
90
+ // assemble response data
91
+ bytes memory responseData = abi.encode(
92
+ FlightStatusResponse ({
93
+ riskId: riskId,
94
+ status: status,
95
+ delayMinutes: delayMinutes}));
96
+
97
+ // logging
98
+ emit LogFlightOracleResponseSent(requestId, status, delayMinutes);
99
+
100
+ // effects + interaction (via framework to receiving component)
101
+ _respond(requestId, responseData);
102
+
103
+ // TODO decide if the code below should be moved to GIF
104
+ // check callback result
105
+ bool requestFulfilled = _getInstanceReader().getRequestState(
106
+ requestId) == FULFILLED();
107
+
108
+ // remove from active requests when successful
109
+ if (requestFulfilled) {
110
+ LibRequestIdSet.remove(_activeRequests, requestId);
111
+ }
112
+ }
113
+
114
+ //--- view functions ----------------------------------------------------//
115
+
116
+ // TODO decide if the code below should be moved to GIF
117
+ function activeRequests()
118
+ external
119
+ view
120
+ returns(uint256 numberOfRequests)
121
+ {
122
+ return LibRequestIdSet.size(_activeRequests);
123
+ }
124
+
125
+
126
+ // TODO decide if the code below should be moved to GIF
127
+ function getActiveRequest(uint256 idx)
128
+ external
129
+ view
130
+ returns(RequestId requestId)
131
+ {
132
+ return LibRequestIdSet.getElementAt(_activeRequests, idx);
133
+ }
134
+
135
+ //--- internal functions ------------------------------------------------//
136
+
137
+ /// @dev use case specific handling of oracle requests
138
+ /// for now only log is emitted to verify that request has been received by oracle component
139
+ function _request(
140
+ RequestId requestId,
141
+ NftId requesterId,
142
+ bytes calldata requestData,
143
+ Timestamp expiryAt
144
+ )
145
+ internal
146
+ virtual override
147
+ {
148
+ FlightStatusRequest memory request = abi.decode(requestData, (FlightStatusRequest));
149
+
150
+ // TODO decide if the line below should be moved to GIF
151
+ LibRequestIdSet.add(_activeRequests, requestId);
152
+ emit LogFlightOracleRequestReceived(requestId, requesterId);
153
+ }
154
+
155
+
156
+ /// @dev use case specific handling of oracle requests
157
+ /// for now only log is emitted to verify that cancelling has been received by oracle component
158
+ function _cancel(
159
+ RequestId requestId
160
+ )
161
+ internal
162
+ virtual override
163
+ {
164
+ // TODO decide if the line below should be moved to GIF
165
+ LibRequestIdSet.remove(_activeRequests, requestId);
166
+ emit LogFlightOracleRequestCancelled(requestId);
167
+ }
168
+ }