@etherisc/gif-next 3.0.0-f90c901-018 → 3.0.0-fb87f3a-607

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