@etherisc/gif-next 3.0.0-10753eb-998 → 3.0.0-1607827-716

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