@etherisc/gif-next 0.0.2-d16f92c-416 → 0.0.2-d18e1c5-511

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 (642) hide show
  1. package/README.md +130 -8
  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 +790 -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 +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +525 -342
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +139 -616
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +754 -323
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +228 -124
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +145 -282
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +535 -78
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1474 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  53. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +408 -0
  54. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  55. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  56. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +805 -0
  58. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  60. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2185 -0
  64. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +805 -0
  66. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  67. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  68. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  69. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  71. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  81. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  82. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  84. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  85. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +59 -195
  86. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  88. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  90. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  91. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +580 -80
  92. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +398 -75
  94. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  95. package/artifacts/contracts/instance/Instance.sol/Instance.json +590 -218
  96. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  97. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1889 -313
  98. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  99. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
  100. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  101. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1760 -840
  102. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +392 -274
  104. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +141 -127
  106. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  107. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1298 -1857
  108. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  109. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  110. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  111. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  112. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  113. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  114. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  115. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  116. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  117. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  118. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  119. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  120. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  121. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  122. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  123. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  124. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  125. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  126. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  127. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  128. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  129. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  130. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  131. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  132. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  133. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +805 -0
  134. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  135. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  136. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  137. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +142 -139
  138. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  139. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
  140. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  141. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +140 -423
  142. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  143. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
  144. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +177 -97
  146. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  147. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  148. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  149. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  150. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  151. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +569 -265
  152. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +216 -104
  154. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  155. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +383 -53
  156. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  157. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +147 -406
  158. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  159. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +711 -340
  160. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  161. package/artifacts/contracts/pool/Pool.sol/Pool.json +144 -694
  162. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  163. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  164. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  165. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +925 -545
  166. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +230 -106
  168. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  169. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
  170. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +159 -99
  172. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  173. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  174. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  175. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  176. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  177. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +466 -245
  178. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  179. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +187 -123
  180. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  181. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
  182. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  183. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +350 -18
  184. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  185. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +417 -101
  186. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  187. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
  188. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  189. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +282 -271
  190. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  191. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
  192. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  193. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +532 -311
  194. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  195. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  196. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  197. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +196 -108
  198. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  199. package/artifacts/contracts/product/PricingService.sol/PricingService.json +249 -329
  200. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +165 -137
  202. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  203. package/artifacts/contracts/product/Product.sol/Product.json +316 -606
  204. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  205. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  206. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  207. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  208. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  210. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +384 -69
  212. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  213. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +97 -148
  214. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  215. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  216. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  217. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  218. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  219. package/artifacts/contracts/registry/Registry.sol/Registry.json +617 -133
  220. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  221. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +796 -537
  222. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  223. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  224. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  225. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
  226. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  227. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +141 -89
  228. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  229. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  230. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  231. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  232. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  233. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  234. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  235. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +523 -27
  236. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  237. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  238. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  239. package/artifacts/contracts/shared/Component.sol/Component.json +86 -287
  240. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  241. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +609 -569
  242. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  243. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +197 -131
  244. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  245. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  246. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  247. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  248. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  249. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  250. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  251. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  252. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  253. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -103
  254. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  255. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +535 -240
  256. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  257. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +131 -139
  258. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  259. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  260. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
  262. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  263. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  264. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
  266. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  267. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  268. package/artifacts/contracts/shared/IService.sol/IService.json +84 -2
  269. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  270. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  271. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  272. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +125 -376
  273. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  274. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  275. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  276. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  277. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  278. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +41 -57
  279. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  280. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  281. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  282. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
  283. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  284. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  285. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  286. package/artifacts/contracts/shared/Service.sol/Service.json +86 -111
  287. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  288. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  289. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  290. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  291. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  292. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  293. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  294. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1513 -204
  295. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  296. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
  297. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  298. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  299. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  300. package/artifacts/contracts/staking/Staking.sol/Staking.json +1635 -465
  301. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  302. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  303. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  304. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +191 -105
  305. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  306. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
  307. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  308. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +282 -281
  309. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  310. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +144 -96
  311. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  312. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1637 -801
  313. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  314. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  315. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  316. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +184 -76
  317. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  318. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  319. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Amount.sol/AmountLib.json +63 -10
  321. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  323. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  324. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  325. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  327. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  329. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  331. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  332. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  333. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  334. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  335. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  337. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  338. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  339. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +61 -9
  341. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  343. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  345. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  346. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  347. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.dbg.json +4 -0
  348. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.json +33 -0
  349. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  350. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  351. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  352. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -91
  353. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  354. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +112 -2
  355. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  356. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  357. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  358. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  359. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  360. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  361. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  362. package/artifacts/contracts/type/String.sol/StrLib.json +69 -2
  363. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  364. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +56 -5
  365. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  366. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  367. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  368. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  369. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  370. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  371. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  372. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  373. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  374. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  375. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  376. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  377. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  378. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  379. package/contracts/accounting/AccountingService.sol +274 -0
  380. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  381. package/contracts/accounting/IAccountingService.sol +47 -0
  382. package/contracts/authorization/AccessAdmin.sol +780 -0
  383. package/contracts/authorization/AccessAdminLib.sol +396 -0
  384. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  385. package/contracts/authorization/Authorization.sol +169 -0
  386. package/contracts/authorization/IAccess.sol +67 -0
  387. package/contracts/authorization/IAccessAdmin.sol +144 -0
  388. package/contracts/authorization/IAuthorization.sol +26 -0
  389. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  390. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  391. package/contracts/distribution/BasicDistribution.sol +140 -0
  392. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  393. package/contracts/distribution/Distribution.sol +125 -141
  394. package/contracts/distribution/DistributionService.sol +284 -133
  395. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  396. package/contracts/distribution/IDistributionComponent.sol +21 -42
  397. package/contracts/distribution/IDistributionService.sol +60 -26
  398. package/contracts/examples/fire/DamageLevel.sol +59 -0
  399. package/contracts/examples/fire/FirePool.sol +86 -0
  400. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  401. package/contracts/examples/fire/FireProduct.sol +433 -0
  402. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  403. package/contracts/examples/fire/FireUSD.sol +26 -0
  404. package/contracts/examples/flight/FlightLib.sol +279 -0
  405. package/contracts/examples/flight/FlightOracle.sol +167 -0
  406. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  407. package/contracts/examples/flight/FlightPool.sol +89 -0
  408. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  409. package/contracts/examples/flight/FlightProduct.sol +470 -0
  410. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  411. package/contracts/examples/flight/FlightUSD.sol +26 -0
  412. package/contracts/examples/flight/originalV1.sol +396 -0
  413. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  414. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  415. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  416. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  417. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  418. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  419. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  420. package/contracts/instance/BaseStore.sol +93 -0
  421. package/contracts/instance/BundleSet.sol +130 -0
  422. package/contracts/instance/IBaseStore.sol +37 -0
  423. package/contracts/instance/IInstance.sol +118 -49
  424. package/contracts/instance/IInstanceService.sol +68 -46
  425. package/contracts/instance/Instance.sol +221 -133
  426. package/contracts/instance/InstanceAdmin.sol +297 -249
  427. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  428. package/contracts/instance/InstanceReader.sol +498 -256
  429. package/contracts/instance/InstanceService.sol +340 -265
  430. package/contracts/instance/InstanceServiceManager.sol +8 -13
  431. package/contracts/instance/InstanceStore.sol +163 -109
  432. package/contracts/instance/ProductStore.sol +290 -0
  433. package/contracts/instance/RiskSet.sol +126 -0
  434. package/contracts/instance/TargetNames.sol +10 -0
  435. package/contracts/instance/base/BalanceStore.sol +4 -6
  436. package/contracts/instance/base/ObjectCounter.sol +1 -2
  437. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  438. package/contracts/instance/base/ObjectSet.sol +77 -0
  439. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  440. package/contracts/instance/module/IBundle.sol +6 -5
  441. package/contracts/instance/module/IComponents.sol +29 -21
  442. package/contracts/instance/module/IDistribution.sol +21 -9
  443. package/contracts/instance/module/IPolicy.sol +50 -29
  444. package/contracts/instance/module/IRisk.sol +5 -0
  445. package/contracts/mock/Dip.sol +1 -1
  446. package/contracts/oracle/BasicOracle.sol +44 -0
  447. package/contracts/oracle/BasicOracleAuthorization.sol +52 -0
  448. package/contracts/oracle/IOracle.sol +25 -4
  449. package/contracts/oracle/IOracleComponent.sol +2 -1
  450. package/contracts/oracle/IOracleService.sol +14 -13
  451. package/contracts/oracle/Oracle.sol +60 -53
  452. package/contracts/oracle/OracleService.sol +119 -87
  453. package/contracts/oracle/OracleServiceManager.sol +8 -11
  454. package/contracts/pool/BasicPool.sol +161 -0
  455. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  456. package/contracts/pool/BundleService.sol +222 -132
  457. package/contracts/pool/BundleServiceManager.sol +8 -11
  458. package/contracts/pool/IBundleService.sol +43 -33
  459. package/contracts/pool/IPoolComponent.sol +20 -70
  460. package/contracts/pool/IPoolService.sol +97 -77
  461. package/contracts/pool/Pool.sol +196 -164
  462. package/contracts/pool/PoolLib.sol +341 -0
  463. package/contracts/pool/PoolService.sol +419 -257
  464. package/contracts/pool/PoolServiceManager.sol +6 -9
  465. package/contracts/product/ApplicationService.sol +154 -81
  466. package/contracts/product/ApplicationServiceManager.sol +6 -6
  467. package/contracts/product/BasicProduct.sol +48 -0
  468. package/contracts/product/BasicProductAuthorization.sol +64 -0
  469. package/contracts/product/ClaimService.sol +391 -207
  470. package/contracts/product/ClaimServiceManager.sol +6 -6
  471. package/contracts/product/IApplicationService.sol +29 -3
  472. package/contracts/product/IClaimService.sol +48 -11
  473. package/contracts/product/IPolicyService.sol +61 -37
  474. package/contracts/product/IPricingService.sol +11 -10
  475. package/contracts/product/IProductComponent.sol +29 -9
  476. package/contracts/product/IRiskService.sol +48 -0
  477. package/contracts/product/PolicyService.sol +445 -275
  478. package/contracts/product/PolicyServiceLib.sol +139 -0
  479. package/contracts/product/PolicyServiceManager.sol +6 -9
  480. package/contracts/product/PricingService.sol +90 -84
  481. package/contracts/product/PricingServiceManager.sol +6 -9
  482. package/contracts/product/Product.sol +261 -147
  483. package/contracts/product/RiskService.sol +189 -0
  484. package/contracts/product/RiskServiceManager.sol +39 -0
  485. package/contracts/registry/ChainNft.sol +72 -40
  486. package/contracts/registry/IRegistry.sol +84 -36
  487. package/contracts/registry/IRegistryService.sol +3 -10
  488. package/contracts/registry/IRelease.sol +29 -0
  489. package/contracts/registry/ITransferInterceptor.sol +1 -2
  490. package/contracts/registry/Registry.sol +378 -224
  491. package/contracts/registry/RegistryAdmin.sol +119 -261
  492. package/contracts/registry/RegistryAuthorization.sol +336 -0
  493. package/contracts/registry/RegistryService.sol +42 -67
  494. package/contracts/registry/RegistryServiceManager.sol +5 -5
  495. package/contracts/registry/ReleaseAdmin.sol +195 -0
  496. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  497. package/contracts/registry/ReleaseRegistry.sol +525 -0
  498. package/contracts/registry/ServiceAuthorizationV3.sol +213 -71
  499. package/contracts/registry/TokenRegistry.sol +61 -59
  500. package/contracts/shared/Component.sol +71 -142
  501. package/contracts/shared/ComponentService.sol +459 -385
  502. package/contracts/shared/ComponentServiceManager.sol +10 -7
  503. package/contracts/shared/ContractLib.sol +312 -0
  504. package/contracts/shared/IComponent.sol +6 -18
  505. package/contracts/shared/IComponentService.sol +50 -41
  506. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  507. package/contracts/shared/ILifecycle.sol +3 -2
  508. package/contracts/shared/INftOwnable.sol +4 -0
  509. package/contracts/shared/IPolicyHolder.sol +12 -22
  510. package/contracts/shared/IRegisterable.sol +22 -1
  511. package/contracts/shared/IService.sol +4 -6
  512. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  513. package/contracts/shared/InstanceLinkedComponent.sol +145 -57
  514. package/contracts/shared/Lifecycle.sol +30 -72
  515. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  516. package/contracts/shared/NftOwnable.sol +33 -11
  517. package/contracts/shared/PolicyHolder.sol +20 -59
  518. package/contracts/shared/Registerable.sol +52 -21
  519. package/contracts/shared/RegistryLinked.sol +9 -14
  520. package/contracts/shared/Service.sol +22 -38
  521. package/contracts/shared/TokenHandler.sol +310 -26
  522. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  523. package/contracts/staking/IStaking.sol +272 -73
  524. package/contracts/staking/IStakingService.sol +48 -74
  525. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  526. package/contracts/staking/Staking.sol +534 -250
  527. package/contracts/staking/StakingLib.sol +195 -0
  528. package/contracts/staking/StakingManager.sol +14 -15
  529. package/contracts/staking/StakingReader.sol +72 -88
  530. package/contracts/staking/StakingService.sol +62 -152
  531. package/contracts/staking/StakingServiceManager.sol +9 -7
  532. package/contracts/staking/StakingStore.sol +1096 -341
  533. package/contracts/staking/TargetHandler.sol +132 -0
  534. package/contracts/staking/TargetManagerLib.sol +73 -46
  535. package/contracts/type/Amount.sol +31 -5
  536. package/contracts/type/Blocknumber.sol +22 -16
  537. package/contracts/type/ChainId.sol +101 -0
  538. package/contracts/type/ClaimId.sol +6 -1
  539. package/contracts/type/Fee.sol +8 -8
  540. package/contracts/type/Key32.sol +2 -2
  541. package/contracts/type/Key32Set.sol +62 -0
  542. package/contracts/type/NftId.sol +7 -0
  543. package/contracts/type/ObjectType.sol +91 -54
  544. package/contracts/type/PayoutId.sol +10 -10
  545. package/contracts/type/Referral.sol +7 -0
  546. package/contracts/type/RequestIdSet.sol +62 -0
  547. package/contracts/type/RiskId.sol +38 -6
  548. package/contracts/type/RoleId.sol +93 -114
  549. package/contracts/type/Seconds.sol +44 -1
  550. package/contracts/type/Selector.sol +5 -0
  551. package/contracts/type/StateId.sol +15 -1
  552. package/contracts/type/String.sol +42 -0
  553. package/contracts/type/Timestamp.sol +24 -8
  554. package/contracts/type/UFixed.sol +62 -125
  555. package/contracts/type/Version.sol +57 -6
  556. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  557. package/contracts/{shared → upgradeability}/ProxyManager.sol +96 -49
  558. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  559. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  560. package/package.json +9 -6
  561. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  562. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  563. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  564. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  565. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  566. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  567. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  568. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  569. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  570. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
  571. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  572. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  573. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  574. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  575. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  576. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +0 -129
  577. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  578. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  579. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  580. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  581. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  582. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  583. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  584. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  585. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  586. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  587. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  588. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  589. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  590. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  591. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  592. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  593. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  594. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  595. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  596. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  597. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  598. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  599. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  600. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  601. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  602. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  603. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  604. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  605. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  606. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -571
  607. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  608. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  609. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  610. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  611. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  612. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  613. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  614. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  615. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -460
  616. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  617. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  618. package/contracts/instance/BundleManager.sol +0 -126
  619. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  620. package/contracts/instance/base/ObjectManager.sol +0 -80
  621. package/contracts/instance/module/IAccess.sol +0 -46
  622. package/contracts/product/IProductService.sol +0 -33
  623. package/contracts/product/ProductService.sol +0 -124
  624. package/contracts/product/ProductServiceManager.sol +0 -42
  625. package/contracts/registry/IServiceAuthorization.sol +0 -35
  626. package/contracts/registry/ReleaseManager.sol +0 -527
  627. package/contracts/registry/ServiceAuthorization.sol +0 -86
  628. package/contracts/shared/AccessAdmin.sol +0 -759
  629. package/contracts/shared/AccessManagerCustom.sol +0 -741
  630. package/contracts/shared/AccessManagerExtended.sol +0 -481
  631. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  632. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  633. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  634. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  635. package/contracts/shared/IAccessAdmin.sol +0 -168
  636. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  637. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  638. package/contracts/shared/IKeyValueStore.sol +0 -53
  639. package/contracts/shared/InitializableCustom.sol +0 -177
  640. package/contracts/shared/KeyValueStore.sol +0 -127
  641. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  642. package/contracts/staking/StakeManagerLib.sol +0 -231
@@ -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,167 @@
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 {RequestIdSet} 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
+ RequestIdSet.Set internal _activeRequests;
39
+
40
+
41
+ constructor(
42
+ address registry,
43
+ NftId productNftId,
44
+ IAuthorization authorization,
45
+ address initialOwner
46
+ )
47
+ {
48
+ initialize(
49
+ registry,
50
+ productNftId,
51
+ authorization,
52
+ initialOwner,
53
+ "FlightOracle"
54
+ );
55
+ }
56
+
57
+
58
+ function initialize(
59
+ address registry,
60
+ NftId productNftId,
61
+ IAuthorization authorization,
62
+ address initialOwner,
63
+ string memory name
64
+ )
65
+ public
66
+ virtual
67
+ initializer()
68
+ {
69
+ _initializeBasicOracle(
70
+ registry,
71
+ productNftId,
72
+ authorization,
73
+ initialOwner,
74
+ name);
75
+ }
76
+
77
+
78
+ function respondWithFlightStatus(
79
+ RequestId requestId,
80
+ bytes1 status,
81
+ int256 delayMinutes
82
+ )
83
+ external
84
+ restricted()
85
+ {
86
+ // obtain riskId for request
87
+ bytes memory requestData = _getInstanceReader().getRequestInfo(requestId).requestData;
88
+ (RiskId riskId,,,) = abi.decode(requestData, (RiskId, Str, Str, Timestamp));
89
+ // assemble response data
90
+ bytes memory responseData = abi.encode(
91
+ FlightStatusResponse ({
92
+ riskId: riskId,
93
+ status: status,
94
+ delayMinutes: delayMinutes}));
95
+
96
+ // logging
97
+ emit LogFlightOracleResponseSent(requestId, status, delayMinutes);
98
+
99
+ // effects + interaction (via framework to receiving component)
100
+ _respond(requestId, responseData);
101
+
102
+ // TODO decide if the code below should be moved to GIF
103
+ // check callback result
104
+ bool requestFulfilled = _getInstanceReader().getRequestState(
105
+ requestId) == FULFILLED();
106
+
107
+ // remove from active requests when successful
108
+ if (requestFulfilled) {
109
+ RequestIdSet.remove(_activeRequests, requestId);
110
+ }
111
+ }
112
+
113
+ //--- view functions ----------------------------------------------------//
114
+
115
+ // TODO decide if the code below should be moved to GIF
116
+ function activeRequests()
117
+ external
118
+ view
119
+ returns(uint256 numberOfRequests)
120
+ {
121
+ return RequestIdSet.size(_activeRequests);
122
+ }
123
+
124
+
125
+ // TODO decide if the code below should be moved to GIF
126
+ function getActiveRequest(uint256 idx)
127
+ external
128
+ view
129
+ returns(RequestId requestId)
130
+ {
131
+ return RequestIdSet.getElementAt(_activeRequests, idx);
132
+ }
133
+
134
+ //--- internal functions ------------------------------------------------//
135
+
136
+ /// @dev use case specific handling of oracle requests
137
+ /// for now only log is emitted to verify that request has been received by oracle component
138
+ function _request(
139
+ RequestId requestId,
140
+ NftId requesterId,
141
+ bytes calldata requestData,
142
+ Timestamp expiryAt
143
+ )
144
+ internal
145
+ virtual override
146
+ {
147
+ FlightStatusRequest memory request = abi.decode(requestData, (FlightStatusRequest));
148
+
149
+ // TODO decide if the line below should be moved to GIF
150
+ RequestIdSet.add(_activeRequests, requestId);
151
+ emit LogFlightOracleRequestReceived(requestId, requesterId);
152
+ }
153
+
154
+
155
+ /// @dev use case specific handling of oracle requests
156
+ /// for now only log is emitted to verify that cancelling has been received by oracle component
157
+ function _cancel(
158
+ RequestId requestId
159
+ )
160
+ internal
161
+ virtual override
162
+ {
163
+ // TODO decide if the line below should be moved to GIF
164
+ RequestIdSet.remove(_activeRequests, requestId);
165
+ emit LogFlightOracleRequestCancelled(requestId);
166
+ }
167
+ }
@@ -0,0 +1,34 @@
1
+
2
+
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ pragma solidity ^0.8.20;
5
+
6
+ import {IAccess} from "../../../contracts/authorization/IAccess.sol";
7
+
8
+ import {BasicOracleAuthorization} from "../../oracle/BasicOracleAuthorization.sol";
9
+ import {FlightOracle} from "./FlightOracle.sol";
10
+ import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
11
+
12
+ contract FlightOracleAuthorization
13
+ is BasicOracleAuthorization
14
+ {
15
+
16
+ constructor(string memory oracleName)
17
+ BasicOracleAuthorization(oracleName)
18
+ {}
19
+
20
+
21
+ function _setupTargetAuthorizations()
22
+ internal
23
+ virtual override
24
+ {
25
+ super._setupTargetAuthorizations();
26
+ IAccess.FunctionInfo[] storage functions;
27
+
28
+ // TODO IMPORTANT must not be public role for prod!!!
29
+ // authorize public role (also protected by onlyOwner)
30
+ functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
31
+ _authorize(functions, FlightOracle.respondWithFlightStatus.selector, "respondWithFlightStatus");
32
+ }
33
+ }
34
+
@@ -0,0 +1,89 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
7
+ import {IComponents} from "../../instance/module/IComponents.sol";
8
+
9
+ import {Amount, AmountLib} from "../../type/Amount.sol";
10
+ import {BasicPool} from "../../pool/BasicPool.sol";
11
+ import {FeeLib} from "../../type/Fee.sol";
12
+ import {NftId} from "../../type/NftId.sol";
13
+ import {Seconds, SecondsLib} from "../../type/Seconds.sol";
14
+ import {UFixedLib} from "../../type/UFixed.sol";
15
+
16
+
17
+ /// @dev FlightPool implements the pool for the flight delay product.
18
+ /// Only the pool owner is allowed to create and manage bundles.
19
+ contract FlightPool is
20
+ BasicPool
21
+ {
22
+ constructor(
23
+ address registry,
24
+ NftId productNftId,
25
+ string memory componentName,
26
+ IAuthorization authorization
27
+ )
28
+ {
29
+ address initialOwner = msg.sender;
30
+ _intialize(
31
+ registry,
32
+ productNftId,
33
+ componentName,
34
+ IComponents.PoolInfo({
35
+ maxBalanceAmount: AmountLib.max(),
36
+ isInterceptingBundleTransfers: false,
37
+ isProcessingConfirmedClaims: false,
38
+ isExternallyManaged: false,
39
+ isVerifyingApplications: false,
40
+ collateralizationLevel: UFixedLib.one(),
41
+ retentionLevel: UFixedLib.one()
42
+ }),
43
+ authorization,
44
+ initialOwner);
45
+ }
46
+
47
+ function _intialize(
48
+ address registry,
49
+ NftId productNftId,
50
+ string memory componentName,
51
+ IComponents.PoolInfo memory poolInfo,
52
+ IAuthorization authorization,
53
+ address initialOwner
54
+ )
55
+ internal
56
+ initializer
57
+ {
58
+ _initializeBasicPool(
59
+ registry,
60
+ productNftId,
61
+ componentName,
62
+ poolInfo,
63
+ authorization,
64
+ initialOwner);
65
+ }
66
+
67
+ function createBundle(
68
+ Amount initialAmount
69
+ )
70
+ external
71
+ virtual
72
+ restricted()
73
+ onlyOwner()
74
+ returns(NftId bundleNftId)
75
+ {
76
+ address owner = msg.sender;
77
+ bundleNftId = _createBundle(
78
+ owner,
79
+ FeeLib.zero(),
80
+ SecondsLib.fromDays(90),
81
+ "" // filter
82
+ );
83
+
84
+ _stake(bundleNftId, initialAmount);
85
+ }
86
+
87
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
88
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
89
+ }
@@ -0,0 +1,37 @@
1
+
2
+
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ pragma solidity ^0.8.20;
5
+
6
+ import {IAccess} from "../../../contracts/authorization/IAccess.sol";
7
+
8
+ import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
9
+ import {FlightPool} from "./FlightPool.sol";
10
+ import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
11
+
12
+ contract FlightPoolAuthorization
13
+ is BasicPoolAuthorization
14
+ {
15
+
16
+ constructor(string memory poolName)
17
+ BasicPoolAuthorization(poolName)
18
+ {}
19
+
20
+
21
+ function _setupTargetAuthorizations()
22
+ internal
23
+ virtual override
24
+ {
25
+ super._setupTargetAuthorizations();
26
+ IAccess.FunctionInfo[] storage functions;
27
+
28
+ // authorize public role (also protected by onlyOwner)
29
+ functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
30
+
31
+ // only owner
32
+ _authorize(functions, FlightPool.createBundle.selector, "createBundle");
33
+ _authorize(functions, FlightPool.approveTokenHandler.selector, "approveTokenHandler");
34
+ _authorize(functions, FlightPool.setWallet.selector, "setWallet");
35
+ }
36
+ }
37
+