@etherisc/gif-next 3.0.0-f90c901-018 → 3.0.0-fbbe3fc-042

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 (490) hide show
  1. package/README.md +1 -0
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +72 -139
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +116 -110
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +33 -72
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +70 -105
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +150 -126
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +65 -20
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +55 -31
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +10 -20
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +1 -1
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +42 -18
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +75 -126
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +65 -41
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -72
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +139 -198
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +150 -140
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +56 -84
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +32 -71
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +104 -166
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +65 -41
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +138 -200
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +65 -41
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  50. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +728 -0
  51. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +4 -0
  52. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +229 -0
  53. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  54. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1234 -0
  55. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +896 -0
  57. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  59. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
  61. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2497 -0
  63. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +891 -0
  65. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  66. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +586 -0
  67. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  68. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  69. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +102 -159
  71. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  72. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +65 -41
  73. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  74. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +106 -163
  75. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  76. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +120 -177
  77. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  78. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +65 -41
  79. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +114 -171
  81. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  82. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +65 -41
  83. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  85. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +54 -49
  86. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  87. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  88. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +26 -78
  89. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +44 -83
  91. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  92. package/artifacts/contracts/instance/Instance.sol/Instance.json +51 -145
  93. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  94. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +151 -185
  95. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  96. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +67 -43
  97. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  98. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +203 -77
  99. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +75 -138
  101. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -104
  103. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  104. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2 -2
  105. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  106. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2 -2
  107. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  108. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +58 -53
  109. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  110. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  111. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  112. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +1 -1
  113. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  114. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  115. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  116. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  117. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  118. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +8 -3
  119. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  120. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  121. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  122. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  123. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  124. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  125. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  126. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  127. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  128. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +81 -132
  129. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  130. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +65 -41
  131. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  132. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  133. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +66 -94
  134. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  135. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +83 -80
  136. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  137. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -82
  138. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  139. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +148 -149
  140. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +129 -111
  142. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  143. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +73 -88
  144. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  145. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +65 -41
  146. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  147. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +117 -176
  148. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +139 -129
  150. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  151. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +32 -71
  152. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  153. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +72 -100
  154. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  155. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +86 -94
  156. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  157. package/artifacts/contracts/pool/Pool.sol/Pool.json +73 -88
  158. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  159. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +247 -24
  160. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  161. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +165 -233
  162. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +130 -140
  164. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  165. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +63 -138
  166. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +112 -110
  168. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  169. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +57 -72
  170. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  171. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +65 -41
  172. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  173. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +115 -182
  174. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +138 -132
  176. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  177. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +32 -71
  178. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  179. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +32 -71
  180. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  181. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +64 -82
  182. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  183. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -82
  184. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  185. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +56 -84
  186. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  187. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +36 -75
  188. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  189. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +127 -173
  190. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  191. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +2 -2
  192. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  193. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +128 -122
  194. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  195. package/artifacts/contracts/product/PricingService.sol/PricingService.json +94 -161
  196. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  197. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +122 -116
  198. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  199. package/artifacts/contracts/product/Product.sol/Product.json +57 -72
  200. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  201. package/artifacts/contracts/product/RiskService.sol/RiskService.json +63 -146
  202. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  203. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +107 -109
  204. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  205. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +56 -155
  207. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  208. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +216 -202
  209. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  210. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +15 -1
  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 +96 -314
  214. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  215. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +146 -179
  216. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  217. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +77 -57
  218. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  219. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +244 -285
  220. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  221. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +110 -115
  222. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  223. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +154 -175
  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 +187 -135
  228. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  229. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +56 -32
  230. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  231. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +29 -13
  232. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Component.sol/Component.json +39 -84
  234. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  235. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +320 -164
  236. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  237. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +141 -115
  238. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  239. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +169 -421
  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 +1 -1
  243. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  244. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  245. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
  246. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +633 -0
  247. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  248. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -96
  249. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  250. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +226 -82
  251. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  252. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +56 -84
  253. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  254. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  255. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +28 -1
  256. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  257. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +12 -1
  258. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +25 -77
  260. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  261. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +12 -1
  262. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  263. package/artifacts/contracts/shared/IService.sol/IService.json +32 -71
  264. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  265. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  266. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -72
  267. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  268. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  269. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  270. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  271. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +34 -15
  272. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  273. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +14 -3
  274. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  275. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -76
  276. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  277. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +37 -3
  278. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  279. package/artifacts/contracts/shared/Service.sol/Service.json +31 -70
  280. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  281. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +29 -42
  282. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  283. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +17 -30
  284. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  285. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +34 -34
  286. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  287. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +56 -101
  288. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  289. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +36 -75
  290. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  291. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  292. package/artifacts/contracts/staking/Staking.sol/Staking.json +109 -170
  293. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  294. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +31 -26
  295. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  296. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +124 -112
  297. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  298. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +22 -5
  299. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  300. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +65 -132
  301. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  302. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +111 -105
  303. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  304. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +204 -212
  305. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  306. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +19 -27
  307. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  308. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +16 -16
  309. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  310. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
  314. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  316. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  318. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  321. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  322. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  323. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  325. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  326. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  327. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +22 -25
  329. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  331. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  333. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  335. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
  336. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
  337. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  339. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +4 -4
  341. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +21 -2
  343. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  346. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/String.sol/StrLib.json +21 -2
  348. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  350. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  351. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  352. package/artifacts/contracts/type/Version.sol/VersionLib.json +10 -10
  353. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  354. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +6 -19
  355. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  356. package/artifacts/contracts/upgradeability/{IUpgradeable.sol/IUpgradeable.json → IVersionable.sol/IVersionable.json} +4 -54
  357. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  358. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +86 -63
  359. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  360. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  361. package/artifacts/contracts/upgradeability/{Upgradeable.sol/Upgradeable.json → Versionable.sol/Versionable.json} +4 -54
  362. package/contracts/accounting/AccountingService.sol +6 -5
  363. package/contracts/accounting/AccountingServiceManager.sol +6 -4
  364. package/contracts/accounting/IAccountingService.sol +1 -1
  365. package/contracts/authorization/AccessAdmin.sol +43 -45
  366. package/contracts/authorization/AccessAdminLib.sol +29 -15
  367. package/contracts/authorization/AccessManagerCloneable.sol +48 -24
  368. package/contracts/authorization/Authorization.sol +2 -2
  369. package/contracts/authorization/IAccessAdmin.sol +3 -3
  370. package/contracts/authorization/IServiceAuthorization.sol +1 -1
  371. package/contracts/authorization/ServiceAuthorization.sol +4 -4
  372. package/contracts/distribution/BasicDistribution.sol +2 -0
  373. package/contracts/distribution/BasicDistributionAuthorization.sol +4 -5
  374. package/contracts/distribution/Distribution.sol +2 -0
  375. package/contracts/distribution/DistributionService.sol +20 -24
  376. package/contracts/distribution/DistributionServiceManager.sol +6 -4
  377. package/contracts/examples/fire/FirePool.sol +4 -0
  378. package/contracts/examples/fire/FireProduct.sol +4 -0
  379. package/contracts/examples/flight/FlightLib.sol +300 -0
  380. package/contracts/examples/flight/FlightMessageVerifier.sol +128 -0
  381. package/contracts/examples/flight/FlightOracle.sol +171 -0
  382. package/contracts/examples/flight/FlightOracleAuthorization.sol +53 -0
  383. package/contracts/examples/flight/FlightPool.sol +89 -0
  384. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  385. package/contracts/examples/flight/FlightProduct.sol +685 -0
  386. package/contracts/examples/flight/FlightProductAuthorization.sol +69 -0
  387. package/contracts/examples/flight/FlightUSD.sol +28 -0
  388. package/contracts/examples/flight/originalV1.sol +396 -0
  389. package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -0
  390. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -0
  391. package/contracts/examples/unpermissioned/SimplePool.sol +4 -0
  392. package/contracts/examples/unpermissioned/SimpleProduct.sol +4 -0
  393. package/contracts/instance/IInstance.sol +1 -1
  394. package/contracts/instance/Instance.sol +12 -8
  395. package/contracts/instance/InstanceAdmin.sol +17 -11
  396. package/contracts/instance/InstanceAuthorizationV3.sol +2 -4
  397. package/contracts/instance/InstanceReader.sol +46 -18
  398. package/contracts/instance/InstanceService.sol +20 -18
  399. package/contracts/instance/InstanceServiceManager.sol +6 -4
  400. package/contracts/instance/base/Cloneable.sol +10 -4
  401. package/contracts/instance/base/ObjectSet.sol +2 -2
  402. package/contracts/oracle/BasicOracle.sol +2 -0
  403. package/contracts/oracle/BasicOracleAuthorization.sol +1 -3
  404. package/contracts/oracle/IOracleService.sol +16 -12
  405. package/contracts/oracle/Oracle.sol +4 -3
  406. package/contracts/oracle/OracleService.sol +67 -37
  407. package/contracts/oracle/OracleServiceManager.sol +6 -4
  408. package/contracts/pool/BasicPool.sol +4 -2
  409. package/contracts/pool/BasicPoolAuthorization.sol +4 -5
  410. package/contracts/pool/BundleService.sol +19 -25
  411. package/contracts/pool/BundleServiceManager.sol +7 -5
  412. package/contracts/pool/IPoolService.sol +6 -5
  413. package/contracts/pool/Pool.sol +3 -1
  414. package/contracts/pool/PoolLib.sol +102 -5
  415. package/contracts/pool/PoolService.sol +101 -67
  416. package/contracts/pool/PoolServiceManager.sol +6 -4
  417. package/contracts/product/ApplicationService.sol +34 -13
  418. package/contracts/product/ApplicationServiceManager.sol +6 -4
  419. package/contracts/product/BasicProduct.sol +2 -0
  420. package/contracts/product/BasicProductAuthorization.sol +7 -7
  421. package/contracts/product/ClaimService.sol +34 -10
  422. package/contracts/product/ClaimServiceManager.sol +7 -5
  423. package/contracts/product/IPolicyService.sol +1 -0
  424. package/contracts/product/PolicyService.sol +57 -44
  425. package/contracts/product/PolicyServiceManager.sol +6 -4
  426. package/contracts/product/PricingService.sol +8 -7
  427. package/contracts/product/PricingServiceManager.sol +6 -4
  428. package/contracts/product/Product.sol +2 -0
  429. package/contracts/product/RiskService.sol +40 -8
  430. package/contracts/product/RiskServiceManager.sol +6 -4
  431. package/contracts/registry/IRegistry.sol +14 -20
  432. package/contracts/registry/IRegistryService.sol +14 -10
  433. package/contracts/registry/IRelease.sol +3 -0
  434. package/contracts/registry/Registry.sol +78 -124
  435. package/contracts/registry/RegistryAdmin.sol +29 -12
  436. package/contracts/registry/RegistryAuthorization.sol +3 -4
  437. package/contracts/registry/RegistryService.sol +82 -99
  438. package/contracts/registry/RegistryServiceManager.sol +11 -4
  439. package/contracts/registry/ReleaseAdmin.sol +23 -9
  440. package/contracts/registry/ReleaseRegistry.sol +74 -64
  441. package/contracts/registry/ServiceAuthorizationV3.sol +3 -4
  442. package/contracts/registry/TokenRegistry.sol +15 -6
  443. package/contracts/shared/Component.sol +22 -27
  444. package/contracts/shared/ComponentService.sol +130 -45
  445. package/contracts/shared/ComponentServiceManager.sol +7 -5
  446. package/contracts/shared/ContractLib.sol +93 -359
  447. package/contracts/shared/EcdsaChecker.sol +5 -0
  448. package/contracts/shared/IAuthorizedComponent.sol +15 -0
  449. package/contracts/shared/IComponent.sol +3 -5
  450. package/contracts/shared/IComponentService.sol +14 -0
  451. package/contracts/shared/IInstanceLinkedComponent.sol +9 -9
  452. package/contracts/shared/INftOwnable.sol +2 -0
  453. package/contracts/shared/IRegisterable.sol +3 -14
  454. package/contracts/shared/IRegistryLinked.sol +3 -1
  455. package/contracts/shared/IService.sol +2 -2
  456. package/contracts/shared/InstanceLinkedComponent.sol +130 -39
  457. package/contracts/shared/NftOwnable.sol +22 -9
  458. package/contracts/shared/PolicyHolder.sol +4 -2
  459. package/contracts/shared/Registerable.sol +20 -37
  460. package/contracts/shared/RegistryLinked.sol +23 -4
  461. package/contracts/shared/Service.sol +9 -8
  462. package/contracts/shared/TokenHandler.sol +1 -4
  463. package/contracts/staking/IStaking.sol +2 -2
  464. package/contracts/staking/Staking.sol +33 -28
  465. package/contracts/staking/StakingLib.sol +1 -3
  466. package/contracts/staking/StakingManager.sol +6 -3
  467. package/contracts/staking/StakingReader.sol +17 -9
  468. package/contracts/staking/StakingService.sol +13 -16
  469. package/contracts/staking/StakingServiceManager.sol +8 -4
  470. package/contracts/staking/StakingStore.sol +8 -8
  471. package/contracts/staking/TargetHandler.sol +5 -4
  472. package/contracts/type/ObjectType.sol +2 -31
  473. package/contracts/type/Referral.sol +6 -0
  474. package/contracts/type/RequestIdSet.sol +62 -0
  475. package/contracts/type/Seconds.sol +4 -0
  476. package/contracts/type/String.sol +30 -0
  477. package/contracts/type/Timestamp.sol +10 -1
  478. package/contracts/type/Version.sol +16 -15
  479. package/contracts/upgradeability/{IUpgradeable.sol → IVersionable.sol} +19 -13
  480. package/contracts/upgradeability/ProxyManager.sol +54 -46
  481. package/contracts/upgradeability/{Upgradeable.sol → Versionable.sol} +14 -25
  482. package/package.json +2 -1
  483. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  484. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -74
  485. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  486. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -74
  487. package/artifacts/contracts/upgradeability/IUpgradeable.sol/IUpgradeable.dbg.json +0 -4
  488. package/artifacts/contracts/upgradeability/Upgradeable.sol/Upgradeable.dbg.json +0 -4
  489. package/contracts/shared/IVersionable.sol +0 -19
  490. package/contracts/shared/Versionable.sol +0 -47
@@ -0,0 +1,685 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+
7
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
8
+ import {IComponents} from "../../instance/module/IComponents.sol";
9
+
10
+ import {Amount, AmountLib} from "../../type/Amount.sol";
11
+ import {ClaimId} from "../../type/ClaimId.sol";
12
+ import {FeeLib} from "../../type/Fee.sol";
13
+ import {FlightLib} from "./FlightLib.sol";
14
+ import {FlightMessageVerifier} from "./FlightMessageVerifier.sol";
15
+ import {FlightOracle} from "./FlightOracle.sol";
16
+ import {InstanceReader} from "../../instance/InstanceReader.sol";
17
+ import {NftId, NftIdLib} from "../../type/NftId.sol";
18
+ import {PayoutId} from "../../type/PayoutId.sol";
19
+ import {Product} from "../../product/Product.sol";
20
+ import {ReferralLib} from "../../type/Referral.sol";
21
+ import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
22
+ import {RequestId} from "../../type/RequestId.sol";
23
+ import {Seconds, SecondsLib} from "../../type/Seconds.sol";
24
+ import {Str} from "../../type/String.sol";
25
+ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
26
+
27
+
28
+ /// @dev FlightProduct implements the flight delay product.
29
+ contract FlightProduct is
30
+ Product
31
+ {
32
+
33
+ event LogRequestFlightRatings(uint256 requestId, bytes32 carrierFlightNumber, uint256 departureTime, uint256 arrivalTime, bytes32 riskId);
34
+ event LogRequestFlightStatus(uint256 requestId, uint256 arrivalTime, bytes32 carrierFlightNumber, bytes32 departureYearMonthDay);
35
+ event LogPayoutTransferred(bytes32 bpKey, uint256 claimId, uint256 payoutId, uint256 amount);
36
+ event LogFlightStatusProcessed(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes, uint8 payoutOption);
37
+ event LogFlightPoliciesProcessed(RiskId riskId, uint8 payoutOption, uint256 policiesProcessed, uint256 policiesRemaining);
38
+
39
+ // TODO convert error logs to custom errors
40
+ // event LogError(string error, uint256 index, uint256 stored, uint256 calculated);
41
+ event LogPolicyExpired(bytes32 bpKey);
42
+
43
+ event LogErrorRiskInvalid(RequestId requestId, RiskId riskId);
44
+ event LogErrorUnprocessableStatus(RequestId requestId, RiskId riskId, bytes1 status);
45
+ event LogErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
46
+
47
+ error ErrorApplicationDataSignatureMismatch(address expectedSigner, address actualSigner);
48
+ error ErrorFlightProductClusterRisk(Amount totalSumInsured, Amount maxTotalPayout);
49
+ error ErrorFlightProductPremiumAmountTooSmall(Amount premiumAmount, Amount minPremium);
50
+ error ErrorFlightProductPremiumAmountTooLarge(Amount premiumAmount, Amount maxPremium);
51
+ error ErrorFlightProductArrivalBeforeDepartureTime(Timestamp departureTime, Timestamp arrivalTime);
52
+ error ErrorFlightProductArrivalAfterMaxFlightDuration(Timestamp arrivalTime, Timestamp maxArrivalTime, Seconds maxDuration);
53
+ error ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds minTimeBeforeDeparture);
54
+ error ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds maxTimeBeforeDeparture);
55
+ error ErrorFlightProductNotEnoughObservations(uint256 observations, uint256 minObservations);
56
+
57
+ // solhint-disable
58
+ // Minimum observations for valid prediction
59
+ uint256 public immutable MIN_OBSERVATIONS = 10;
60
+ // Minimum time before departure for applying
61
+ Seconds public MIN_TIME_BEFORE_DEPARTURE = SecondsLib.fromDays(14);
62
+ // Maximum time before departure for applying
63
+ Seconds public MAX_TIME_BEFORE_DEPARTURE = SecondsLib.fromDays(90);
64
+ // Maximum duration of flight
65
+ Seconds public MAX_FLIGHT_DURATION = SecondsLib.fromDays(2);
66
+ // Check for delay after .. minutes after scheduled arrival
67
+ Seconds public CHECK_OFFSET = SecondsLib.fromHours(1);
68
+ // Max time to process claims after departure
69
+ Seconds public LIFETIME = SecondsLib.fromDays(30);
70
+
71
+ // uint256 public constant MIN_PREMIUM = 15 * 10 ** 18; // production
72
+ // All amounts in cent = multiplier is 10 ** 16!
73
+ Amount public MIN_PREMIUM;
74
+ Amount public MAX_PREMIUM;
75
+ Amount public MAX_PAYOUT;
76
+ Amount public MAX_TOTAL_PAYOUT; // Maximum risk per flight is 3x max payout.
77
+
78
+ // Maximum cumulated weighted premium per risk
79
+ uint256 public MARGIN_PERCENT = 30;
80
+
81
+ // Maximum number of policies to process in one callback
82
+ uint8 public MAX_POLICIES_TO_PROCESS = 5;
83
+
84
+ // ['observations','late15','late30','late45','cancelled','diverted']
85
+ // no payouts for delays of 30' or less
86
+ uint8[6] public WEIGHT_PATTERN = [0, 0, 0, 30, 50, 50];
87
+ uint8 public constant MAX_WEIGHT = 50;
88
+
89
+ bool internal _testMode;
90
+
91
+ // GIF V3 specifics
92
+ NftId internal _defaultBundleNftId;
93
+ NftId internal _oracleNftId;
94
+ // solhint-enable
95
+
96
+
97
+ struct FlightRisk {
98
+ Str flightData; // example: "LX 180 ZRH BKK 20241104"
99
+ Timestamp departureTime;
100
+ // this field contains static data required by the frontend and is not directly used by the product
101
+ string departureTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
102
+ Timestamp arrivalTime;
103
+ // this field contains static data required by the frontend and is not directly used by the product
104
+ string arrivalTimeLocal; // example "2024-10-14T10:10:00.000 Asia/Seoul"
105
+ Amount sumOfSumInsuredAmounts;
106
+ // uint256 premiumMultiplier; // what is this? UFixed?
107
+ // uint256 weight; // what is this? UFixed?
108
+ bytes1 status; // 'L'ate, 'C'ancelled, 'D'iverted, ...
109
+ int256 delayMinutes;
110
+ uint8 payoutOption;
111
+ Timestamp statusUpdatedAt;
112
+ }
113
+
114
+ struct ApplicationData {
115
+ Str flightData;
116
+ Timestamp departureTime;
117
+ string departureTimeLocal;
118
+ Timestamp arrivalTime;
119
+ string arrivalTimeLocal;
120
+ Amount premiumAmount;
121
+ uint256[6] statistics;
122
+ }
123
+
124
+
125
+ struct PermitData {
126
+ address owner;
127
+ address spender;
128
+ uint256 value;
129
+ uint256 deadline;
130
+ uint8 v;
131
+ bytes32 r;
132
+ bytes32 s;
133
+ }
134
+
135
+
136
+ constructor(
137
+ address registry,
138
+ NftId instanceNftid,
139
+ string memory componentName,
140
+ IAuthorization authorization
141
+ )
142
+ {
143
+ address initialOwner = msg.sender;
144
+
145
+ _initialize(
146
+ registry,
147
+ instanceNftid,
148
+ componentName,
149
+ authorization,
150
+ initialOwner);
151
+ }
152
+
153
+ //--- external functions ------------------------------------------------//
154
+ //--- unpermissioned functions ------------------------------------------//
155
+
156
+ function setOracleNftId()
157
+ external
158
+ {
159
+ _oracleNftId = _getInstanceReader().getProductInfo(
160
+ getNftId()).oracleNftId[0];
161
+ }
162
+
163
+ function calculatePayoutAmounts(
164
+ FlightProduct flightProduct,
165
+ Amount premium,
166
+ uint256[6] memory statistics
167
+ )
168
+ external
169
+ view
170
+ returns (
171
+ uint256 weight,
172
+ Amount[5] memory payoutAmounts,
173
+ Amount sumInsuredAmount // simply the max of payoutAmounts
174
+ )
175
+ {
176
+ return FlightLib.calculatePayoutAmounts(
177
+ flightProduct,
178
+ premium,
179
+ statistics);
180
+ }
181
+
182
+ /// @dev Creates a policy using a permit for the policy holder.
183
+ /// The policy holder is defined as the owner parameter of the permit data.
184
+ /// NOTE: This function makes the assumption that the product token
185
+ /// supports permits. This assumption is not verfied.
186
+ function createPolicyWithPermit(
187
+ PermitData memory permit,
188
+ ApplicationData memory application
189
+ )
190
+ external
191
+ virtual
192
+ restricted()
193
+ returns (
194
+ RiskId riskId,
195
+ NftId policyNftId
196
+ )
197
+ {
198
+ // process permit data
199
+ _processPermit(permit);
200
+
201
+ // create policy
202
+ address policyHolder = permit.owner;
203
+ (
204
+ riskId,
205
+ policyNftId
206
+ ) = _createPolicy(
207
+ policyHolder,
208
+ application.flightData,
209
+ application.departureTime,
210
+ application.departureTimeLocal,
211
+ application.arrivalTime,
212
+ application.arrivalTimeLocal,
213
+ application.premiumAmount,
214
+ application.statistics);
215
+ }
216
+
217
+
218
+ function _createPolicy(
219
+ address policyHolder,
220
+ Str flightData,
221
+ Timestamp departureTime,
222
+ string memory departureTimeLocal,
223
+ Timestamp arrivalTime,
224
+ string memory arrivalTimeLocal,
225
+ Amount premiumAmount,
226
+ uint256[6] memory statistics
227
+ )
228
+ internal
229
+ virtual
230
+ returns (
231
+ RiskId riskId,
232
+ NftId policyNftId
233
+ )
234
+ {
235
+ // checks
236
+ // disabled for now - using rbac for security
237
+ FlightLib.checkApplicationData(
238
+ this,
239
+ flightData,
240
+ departureTime,
241
+ arrivalTime,
242
+ premiumAmount);
243
+
244
+ (riskId, policyNftId) = _prepareApplication(
245
+ policyHolder,
246
+ flightData,
247
+ departureTime,
248
+ departureTimeLocal,
249
+ arrivalTime,
250
+ arrivalTimeLocal,
251
+ premiumAmount,
252
+ statistics);
253
+
254
+ _createPolicy(
255
+ policyNftId,
256
+ TimestampLib.zero(), // do not ativate yet
257
+ premiumAmount); // max premium amount
258
+
259
+ // interactions (token transfer + callback to token holder, if contract)
260
+ _collectPremium(
261
+ policyNftId,
262
+ departureTime); // activate at scheduled departure time of flight
263
+
264
+ // send oracle request for flight status (interacts with flight oracle contract)
265
+ _sendRequest(
266
+ _oracleNftId,
267
+ abi.encode(
268
+ FlightOracle.FlightStatusRequest(
269
+ riskId,
270
+ flightData,
271
+ departureTime)),
272
+ // allow up to 30 days to process the claim
273
+ arrivalTime.addSeconds(SecondsLib.fromDays(30)),
274
+ "flightStatusCallback");
275
+ }
276
+
277
+
278
+ /// @dev Callback for flight status oracle.
279
+ /// Function may only be alled by oracle service.
280
+ function flightStatusCallback(
281
+ RequestId requestId,
282
+ bytes memory responseData
283
+ )
284
+ external
285
+ virtual
286
+ restricted()
287
+ {
288
+ FlightOracle.FlightStatusResponse memory response = abi.decode(
289
+ responseData, (FlightOracle.FlightStatusResponse));
290
+
291
+ _processFlightStatus(
292
+ requestId,
293
+ response.riskId,
294
+ response.status,
295
+ response.delayMinutes,
296
+ MAX_POLICIES_TO_PROCESS);
297
+ }
298
+
299
+
300
+ /// @dev Manual fallback function for product owner.
301
+ function processFlightStatus(
302
+ RequestId requestId,
303
+ RiskId riskId,
304
+ bytes1 status,
305
+ int256 delayMinutes,
306
+ uint8 maxPoliciesToProcess
307
+ )
308
+ external
309
+ virtual
310
+ restricted()
311
+ onlyOwner()
312
+ {
313
+ _processFlightStatus(
314
+ requestId,
315
+ riskId,
316
+ status,
317
+ delayMinutes,
318
+ maxPoliciesToProcess);
319
+ }
320
+
321
+
322
+ /// @dev Manual fallback function for product owner.
323
+ function processPayoutsAndClosePolicies(
324
+ RiskId riskId,
325
+ uint8 maxPoliciesToProcess
326
+ )
327
+ external
328
+ virtual
329
+ restricted()
330
+ onlyOwner()
331
+ {
332
+ _processPayoutsAndClosePolicies(
333
+ riskId,
334
+ maxPoliciesToProcess);
335
+ }
336
+
337
+
338
+ //--- owner functions ---------------------------------------------------//
339
+
340
+ /// @dev Call after product registration with the instance
341
+ /// when the product token/tokenhandler is available
342
+ function completeSetup()
343
+ external
344
+ virtual
345
+ restricted()
346
+ onlyOwner()
347
+ {
348
+ IERC20Metadata token = IERC20Metadata(getToken());
349
+ uint256 tokenMultiplier = 10 ** token.decimals();
350
+
351
+ MIN_PREMIUM = AmountLib.toAmount(15 * tokenMultiplier);
352
+ MAX_PREMIUM = AmountLib.toAmount(200 * tokenMultiplier);
353
+ MAX_PAYOUT = AmountLib.toAmount(500 * tokenMultiplier);
354
+ MAX_TOTAL_PAYOUT = AmountLib.toAmount(3 * MAX_PAYOUT.toInt());
355
+ }
356
+
357
+
358
+ function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
359
+ function setTestMode(bool testMode) external restricted() onlyOwner() { _testMode = testMode; }
360
+
361
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
362
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
363
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
364
+
365
+
366
+ //--- view functions ----------------------------------------------------//
367
+
368
+ function calculateNetPremium(
369
+ Amount, // sumInsuredAmount: not used in this product
370
+ RiskId, // riskId: not used in this product
371
+ Seconds, // lifetime: not used in this product, a flight is a one time risk
372
+ bytes memory applicationData // holds the premium amount the customer is willing to pay
373
+ )
374
+ external
375
+ virtual override
376
+ view
377
+ returns (Amount netPremiumAmount)
378
+ {
379
+ (netPremiumAmount, ) = abi.decode(applicationData, (Amount, Amount[5]));
380
+ }
381
+
382
+
383
+ function getOracleNftId() public view returns (NftId oracleNftId) { return _oracleNftId; }
384
+ function isTestMode() public view returns (bool) { return _testMode; }
385
+ function decodeFlightRiskData(bytes memory data) public pure returns (FlightRisk memory) { return abi.decode(data, (FlightRisk)); }
386
+
387
+ //--- internal functions ------------------------------------------------//
388
+
389
+
390
+ function _processPermit(
391
+ PermitData memory permit
392
+ )
393
+ internal
394
+ virtual
395
+ restricted()
396
+ {
397
+ address tokenAddress = address(getToken());
398
+
399
+ // process permit data
400
+ ERC20Permit(tokenAddress).permit(
401
+ permit.owner,
402
+ permit.spender,
403
+ permit.value,
404
+ permit.deadline,
405
+ permit.v,
406
+ permit.r,
407
+ permit.s);
408
+ }
409
+
410
+
411
+ function _prepareApplication(
412
+ address policyHolder,
413
+ Str flightData,
414
+ Timestamp departureTime,
415
+ string memory departureTimeLocal,
416
+ Timestamp arrivalTime,
417
+ string memory arrivalTimeLocal,
418
+ Amount premiumAmount,
419
+ uint256[6] memory statistics
420
+ )
421
+ internal
422
+ virtual
423
+ returns (
424
+ RiskId riskId,
425
+ NftId policyNftId
426
+ )
427
+ {
428
+ Amount[5] memory payoutAmounts;
429
+ Amount sumInsuredAmount;
430
+
431
+ (
432
+ riskId,
433
+ payoutAmounts,
434
+ sumInsuredAmount
435
+ ) = _createRiskAndPayoutAmounts(
436
+ flightData,
437
+ departureTime,
438
+ departureTimeLocal,
439
+ arrivalTime,
440
+ arrivalTimeLocal,
441
+ premiumAmount,
442
+ statistics);
443
+
444
+ policyNftId = _createApplication(
445
+ policyHolder,
446
+ riskId,
447
+ sumInsuredAmount,
448
+ premiumAmount,
449
+ LIFETIME,
450
+ _defaultBundleNftId,
451
+ ReferralLib.zero(),
452
+ abi.encode(
453
+ premiumAmount,
454
+ payoutAmounts)); // application data
455
+ }
456
+
457
+
458
+ function _createRiskAndPayoutAmounts(
459
+ Str flightData,
460
+ Timestamp departureTime,
461
+ string memory departureTimeLocal,
462
+ Timestamp arrivalTime,
463
+ string memory arrivalTimeLocal,
464
+ Amount premiumAmount,
465
+ uint256[6] memory statistics
466
+ )
467
+ internal
468
+ virtual
469
+ returns (
470
+ RiskId riskId,
471
+ Amount[5] memory payoutAmounts,
472
+ Amount sumInsuredAmount
473
+ )
474
+ {
475
+ uint256 weight;
476
+
477
+ (
478
+ weight,
479
+ payoutAmounts,
480
+ sumInsuredAmount
481
+ ) = FlightLib.calculatePayoutAmounts(
482
+ this,
483
+ premiumAmount,
484
+ statistics);
485
+
486
+ riskId = _checkAndUpdateFlightRisk(
487
+ flightData,
488
+ departureTime,
489
+ departureTimeLocal,
490
+ arrivalTime,
491
+ arrivalTimeLocal,
492
+ sumInsuredAmount,
493
+ weight);
494
+ }
495
+
496
+
497
+ function _checkAndUpdateFlightRisk(
498
+ Str flightData,
499
+ Timestamp departureTime,
500
+ string memory departureTimeLocal,
501
+ Timestamp arrivalTime,
502
+ string memory arrivalTimeLocal,
503
+ Amount sumInsuredAmount,
504
+ uint256 weight
505
+ )
506
+ internal
507
+ virtual
508
+ returns (RiskId riskId)
509
+ {
510
+ bool exists;
511
+ FlightRisk memory flightRisk;
512
+ (riskId, exists, flightRisk) = FlightLib.getFlightRisk(
513
+ _getInstanceReader(),
514
+ getNftId(),
515
+ flightData,
516
+ departureTime,
517
+ departureTimeLocal,
518
+ arrivalTime,
519
+ arrivalTimeLocal);
520
+
521
+ // create risk, if new
522
+ if (!exists) {
523
+ bytes32 riskKey = FlightLib.getRiskKey(flightData);
524
+ _createRisk(riskKey, abi.encode(flightRisk));
525
+ }
526
+
527
+ // check for cluster risk: additional sum insured amount must not exceed MAX_TOTAL_PAYOUT
528
+ if (flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount > MAX_TOTAL_PAYOUT) {
529
+ revert ErrorFlightProductClusterRisk(flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount, MAX_TOTAL_PAYOUT);
530
+ }
531
+
532
+ // update existing risk with additional sum insured amount
533
+ flightRisk.sumOfSumInsuredAmounts = flightRisk.sumOfSumInsuredAmounts + sumInsuredAmount;
534
+ _updateRisk(riskId, abi.encode(flightRisk));
535
+ }
536
+
537
+
538
+ function _processFlightStatus(
539
+ RequestId requestId,
540
+ RiskId riskId,
541
+ bytes1 status,
542
+ int256 delayMinutes,
543
+ uint8 maxPoliciesToProcess
544
+ )
545
+ internal
546
+ virtual
547
+ {
548
+ // check risk exists
549
+ InstanceReader reader = _getInstanceReader();
550
+ (
551
+ bool exists,
552
+ FlightRisk memory flightRisk
553
+ ) = FlightLib.getFlightRisk(reader, getNftId(), riskId);
554
+
555
+ if (!exists) {
556
+ // TODO decide to switch from log to error
557
+ emit LogErrorRiskInvalid(requestId, riskId);
558
+ return;
559
+ } else {
560
+ // update status, if not yet set
561
+ if (flightRisk.statusUpdatedAt.eqz()) {
562
+ flightRisk.status = status;
563
+ flightRisk.delayMinutes = delayMinutes;
564
+ flightRisk.payoutOption = FlightLib.checkAndGetPayoutOption(
565
+ requestId, riskId, status, delayMinutes);
566
+ flightRisk.statusUpdatedAt = TimestampLib.current();
567
+
568
+ _updateRisk(riskId, abi.encode(flightRisk));
569
+ }
570
+ // TODO revert in else case?
571
+ }
572
+
573
+ (,, uint8 payoutOption) = _processPayoutsAndClosePolicies(
574
+ riskId,
575
+ maxPoliciesToProcess);
576
+
577
+ // logging
578
+ emit LogFlightStatusProcessed(requestId, riskId, status, delayMinutes, payoutOption);
579
+ }
580
+
581
+
582
+ function _processPayoutsAndClosePolicies(
583
+ RiskId riskId,
584
+ uint8 maxPoliciesToProcess
585
+ )
586
+ internal
587
+ virtual
588
+ returns (
589
+ bool riskExists,
590
+ bool statusAvailable,
591
+ uint8 payoutOption
592
+ )
593
+ {
594
+ // determine numbers of policies to process
595
+ InstanceReader reader = _getInstanceReader();
596
+ (riskExists, statusAvailable, payoutOption) = FlightLib.getPayoutOption(reader, getNftId(), riskId);
597
+
598
+ // return with default values if risk does not exist or status is not yet available
599
+ if (!riskExists || !statusAvailable) {
600
+ return (riskExists, statusAvailable, payoutOption);
601
+ }
602
+
603
+ uint256 policiesToProcess = reader.policiesForRisk(riskId);
604
+ uint256 policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
605
+
606
+ // go trough policies
607
+ for (uint256 i = 0; i < policiesProcessed; i++) {
608
+ NftId policyNftId = reader.getPolicyForRisk(riskId, i);
609
+
610
+ // create payout (if any)
611
+ if (payoutOption < type(uint8).max) {
612
+ bytes memory applicationData = reader.getPolicyInfo(
613
+ policyNftId).applicationData;
614
+
615
+ _resolvePayout(
616
+ policyNftId,
617
+ FlightLib.getPayoutAmount(
618
+ applicationData,
619
+ payoutOption));
620
+ }
621
+
622
+ // expire and close policy
623
+ _expire(policyNftId, TimestampLib.current());
624
+ _close(policyNftId);
625
+ }
626
+
627
+ // logging
628
+ emit LogFlightPoliciesProcessed(riskId, payoutOption, policiesProcessed, policiesToProcess - policiesProcessed);
629
+ }
630
+
631
+
632
+ function _resolvePayout(
633
+ NftId policyNftId,
634
+ Amount payoutAmount
635
+ )
636
+ internal
637
+ virtual
638
+ {
639
+ // create confirmed claim
640
+ ClaimId claimId = _submitClaim(policyNftId, payoutAmount, "");
641
+ _confirmClaim(policyNftId, claimId, payoutAmount, "");
642
+
643
+ // create and execute payout
644
+ PayoutId payoutId = _createPayout(policyNftId, claimId, payoutAmount, "");
645
+ _processPayout(policyNftId, payoutId);
646
+ }
647
+
648
+
649
+ function _initialize(
650
+ address registry,
651
+ NftId instanceNftId,
652
+ string memory componentName,
653
+ IAuthorization authorization,
654
+ address initialOwner
655
+ )
656
+ internal
657
+ initializer
658
+ {
659
+ __Product_init(
660
+ registry,
661
+ instanceNftId,
662
+ componentName,
663
+ IComponents.ProductInfo({
664
+ isProcessingFundedClaims: false,
665
+ isInterceptingPolicyTransfers: false,
666
+ hasDistribution: false,
667
+ expectedNumberOfOracles: 1,
668
+ numberOfOracles: 0,
669
+ poolNftId: NftIdLib.zero(),
670
+ distributionNftId: NftIdLib.zero(),
671
+ oracleNftId: new NftId[](0)
672
+ }),
673
+ IComponents.FeeInfo({
674
+ productFee: FeeLib.zero(),
675
+ processingFee: FeeLib.zero(),
676
+ distributionFee: FeeLib.zero(),
677
+ minDistributionOwnerFee: FeeLib.zero(),
678
+ poolFee: FeeLib.zero(),
679
+ stakingFee: FeeLib.zero(),
680
+ performanceFee: FeeLib.zero()
681
+ }),
682
+ authorization,
683
+ initialOwner); // number of oracles
684
+ }
685
+ }