@etherisc/gif-next 3.0.0-4e7f66e-983 → 3.0.0-4f4b737-760

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 (469) hide show
  1. package/README.md +9 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +42 -56
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +44 -48
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +14 -20
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +119 -119
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +145 -100
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +42 -29
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  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 +75 -63
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +20 -114
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +2 -96
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +187 -114
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -75
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +2 -96
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +113 -40
  37. package/artifacts/contracts/examples/crop/AccountingToken.sol/AccountingToken.dbg.json +4 -0
  38. package/artifacts/contracts/examples/crop/AccountingToken.sol/AccountingToken.json +376 -0
  39. package/artifacts/contracts/examples/crop/CropPool.sol/CropPool.dbg.json +4 -0
  40. package/artifacts/contracts/examples/crop/CropPool.sol/CropPool.json +1391 -0
  41. package/artifacts/contracts/examples/crop/CropPoolAuthorization.sol/CropPoolAuthorization.dbg.json +4 -0
  42. package/artifacts/contracts/examples/crop/CropPoolAuthorization.sol/CropPoolAuthorization.json +844 -0
  43. package/artifacts/contracts/examples/crop/CropProduct.sol/CropProduct.dbg.json +4 -0
  44. package/artifacts/contracts/examples/crop/CropProduct.sol/CropProduct.json +2433 -0
  45. package/artifacts/contracts/examples/crop/CropProductAuthorization.sol/CropProductAuthorization.dbg.json +4 -0
  46. package/artifacts/contracts/examples/crop/CropProductAuthorization.sol/CropProductAuthorization.json +891 -0
  47. package/artifacts/contracts/examples/crop/Location.sol/LocationLib.dbg.json +4 -0
  48. package/artifacts/contracts/examples/crop/Location.sol/LocationLib.json +199 -0
  49. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  50. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +2 -2
  51. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  52. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +21 -96
  53. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  54. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +2 -2
  55. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  56. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +49 -129
  57. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
  59. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  60. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +2 -2
  61. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
  62. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +372 -73
  63. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
  64. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +2 -2
  65. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.dbg.json +4 -0
  66. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.json +801 -0
  67. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
  68. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +167 -132
  69. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
  70. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +82 -35
  71. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
  72. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +23 -98
  73. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
  74. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +2 -2
  75. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
  76. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +422 -579
  77. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
  78. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +83 -36
  79. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
  80. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
  81. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
  82. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +2 -2
  83. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
  84. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +2 -2
  85. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  86. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +28 -122
  87. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  88. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +2 -2
  89. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  90. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +91 -83
  91. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  92. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +29 -104
  93. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  94. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +2 -2
  95. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  96. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +25 -100
  97. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  98. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +2 -2
  99. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  100. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +50 -0
  101. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  102. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +59 -72
  103. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  104. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +50 -0
  105. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  106. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +34 -21
  107. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  108. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +108 -9
  109. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  110. package/artifacts/contracts/instance/Instance.sol/Instance.json +51 -33
  111. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  112. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +197 -197
  113. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  114. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +21 -21
  115. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  116. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +176 -34
  117. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  118. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +151 -36
  119. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  120. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +41 -41
  121. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  122. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +171 -121
  123. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  124. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +141 -91
  125. package/artifacts/contracts/instance/RequestSet.sol/RequestSet.dbg.json +4 -0
  126. package/artifacts/contracts/instance/RequestSet.sol/RequestSet.json +466 -0
  127. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  128. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +66 -79
  129. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  130. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +9 -9
  131. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  132. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  133. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  134. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  135. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  136. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  137. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +3 -3
  138. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  139. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +38 -2
  140. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  141. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  142. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  143. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  144. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  145. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  146. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  147. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  148. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +85 -77
  149. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  150. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  151. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  152. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  153. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +67 -59
  154. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  155. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +19 -13
  156. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  157. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +71 -63
  158. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  159. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +57 -51
  160. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  161. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +50 -50
  162. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  163. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +4 -79
  164. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  165. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  166. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  167. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +90 -85
  168. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +62 -62
  170. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  171. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +32 -27
  172. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  173. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +4 -79
  174. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  175. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +55 -43
  176. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  177. package/artifacts/contracts/pool/Pool.sol/Pool.json +4 -79
  178. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  179. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +4 -9
  180. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  181. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +113 -101
  182. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -63
  184. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  185. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +37 -37
  186. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  187. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +44 -44
  188. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  189. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +2 -77
  190. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  191. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  192. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  193. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +86 -80
  194. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  195. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -67
  196. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  197. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +11 -11
  198. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  199. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +24 -18
  200. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  201. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +21 -9
  202. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  203. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +2 -2
  204. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  205. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +2 -77
  206. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  207. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +15 -28
  208. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  209. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +81 -69
  210. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  211. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +20 -12
  212. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  213. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +60 -60
  214. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  215. package/artifacts/contracts/product/PricingService.sol/PricingService.json +34 -34
  216. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +51 -51
  218. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  219. package/artifacts/contracts/product/Product.sol/Product.json +2 -77
  220. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  221. package/artifacts/contracts/product/RiskService.sol/RiskService.json +37 -50
  222. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  223. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +42 -42
  224. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  225. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +58 -8
  226. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  227. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +30 -24
  228. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  229. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +2 -2
  230. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  231. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  232. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  233. package/artifacts/contracts/registry/Registry.sol/Registry.json +132 -66
  234. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  235. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -188
  236. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  237. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +2 -27
  238. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  239. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +8 -8
  240. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  241. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -37
  242. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  243. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +205 -205
  244. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  245. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  246. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  247. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +122 -119
  248. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  249. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +19 -19
  250. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  251. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +20 -20
  252. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  253. package/artifacts/contracts/shared/Component.sol/Component.json +2 -77
  254. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  255. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +329 -113
  256. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  257. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +61 -61
  258. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  259. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
  260. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  261. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  262. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  263. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
  264. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +558 -0
  265. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  266. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +2 -77
  267. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  268. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +271 -55
  269. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  270. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +2 -77
  271. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  272. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  273. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +2 -2
  274. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  275. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  276. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +2 -2
  277. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  278. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  279. package/artifacts/contracts/shared/IService.sol/IService.json +2 -2
  280. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  281. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  282. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  283. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +2 -77
  284. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  285. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  286. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  287. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  288. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +4 -4
  289. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  290. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  291. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  292. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  293. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  294. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  295. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  296. package/artifacts/contracts/shared/Service.sol/Service.json +2 -2
  297. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  298. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +39 -66
  299. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  300. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +22 -49
  301. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  302. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +28 -28
  303. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  304. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +91 -147
  305. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  306. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +15 -221
  307. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  308. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  309. package/artifacts/contracts/staking/Staking.sol/Staking.json +139 -195
  310. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  311. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -7
  312. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  313. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +53 -53
  314. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  315. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  316. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  317. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +35 -241
  318. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  319. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +40 -40
  320. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  321. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +220 -220
  322. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  323. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +9 -14
  324. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  325. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -7
  326. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  327. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  328. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -7
  330. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  332. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
  334. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  336. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  338. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -7
  340. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  341. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  342. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  343. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  344. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  346. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  347. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  348. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  350. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  351. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  352. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  353. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  354. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  355. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +23 -4
  356. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
  357. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +2 -2
  358. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  359. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  360. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  361. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  362. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  363. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  364. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  365. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  366. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  367. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  368. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  369. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  370. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  371. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  372. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  373. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  374. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  375. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -7
  376. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  377. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  378. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  379. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  380. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  381. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  382. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +22 -22
  383. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  384. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  385. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  386. package/contracts/accounting/AccountingService.sol +17 -29
  387. package/contracts/accounting/IAccountingService.sol +7 -8
  388. package/contracts/authorization/AccessAdmin.sol +16 -33
  389. package/contracts/authorization/AccessAdminLib.sol +20 -3
  390. package/contracts/authorization/AccessManagerCloneable.sol +4 -0
  391. package/contracts/authorization/IAccessAdmin.sol +9 -8
  392. package/contracts/distribution/DistributionService.sol +24 -19
  393. package/contracts/distribution/IDistributionComponent.sol +0 -2
  394. package/contracts/distribution/IDistributionService.sol +8 -7
  395. package/contracts/examples/crop/AccountingToken.sol +26 -0
  396. package/contracts/examples/crop/CropPool.sol +89 -0
  397. package/contracts/examples/crop/CropPoolAuthorization.sol +37 -0
  398. package/contracts/examples/crop/CropProduct.sol +513 -0
  399. package/contracts/examples/crop/CropProductAuthorization.sol +69 -0
  400. package/contracts/examples/crop/Location.sol +50 -0
  401. package/contracts/examples/flight/FlightLib.sol +106 -80
  402. package/contracts/examples/flight/FlightNft.sol +234 -0
  403. package/contracts/examples/flight/FlightOracle.sol +22 -60
  404. package/contracts/examples/flight/FlightOracleAuthorization.sol +27 -5
  405. package/contracts/examples/flight/FlightPool.sol +1 -1
  406. package/contracts/examples/flight/FlightProduct.sol +283 -240
  407. package/contracts/examples/flight/FlightProductAuthorization.sol +35 -10
  408. package/contracts/examples/flight/FlightProductManager.sol +49 -0
  409. package/contracts/instance/BaseStore.sol +4 -0
  410. package/contracts/instance/BundleSet.sol +7 -8
  411. package/contracts/instance/IBaseStore.sol +8 -0
  412. package/contracts/instance/IInstance.sol +10 -7
  413. package/contracts/instance/IInstanceService.sol +11 -4
  414. package/contracts/instance/Instance.sol +8 -0
  415. package/contracts/instance/InstanceAdmin.sol +2 -2
  416. package/contracts/instance/InstanceAuthorizationV3.sol +15 -1
  417. package/contracts/instance/InstanceReader.sol +55 -8
  418. package/contracts/instance/InstanceService.sol +68 -36
  419. package/contracts/instance/InstanceStore.sol +14 -14
  420. package/contracts/instance/ProductStore.sol +14 -14
  421. package/contracts/instance/RequestSet.sol +63 -0
  422. package/contracts/instance/RiskSet.sol +6 -7
  423. package/contracts/instance/TargetNames.sol +1 -0
  424. package/contracts/instance/base/BalanceStore.sol +7 -7
  425. package/contracts/instance/base/ObjectSet.sol +9 -1
  426. package/contracts/instance/base/ObjectSetHelperLib.sol +5 -1
  427. package/contracts/oracle/BasicOracle.sol +1 -0
  428. package/contracts/oracle/IOracleComponent.sol +10 -0
  429. package/contracts/oracle/IOracleService.sol +5 -5
  430. package/contracts/oracle/Oracle.sol +50 -26
  431. package/contracts/oracle/OracleService.sol +26 -23
  432. package/contracts/pool/BundleService.sol +3 -3
  433. package/contracts/pool/IBundleService.sol +9 -10
  434. package/contracts/pool/IPoolComponent.sol +1 -1
  435. package/contracts/pool/IPoolService.sol +14 -14
  436. package/contracts/pool/PoolService.sol +2 -2
  437. package/contracts/product/ClaimService.sol +1 -1
  438. package/contracts/product/IApplicationService.sol +8 -8
  439. package/contracts/product/IClaimService.sol +9 -9
  440. package/contracts/product/IPolicyService.sol +7 -7
  441. package/contracts/product/IRiskService.sol +4 -5
  442. package/contracts/product/PolicyService.sol +1 -1
  443. package/contracts/product/PolicyServiceLib.sol +5 -3
  444. package/contracts/product/RiskService.sol +2 -2
  445. package/contracts/registry/ChainNft.sol +10 -9
  446. package/contracts/registry/IRegistry.sol +11 -10
  447. package/contracts/registry/Registry.sol +16 -13
  448. package/contracts/registry/RegistryAdmin.sol +7 -1
  449. package/contracts/registry/RegistryAuthorization.sol +0 -2
  450. package/contracts/registry/ReleaseAdmin.sol +12 -5
  451. package/contracts/registry/ReleaseRegistry.sol +7 -8
  452. package/contracts/registry/TokenRegistry.sol +3 -3
  453. package/contracts/shared/ComponentService.sol +38 -4
  454. package/contracts/shared/IAuthorizedComponent.sol +15 -0
  455. package/contracts/shared/IComponent.sol +0 -4
  456. package/contracts/shared/IComponentService.sol +31 -9
  457. package/contracts/shared/IInstanceLinkedComponent.sol +2 -5
  458. package/contracts/shared/INftOwnable.sol +1 -1
  459. package/contracts/shared/InstanceLinkedComponent.sol +3 -2
  460. package/contracts/shared/TokenHandler.sol +5 -5
  461. package/contracts/staking/IStaking.sol +33 -31
  462. package/contracts/staking/IStakingService.sol +7 -16
  463. package/contracts/staking/Staking.sol +5 -4
  464. package/contracts/staking/StakingService.sol +2 -3
  465. package/contracts/staking/StakingStore.sol +3 -3
  466. package/contracts/staking/TargetHandler.sol +2 -2
  467. package/contracts/type/RequestId.sol +6 -0
  468. package/contracts/upgradeability/ProxyManager.sol +2 -2
  469. package/package.json +3 -3
@@ -0,0 +1,513 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
7
+ import {IComponents} from "../../instance/module/IComponents.sol";
8
+ import {IPolicy} from "../../instance/module/IPolicy.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 {InstanceReader} from "../../instance/InstanceReader.sol";
14
+ import {Location, LocationLib} from "./Location.sol";
15
+ import {NftId, NftIdLib} from "../../type/NftId.sol";
16
+ import {PayoutId} from "../../type/PayoutId.sol";
17
+ import {Product} from "../../product/Product.sol";
18
+ import {ReferralLib} from "../../type/Referral.sol";
19
+ import {RiskId} from "../../type/RiskId.sol";
20
+ import {RequestId} from "../../type/RequestId.sol";
21
+ import {Seconds, SecondsLib} from "../../type/Seconds.sol";
22
+ import {Str, StrLib} from "../../type/String.sol";
23
+ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
24
+ import {UFixed, UFixedLib} from "../../type/UFixed.sol";
25
+
26
+
27
+ /// @dev CropProduct implements the crop insurance product.
28
+ contract CropProduct is
29
+ Product
30
+ {
31
+
32
+ // Events
33
+ event LogCropPolicyCreated(NftId policyNftId);
34
+
35
+ // Custom errors
36
+ error ErrorInvalidId(string id);
37
+ error ErrorRecordAlreadyExists(string id);
38
+
39
+ error ErrorInvalidYear(uint16 year);
40
+ error ErrorInvalidSeasonStart(string seasonStart);
41
+ error ErrorInvalidSeasonEnd(string seasonEnd);
42
+ error ErrorInvalidSeasonDays(uint16 seasonDays);
43
+
44
+ error ErrorInvalidSeasonEndAt(Timestamp seasonEndAt);
45
+
46
+ error ErrorInvalidSeasonId(string seasonId);
47
+ error ErrorInvalidLocation(string locationId);
48
+ error ErrorInvalidCrop(string crop);
49
+
50
+ error ErrorInvalidPolicyHolder();
51
+ error ErrorInvalidRiskId(RiskId riskId);
52
+ error ErrorInvalidActivateAt(Timestamp activateAt);
53
+ error ErrorInvalidSumInsured(Amount sumInsuredAmount);
54
+ error ErrorInvalidPremium(Amount premiumAmount);
55
+
56
+ error ErrorUndefinedRiskPayout(RiskId riskId);
57
+
58
+ // solhint-disable var-name-mixedcase
59
+ Amount public MIN_PREMIUM;
60
+ Amount public MAX_PREMIUM;
61
+ Amount public MIN_SUM_INSURED;
62
+ Amount public MAX_SUM_INSURED;
63
+ uint8 public MAX_POLICIES_TO_PROCESS = 1;
64
+ // solhint-enable var-name-mixedcase
65
+
66
+ // Crop insurance specifics
67
+ uint16 public constant GRACE_PERIOD_DAYS = 60;
68
+
69
+ struct Season {
70
+ uint16 year;
71
+ Str name;
72
+ Str seasonStart; // ISO 8601 date
73
+ Str seasonEnd; // ISO 8601 date
74
+ uint16 seasonDays;
75
+ }
76
+
77
+ struct CropRisk {
78
+ Str seasonId;
79
+ Str locationId;
80
+ Str crop;
81
+ Timestamp seasonEndAt;
82
+ UFixed payoutFactor;
83
+ bool payoutDefined;
84
+ }
85
+
86
+ // Seasons
87
+ mapping (Str seasonId => Season season) internal _season;
88
+ Str [] internal _seasons;
89
+
90
+ // Locations
91
+ mapping(Str locationId => Location location) internal _location;
92
+
93
+ // Crop names
94
+ mapping(Str cropName => bool isValid) internal _validCrop;
95
+ Str [] internal _crops;
96
+
97
+ mapping(Str id => RiskId riskId) internal _riskId;
98
+
99
+ // GIF V3 specifics
100
+ NftId internal _defaultBundleNftId;
101
+
102
+
103
+ constructor(
104
+ address registry,
105
+ NftId instanceNftId,
106
+ string memory componentName,
107
+ IAuthorization authorization
108
+ )
109
+ {
110
+ address initialOwner = msg.sender;
111
+
112
+ _initialize(
113
+ registry,
114
+ instanceNftId,
115
+ componentName,
116
+ authorization,
117
+ initialOwner);
118
+ }
119
+
120
+
121
+ //--- external risk relatee functions -----------------------------------//
122
+
123
+ function createSeason(
124
+ Str seasonId,
125
+ uint16 year,
126
+ Str name,
127
+ Str seasonStart, // ISO 8601 date, eg "2025-02-18"
128
+ Str seasonEnd,
129
+ uint16 seasonDays
130
+ )
131
+ external
132
+ restricted()
133
+ {
134
+ // validate input
135
+ if (seasonId.length() == 0) { revert ErrorInvalidId(seasonId.toString()); }
136
+ if (_season[seasonId].year > 0) { revert ErrorRecordAlreadyExists(seasonId.toString()); }
137
+ if (year < 2023 || year > 2035 ) { revert ErrorInvalidYear(year); }
138
+ if (seasonStart.length() != 10 ) { revert ErrorInvalidSeasonStart(seasonStart.toString()); }
139
+ if (seasonEnd.length() != 10 ) { revert ErrorInvalidSeasonEnd(seasonEnd.toString()); }
140
+ if (seasonDays < 50 || seasonDays > 250 ) { revert ErrorInvalidSeasonDays(seasonDays); }
141
+
142
+ _seasons.push(seasonId);
143
+ _season[seasonId] = Season({
144
+ year: year,
145
+ name: name,
146
+ seasonStart: seasonStart,
147
+ seasonEnd: seasonEnd,
148
+ seasonDays: seasonDays
149
+ });
150
+ }
151
+
152
+ function createLocation(
153
+ Str locationId,
154
+ int32 latitude,
155
+ int32 longitude
156
+ )
157
+ external
158
+ restricted()
159
+ returns (Location location)
160
+ {
161
+ // validate input
162
+ if (locationId.length() == 0) { revert ErrorInvalidId(locationId.toString()); }
163
+ // TODO add function location.isUndefined()
164
+ // if (!_location[locationId].isUndefined()) { revert ErrorRecordAlreadyExists(locationId.toString()); }
165
+
166
+ location = LocationLib.toLocation(latitude, longitude);
167
+ _location[locationId] = location;
168
+ }
169
+
170
+ function createCrop(Str cropName) external restricted() {
171
+ if (cropName.length() == 0) { revert ErrorInvalidId(cropName.toString()); }
172
+ if (_validCrop[cropName]) { revert ErrorRecordAlreadyExists(cropName.toString()); }
173
+
174
+ _crops.push(cropName);
175
+ _validCrop[cropName] = true;
176
+ }
177
+
178
+ function createRisk(
179
+ Str id,
180
+ Str seasonId,
181
+ Str locationId,
182
+ Str crop,
183
+ Timestamp seasonEndAt
184
+ )
185
+ external
186
+ restricted()
187
+ returns (RiskId riskId)
188
+ {
189
+ // validate input
190
+ if (id.length() == 0) { revert ErrorInvalidId(id.toString()); }
191
+ if (_season[seasonId].year == 0) { revert ErrorInvalidSeasonId(seasonId.toString()); }
192
+ // TODO add function location.isUndefined()
193
+ // if (_locations[locationId].isUndefined()) { revert ErrorInvalidLocation(locationId.toString()); }
194
+ if (!_validCrop[crop]) { revert ErrorInvalidCrop(crop.toString()); }
195
+ if (seasonEndAt < TimestampLib.current()) { revert ErrorInvalidSeasonEndAt(seasonEndAt); }
196
+
197
+ // create risk, if new
198
+ bytes32 riskKey = keccak256(abi.encode(id));
199
+ CropRisk memory cropRisk = CropRisk({
200
+ seasonId: seasonId,
201
+ locationId: locationId,
202
+ crop: crop,
203
+ seasonEndAt: seasonEndAt,
204
+ payoutFactor: UFixedLib.zero(),
205
+ payoutDefined: false
206
+ });
207
+
208
+ riskId = _createRisk(riskKey, abi.encode(cropRisk));
209
+ _riskId[id] = riskId;
210
+ }
211
+
212
+
213
+ function updatePayoutFactor(
214
+ RiskId riskId,
215
+ UFixed payoutFactor
216
+ )
217
+ external
218
+ restricted()
219
+ {
220
+ (bool exists, CropRisk memory cropRisk) = getRisk(riskId);
221
+ if (!exists) { revert ErrorInvalidRiskId(riskId); }
222
+
223
+ cropRisk.payoutFactor = payoutFactor;
224
+ cropRisk.payoutDefined = true;
225
+
226
+ _updateRisk(riskId, abi.encode(cropRisk));
227
+ }
228
+
229
+ //--- external policy related functions ---------------------------------//
230
+
231
+ /// @dev Creates a policy.
232
+ function createPolicy(
233
+ address policyHolder,
234
+ RiskId riskId,
235
+ Timestamp activateAt,
236
+ Amount sumInsuredAmount,
237
+ Amount premiumAmount
238
+ )
239
+ external
240
+ virtual
241
+ restricted()
242
+ returns (NftId policyNftId)
243
+ {
244
+ // validate input
245
+ if (policyHolder == address(0)) { revert ErrorInvalidPolicyHolder(); }
246
+
247
+ (bool exists, CropRisk memory cropRisk) = getRisk(riskId);
248
+ if (!exists) { revert ErrorInvalidRiskId(riskId); }
249
+
250
+ if (activateAt < TimestampLib.current()) { revert ErrorInvalidActivateAt(activateAt); }
251
+ if (activateAt > cropRisk.seasonEndAt) { revert ErrorInvalidActivateAt(activateAt); }
252
+ if (sumInsuredAmount < MIN_SUM_INSURED || sumInsuredAmount > MAX_SUM_INSURED) { revert ErrorInvalidSumInsured(sumInsuredAmount); }
253
+ if (premiumAmount < MIN_PREMIUM || premiumAmount > MAX_PREMIUM) { revert ErrorInvalidPremium(premiumAmount); }
254
+
255
+ // calculate policy lifetime
256
+ uint96 seasonDays = _season[cropRisk.seasonId].seasonDays;
257
+ Seconds lifetime = SecondsLib.toSeconds((seasonDays + GRACE_PERIOD_DAYS) * 24 * 3600);
258
+
259
+ // create application
260
+ policyNftId = _createApplication(
261
+ policyHolder,
262
+ riskId,
263
+ sumInsuredAmount,
264
+ premiumAmount,
265
+ lifetime,
266
+ _defaultBundleNftId,
267
+ ReferralLib.zero(),
268
+ abi.encode(premiumAmount)); // application data: premium amount, see calculateNetPremium
269
+
270
+ // underwrite and activate policy
271
+ _createPolicy(
272
+ policyNftId,
273
+ activateAt,
274
+ premiumAmount); // max premium amount
275
+
276
+ _collectPremium(
277
+ policyNftId,
278
+ TimestampLib.zero()); // keep activation timestamp
279
+
280
+ emit LogCropPolicyCreated(policyNftId);
281
+ }
282
+
283
+
284
+ function processPolicy(NftId policyNftId)
285
+ external
286
+ restricted()
287
+ {
288
+ _processPolicy(policyNftId);
289
+ }
290
+
291
+ function processPoliciesForRisk(
292
+ RiskId riskId,
293
+ uint256 maxPoliciesToProcess
294
+ )
295
+ external
296
+ virtual
297
+ returns (
298
+ bool success,
299
+ bool riskExists,
300
+ bool payoutDefined,
301
+ uint256 policiesProcessed
302
+ )
303
+ {
304
+ // determine numbers of policies to process
305
+ CropRisk memory cropRisk;
306
+ (riskExists, cropRisk) = getRisk(riskId);
307
+
308
+ // return if risk does not exist or payout is not defined yet
309
+ if (!riskExists) { return (false, false, false, 0); }
310
+ if (!cropRisk.payoutDefined) { return (false, true, false, 0); }
311
+
312
+ InstanceReader reader = _getInstanceReader();
313
+ uint256 policiesToProcess = reader.policiesForRisk(riskId);
314
+ policiesProcessed = policiesToProcess < maxPoliciesToProcess ? policiesToProcess : maxPoliciesToProcess;
315
+
316
+ // go through policies
317
+ for (uint256 i = 0; i < policiesProcessed; i++) {
318
+ NftId policyNftId = reader.getPolicyForRisk(riskId, i);
319
+ _processPolicy(policyNftId);
320
+ }
321
+
322
+ return (true, true, true, policiesProcessed);
323
+ }
324
+
325
+
326
+ //--- owner functions ---------------------------------------------------//
327
+
328
+ /// @dev Call after product registration with the instance
329
+ /// when the product token/tokenhandler is available
330
+ function setConstants(
331
+ Amount minPremium,
332
+ Amount maxPremium,
333
+ Amount minSumInsured,
334
+ Amount maxSumInsured,
335
+ uint8 maxPoliciesToProcess
336
+ )
337
+ external
338
+ virtual
339
+ restricted()
340
+ onlyOwner()
341
+ {
342
+ MIN_PREMIUM = minPremium;
343
+ MAX_PREMIUM = maxPremium;
344
+ MIN_SUM_INSURED = minSumInsured;
345
+ MAX_SUM_INSURED = maxSumInsured;
346
+ MAX_POLICIES_TO_PROCESS = maxPoliciesToProcess;
347
+ }
348
+
349
+ function setDefaultBundle(NftId bundleNftId) external restricted() onlyOwner() { _defaultBundleNftId = bundleNftId; }
350
+
351
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
352
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
353
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
354
+
355
+ //--- unpermissioned functions ------------------------------------------//
356
+
357
+ //--- view functions ----------------------------------------------------//
358
+
359
+ function getSeason(Str seasonId) public view returns (Season memory season) { return _season[seasonId]; }
360
+ function getLocation(Str locationId) public view returns (Location location) { return _location[locationId]; }
361
+
362
+ function seasons() public view returns (Str [] memory) { return _seasons; }
363
+ function crops() public view returns (Str [] memory) { return _crops; }
364
+
365
+ function getRiskId(Str id)
366
+ external
367
+ view
368
+ returns (RiskId riskId)
369
+ {
370
+ return _riskId[id];
371
+ }
372
+
373
+ function getRisk(RiskId riskId)
374
+ public
375
+ view
376
+ returns (
377
+ bool exists,
378
+ CropRisk memory cropRisk
379
+ )
380
+ {
381
+ // check if risk exists
382
+ InstanceReader reader = _getInstanceReader();
383
+ exists = reader.isProductRisk(getNftId(), riskId);
384
+
385
+ // get risk data if risk exists
386
+ if (exists) {
387
+ cropRisk = abi.decode(
388
+ reader.getRiskInfo(riskId).data,
389
+ (CropRisk));
390
+ }
391
+ }
392
+
393
+ function calculateNetPremium(
394
+ Amount, // sumInsuredAmount: not used in this product
395
+ RiskId, // riskId: not used in this product
396
+ Seconds, // lifetime: not used in this product, a flight is a one time risk
397
+ bytes memory applicationData // holds the premium amount the customer is willing to pay
398
+ )
399
+ external
400
+ virtual override
401
+ view
402
+ returns (Amount netPremiumAmount)
403
+ {
404
+ (netPremiumAmount) = abi.decode(applicationData, (Amount));
405
+ }
406
+
407
+
408
+ function calculatePayout(
409
+ IPolicy.PolicyInfo memory info,
410
+ CropRisk memory cropRisk
411
+ )
412
+ public
413
+ pure
414
+ returns (Amount payoutAmount)
415
+ {
416
+ Amount sumInsuredAmount = info.sumInsuredAmount;
417
+ UFixed payoutFactor = cropRisk.payoutFactor;
418
+
419
+ if (payoutFactor.eqz()) {
420
+ return AmountLib.zero();
421
+ }
422
+
423
+ return sumInsuredAmount.multiplyWith(payoutFactor);
424
+ }
425
+
426
+ function toStr(string memory str) public pure returns (Str) {
427
+ return StrLib.toStr(str);
428
+ }
429
+
430
+ function toString(Str str) public pure returns (string memory) {
431
+ return StrLib.toString(str);
432
+ }
433
+
434
+ //--- internal functions ------------------------------------------------//
435
+
436
+
437
+ function _processPolicy(NftId policyNftId)
438
+ internal
439
+ virtual
440
+ {
441
+ IPolicy.PolicyInfo memory info = _getInstanceReader().getPolicyInfo(policyNftId);
442
+ (bool exists, CropRisk memory cropRisk) = getRisk(info.riskId);
443
+ if (!exists) { revert ErrorInvalidRiskId(info.riskId); }
444
+ if (!cropRisk.payoutDefined) { revert ErrorUndefinedRiskPayout(info.riskId); }
445
+
446
+ // create claim/payout (if applicable), then expire and close policy
447
+ _handlePayout(policyNftId, info, cropRisk);
448
+ _expire(policyNftId, TimestampLib.current());
449
+ _close(policyNftId);
450
+ }
451
+
452
+
453
+ function _handlePayout(
454
+ NftId policyNftId,
455
+ IPolicy.PolicyInfo memory info,
456
+ CropRisk memory cropRisk
457
+ )
458
+ internal
459
+ {
460
+ Amount payoutAmount = calculatePayout(info, cropRisk);
461
+
462
+ // if payout amount > 0: create and process claim and payout
463
+ if (payoutAmount.eqz()) {
464
+ return;
465
+ }
466
+
467
+ // create confirmed claim
468
+ ClaimId claimId = _submitClaim(policyNftId, payoutAmount, "");
469
+ _confirmClaim(policyNftId, claimId, payoutAmount, "");
470
+
471
+ // create and execute payout
472
+ PayoutId payoutId = _createPayout(policyNftId, claimId, payoutAmount, "");
473
+ _processPayout(policyNftId, payoutId);
474
+ }
475
+
476
+
477
+ function _initialize(
478
+ address registry,
479
+ NftId instanceNftId,
480
+ string memory componentName,
481
+ IAuthorization authorization,
482
+ address initialOwner
483
+ )
484
+ internal
485
+ initializer()
486
+ {
487
+ __Product_init(
488
+ registry,
489
+ instanceNftId,
490
+ componentName,
491
+ IComponents.ProductInfo({
492
+ isProcessingFundedClaims: false,
493
+ isInterceptingPolicyTransfers: false,
494
+ hasDistribution: false,
495
+ expectedNumberOfOracles: 0,
496
+ numberOfOracles: 0,
497
+ poolNftId: NftIdLib.zero(),
498
+ distributionNftId: NftIdLib.zero(),
499
+ oracleNftId: new NftId[](0)
500
+ }),
501
+ IComponents.FeeInfo({
502
+ productFee: FeeLib.zero(),
503
+ processingFee: FeeLib.zero(),
504
+ distributionFee: FeeLib.zero(),
505
+ minDistributionOwnerFee: FeeLib.zero(),
506
+ poolFee: FeeLib.zero(),
507
+ stakingFee: FeeLib.zero(),
508
+ performanceFee: FeeLib.zero()
509
+ }),
510
+ authorization,
511
+ initialOwner);
512
+ }
513
+ }
@@ -0,0 +1,69 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccess} from "../../../contracts/authorization/IAccess.sol";
5
+
6
+ import {AccessAdminLib} from "../../authorization/AccessAdminLib.sol";
7
+ import {BasicProductAuthorization} from "../../product/BasicProductAuthorization.sol";
8
+ import {CropProduct} from "./CropProduct.sol";
9
+ import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
10
+
11
+
12
+ contract CropProductAuthorization
13
+ is BasicProductAuthorization
14
+ {
15
+
16
+ uint64 public constant PRODUCT_OPERATOR_ROLE_IDX = 1; // 1st custom role for flight product
17
+ string public constant PRODUCT_OPERATOR_ROLE_NAME = "ProductOperatorRole";
18
+ // solhint-disable-next-line var-name-mixedcase
19
+ RoleId public PRODUCT_OPERATOR_ROLE;
20
+
21
+
22
+ constructor(string memory productName)
23
+ BasicProductAuthorization(productName)
24
+ { }
25
+
26
+
27
+ function _setupRoles()
28
+ internal
29
+ override
30
+ {
31
+ PRODUCT_OPERATOR_ROLE = AccessAdminLib.getCustomRoleId(PRODUCT_OPERATOR_ROLE_IDX);
32
+
33
+ _addRole(
34
+ PRODUCT_OPERATOR_ROLE,
35
+ AccessAdminLib.roleInfo(
36
+ ADMIN_ROLE(),
37
+ TargetType.Custom,
38
+ 100, // max member count
39
+ PRODUCT_OPERATOR_ROLE_NAME));
40
+ }
41
+
42
+
43
+ function _setupTargetAuthorizations()
44
+ internal
45
+ virtual override
46
+ {
47
+ super._setupTargetAuthorizations();
48
+ IAccess.FunctionInfo[] storage functions;
49
+
50
+ // authorize product operator role
51
+ functions = _authorizeForTarget(getMainTargetName(), PRODUCT_OPERATOR_ROLE);
52
+ _authorize(functions, CropProduct.createSeason.selector, "createSeason");
53
+ _authorize(functions, CropProduct.createLocation.selector, "createLocation");
54
+ _authorize(functions, CropProduct.createCrop.selector, "createCrop");
55
+ _authorize(functions, CropProduct.createRisk.selector, "createRisk");
56
+ _authorize(functions, CropProduct.createPolicy.selector, "createPolicy");
57
+ _authorize(functions, CropProduct.updatePayoutFactor.selector, "updatePayoutFactor");
58
+ _authorize(functions, CropProduct.processPolicy.selector, "processPolicy");
59
+
60
+ // authorize public role (additional authz via onlyOwner)
61
+ functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
62
+ _authorize(functions, CropProduct.setDefaultBundle.selector, "setDefaultBundle");
63
+ _authorize(functions, CropProduct.setConstants.selector, "setConstants");
64
+ _authorize(functions, CropProduct.approveTokenHandler.selector, "approveTokenHandler");
65
+ _authorize(functions, CropProduct.setLocked.selector, "setLocked");
66
+ _authorize(functions, CropProduct.setWallet.selector, "setWallet");
67
+ }
68
+ }
69
+
@@ -0,0 +1,50 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ type Location is uint64;
5
+
6
+ using {
7
+ LocationLib.latitude,
8
+ LocationLib.longitude
9
+ } for Location global;
10
+
11
+ library LocationLib {
12
+
13
+ error ErrorLatitudeInvalid(int32 amount);
14
+ error ErrorLongitudeInvalid(int32 amount);
15
+
16
+ int32 public constant LATITUDE_MIN = -90000000;
17
+ int32 public constant LATITUDE_MAX = 90000000;
18
+ int32 public constant LONGITUDE_MIN = -180000000;
19
+ int32 public constant LONGITUDE_MAX = 180000000;
20
+
21
+ // Constants for bit manipulation
22
+ int64 public constant LATITUDE_MASK = int64(0x7FFFFFF);
23
+ int64 public constant LONGITUDE_MASK = int64(0xFFFFFFF);
24
+
25
+ function zero() public pure returns (Location) {
26
+ return Location.wrap(0);
27
+ }
28
+
29
+ function toLocation(int32 latitude, int32 longitude) public pure returns (Location) {
30
+ if (latitude < LATITUDE_MIN || latitude > LATITUDE_MAX) revert ErrorLatitudeInvalid(latitude);
31
+ if (longitude < LONGITUDE_MIN || longitude > LONGITUDE_MAX) revert ErrorLongitudeInvalid(longitude);
32
+
33
+ uint32 latPacked = uint32(latitude);
34
+ uint32 longPacked = uint32(longitude);
35
+ // uint64 packed = (uint64(latPacked) << 32) | uint64(longPacked);
36
+ return Location.wrap((uint64(latPacked) << 32) | uint64(longPacked));
37
+ }
38
+
39
+ function latitude(Location location) public pure returns (int32) {
40
+ return int32(uint32(Location.unwrap(location) >> 32));
41
+ }
42
+
43
+ function longitude(Location location) public pure returns (int32) {
44
+ return int32(uint32(Location.unwrap(location) & 0xFFFFFFFF));
45
+ }
46
+
47
+ function decimals() public pure returns (uint8) {
48
+ return uint8(6);
49
+ }
50
+ }