@etherisc/gif-next 3.0.0-4bd308f-200 → 3.0.0-4df3876-224

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